Сети долговременной памяти

Введение

Нейронные сети предназначены для имитации поведения человеческого мозга, чтобы понять различные отношения в данных. Эти сети способны понимать сложные нелинейные отношения и могут помочь нам принимать более разумные решения. Нейронные сети используются в таких областях, как обработка изображений, обработка естественного языка и т. д., и могут превзойти традиционные алгоритмы машинного обучения. Но один основной недостаток традиционной нейронной сети заключается в том, что она не может что-то запоминать.

Допустим, мы играем в игру, и нам нужна модель для предсказания следующего хода игрока. Это во многом зависит от предыдущих ходов, и традиционные нейронные сети здесь не сработают. В этом случае нам нужна некоторая модель, которая может запоминать предыдущие события и соответственно принимать разумные решения. Именно здесь на сцену вышли рекуррентные нейронные сети (RNN). RNN могут хранить информацию о предыдущем состоянии. Затем он может использовать его для предсказания следующего события, которое в данном случае является следующим ходом игрока.

В левой части рисунка выше вы можете видеть вход Xt и выход ht. Цикл указывает, что эта сеть повторяется t раз, как показано на рисунке справа. Нейронная сеть A получает вход X в момент времени t = 0 и выдает результат h0. Теперь информация от A в момент t=0 и вход X1 передается следующей метке времени t=1 для генерации выходных данных h1. Похоже на полное решение проблемы запоминания.

RNN использовались во многих задачах моделирования последовательностей, таких как создание подписей к изображениям, машинный перевод, распознавание речи и т. д.

Недостатки РНН

Как мы видим, RNN набирали популярность и использовались в большинстве задач, связанных с последовательностями. Но были у этой модели и недостатки.

Исчезающие градиенты

RNN обучаются с помощью обратного распространения во времени (BPTT). Как и в случае с обратным распространением, здесь веса нейронной сети также обновляются с помощью градиентов. Но в RNN мы выполняем обратное распространение во времени и слоях. Если последовательность очень велика (много временных шагов) и если нейронная сеть имеет более одного скрытого слоя, то существует высокая вероятность того, что градиенты будут становиться все меньше и меньше по мере обратного распространения. В конечном итоге это приведет к проблеме исчезающего градиента. Как только возникает эта проблема, вес будет обновляться очень медленно, препятствуя обучению сети. Проблема исчезающего градиента может возникать и в глубоких нейронных сетях. Но этот эффект очень распространен и намного хуже в RNN, потому что здесь нам также нужно выполнить обратное распространение во времени.

Обработка долгосрочных зависимостей

RNN могут использовать предыдущие состояния для предсказания следующего события. Это будет очень полезно в НЛП, где предсказание конкретного слова зависит от контекста или предыдущих слов. Рассмотрим предложение «Яблоко — это фрукт». Теперь предположим, что мы предсказываем каждое слово через сеть RNN. Для предсказания слова «фрукты» нам нужно контекстное слово «яблоко». Здесь, поскольку контекстное слово находится непосредственно перед событием. Таким образом, в этом случае RNN будут работать хорошо.

Но рассмотрим предложение «Я вырос во Франции и свободно говорю по-французски». Здесь, чтобы предсказать слово «французский», контекстное слово «Франция». Они называются долгосрочными зависимостями и очень распространены в языковых моделях. Обнаружено, что RNN плохо справляются с долгосрочными зависимостями. Производительность RNN будет падать по мере увеличения разрыва между событием и контекстом.

Введение LSTM

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

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

Однако в LSTMS архитектура не так проста. Рассмотрим рисунок ниже, на котором показана архитектура сети LSTM.

Не напрягайтесь. Мы постараемся понять каждый из этих блоков один за другим на следующем занятии.

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

Допустим, у нас есть текущее событие, и нам нужно предсказать следующее событие в игре. У нас также есть долгосрочная и краткосрочная информация, которую мы собрали во время игры. Долгосрочные воспоминания — это память, которая собрана из давних времен, а краткосрочные — это информация, собранная несколькими отметками времени назад. Очевидно, что для предсказания следующего события нам нужно текущее событие. Но только некоторые долгосрочные и краткосрочные воспоминания будут полезны. Как нам это получить?

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

Архитектура LSTM

Теперь давайте углубимся в архитектуру модели LSTM и попытаемся понять, как она будет обрабатывать долгосрочные и краткосрочные зависимости. Рассмотрим рисунок ниже.

Вы можете видеть, что есть два выхода из одного модуля LSTM. Кт и хт. Если вы помните, в RNN у нас был только один вывод — ht. Скрытое состояние ht — это кратковременная память, полученная в результате непосредственно предыдущих шагов. Теперь, что это за дополнительный вывод в LSTM? Вектор Ct известен как состояние клетки.

Теперь состояние ячейки в LSTM отвечает за хранение событий долговременной памяти. LSTM будут использовать механизм, называемый воротами, для добавления и удаления определенной информации в это состояние ячейки. Попробуем разобраться в этом подробно.

Забыть ворота

Как мы обсуждали ранее, мы можем добавлять и удалять информацию о состоянии ячейки с помощью вентилей. На приведенном ниже рисунке есть не что иное, как ворота забывания, которые фильтруют только необходимую информацию и удаляют все остальное. Как это достигается?

На рисунке состояние ячейки или долговременная память предыдущего временного шага умножается на функцию ft, чтобы получить новую отфильтрованную память, где ft — коэффициент забывания. Фактор забывания рассчитывается по формуле, показанной ниже.

Кратковременная память или ht-1 из предыдущей метки времени и текущего события используется для расчета фактора забывания. Кратковременная память и текущее событие объединяются, и поверх этого вектора применяется сигмовидный слой. Сигмовидная функция выдает результат в диапазоне от 0 до 1, который затем умножается на каждое значение в предыдущем состоянии ячейки. Значение 0 указывает, что информация будет полностью удалена, а значение 1 указывает, что информация сохраняется как есть.

Узнать ворота

Теперь, когда мы знаем, какую информацию отбрасывать, наша следующая цель — найти, какую новую информацию нам нужно добавить. Это делается через обучающие ворота. Теперь узнайте, что ворота состоят из двух частей.

1. Предыдущая кратковременная память и текущее событие объединяются, а затем проходят через слой tan h. Это создаст новые значения c~t, которые являются новой информацией. Теперь и здесь нам не требуется вся новая информация. Как мы можем игнорировать какую-то часть этого?

2. Насколько обновляется каждый из новых кандидатов, определяется еще одним шлюзом «Забыть». Выходные данные ворот забывания будут умножены на нашу новую информацию и сгенерируют окончательный результат.

Итак, почему мы используем функцию активации tanh в некоторых местах? Функция активации Tanh будет выводить векторы (в диапазоне от -1 до 1), центрированные вокруг 0. Это очень хорошо распределяет градиенты и позволяет состояниям ячеек работать дольше. Это в конечном итоге решит проблему исчезающих или взрывающихся градиентов.

Запомнить ворота

Теперь, когда мы знаем, что оставить, а что выбросить, пришло время обновить новое состояние клетки или долговременную память. как нам это сделать? Мы просто берем выходные данные от забывчивых ворот и обучаемых ворот и добавим их.

Мы почти на месте. Остался единственный шаг — рассчитать результат.

Выходные ворота

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

Вот и все! Мы закончили с архитектурой.

Другие варианты архитектуры LSTM

Помимо вышеупомянутой архитектуры, есть некоторые другие сети, которые также будут хорошо работать с данными последовательности. Некоторые из них

· Закрытая рекуррентная установка (ГРУ)

· Глазки LSTM

· Глубинные РНС

· Заводные РНН

Я не буду вдаваться в подробности этих моделей. Но вы всегда можете прочитать о них по приведенным выше ссылкам.

Последние мысли

LSTM — важная веха в области НЛП и моделей последовательностей. Но, как и все другие модели, LSTM тоже не идеальны. Более длительное время обучения, большие требования к памяти, невозможность параллельного обучения и т. д. — вот некоторые из недостатков LSTM. Затем были разработаны новые улучшенные модели и методы, и одним из популярных подходов стало внимание. Будем надеяться, что вокруг RNN и данных о последовательностях появится все больше и больше интересных работ.

Надеюсь, вам понравился блог. Для любых вопросов или разъяснений, пожалуйста, не стесняйтесь подключаться через мой LinkedIn