Рекуррентная нейронная сеть
Люди не начинают думать с нуля каждый момент. Читая эту статью, вы будете понимать каждое слово, основываясь на своем понимании предыдущих слов. Вам не нужно все бросать и начинать сначала, потому что ваше мышление непрерывно.
Традиционные нейронные сети не могут этого сделать, что кажется вопиющим недостатком. Представьте, что вы хотите классифицировать события, происходящие в каждой сцене фильма. Непонятно, как традиционная нейронная сеть может использовать свои рассуждения о предыдущих событиях в фильме, чтобы информировать о более поздних событиях.
Рекуррентные нейронные сети решают эту проблему. Это сети с петлями, которые позволяют информации сохраняться.
Рекуррентные нейронные сети имеют циклы
На изображении выше набор нейронных сетей A, просматривающих некоторые входные данные Икс т X_{t}Xt и выведите значение час т h_{t}ht , Цикл позволяет информации передаваться от одного шага сети к другому.
Эти циклы делают рекуррентные нейронные сети немного загадочными. Однако подумайте об этом, и вы увидите, что не все рекуррентные нейронные сети так уж отличаются от обычных нейронных сетей. Рекуррентную нейронную сеть можно рассматривать как несколько копий одной и той же сети, каждый шаг которой передает сообщение следующему. Подумайте о том, что произойдет, если мы развернём цикл:
Расширенная рекуррентная нейронная сеть
Эта цепная природа показывает, что рекуррентные нейронные сети тесно связаны с последовательностями и списками. Это естественная архитектура, которую нейронные сети используют для этих данных.
Они действительно используются! За последние несколько лет RNN добились невероятных успехов в различных задачах, таких как распознавание речи, языковое моделирование, перевод, субтитры к изображениям и многое другое. Я оставлю обсуждение удивительных вещей, которых могут достичь RNN, для отличного поста в блоге Андрея Карпати,Необоснованная эффективность рекуррентных нейронных сетей. Но они действительно потрясающие.
Ключом к этим успехам является использование «LSTM», особого типа рекуррентной нейронной сети, которая намного лучше стандартной версии для многих задач. Практически все результаты возбуждения на основе рекуррентных нейронных сетей достигаются с их помощью. Это LSTM, о котором пойдет речь в этой статье.
проблемы с долговременной зависимостью
Одно из преимуществ RNN заключается в том, что они могут связывать предыдущую информацию с текущей задачей, например, использование предыдущих видеокадров может помочь в понимании текущего кадра. Если бы RNN могли это делать, они были бы очень полезны. Но могут ли они? Это зависит от ситуации.
Иногда нам нужно увидеть только самую последнюю информацию, чтобы выполнить текущую задачу. Например, языковая модель пытается предсказать следующее слово на основе предыдущих слов. Если мы попытаемся предсказать" the cloud are in the skyПоследнее слово в «, нам не нужен дальнейший контекст — очевидно, следующее слово — небо. В этом случае разрыв между релевантной информацией и тем, где она должна быть, невелик, и RNN может научиться использовать прошлые Информация.
Но есть также ситуации, когда нам нужно больше контекста. попробуй угадать последнее слово в тексте«Я вырос во Франции… Я свободно говорю по-французски.«Недавняя информация предполагает, что следующим словом может быть название языка, но если мы хотим сузить выбор языка, который нам нужен, исходя из французского контекста, нам нужно сделать еще один шаг. Соответствующая информация, которая для этого требуется, и зазор между точками изменится очень большой.
К сожалению, по мере того, как этот разрыв увеличивается, RNN становятся неспособными научиться соединять информацию.
Теоретически RNN определенно могут справиться с этой «долгосрочной зависимостью». Можно тщательно подобрать параметры для них, чтобы решить эту форму игрушечной задачи. К сожалению, на практике RNN, похоже, не могут их выучить.Hochreiter (1991) [German]иBengio, et al. (1994)и др. углубились в этот вопрос и нашли несколько фундаментальных причин, почему его трудно понять.
К счастью, у LSTM нет этой проблемы!
LSTM-сеть
Сети с долговременной кратковременной памятью, часто называемые «LSTM», представляют собой особый вид RNN, которые способны изучать долгосрочные корреляции. они сделаныHochreiter & Schmidhuber (1997)Введен, и был улучшен и продвинут многими в последующей работе. Они очень хорошо работают над широким кругом проблем и в настоящее время широко используются.
LSTM явно разработаны, чтобы избежать долгосрочных зависимостей. Запоминание информации в течение длительного времени на самом деле является их поведением по умолчанию, а не тем, чему они усердно учились!
Все рекуррентные нейронные сети имеют вид цепочки повторяющихся модулей нейронной сети. В стандартных RNN этот повторяющийся модуль будет иметь очень простую структуру, например, один слой tanh.
Повторяющиеся модули в стандартных RNN содержат один слой
LSTM также имеют эту цепочечную структуру, но повторяющиеся модули имеют другую структуру. Вместо одного слоя нейронной сети есть четыре, которые взаимодействуют очень специфическими способами.
Повторяющийся модуль в LSTM состоит из четырех взаимодействующих слоев.
Не беспокойтесь о подробностях того, что произошло. Мы шаг за шагом пройдемся по графику LSTM. Теперь давайте попробуем привыкнуть к обозначениям, которые мы используем.
На приведенной выше диаграмме каждая строка содержит полный вектор от выхода одного узла до входа других узлов. Розовые кружки представляют точечные операции, такие как сложение векторов, а желтые прямоугольники — изученные слои нейронной сети. Слияние строк означает объединение, а разветвление строк означает, что копируется и что будет скопировано в другое место.
Основная идея LSTM
Суть LSTM — это состояние ячейки, которое охватывает горизонтальную строку в верхней части графика.
Состояния ячеек немного похожи на конвейерную ленту. Он проходит непосредственно через цепочку с небольшими линейными взаимодействиями. По нему легко течет информация.
LSTM имеют возможность удалять или добавлять информацию о состоянии ячейки, тонко настроенная структура называетсяgates.
GatesЭто способ избирательного пропуска информации. Они состоят из слоев сигмовидной нейронной сети и операций поточечного умножения.
Слой Sigmoid выводит числа от 0 до 1, описывающие, сколько должен пройти каждый компонент. Нулевое значение означает «ничего не пропускать», а значение означает «пропускать все!»
LSTM имеет три ворот для защиты и контроля состояния батареи.
шаг за шагом
Первый шаг в LSTM — решить, какую информацию мы хотим выбросить из состояния ячейки. Это решение принимается сигмовидным слоем, называемым «слоем забытых ворот», который смотрит на час т − 1 h_{t-1}ht−1 и Икс т X_{t}Xt и вывод в состоянии ячейки С т − 1 Каждое число в C_{t-1}Ct-1 соответствует числу от 0 до 1. 1 за «полностью оставить это» и 0 за «полностью избавиться от этого».
Вернемся к примеру с нашей языковой моделью, пытаясь предсказать следующее слово на основе всех предыдущих слов. В такой задаче состояние ячейки может содержать часть речи текущего субъекта, чтобы можно было использовать правильное местоимение. Когда мы видим новый предмет, мы часто забываем часть речи предыдущего предмета.
Следующий шаг — решить, какую новую информацию мы хотим сохранить в состоянии ячейки. Это состоит из двух частей. Во-первых, сигмовидный слой, называемый «слоем входных ворот», решает, какие значения мы будем обновлять. Затем слой tanh создает новый вектор значений-кандидатов.Кт.Это можно добавить к состоянию. На следующем шаге мы объединим их, чтобы создать обновление состояния.
В нашем примере языковой модели мы хотим добавить часть речи нового субъекта в состояние ячейки, чтобы заменить старый предмет, который мы забыли.
Старое состояние ячейки теперь может быть С т − 1 C_{t-1}Ct-1 обновляется до нового состояния ячейки С т C_{t}Ct. Предыдущие шаги уже решили, что делать, нам просто нужно это сделать.
мы используем ф т f_{t}ft, умноженное на старое состояние, забывая вещи, которые мы давно решили забыть. Затем мы добавляем я т я_ {т} это * С т C_{t}Ct , которое является новым значением-кандидатом, в зависимости от того, насколько мы решили обновить каждое значение состояния.
В случае с языковыми моделями, как мы решили на предыдущих шагах, мы фактически удалим информацию о старой подлежащей части речи и добавим новую информацию.
Наконец, нам нужно решить, что мы будем выводить. Этот вывод будет основан на состоянии нашей ячейки, но в отфильтрованной версии. Во-первых, мы запускаем сигмовидный слой, который решает, какие части состояния ячейки мы хотим вывести. Затем мы передаем состояние ячейки через tanh (перемещаем значение между 1 и 1). И умножьте его на выход Sigmoid Gate, чтобы на выходе была только та часть, которую мы решили.
В примере с языковой моделью, поскольку он только что увидел предмет, он может захотеть вывести информацию о глаголе на случай, если что-то произойдет дальше. Например, он может вывести, является ли подлежащее единственным или множественным, поэтому мы знаем, в какую форму следует объединить глагол, если это следующий шаг.
Варианты долговременной кратковременной памяти
То, что я описываю, — вполне нормальный LSTM. Но не все LSTM такие же, как указано выше. Фактически, почти в каждой статье, посвященной LSTM, используется немного другая версия. Не большая разница, но стоит упомянуть.
Gers & Schmidhuber (2000)Популярный представленный вариант LSTM - это добавление «глазковых соединений». Это означает, что мы позволяем слою ворот смотреть на состояние ячейки.
На приведенной выше диаграмме все ворота вставлены в глазок, но многие бумаги будут давать одни взгляды, а другие нет.
Другой вариант заключается в использовании комбинированных вентилей забывания и ввода. Вместо того, чтобы индивидуально решать, что забыть, мы должны добавлять новую информацию и принимать эти решения вместе. Мы просто забываем, где что печатать. Когда мы забываем старые вещи, мы только вводим в состояние новые значения.
Чуть более драматичным вариантом LSTM является Gate Recurrent Unit (сокращенно GRU), представленный CHO et al.Cho, et al. (2014). Он объединяет ворота забывания и ворота ввода в «ворота обновления». Он также объединяет состояние ячейки и скрытое состояние и вносит некоторые другие изменения. Полученные модели проще, чем стандартные модели LSTM, и их популярность возросла.
Это лишь некоторые из известных вариантов LSTM. Есть много других, таких как Яо и т. д.Yao, et al. (2015). Есть также несколько совершенно разных способов обработки долгосрочных зависимостей, напримерKoutnik, et al. (2014)Заводной RNN.
Какой из этих вариантов лучше? Важны ли эти различия?Greff, et al. (2015)Сравните популярные варианты и убедитесь, что они все одинаковые.Jozefowicz, et al. (2015)Протестировано более 10 000 архитектур RNN и обнаружено, что некоторые из них работают лучше, чем LSTM, в некоторых задачах.
в заключении
Ранее я упоминал о замечательных достижениях RNN. В основном все это достигается с помощью LSTM. Они работают лучше для большинства задач!
Как набор уравнений, LSTM выглядят устрашающе. Надеемся, что шаг за шагом в этом посте они станут более доступными.
LSTM — это большой шаг, которого мы можем достичь с помощью RNN. Странная вещь: есть ли еще один важный шаг? Среди исследователей распространено мнение: "Да! Еще шаг, внимание!"
Идея состоит в том, чтобы каждый шаг RNN извлекал информацию из большого количества информации. Например, если RNN используется для создания подписи, описывающей изображение, она может выбрать часть изображения для просмотра каждого выводимого слова. По факту,Сюй и др. (2015)Сделайте это — если вы хотите привлечь внимание людей, это может быть интересным местом для начала. Было много захватывающих результатов, привлекающих внимание людей, и кажется, что на горизонте их еще больше.
Внимание — не единственная захватывающая тема в исследованиях RNN. Например,Kalchbrenner, et al. (2015)Grid LSTM и др. кажется очень многообещающим. Работа с RNN в генеративных моделях, таких какGregor, et al. (2015),Chung, et al. (2015),илиBayer & Osendorfer (2015)- тоже очень интересно. Последние несколько лет были захватывающим временем для нейронных сетей, и будущее может обещать только большее.
Оригинальная ссылка:Understanding LSTM Networks
перевести:Сюй Дабай