Это 13-й день моего участия в августовском испытании обновлений. Ознакомьтесь с подробностями мероприятия: Испытание августовского обновления
1. Сеть LSTM
Сети долговременной кратковременной памяти (Long Short-Term Memory Networks), которые во многих местах переводятся в сети долговременной кратковременной памяти, дают людям ощущение двусмысленности, думая, что сеть может какое-то время запоминать длинный контент и короткий контент на время, но на самом деле правильный перевод должен быть долговременной кратковременной сетевой памятью. Суть его в том, чтобы уметь запоминать информацию в течение длительного периода времени.
Все структуры RNN реплицируются из одинаково структурированных модулей. В обычных RNN этот модуль очень прост, например, одиночныйЭтаж
LSTM также имеет аналогичную структуру, разница только в средней части, LSTM больше не является единственнымслоев, при этом используются четыре взаимодействующих слоя
Не пугайтесь этой структуры. Когда я впервые изучил LSTM, я искал множество блогов в Интернете, но мало что понял. Один из них был потому, что меня пугала эта структура, а другой — потому что многие блоги были плохо написаны, так что потребовалось много времени, чтобы заполнить эту дыру. Во-первых, позвольте мне объяснить символы, используемые в нем.
На диаграмме структуры сети каждая линия передает вектор, поступающий от одного узла к другому. Желтая матрица представляет слой нейронной сети, розовый кружок представляет поточечные операции, такие как умножение векторов, сложение и т. д., объединенная линия представляет собой комбинацию векторов, переносимых по двум линиям (например, один, другой, то суммарный выход равен); отдельная строка означает копирование вектора, переданного в строке, и передача его в два места
2. Основная идея LSTM
Ключом к LSTM является состояние ячейки, горизонтальная линия, проходящая через верхнюю часть графика. Передача состояния ячейки подобна конвейерной ленте.Вектор проходит через всю ячейку, и выполняется лишь небольшое количество линейных операций.В этой структуре можно легко реализовать,что информация проходит через всю ячейку без изменений(это позволяет долго -сохранение временной памяти)
LSTM также имеют возможность добавлять или удалять информацию из состояния ячейки, которое тщательно контролируется структурами, называемыми гейтами.дверьИнформацию можно передавать выборочно, они реализуются слоями сигмовидной нейронной сети и поточечным умножением.
Каждый LSTM имеет три такихдверьструктура для реализации управляющей информации (соответственно, ворота забывания, входные ворота, выходные ворота, выходные ворота)
3. Разберитесь с LSTM шаг за шагом
3.1 Забытые ворота
Первым шагом LSTM являетсяРешите, какую информацию отбрасывать из состояния ячейки, это решение принимаетforget gate layer
Реализован сигмовидный нейронный слой. Его входи, выход представляет собой вектор со значениями от 0 до 1 (длина вектора ито же), указывая, что пустьДоля каждой части проходящей информации, 0 означает, что никакая информация не пропускается, 1 означает, что пропускается вся информация.
Рассмотрим конкретный пример, предположим, что языковая модель пытается предсказать следующее слово на основе всех предыдущих слов, и в этом случае каждое состояние ячейки должно содержать пол текущего субъекта (сохранять информацию), чтобы мы могли правильно использовать местоимение дальше. Но когда мы начинаем описывать новый предмет, мы должны забыть пол старого предмета (забыл информацию)
3.2 Входной шлюз
Следующий шагРешите, сколько новой информации добавить в состояние ячейки. Достижение этого включает в себя два шага: во-первых,input gate layer
Сигмовидный слой решает, какую информацию необходимо обновить. Другаяслой создает новый вектор-кандидат. Наконец, мы объединяем эти две части, чтобы обновить состояние ячейки.
В нашем примере языковой модели мы хотим добавить новую информацию о поле субъекта в состояние ячейки, заменив старую информацию о состоянии. С помощью приведенной выше структуры мы можем обновить состояние ячейки, то есть поставитьобновить до. Из схемы структуры должно быть понятно, сначала ставим старое состояниеиУмножьте, забудьте некоторую информацию, которую вы не хотите сохранять, и добавьте. Эта часть информации представляет собой новый контент, который мы собираемся добавить.
3.3 Выходной шлюз
Наконец, нам нужно решить, какую ценность выводится. Этот вывод в основном зависит от состояния клеток, но отфильтрованная версия. Во-первых, после сигмовидного слоя он решаеткакие части будут выводиться. Далее ставимчерезслоя (нормализуйте значения между -1 и 1), затем поместитеВыход слоя умножается на вес, рассчитанный слоем simoid, так что получается окончательный результат вывода.
В примере с языковой моделью предположим, что наша модель только что подверглась воздействию местоимения, а затем она может вывести глагол, и этот вывод может быть связан с информацией о местоимении. Например, если этот глагол стоит в форме единственного или множественного числа, тогда мы должны добавить всю информацию, которую мы только что узнали о местоимениях, в состояние ячейки, чтобы иметь возможность делать правильные прогнозы.
Рекомендуемое чтение:Understanding LSTM Networks