Необходимо ли позиционное кодирование для преобразователя в языковом моделировании? - PullRequest
0 голосов
/ 26 апреля 2020

Я занимаюсь разработкой такой языковой модели, как https://pytorch.org/tutorials/beginner/transformer_tutorial.html.

Мне не ясно, нужно ли здесь позиционное кодирование? Насколько я понимаю - это необходимо для задачи языкового перевода, потому что декодер должен иметь возможность позиционировать слово из предыдущего вывода в последовательности из кодера. Но нужно ли это в языковом моделировании без декодера?

Возможно ли, что слова в выходных данных кодера перемешиваются?

Редактировать:

в оригинальной статье нет объяснений. И я не нашел объяснений в уроках (как здесь https://kazemnejad.com/blog/transformer_architecture_positional_encoding/).

Я не понимаю этого:

"Как каждое слово в предложении одновременно протекает через стек кодировщика / декодера трансформатора. Сама модель не имеет никакого значения положения / порядка для каждого слова. "

С моей точки зрения - кодировщик трансформатора имеет информацию о порядке, потому что его вход упорядоченная последовательность (аналогично RNN).

Я попытался удалить позиционное кодирование из модели. Это работает, но с худшей производительностью.

Полезно ли добавлять такое позиционное кодирование в RNN? Может ли это улучшить его производительность?

1 Ответ

0 голосов
/ 28 апреля 2020

Несмотря на то, что вход энкодера является полной последовательностью - он не работает как сеть с прямой связью, где все нейроны всего входа связаны со всеми остальными. В преобразователе (как в RNN) одинаковые весовые матрицы применяются к каждому отдельному слову (не ко всей последовательности) по шагам (или параллельно).

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...