[Перевод] Глубокое понимание сети памяти LSTM

Google искусственный интеллект Нейронные сети Архитектура
[Перевод] Глубокое понимание сети памяти LSTM

Перевод этой статьи взят сGoogle Brainисследователь машинного обученияcolahизблог, оригинальная ссылка, пожалуйста, нажмитездесь.

Эта статья - мой первый перевод, и на это уходит день, если есть какие-то ошибки или неуместные переводы, пожалуйста, исправьте их в комментариях (возможно, потребуется использовать научный доступ в Интернет). Кроме того, просьба указывать при цитировании или перепечаткеэта статьяа такжеоригинальный, Спасибо за сотрудничество!

Рекуррентная нейронная сеть RNN

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

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

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


Модель RNN с рекуррентной структурой

На приведенном выше рисункеAпредставляет любую нейронную сеть (CNN, MLP...),X_tпредставлены вtввод точки времени,h_tпредставлены вtвывод момента времени. Рекуррентная структура в графе позволяет передавать информацию из одного момента времени в RNN в более поздний момент времени.

Эти рекуррентные структуры делают RNN немного загадочными, но если вы задумаетесь о них, вы обнаружите, что RNN не сильно отличаются от обычных нейронных сетей (CNN, MLP...). RNN можно рассматривать как несколько зеркал нейронной сети, каждое из которых отражает информацию для следующего зеркала, к которому оно подключено. Представьте, как выглядит циклическая структура развертывания RNN?



Модель RNN с развернутой рекуррентной структурой

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

RNN на самом деле окружает нас повсюду и постоянно используется людьми. За последние годы (2015 г.) применение RNN добилось выдающихся достижений в следующих проблемных областях: распознавание речи, языковое моделирование, перевод, озвучивание изображений/субтитры к изображениям и т. д. Подождите, список можно продолжать и продолжать. существуетAndrej Karpathyизэтот отличный блогНеобычайные возможности RNN обсуждаются в .

Ключом к успеху RNN являются ячейки памяти LSTM (долгосрочная кратковременная память). Бесчисленные ячейки памяти LSTM образуют особую рекуррентную нейронную сеть. Я (переводчик) называю ее сетью ячеек памяти LSTM. Она превосходит стандартные RNN по многим параметрам. задач и отвечает почти за все впечатляющие достижения RNN. Далее мы продолжим изучение ячейки памяти LSTM.

Проблема долгосрочных (Long-Term) зависимостей

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

Иногда нам нужна только ближайшая (краткосрочная) информация для выполнения текущей задачи, например, предсказание следующего слова в языковой модели на основе некоторых предыдущих слов. Если бы мы попытались предсказатьThe clouds are in the __.Последнее слово этого предложения, нам не нужна дополнительная контекстная информация, ответ, очевидно, должен бытьsky(Потому что облака в основном в небе). В этом случае, когда ответ скрыт в нескольких словах до и после, стандартная RNN также может научиться использовать предварительную информацию для принятия правильных суждений.


Краткосрочная (Short-Term) зависимая модель RNN

Но в подавляющем большинстве случаев ответ не будет скрыт в предшествующих и последующих словах, и нам нужно больше контекстной информации, чтобы делать точные прогнозы. На этот раз, если бы мы попытались предсказатьI grew up in France ..(此处省略一段话).. I speak fluent __.Последнее слово этого абзаца, прежде всего, мы можем определить название языка через информацию о словах до и после, но если мы хотим уточнить, какой это язык, нам нужно вышеизложенное (перед абзацем )FranceИнформация. В нашем повседневном языке вполне возможно иметь релевантную информацию, подобную этой.I grew up in France, вдали от предсказанного положенияI speak fluent __.далеко.

К сожалению, когда это расстояние становится все шире и шире, стандартным RNN становится трудно соединиться посредством обучения и обучения.相关信息и预测位置, поэтому удовлетворительных прогнозов мало.


Модель долгосрочной зависимости RNN

Теоретически стандартные RNN вполне способны обрабатывать долгосрочные зависимости, но на самом деле для решения простых задач им также необходимо вручную точно настроить свои параметры, а сами RNN, похоже, не в состоянии изучить эти параметры. Этот вопрос подробно рассматривается в следующих двух статьях:Hochreiter (1991) [German],Bengio, et al. (1994)Они нашли что-то об основной причине, почему проблема так сложна.

К счастью, у LSTM нет этой проблемы.

Сеть памяти LSTM

Сеть памяти LSTM (часто сокращенноLSTMs) — это специальная модель RNN, которая хорошо фиксирует изученные долгосрочные зависимости. это изHochreiter & Schmidhuber (1997)предложено, а также усовершенствовано и продвинуто многими в последующей работе1. Структура памяти LSTM добилась замечательных результатов в решении самых разных задач и в настоящее время широко используется.

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

Все RNN имеют повторяющуюся цепную структуру модуля нейронной сети (повторение означает, что структура каждой временной метки после ее расширения точно такая же, цепочка означает, что они связаны друг с другом для передачи информации, а модуль представляет структуру каждой метки времени, упомянутой выше), в стандартной модели RNN эта повторяющаяся модульная структура имеет очень простую форму, например, только одинtanhСлой функции активации:



Слой активации $tanh$ в стандартной повторяющейся модульной структуре RNN

Сеть памяти LSTM также имеет цепную структуру, аналогичную стандартной RNN, но повторяющаяся модульная структура имеет другую форму. это не один слойtanh, но имеет сложный слой из четырех (4) элементов, взаимодействующих в особой логической форме. [Примечание переводчика: вот ссылкаlorderYuВ своемБлог CSDNПеревод в , слова очень точные, спасибо! ]



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

Не беспокойтесь о том, что означают детали на картинке, мы шаг за шагом объясним значение LSTM на картинке выше. Теперь давайте сначала распознаем некоторые символы, которые необходимо использовать:


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

[译者注:(x_1, x_2) + (y_1, y_2) = (x_1 + y_1, x_2 + y_2)]

Желтые прямоугольники представляют слои нейронной сети. Слияние стрелок представляет собой слияние векторов в многомерную матрицу, а ответвления стрелок представляют дублирующийся поток данных и протекающий по разным путям.

Основная идея ячейки памяти LSTM

Ключом к сети памяти LSTM является состояние памяти LSTM в каждой отметке времени, которая показана жирной черной горизонтальной линией на рисунке ниже.

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


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

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


SigmoidФункция активации выводит значение от 0 до 1, которое описывает долю информации, которая может пройти. 0 означаетнетИнформационные пропуска, 1 для информацииПолностьюпройти через. Ячейка памяти LSTM имеет три (3) таких вентиля для защиты и управления состоянием ячейки памяти.

Узнайте о памяти LSTM шаг за шагом

Первым шагом в памяти LSTM является решение, какую информацию выбросить из существующего состояния памяти.Это решение принимаетсяSigmoidЭто делается с помощью «ворот забывания», состоящего из уровня функции активации, и его входh_{t−1}иx_t, выходом является вектор состояния с ячейкой памятиC_{t−1}Вектор одинаковой размерности, каждое число в векторе находится в диапазоне от 0 до 1, повторяю, 1 означает сохранить всю информацию, 0 означает полностью стереть/забыть информацию. [Примечание переводчика: напримерf_t=(0.7,0.5,0.9)]

На примере предыдущей языковой модели наша задача состоит в том, чтобы предсказать следующее слово на основе предыдущих слов. В такой задаче мнемоническое состояние может содержать род текущего подлежащего [Примечание переводчика: например, в немецком языке каждое существительное имеет род, делится на женский женский род, мужской род мужской, средний средний], чтобы можно было использовать местоимения. правильно в следующих текстах Когда мы видим новый субъект, мы можем забыть о поле предыдущего субъекта.


Следующим шагом является решение, какую новую информацию хранить в состоянии памяти. Он разделен на две части, первая,SigmoidСлой функций активации состоит из чего-то, что называется «входными воротами», которые определяют, какие измерения в векторе должны быть обновлены [Примечание переводчика: здесь я называю это коэффициентом количества обновления];tanhСлой функции активации генерирует новые векторы-кандидаты, которые можно добавить к состоянию памяти.\tilde{C}_t. Затем эти два вектора объединяются как поточечное произведение для создания вектора обновления состояния ячейки памяти.

Для предыдущего примера языковой модели мы добавим пол нового предмета [Примечание переводчика: сделайте точечное сложение+] в мнемоническое состояние, чтобы заменить ранее забытую информацию о поле предыдущего субъекта.


Теперь поместите старое мнемоническое состояниеC_{t−1}обновить доC_t, вышеперечисленные шаги уже сказали, что мы собираемся делать, давайте реализуем это сейчас.

Сначала мы преобразуем старое мнемоническое состояниеC_{t−1}умножить наf_t, забыть то, что мы решили забыть, затем добавитьi_t*\tilde{C}_t, который представляет собой вектор-кандидат, сгенерированный нами ранее, умноженный на коэффициент количества обновлений.

Для предыдущего примера языковой модели эта операция соответствует фактическому отбрасыванию информации о поле старого субъекта и добавлению новой информации.


Наконец, нам нужно решить, что выводить. Этот вывод основан на текущем состоянии ячейки памяти, но также отфильтрован. Сначала сSigmoidуровень функции активации, чтобы решить, какие части выходной памяти находятся в состоянии [Примечание переводчика: выходные коэффициенты]; затем используйтеtanhСожмите значение состояния ячейки памяти между -1 и 1; затем сделайте поточечное произведение двух, и, наконец, это выведет только тот результат, который мы решили вывести.

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


Различные версии памяти LSTM

До сих пор была представлена ​​​​самая распространенная структура памяти LSTM, но не все ячейки памяти LSTM одинаковы. Фактически, почти каждая статья, посвященная памяти LSTM, вносит небольшие изменения в ее структуру. Обычно изменения незначительны, но есть версии, о которых стоит упомянуть.

Очень популярная версия LSTMGers & Schmidhuber(2000)предложено в документе, добавив «глазковые соединения». Это означает, что каждый «гейт» может видеть состояние ячейки памяти.


В приведенной выше структуревсеглазки добавляются к «дверям» газеты, но во многих газетах некоторые «двери» добавляются, а некоторые «двери» - нет.

Еще одно изменение заключается в объединении «ворот забывания» и «ворот ввода» вместе. Это отличается от предыдущегов одиночестверешить, что забыть ив одиночествеРешил, что добавить, теперь объединяю два решения. Только когда есть ввод в определенном измерении, старая информация в этом измерении забывается; только когда старая информация в определенном измерении забывается, новая введенная информация обновляется до измерения памяти. [Примечание переводчика: вот еще раз ссылкаlorderYuВ своемБлог CSDNПеревод в , спасибо! ]


Кардинальным изменением в структуре ячеек памяти LSTM является GRU (Gated Recurrent Unit), который состоит изCho, et al. (2014)представлены в этой статье. Он смешивает «ворота забывания» и «ворота ввода» в «ворота ввода» и объединяет состояние памяти и скрытое состояние, среди других изменений. Модель ячейки памяти GRU структурно проще, чем традиционная ячейка памяти LSTM, и очень популярна.


Это лишь некоторые из изменений в структуре ячейки памяти LSTM, другие, такие какYao, et al. (2015)Глубина Gated RNN, Другие используют совершенно другой подход к долгосрочным зависимостям, напримерKoutnik, et al. (2014)Заводные RNN.

гдеодинКакой сорт лучший? Имеют ли значение эти различия?Greff, et al(2015)Я провел очень хороший сравнительный эксперимент с этими популярными изменениями и обнаружил, что они в основном одинаковы.Jozefowicz, et al(2015)После тестирования десятков тысяч архитектур RNN было обнаружено, что RNN работают лучше, чем LSTM, в определенных задачах.

Суммировать

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

Приведенный выше набор уравнений делает LSTM действительно пугающими, но, надеюсь, после прочтения этой статьи вы лучше их поймете и найдете более доступными.

LSTM — это большой шаг вперед в достижениях RNN, и вы можете, естественно, спросить: будет ли еще больший шаг вперед? Исследователи в целом соглашаются: «Будет! Следующий шаг — механизм внимания!» Идея состоит в том, чтобы позволить каждому шагу RNN выбирать информацию из большего количества информации. Например, если вы используете RNN для создания аннотаций, описывающих изображение, может потребоваться часть изображения для просмотра и принятия решения по каждому выводимому слову. На самом деле эта бумагаXu, et al. (2015)Вот что он делает — если вы хотите изучить механизмы внимания, это может быть хорошим местом для начала! Много захватывающих результатов с использованием механизмов внимания, и кажется, что их гораздо больше...

Внимание — не единственная захватывающая подсказка в исследованиях RNN, например,Kalchbrenner, et al. (2015)Grid LSTM в статье кажутся очень многообещающими. Документы об использовании RNN в генеративных моделях -Gregor, et al. (2015), Chung, et al. (2015)Bayer & Osendorfer (2015)- Тоже все очень интересно. Последние несколько лет (2015) были захватывающим временем для рекуррентных нейронных сетей, и в будущем они будут еще более впечатляющими!

Благодарность

Я благодарен многим людям, которые помогли мне лучше понять LSTM, прокомментировали приведенные выше визуализации и дали обратную связь.

Я очень ценю очень полезные отзывы от моих коллег в Google, особенноOriol Vinyals,Greg Corrado,Jon Shlens,Luke Vilnisа такжеIlya Sutskever. Я также благодарен другим друзьям и коллегам за то, что они нашли время, чтобы помочь мне, в том числеDario AmodeiиJacob Steinhardt. я особенно благодаренKyunghyun ChoЧрезвычайно тщательное общение и общение с моими картами.

Перед этим постом я дважды практиковался в объяснении LSTM в серии лекций по обучению нейронным сетям. Спасибо всем участникам, которые были терпеливы со мной и за их отзывы.

Примечания

  1. Помимо оригинального автора, есть много людей, которые внесли свой вклад в современные LSTM. Вот неполный список: Феликс Герс, Фред Камминс, Сантьяго Фернандес, Джастин Байер, Даан Вирстра, Джулиан Тогелиус, Фаустино Гомес, Маттео Гальоло иAlex Graves.