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

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

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

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


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

Даже 255!/(255-85)! — это слишком много. При этом не понятно, зачем им брать эквивалентные наборы (те же токены, но в другой последовательности выбранные) — они же дают тот же эффект. Т.е. по-хорошему, нужно ещё на 85! разделить и получить C(n,k), но и это, конечно, очень много.
Спасибо, получилось кратко и ясно, круто.
С появлением BERT все NLP архитектуры стали строить на ячейках трансформерах, неужели архитектуры на двунаправленых слоях LSTM ячеек изжили себя? Есть ли информация у автора, о применении предобучения по типу BERT или XLNet для рекуррентных сеток? Я использовал архитектуру FLAIR На задаче выделения именованных сущностей неплохие результаты показывает.
Все таки тип предобучения или тип используемых базовых ячеек дает такие результаты?
о применении предобучения по типу BERT или XLNet для рекуррентных сеток
— fast.ai Universal Language Model Fine-tuning (ULMFiT). Оно же AWD LSTM.
Есть мнение, что большая точность 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. Что-то не видно, чтобы кто-то что-то еще натренировал. Да и они сами пока только одну натренированную сетку выложили.

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