RNN: Коли застосовувати BPTT та / або оновлювати ваги?


15

Я намагаюся зрозуміти застосування високого рівня RNN для маркування послідовностей через (серед інших) документ Graves '2005 про класифікацію фонеми.

Підсумовуючи проблему: у нас є великий навчальний набір, що складається з (вхідних) аудіофайлів з одиночних пропозицій та (вихідних) часу початку роботи, часу зупинки та міток для окремих фонем (включаючи декілька "спеціальних" фонем, таких як мовчання, таким чином, що кожен зразок у кожному аудіофайлі позначений певним символом фонеми.)

Основна мета паперу полягає в застосуванні до цієї проблеми RNN з комірками пам'яті LSTM у прихованому шарі. (Він застосовує кілька варіантів та кілька інших методик для порівняння. На даний момент я ТІЛЬКО зацікавлений у однонаправленому LSTM, щоб все було просто.)

Я вважаю, що я розумію архітектуру мережі: вхідний шар, відповідний вікнам 10 мс аудіофайлів, попередньо оброблених способами, стандартними для роботи аудіо; прихований шар комірок LSTM та вихідний шар з однокольоровим кодуванням усіх можливих 61 символу телефону.

Я вважаю, що я розумію (складні, але прямолінійні) рівняння прямого та зворотного проходів через одиниці LSTM. Вони просто обчислення і правило ланцюга.

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

Існують два правдоподібні методи:

1) Кадрова підтримка та оновлення

Load a sentence.  
Divide into frames/timesteps.  
For each frame:
- Apply forward step
- Determine error function
- Apply backpropagation to this frame's error
- Update weights accordingly
At end of sentence, reset memory
load another sentence and continue.

або,

2) резервна копія вироку та оновлення:

Load a sentence.  
Divide into frames/timesteps.  
For each frame:
- Apply forward step
- Determine error function
At end of sentence:
- Apply backprop to average of sentence error function
- Update weights accordingly
- Reset memory
Load another sentence and continue.

Зауважте, що це загальне питання щодо тренувань RNN з використанням паперу Graves як загостреного (і особисто актуального) прикладу: Коли тренування RNNs на послідовностях застосовується backprop на кожному кроці часу? Чи регулюється вага кожного кроку? Або, за слабкою аналогією до пакетної підготовки з суворої передачі архітектури, накопичуються та усереднюються помилки за певну послідовність до того, як застосовуються оновлення заднього рівня та ваги?

Або я ще більше розгублений, ніж думаю?

Відповіді:


25

Я припускаю, що ми говоримо про періодичні нейронні мережі (RNN), які виробляють вихід на кожному кроці часу (якщо вихід доступний лише в кінці послідовності, має сенс запускати backprop в кінці). RNN в цьому режимі часто навчаються, використовуючи усічене зворотне розповсюдження через час (BPTT), функціонуючи послідовно на "шматках" послідовності. Процедура виглядає приблизно так:

  1. к1
  2. Обчисліть збитки, підсумовані за попередні етапи часу (див. Нижче).
  3. к2
  4. Оновлення параметрів (це відбувається один раз за шматок, а не поступово на кожному кроці часу).
  5. Якщо обробляєте кілька фрагментів більш тривалої послідовності, зберігайте прихований стан на останньому етапі часу (буде використовуватися для ініціалізації прихованого стану для початку наступного фрагменту). Якщо ми дійшли до кінця послідовності, відновіть пам'ять / прихований стан і перейдіть до початку наступної послідовності (або початку тієї ж послідовності, якщо є лише одна).
  6. Повторіть з кроку 1.

к1к2к1=к2к1=к2к2>к1

к1к1

к2к2к2кроки в часі, оскільки приховані блоки можуть зберігати інформацію після цього періоду (наприклад, див. Mikolov 2012 та цю публікацію ).

к1к2

к11к2к1к2к1к2можливі; Я перерахую кілька прикладів нижче.

Посилання, що описують усічену BPTT (процедура, мотивація, практичні питання):

  • Суцкевер (2013) . Тренування періодичних нейронних мереж.
  • Міколов (2012) . Статистичні мовні моделі на основі нейронних мереж.
    • к1к2
    • к1
    • Виконувати оновлення один раз на шматок краще, ніж поступово (що може бути нестабільно)
  • Вільямс і Пенг (1990) . Ефективний алгоритм, заснований на градієнті, для он-лайн навчання періодичних мережевих траєкторій.
    • Оригінальна (?) Пропозиція алгоритму
    • к1к2год'годк2к1
    • к1=1

Інші приклади використання усіченої BPTT:

  • (Карпатія 2015). чар-рнн.
  • Могили (2014) . Генерування послідовностей з періодичними нейронними мережами.
    • к1=к2=10010,000
  • Сак та ін. (2014) . Постійні нейромережеві архітектури на основі короткострокової пам'яті для розпізнавання великої лексики.
    • к1=к2=20
  • Ollivier та ін. (2015) . Навчання періодичних мереж в Інтернеті без зворотного відстеження.
    • к1=к2=15
  • Хохрейтер і Шмідхубер (1997) . Довга короткочасна пам'ять.
    • Вони описують модифіковану процедуру для LSTM

Це непересічна відповідь, і я хотів би, щоб я мав місце на цьому форумі, щоб нагородити за це значну суму. Особливо корисними є конкретні обговорення k1 vs k2 для контекстуалізації двох моїх випадків проти більш загального використання та числових прикладів одного.
Новак
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.