Почему LSTM забывает, что ворота принимают новые входы? - PullRequest
1 голос
/ 18 апреля 2020

Я следую этому объяснению LSTM

В одном из проиллюстрированных примеров гейтов они показывают, что ворота забывания принимают значение состояния старой ячейки (которое равно предыдущее скрытое состояние?) а также новый ввод.

Мой вопрос состоит из двух частей:

1) Если предполагается, что врата забывания регулирует память о предыдущем состоянии ячейки, почему существует необходимость принимать новый ввод? разве это не должно обрабатываться исключительно во входном шлюзе?

2) если входной шлюз решает, какая новая информация добавляется в состояние ячейки, почему мы также передаем предыдущее состояние ячейки во входной шлюз ? Разве это регулирование уже не произошло в воротах забвения?

В целом, похоже, что здесь происходят некоторые избыточные процессы.

1 Ответ

2 голосов
/ 19 апреля 2020

Вот уравнения LSTM:

enter image description here

Когда вы смотрите на эти уравнения, вам необходимо мысленно выделить, как ворота вычислили (строки с 1 по 3) и как они применены (строки 5 и 6). Они вычисляются как функция скрытого состояния h, но они применяются к ячейке памяти c.

они показывают, что ворота забывания принимают значение состояния старой ячейки (которое является равно предыдущему скрытому состоянию?), а также новому входному сигналу.

Давайте рассмотрим конкретно вентиль forget, вычисленный в строке 2. Его вычисление принимает в качестве входных данных текущий входной сигнал x[t] и последнее скрытое состояние h[t-1]. (Обратите внимание, что утверждение в вашем комментарии неверно: скрытое состояние отличается от ячейки памяти.)

Фактически все ворота input, forget и output в строках с 1 по 3 вычисляются равномерно как функция, которая принимает x[t] и h[t-1]. Вообще говоря, ценность этих элементов основана на текущем входе и состоянии, которое было ранее.

Чтобы напрямую ответить на ваши вопросы:

1) Если ворота забыли Предполагается регулировать память предыдущего состояния ячейки, почему необходимо принимать новый ввод? Разве это не должно обрабатываться исключительно во входном вентиле?

Не путайте, как вычисляется вентиль с тем, как применяется . Посмотрите, как ворота 1042 * используются в строке 5 для выполнения упомянутых вами правил. Ворота забытия применяются только к предыдущей ячейке памяти c[t-1]. Как вы, вероятно, знаете, вентиль - это просто вектор дробных чисел с плавающей точкой, и он применяется как поэлементное умножение. Здесь ворота f будут умножены на c[t-1], в результате чего некоторые из c[t-1] будут сохранены. В той же строке 5 входной шлюз i делает то же самое с новой ячейкой памяти-кандидатом c-tilde[t]. Основная идея c строки 5 заключается в том, что новая ячейка памяти c[t] смешивает некоторые из старой ячейки памяти и часть новой ячейки памяти-кандидата.

Строка 5 является наиболее важной среди уравнения LSTM. Вы можете найти аналогичную строку в уравнениях GRU.

2), если входной вентиль решает, какая новая информация добавляется в состояние ячейки, почему мы также вводим предыдущее состояние ячейки во входной Ворота? Разве это регулирование уже не произошло в воротах забвения?

Опять же, вам нужно разделить, как ворота вычисляются и как они применяются, Входной вентиль действительно регулирует, какая новая информация добавляется в состояние ячейки, и это выполняется в строке 5, как я писал выше.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...