Яка інтуїція стоїть за періодичною нейронною мережею довгострокової пам'яті (LSTM)?


11

Ідея, що стоїть за періодичною нейронною мережею (RNN), мені зрозуміла. Я розумію це таким чином:
У нас є послідовність спостережень ( o1,o2,,on ) (або, іншими словами, багатоваріантний часовий ряд). Кожне окреме спостереження oi - N -вимірний числовий вектор. У моделі RNN ми припускаємо, що наступне спостереження oi+1 є функцією попереднього спостереження oi , а також попереднього «прихованого стану» hi, де приховані стани також представлені числовими векторами (розміри спостережуваних та прихованих станів можуть бути різними). Приховані стани також передбачаються залежними від попереднього спостереження та прихованого стану:

оi,годi=Ж(оi-1,годi-1)

Нарешті, у моделі RNN функція Ж вважається нейронною мережею. Ми тренуємо (підганяємо) нейронну мережу, використовуючи доступні дані (послідовність спостережень). Наша мета в навчанні - вміти прогнозувати наступне спостереження максимально точно, використовуючи попередні спостереження.

Тепер мережа LSTM - це модифікація мережі RNN. Наскільки я зрозумів, мотивація LSTM полягає у вирішенні проблеми короткої пам’яті, властивої RNN (звичайні RNN мають проблеми із пов’язаними подіями, які занадто далеко розділені за часом).

Я розумію, як працюють мережі LSTM. Ось найкраще пояснення LSTM, яке я знайшов. Основна ідея така:

На додаток до вектора прихованого стану ми вводимо так званий вектор "стан комірки", який має такий же розмір (розмірність), як вектор прихованого стану ( ci ). Я думаю, що вектор "стан клітин" вводиться для моделювання довгострокової пам'яті. Як і у випадку звичайних RNN, мережа LSTM отримує спостережуваний та прихований стан як вхід. Використовуючи цей вхід, ми обчислюємо новий "стан комірки" таким чином:

ci+1=ω1(оi,годi)ci+ω2(оi,годi)ciнт(оi,годi),

де функції ω1 , ω2 та ciнт моделюються нейронними мережами. Щоб зробити вираз більш простим, я просто видаляю аргументи:

ci+1=ω1ci+ω2ciнт

Отже, ми можемо бачити, що новий "вектор стану клітини" ( ci ) - це зважена сума старого вектора стану ( ci-1 ) та "проміжного" вектора стану клітин ( ciнт ). Множення між векторами є компонентним (ми множимо два N мірних векторів і отримуємо, як результат, ще один розмірний вектор). Іншими словами, ми змішуємо два вектори стану клітин (старий та проміжний), використовуючи ваги, що відповідають компонентам.

ω2ω1ω1ω1ω2

оiгодiгодiнт

годi+1=годiнтS(ci+1),

S

Отже, моє запитання: чому (або як саме) ця архітектура вирішує проблему?

Зокрема, я не розумію наступного:

  1. Ми використовуємо нейронну мережу, щоб генерувати "проміжну" пам'ять (вектор стану комірки), змішану зі "старою" пам'яттю (або стан комірки), щоб отримати "нову" пам'ять (стан комірки). Вагові коефіцієнти для змішування також розраховуються нейронними мережами. Але чому ми не можемо використовувати лише одну нейронну мережу для обчислення "нового" стану комірки (або пам'яті). Або, іншими словами, чому ми не можемо використовувати спостережуваний стан, прихований стан та стару пам'ять як входи до нейронної мережі, яка обчислює "нову" пам'ять?
  2. Зрештою, ми використовуємо спостережувані та приховані стани для обчислення нового прихованого стану, а потім використовуємо "новий" стан комірки (або (довготривалу) пам'ять) для корекції складової щойно обчисленого прихованого стану. Іншими словами, компоненти стану клітини використовуються так само, як ваги, які просто зменшують відповідні компоненти обчисленого прихованого стану. Але чому саме вектор стану клітин використовується саме таким чином? Чому ми не можемо обчислити новий прихований стан, поставивши вектор стану комірки (довготривалу пам'ять) на вхід нейронної мережі (що також приймає спостережувані та приховані стани як вхідні дані)?

Додано:

Ось відео, яке може допомогти з'ясувати, як організовані різні ворота ("зберігати", "писати" та "читати").


1
Ви, здається, розумієте LSTM краще за мене, тому я не публікую фактичну відповідь, оскільки це може бути не те, що ви шукаєте: ворота LSTM (в основному ворота забуття) дозволяють йому зберігати активацію та градієнти довгий час у міру необхідності. Таким чином, інформація в момент часу t може зберігатися доступною до моменту t + n, для довільно великих n.
rcpinto

@rcpinto, я також думаю, що основна ідея запропонованої "архітектури" полягає в тому, щоб забезпечити збереження інформації тривалий час (багато кроків часу). Але я не розумію, що саме це робить можливим. Дві мережі воріт ("зберігати" і "писати") можуть дізнатися, що ваги тривалості повинні бути великими, а ваги для запису повинні бути невеликими (тоді ми зберігаємо пам'ять надовго). Але чи не може цього досягти лише одна мережа? Невже нейронна мережа (яка приймає прихований стан (пам'ять) та стан спостережуваного стану як вхідний) дізнається, що прихований стан слід зберігати без змін?
Роман

Дійсно, просто встановіть повторювану матрицю ваги на тотожність, і вона завжди буде тримати останню активацію. Проблема - це завжди частина, а це означає, що нові входи накопичуватимуться та швидко насичуватимуть активацію нейрона, що також є своєрідним забуванням. Таким чином, здатність стерти попередню пам'ять або блокувати формування нових спогадів є вирішальним.
rcpinto

@rcpinto, але чи не може бути досягнуто "здатності стерти попередню пам'ять або блокувати формування нового" в межах однієї нейронної мережі? Нейронна мережа отримує вектор пам'яті (або прихований вектор стану) і спостережуваний вектор стану як вхідний. Чи не може така мережа "вирішити" зберігати або замінювати деякі компоненти прихованого стану (його пам'ять) на основі значень компонентів у спостережуваному векторі стану?
Роман

LSTM можуть зробити це тому, що ворота відкриваються або закриваються відповідно до поточного вводу та стану. У простих RNN немає такої концепції. У цьому випадку сама держава завжди реагує на введення / стан безпосередньо і негайно, не даючи їй "вибрати", зберігати чи ні нову інформацію. Крім того, немає механізму стерти деяку збережену пам'ять, вона завжди накопичуватиметься відповідно до вхідних ваг нейрона, і ці ваги не можуть змінюватися після тренування. Оскільки ворота LSTM є мультиплікаційними, вони імітують зміну ваги під час виведення, реагуючи на поточний вхід / стан.
rcpinto

Відповіді:


1

Як я розумію ваші запитання, те, що ви зображаєте, в основному об'єднує вхід, попередній прихований стан і попередній стан комірки, і передаючи їх через один або кілька повністю пов'язаних шарів для обчислення вихідного прихованого стану та стану комірки, замість того, щоб самостійно обчислювати " "оновлення, які арифметично взаємодіють зі станом комірки. Це в основному створить звичайний RNN, який виводить лише частину прихованого стану.

Основна причина цього не робити полягає в тому, що структура обчислень стану клітин LSTM забезпечує постійний потік помилок через довгі послідовності . Якщо ви використовували ваги для обчислення стану комірок безпосередньо, вам потрібно буде повторно розповсюджувати їх на кожному етапі! Уникнення подібних операцій значною мірою вирішує зникаючі / вибухаючі градієнти, які інакше чують РНН.

Крім того, можливість легко зберігати інформацію протягом більш тривалого періоду часу - хороший бонус. Інтуїтивно зрозуміло, що мережу буде набагато складніше навчитися з нуля, щоб зберегти стан комірок протягом більш тривалих проміжків часу.

Варто зазначити, що найпоширеніша альтернатива LSTM, GRU , аналогічно обчислює оновлення прихованого стану, не вивчаючи ваги, які працюють безпосередньо на самому прихованому стані.


0

Якщо я правильно зрозумів, обидва ваші запитання зводяться до цього. Два місця, де ми використовуємо і танг, і сигмоїд для обробки інформації. Замість цього ми повинні використовувати одну єдину нейронну мережу, яка бере всю інформацію.

Я не знаю недоліків використання однієї єдиної нейронної мережі. На мою думку, ми можемо використовувати єдину нейронну мережу з сигмоподібною нелінійністю, яка правильно засвоює вектор, який буде належним чином використаний (додається у клітинному стані у першому випадку або передається як прихований стан у другому випадку).

Однак, як ми це робимо зараз, ми розбиваємо завдання на дві частини, в одній частині, яка використовує сигмоподібну нелінійність, щоб дізнатися обсяг даних, що зберігаються. Інша частина, яка використовує танх як нелінійність, - це лише виконувати завдання вивчення важливої ​​інформації.

Простіше кажучи, сигмоїд дізнається, як заощадити, а танх дізнається, що врятувати, і розбивши його на дві частини, буде полегшити навчання.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.