Книга: Инжиниринг искусственного интеллекта
Назад: 2.2 RNN (Recurrent Neural Network / Рекуррентнаянейросеть)
Дальше: 2.4 GRU (Gated Recurrent Unit / Рекуррентный блок с вентилями)

2.3 LSTM (Long Short‑Term Memory / Долгая краткосрочная память)

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



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



LSTM расшифровывается как Long Short-Term Memory - долгая краткосрочная память. В названии уже скрыта суть: это всё ещё рекуррентная сеть с краткосрочной памятью (как RNN), но теперь она может хранить информацию гораздо дольше. Давайте разберёмся, как ей это удаётся.

Чтобы понять, чем LSTM отличается от обычной RNN, представьте, что простая RNN - это человек, который при чтении книги каждый раз переписывает свой блокнот заново, стирая всё старое. LSTM же ведёт себя как опытный читатель: он носит с собой стопку стикеров-напоминалок и периодически выбрасывает те, что уже не нужны, оставляя важное.

Как же устроен этот «умный блокнот»? В LSTM появляется дополнительная «лента конвейера», которая тянется через всю сеть и несёт в себе важную информацию, почти не меняясь. А три специальных вентиля решают, что с этой лентой делать.



1. Проблема, которую решает LSTM



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



2. Как это работает (Три вентиля)



У LSTM есть три хитрых фильтра, которые регулируют поток информации. Снова пример с предложением: «Кот (1) ... (много слов) ... (2) наелся и (3) спит».

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



Вентиль 1: Забывание (Forget Gate) - «Что выкинуть?»



Вопрос:

«Старая информация о коте всё ещё нужна или уже пора её забыть?»

Когда мы дошли до слова «наелся», модель понимает: «Кот всё ещё актуален, ничего не забываем».

А когда дошли до слова «спит», можно чуть ослабить информацию о том, что он «ел», оставив только факт наличия кота.



Вентиль 2: Входной (Input Gate) - «Что записать нового?»



Вопрос:

«Какая информация из нового слова («наелся») действительно важна и её стоит добавить в ленту конвейера?»

Модель решает: «Факт того, что кот сыт, важен. Добавляю его в ленту памяти».



Вентиль 3: Выходной (Output Gate) - «Что показать миру?»



Вопрос:

«Основываясь на всей ленте памяти (кот + сыт), что я должен выдать как результат прямо сейчас?»

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



3. Почему LSTM круче RNN?



Благодаря этим вентилям, LSTM может протащить важную информацию через сотни шагов.

Пример: в начале текста было слово «Она». LSTM держит это в ленте памяти, не перезаписывая. Через 50 слов встречается глагол «пошла». LSTM сверяется с лентой, видит там «Она» и понимает, что нужно использовать женский род. RNN к этому моменту уже забыла бы, о ком речь.



4. Недостатки (Почему и её вытеснили)



LSTM решила проблему забывания, но унаследовала главную проблему RNN - последовательность:



Нет параллелизации

Чтобы обработать 1000-е слово, нужно дождаться результатов обработки 999 предыдущих. На современных видеокартах (GPU), которые любят считать всё одновременно, это очень медленно.



Сложность

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



LSTM

это RNN с «умным блокнотом». Вместо того чтобы просто переписывать страницу, она решает, какие старые записи вычеркнуть (forget gate), какие новые внести (input gate) и что сейчас прочитать вслух (output gate). Длинную память это лечит, но скорость работы остаётся последовательной, что в итоге привело к победе Трансформеров.

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



Назад: 2.2 RNN (Recurrent Neural Network / Рекуррентнаянейросеть)
Дальше: 2.4 GRU (Gated Recurrent Unit / Рекуррентный блок с вентилями)