2017-01-30 3 views
3

Не могу понять, почему в LSTM очень важно количество разворачиваний, т. Е. Количество шагов времени, рассмотренных сразу во время обучения или прогнозирования. Независимо от того, является ли количество разворачиваний/временных интервалов 1 или 100, состояние LSTM мутируется на каждом временном шаге. Разве это просто разница между стохастическим градиентным спусканием и спусками градиента минибатча в регулярной прямой нервной сети?Неважно, сколько разворачиваний используется в LSTM?

  • Предположим, что у вас есть 100 000 заказанных примеров обучения. Вы могли бы обучать их одному примеру за раз, по порядку.

  • Предположим, что во время прогнозирования у вас есть «предложение» (например) с 10 словами, и вы хотите предсказать 11-е слово. Вы можете либо подавать 10 слов в LSTM сразу в развернутой сети, либо вы можете кормить LSTM одним словом за раз, а затем наблюдать за предсказанием, которое следует за 10-м словом. Я подозреваю, что однопоточная сеть будет проблематичной, если мы попытаемся предсказать следующее слово для предложений разной длины (потому что в идеале мы бы сбросили временную память SHORT между предсказаниями для разных предложений), но Я очень туманна по этому поводу и буду благодарна за понимание от ответчика.

ответ

2

разворачивая определяется только для обучения. Во время оценки нет такой вещи, как разворачивание, вы просто загружаете данные и сохраняете скрытое состояние. Однако для обучения у него есть огромный эффект. Чтобы лучше понять это, давайте взглянем на следующую диаграмму с раскатать 3.

     UPDATE 
          | 
          v 
LSTM_t-LSTM_t+1-LSTM_t+2  LSTM_t+3-LSTM_t+4-LSTM_t+5 .... 
|  |  |   |  |  | 
x_t x_t+1 x_t+2  x_t+3 x_t+4 x_t+5 

во время обратного распространения, нет нет сигнала между LSTM т + 3 и LSTM т + 2, так как параметры используемые в прямом цикле, уже обновлены. Чтобы иметь «поток» информации от LSTM t + 3 и LSTM t + 2 вам нужно было бы хранить в памяти 0 x t + 2 в памяти, чтобы иметь возможность вычислять частные производные, но тогда нет потока в LSTM t + 1, поэтому вам нужно x t + 1 в памяти также и так далее. С другой стороны, длительный разворот может затруднить процесс градиента и, следовательно, вызвать проблемы.

Это гораздо более серьезная проблема, чем просто решение о размере партии: здесь вы на самом деле имеете дело с отсутствием обучающего сигнала в одном случае и, возможно, гораздо более сложным обучением в другом. Кроме того, во многих приложениях вы просто не можете разворачиваться до конца последовательности, так как некоторые последовательности потенциально бесконечны, или нужно на самом деле делать другие вещи с помощью модели (например, в RL, где, с одной стороны, одна подходит для модели, но , с другой - вы используете ту же самую модель для сбора новых данных).

+0

Таким образом, преимущество n> 1 разворачивания - это распространение ошибок через несколько временных шагов. Обновления backpropagation легко понять для сети с поддержкой ванили; есть информация об обновлении представлений. Обновления LSTM сложнее понять ... это временная иерархия, и мне нужно прочитать оригинальную бумагу LSTM, чтобы точно увидеть, что обновляется, и каким образом сохраняются временные шаблоны. – foghorn

+0

Да, без разворота у вас возникла проблема с отсутствием «синхронизации», которую вы обновляете с шагом 1, то у вас больше нет одинаковых параметров сети, поэтому вам нужно будет пересчитать все внутренние активации на ** предыдущие ** данные чтобы иметь возможность возвращать ошибку из текущего времени. – lejlot

Смежные вопросы