RNN: Когда применять BPTT и / или обновлять веса?

15

Я пытаюсь понять применение RNN высокого уровня для маркировки последовательностей с помощью (среди прочего) статьи Грейвса 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 с использованием бумаги Грейвса в качестве наглядного (и лично значимого) примера: при обучении RNN по последовательностям применяется ли backprop на каждом временном шаге? Вес корректируется каждый шаг? Или, в свободной аналогии с пакетным обучением на архитектурах с прямой связью, ошибки накапливаются и усредняются по определенной последовательности перед применением обновлений backprop и weight?

Или я даже более смущен, чем я думаю?

Новак
источник

Ответы:

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).

Помимо вычислительных соображений, правильные настройки для и зависят от статистики данных (например, временной масштаб структур, которые важны для получения хороших результатов). Вероятно, они также зависят от деталей сети. Например, существует ряд архитектур, приемов инициализации и т. Д., Предназначенных для смягчения проблемы затухающего градиента.К1К2

К11К2К1К2К1К2

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

  • Суцкевер (2013) . Обучение рекуррентным нейронным сетям.
  • Миколов (2012) . Статистические языковые модели на основе нейронных сетей.
    • Используя ванильные RNN для обработки текстовых данных в виде последовательности слов, он рекомендует установить в 10-20 слов и в 5 словК1К2
    • К1 меньше длины последовательности) работает лучше, чем обновление в конце последовательности
    • Выполнение обновлений один раз для каждого чанка лучше, чем постепенное (что может быть нестабильным)
  • Уильямс и Пэн (1990) . Эффективный алгоритм на основе градиента для онлайн-обучения повторяющихся сетевых траекторий.
    • Оригинальное (?) Предложение алгоритма
    • К1К2час'часК2К1
    • К1знак равно1

Другие примеры использования усеченного BPTT:

  • (Карпати 2015). углеродно РНН.
  • Могилы (2014) . Генерация последовательностей с помощью рекуррентных нейронных сетей.
    • К1знак равноК2знак равно10010,000
  • Сак и соавт. (2014) . Рекуррентные архитектуры нейронных сетей на основе кратковременной памяти для распознавания речи с большим словарным запасом.
    • К1знак равноК2знак равно20
  • Олливье и соавт. (2015) . Обучение рекуррентным сетям онлайн без возврата.
    • К1знак равноК2знак равно15
  • Хохрейтер и Шмидхубер (1997) . Долгая кратковременная память.
    • Они описывают модифицированную процедуру для LSTM
user20160
источник
Это выдающийся ответ, и мне бы хотелось, чтобы на этом форуме имелось право назначать ему значительную награду. Особенно полезны конкретное обсуждение k1 против k2 для контекстуализации моих двух случаев против более общего использования и числовые примеры того же самого.
Новак