Как стать автором
Обновить

Комментарии 10

Спасибо, интересно. Но из рисунков не очень понятно, как именно производятся «разные перестановки последовательности» и как именно работает Attention-механизм Transformer-XL. Что понимается под перестановкой, если у каждого токена кодируется его положение в строке и оно, как я понял, неизменно? Было бы неплохо как-то на пальцах или на примере пояснить.

Перестановки — это как раз там самое непонятное место. Да, поскольку положения токенов не меняется, то получается, мы пытаемся предсказать целевой токен по всем возможным сочетаниям остальных токенов.


Но все возможные сочетания — это в теории. На практике же они используют ограничения. Для этой вот предобученной сетки они брали сочетания длины от (255 — 85) до 255. Это явно у них не прописано, но если я правильно понял, это означают их параметры --perm_size и --num_predict.

Даже 255!/(255-85)! — это слишком много. При этом не понятно, зачем им брать эквивалентные наборы (те же токены, но в другой последовательности выбранные) — они же дают тот же эффект. Т.е. по-хорошему, нужно ещё на 85! разделить и получить C(n,k), но и это, конечно, очень много.
Спасибо, получилось кратко и ясно, круто.
С появлением BERT все NLP архитектуры стали строить на ячейках трансформерах, неужели архитектуры на двунаправленых слоях LSTM ячеек изжили себя? Есть ли информация у автора, о применении предобучения по типу BERT или XLNet для рекуррентных сеток? Я использовал архитектуру FLAIR На задаче выделения именованных сущностей неплохие результаты показывает.
Все таки тип предобучения или тип используемых базовых ячеек дает такие результаты?
Есть мнение, что большая точность XLNet может быть обусловлена большим размером корпуса при обучении и улучшенной сетью Transformer-XL, по сравнению с обычным Transformer в BERT. Но подход с этими перестановками тоже заслуживает внимания. Получается что-то вроде двунаправленного контекста как в автокодировщике, но в авторегрессинной модели. Автокодировщики вроде BERT хороши тем, что учитывают сразу всю строку, и поэтому лучше работают с общими языковыми задачами (лучше дообучаются под новые необычные задачи). Но авторегрессионные модели вроде GPT-2 более естественно строят предложения, так как действуют последовательно слово за словом. XLNet, по идее, совмещает достоинства обоих подходов.

Да, есть такое мнение. Но вроде как в экспериментах с XLNet-Base датасет брали тот же, на котором тренировали и BERT-Base. И там тоже XLNet-Base показывает лучшие результаты.


Меня в этой истории с перестановками интересует, насколько более затратно обучить XLNet по сравнению с BERT.

Подскажите пожалуйста, а как тренировать эту сеть без предобученной модели, с нуля? Пример на githab есть, но там вроде как все действия происходят с предобученной моделью.

Ну вот, там раздел "Pretraining with XLNet" в Readme.


Препроцессинг — в data_utils.py, само обучение — train_gpu.py. Еще можно посмотреть пояснения к параметрам обучения в пайторчевом репозитарии.


Только, вероятно, это очень затратный по ресурсам процесс, наверное затратнее чем для BERT-a. Что-то не видно, чтобы кто-то что-то еще натренировал. Да и они сами пока только одну натренированную сетку выложили.

Ну вот, там раздел "Pretraining with XLNet" в Readme.


Препроцессинг — в data_utils.py, само обучение — train_gpu.py. Еще можно посмотреть пояснения к параметрам обучения в пайторчевом репозитарии.


Только, вероятно, это очень затратный по ресурсам процесс, наверное затратнее чем для BERT-a. Что-то не видно, чтобы кто-то что-то еще натренировал. Да и они сами пока только одну натренированную сетку выложили.

Зарегистрируйтесь на Хабре, чтобы оставить комментарий