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

LSTM — это своего рода RNN на стероидах. Самым большим преимуществом, которое он дает вам по сравнению с RNN, является его способность изучать более длинные последовательности данных. Например, если вы тренируете сеть для изучения английских предложений, RNN на самом деле не сможет узнать, что что-то в начале предложения очень сильно связано с чем-то, что может быть в самом конце, LSTM этого не делают. У меня есть эта проблема. Ну, я не скажу, что у меня вообще нет этой проблемы, но она работает намного лучше, чем ваш ванильный RNN. Причудливый термин машинного обучения, о котором вам нужно помнить, — «исчезающий градиент». Вот почему RNN не могут изучать длинные последовательности, а борьба с исчезающим градиентом — это то, как LSTM может изучать длинные последовательности.

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

Это один шаг LSTM. На этой диаграмме показан процесс от момента получения входных данных x в момент времени t до получения выходных данных o в момент времени t. Все, что между ними, — это то, что помогает LSTM хорошо изучать входящие последовательности.

Я знаю, что это много переменных, но не волнуйтесь, это действительно легко, когда вы понимаете, что они на самом деле означают.

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

Например. "Это так круто." Будет соответствовать 16 временным шагам, каждый временной шаг соответствует одному символу, который будет x в момент времени t на диаграмме. На каждом временном шаге будет происходить вся эта схема на диаграмме.

Поэтому, когда LSTM получает ввод x, ему нужно решить несколько вещей. Какую часть этого ввода он должен учитывать при обучении, сколько из того, что было до текущей буквы, он должен учитывать и сколько из того, что он уже знает, должен забыть. У LSTM есть ячейка памяти, которая представляет собой комбинацию предыдущей памяти после того, как некоторые вещи были забыты, и некоторые вещи были изучены из нового ввода. Скрытое состояние h важно, потому что оно является связующим звеном между каждым из временных шагов. Используя скрытое состояние предыдущего шага, вычисляются текущий вход, выход и т. д. Вот почему вы видите, что h в момент времени t — 1 входит во все эти ворота на диаграмме.

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

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