Это 13-й день моего участия в Gengwen Challenge.Подробности о мероприятии, пожалуйста, проверьте:Обновить вызов
связать
Для осуществления вышеупомянутогоSimpleRNN, здесь мы представляем его улучшенную и обновленную версию LSTM.
Сравнение RNN и LSTM
- Память RNN очень короткая, и легко создать проблему с длинной зависимостью исчезновения градиента, и LSTM может решить эту проблему, у нее более длинная память.
- Модель RNN относительно проста, имеет только одну матрицу параметров, но LSTM более сложна, с четырьмя матрицами параметров.
LSTM
Долговременная память, также известная как LSTM, по сути является специальной моделью RNN, но она значительно улучшила модель RNN, чтобы избежать проблемы длительной зависимости исчезновения градиента. Его структура показана на рисунке.
Основная идея LSTM
Основная идея LSTM — это состояние ячейки, которое представлено толстой черной линией на рисунке. Состояние ячейки здесь похоже на линию долговременной памяти, которая может передавать состояние ячейки в предыдущий момент в состояние ячейки в следующий момент, чтобы достичь цели обучения и запоминания информации о последовательности. .
h является выходом скрытого слоя, который можно увидеть, насколько может быть выведено состояние ячейки в текущий момент, который накапливает информацию об особенностях входа в текущий момент и все предыдущие моменты.
h — это вектор признаков, который мы часто используем в приложениях, а состояние ячейки используется только для внутренних вычислений, и я его использую редко.
Например: я читаю длинную статью от начала до конца, просто отбрасываю неважную информацию, продолжаю накапливать важную информацию и, наконец, получаю основную идею. Вместо того, чтобы прочитать слово и забыть слово, после прочтения вы не знаете, что сказать.
Модель LSTM способна забывать и запоминать определенную информацию, что достигается с помощью структур, называемых воротами. Как показано ниже.
Гейт в математическом представлении — это операция умножения слоя нейронной сети Sigmod на соответствующую позицию. Значение в выходной матрице результатов S слоя нейронной сети sigmod представляет собой число от 0 до 1, 0 означает, что информация не передается, а 1 означает, что все проходят. S имеет тот же размер, что и матричная матрица, с которой он работает, и каждое число в матрице будет умножено на соответствующий номер позиции в матрице, так что результирующий размер матрицы останется неизменным, а некоторые значения будут умножены на 0. Результат равен 0, что указывает на то, что эта информация впоследствии не требуется.Некоторые значения остаются неизменными, поскольку результат умножается на 1, а некоторые значения умножаются на десятичную дробь между 0 и 1, что указывает на то, что функция сохраняет определенную пропорцию.
LSTM забыть ворота
Ворота забывания должны решить, какую бесполезную информацию в нашем состоянии ячейки нужно отбросить.Структура показана на рисунке ниже.
-
ht-1выход скрытого слоя в предыдущий момент, xtтекущий вход, переданный с матрицей параметров Wfи параметр смещения bfВычисленный результат передается через слой Sigmod для получения ft, где все значения находятся между 0 и 1, что связано с состоянием ячейки C в предыдущий моментt-1Умножая, ненужную информацию можно отбросить.
Например: мы хотим предсказать следующее слово по первым трем словам, Ct-1Он может содержать некоторую информацию, которая больше не используется, и эти атрибуты могут быть отброшены через ворота забвения.
Шлюз памяти LSTM
Обычно это называется входными воротами, но я думаю, что ворота памяти более наглядны и понятны. Ворота памяти должны определить, сколько текущей входной информации необходимо сохранить в текущем состоянии ячейки C.tсередина.
-
ht-1выход скрытого слоя в предыдущий момент, xtтекущий вход, переданный с матрицей параметров Wiи параметр смещения biВычисленный результат передается через слой Sigmod для получения it, где значения находятся в диапазоне от 0 до 1, указывая, какие части ввода необходимо использовать.
-
ht-1выход скрытого слоя в предыдущий момент, xtтекущий вход, переданный с матрицей параметров Wcи параметр смещения bcВычисленный результат передается через слой tanh для получения входного вектора-кандидата C.~t, где все значения находятся между -1 и 1.
LSTM обновляет состояние ячейки
С указанным выше состоянием ячейки, воротами забывания, воротами памяти и входным вектором-кандидатом в предыдущий момент состояние ячейки в текущий момент может быть обновлено, как показано на рисунке.
- Из формулы на приведенном выше рисунке легко понять способ обновления состояния ячейки, ворота забывания ftи состояние ячейки C в предыдущий моментt-1Умножение, указывающее, сколько информации, переданной в последний момент, необходимо отбросить.
- ворота памяти яtс текущим входным вектором-кандидатом C~tУмножение, указывающее, сколько информации в текущем вводе необходимо добавить к текущему состоянию ячейки Ctсередина.
- Прошлое нужно забыть, а настоящее помнить.
Выходной затвор LSTM
Несмотря на наличие требуемого текущего состояния ячейки, для текущей ситуации требуется некоторый вывод.Выходной вентиль должен контролировать, какая часть текущего состояния ячейки видна внешнему миру. как показано на рисунке.
-
ht-1выход скрытого слоя в предыдущий момент, xtтекущий вход, переданный с матрицей параметров Woи параметр смещения boВычисленный результат передается через слой Sigmod для получения ot, где значения находятся в диапазоне от 0 до 1, указывая, какие части состояния ячейки необходимо вывести.
-
Состояние ячейки в текущий момент претерпевает нелинейное изменение через функцию tanh, а затем изменяется с otУмножение может получить текущий результат h, который необходимо вывестиt. Это одновременно и вывод в текущий момент, и ввод состояния скрытого слоя в следующий момент. по существу чtСtсодержание после затухания.
Количество параметров LSTM
После приведенного выше введения мы знаем, что LSTM имеет в общей сложности четыре матрицы параметров Wf, Втi, Втc, Втo. Размер каждой матрицы параметров:
shape(h) * [shape(h) + shape(x)]
Соответственно имеется четыре параметра смещения bf,Нетi,Нетc,Нетo, размер каждого параметра:
shape(h)
Тогда есть общее количество параметров:
4 * [shape(h) * [shape(h) +shape(x)] + shape(h)]
Обновленная версия LSTM, Bi-LSTM
Bi-LSTM — это модель, которая сочетает в себе прямой LSTM и обратный LSTM.
могу видеть хtВыход прямого скрытого слоя и вывод обратного скрытого слоя в данный момент объединяются для получения вывода скрытого слоя y в текущий момент.t. Давайте закодируем предложение «Я люблю Китай» и зафиксируем функции с помощью Bi-LSTM.
Поймите это предложение слева направо, каждый момент может получить hLiВывод скрытого слоя, понимайте это предложение справа налево, вы можете получить h в любой моментRiвыход скрытого слоя, а Bi-LSTM объединяет выходные данные прямого и обратного скрытого слоя в каждый момент времени [hLi ,hRi] , чтобы представить выходные данные скрытого слоя с более богатыми функциями в текущий момент.
Мы можем понять это так, компьютер распознает только двоичные коды, поэтому способ чтения в обоих направлениях не влияет на его «смысловое понимание» двух направлений предложения, хотя человек вообще не думает, что существует какая-либо семантика от справа налево, конечно, компьютер может понять другие глубокие значения, такие как словосочетания символов, которые люди не могут понять напрямую в порядке справа налево. Таким образом, двунаправленная функция может лучше отражать «семантику», представляющую предложение.
Варианты LSTM
Вышеупомянутое является просто классическим, на самом деле существует много вариантов, например, более популярный вариант LSTM сделанGers & SchmidhuberПредлагаемая структура показана ниже.
кейс
Это тематическая статья, которую я писал ранее о LSTM. Это последняя буква предсказуемого слова. Это только для того, чтобы показать принцип. В нем есть подробные комментарии. Если вы считаете, что это хорошо, вы можете пропустить его и оставить лайк.nuggets.capable/post/694941…
Это тематическая статья, которую я писал о Bi-LSTM ранее.Введите предложение, чтобы предсказать следующее слово, просто чтобы показать принцип, с подробными комментариями, если вы чувствуете себя хорошо, вы можете пропустить его и оставить лайк.nuggets.capable/post/694941…