Глава 9. Глубокое обучение для последовательностей и текста
375
к следующему шагу преобразования. Модель видит только что сгенерированный вы
ходной символ
2
во входной последовательности декодировщика (блок B). На этом
шаге производится еще один вызов
Model.predict()
и генерируется новый выходной
символ (
0
), который тоже добавляется в конец входной последовательности деко
дировщика. Этот процесс повторяется до тех пор, пока не будет получена желаемая
длина выходной последовательности (в данном случае 10). Учтите, что выходная
последовательность не включает символ
ST
, так что может служить непосредственно
выходным сигналом всего алгоритма.
Роль механизма внимания
Задача механизма внимания состоит в том, чтобы каждый выходной символ уделял
внимание соответствующим символам входной последовательности. Например,
часть
"7"
выходной строки
"2034-07-18"
должна уделять внимание части
"JUL"
вход
ной строки с датой. Это тоже аналогично генерации речи у людей. Например, при
переводе предложения с языка A на язык B каждое слово выходного предложения
обычно определяется небольшим числом слов из входного предложения.
Кажется, что это очевидно, сложно представить себе лучший подход. Но изо
бретение механизма внимания исследователями в области глубокого обучения
в 2014–2015 годах было крупнейшим достижением в этой сфере. Чтобы понять
причины этого, взгляните на стрелку, соединяющую прямоугольник
«Кодиров-
щик»
с прямоугольником
«Декодировщик»
в блоке A на рис. 9.10. Эта стрелка
соответствует последнему выходному сигналу LSTM в кодирующей части моде
ли, передаваемому LSTM в декодирующей части модели в качестве начального
состояния. Напомним, что начальное состояние RNN обычно состоит из нулей
(как, например, в simpleRNN в разделе 9.1.2), однако TensorFlow.js дает возмож
ность задавать начальное состояние RNN равным любому тензору подходящей
формы. Этой возможностью можно воспользоваться для передачи информации из
расположенных ранее частей конвейера в LSTM. В данном случае этот механизм
задействуется соединением «кодировщик — декодировщик» для предоставления
LSTMслою декодировщика доступа к кодированной входной последователь
ности.
Однако начальное состояние представляет собой всю входную последователь
ность, упакованную в один вектор. Такое представление оказывается слишком
сжатым для распаковки декодировщиком, особенно если последовательности более
длинные и сложные, такие как предложения в типичных задачах машинного пере
вода. Тутто и оказывается полезным механизм внимания.
Механизм внимания расширяет поле зрения декодировщика. Механизм вни
мания обращается ко всей последовательности выходного сигнала кодировщика,
а не только к его итоговому выходному сигналу. На каждом шаге преобразования
этот механизм уделяет внимание определенным временным шагам выходной по
следовательности кодировщика, чтобы определить, какой выходной символ гене
рировать. Например, первый шаг преобразования может уделять внимание первым
двум входным символам, а второй — второму и третьему входным символам и т. д
376
Do'stlaringiz bilan baham: |