Чи зможу я перевищити свій LSTM, якщо навчатиму його за допомогою розсувного вікна? Чому люди, схоже, не використовують його для LSTM?
Для спрощеного прикладу припустимо, що ми повинні передбачити послідовність символів:
A B C D E F G H I J K L M N O P Q R S T U V W X Y Z
Це погано (чи краще?), Якщо я продовжую тренувати свій LSTM за допомогою таких мініатюр:
A B C D E F G H I J K L M N, backprop, erase the cell
B C D E F G H I J K L M N O, backprop, erase the cell
.... and so on, shifting by 1 every time?
Раніше я завжди готував це як:
A B C D E F G H I J K L M N, backprop, erase the cell
O P Q R S T U V W X Y Z, backprop, erase the cell
Замість того, щоб змістити їх на один, краще було б просунути вікно на 2 записи замість цього тощо? Що це означатиме (з точки зору точності / надмірності)?
Крім того, якби я підходив до розсувного вікна в мережі Feed-forward, це призвело б до надмірного розміщення? Я би припустив, що так, оскільки мережа дуже тривалий час піддається впливу одних і тих же інформаційних регіонів. Наприклад, їй піддаються E F G H I J K
тривалий час.
Редагувати:
Пам'ятайте, що стан комірок стирається між тренувальними партіями, тому LSTM у цей час матиме "молот для голови". Неможливо згадати, що було до OPQRSTUVWXYZ. Це означає, що LSTM ніколи не може дізнатися, що "O" слідує за "M".
Отже, я подумав (таким чином, все моє запитання), чому б не дати йому проміжної (перекриваючої) партії між ... і в тому випадку, чому б не використати кілька міні-матчів, що перекриваються, - для мене це забезпечило б більш плавне тренування? Зрештою, це означатиме розсувне вікно для LSTM.
Деякі корисні відомості, які я знайшов після прийняття відповіді:
Перше слово англійського перекладу, ймовірно, дуже корелює з першим словом вихідного речення. Але це означає, що декодер повинен розглядати інформацію з 50 кроків тому, і цю інформацію потрібно якось закодувати у векторі. Як відомо, у періодичних нейронних мереж виникають проблеми, пов'язані з такими залежностями дальнього діапазону. Теоретично такі архітектури, як LSTM, повинні мати змогу впоратися з цим, але на практиці залежність далеких відстаней все ще є проблемою.
Наприклад, дослідники виявили, що реверсування послідовності джерела (подача його назад в кодер) дає значно кращі результати, оскільки скорочує шлях від декодера до відповідних частин кодера. Аналогічно, подача послідовності введення двічі також допомагає мережі краще запам'ятовувати речі. Наприклад, якщо одним із прикладів тренінгу є "Джон пішов додому", ви дасте "Джон пішов додому, Джон пішов додому" в мережу як один вхід.
Відредагуйте після прийняття відповіді:
Через кілька місяців я більше схильний використовувати підхід розсувного вікна, оскільки він краще використовує дані. Але в цьому випадку ви, мабуть, не хочете тренувати BCDEFGHIJKLMNO відразу після ABCDEFGHIJKLMNO. Натомість перетасуйте свої приклади, щоб поступово і рівномірно "вводити" всю інформацію у свій LSTM. Дайте йому HIJKLMNOPQRSTU після ABCDEFGHIJKLMNO тощо. Це безпосередньо пов'язане з катастрофічним забуттям. Як завжди, уважно стежте за набором валідації та тестування та припиняйте, як тільки побачите, що їх помилки постійно збільшуються
Крім того, питання "молот по голові" можна покращити, використовуючи синтетичні градієнти. Про його перевагу дивіться тут: (у зв’язаній відповіді обговорюється користь довгих послідовностей) /datascience//a/32425/43077