- PVSM.RU - https://www.pvsm.ru -
Всем привет. С некоторым запозданием я решил опубликовать эту статью. Каждый год я стараюсь подвести итоги произошедшего в области обработки естественного языка (natural language processing). Не стал исключением и этот год.
Начнем по порядку. Если вы не уехали в глухую Сибирскую тайгу или отпуск на Гоа на последние полтора года, то вы наверняка слышали слово BERT. Появившись в самом конце 2018-ого за прошедшее время эта модель завоевала такую популярность, что в самый раз будет вот такая картинка:
BERT'ы действительно заполонили все, что можно было заполонить в NLP. Их стали применять для классификации, распознавания именованных сущностей и даже для машинного перевода. Проще говоря, обойти их стороной не получится и придется все же рассказать, что это такое.
На картинке показано сравнение виновника торжества (слева) с двумя также прозвучавшими моделями. Справа расположен непосредственный предшественник BERT — модель ELMo [1].
Модель ELMo от Allen AI [2] — в своем роде наследник всего развития области в предыдущие годы — а именно двунаправленная рекуррентная нейронная сеть, плюс несколько новых трюков в придачу. Коллеги из OpenAI [3] решили, что можно сделать лучше. И нужно для этого всего лишь применить представленную за год до этого Google архитектуру Transformer [4] к этой задаче. Полагаю, что за истекшие с тех пор 2,5 года все желающие уже успели с этой архитектурой познакомиться, поэтому не буду останавливаться на ней подробно. Желающих причаститься отсылаю к своему обзору от 2017-ого года [5].
Назвали они (сотрудники OpenAI) свою модель GPT-2 [6]. А потом на этой модели неплохо попиарились [7]. Но оставим это на их совести, и вернемся к нашим баранам, то есть моделям.
Одним из самых важных трюков ELMo стало предобучение на неразмеченном корпусе большого размера. Получилось очень неплохо, и коллеги из Google решили, что можно сделать еще более лучше. Помимо применения архитектуры Transformer (что уже было в GPT-2), BERT, что расшифровывается как Bidirectional Encoder Representations from Transformers, то есть векторные представления из двунаправленного кодировщина на основе архитектуры Transformer, содержал в себе еще несколько важных вещей. Конкретно самой важной стал способ претренировки на большом корпусе.
На картинке показан способ разметки неразмеченных данных. Конкретно показаны сразу два метода разметки. Первый — берется последовательность токенов (слов), например, предложение, и в этой последовательности максируется один произвольный токен ([MASK]). А модель в процессе обучения должна угадать, что за токен был замаскирован. Второй способ — берется два предложения последовательно или из произвольных мест текста. А модель должна угадать, были ли эти предложения последовательными ([CLS] и [SEP]).
Идея такой претренировки оказалась чрезвычайно эффективной. Ответом от заклятых друзей из Facebook была модель RoBERTa [8], статья про эту модель называется «устойчиво оптимизированная претренировка BERT». Дальше — больше.
Перечислять все способы улучшить претренировку большой языковой модели, основанной на архитектуре Transfomer, я не буду в силу того, что это просто скучно. Упомяну, пожалуй, только работу моих коллег из Гонконга — ERNIE [9]. В своей работе коллеги обогащают претренировку за счет использования графов знаний.
Прежде чем перейдем дальше, несколько полезных ссылок: статья про BERT [10]. А также набор [11] претренированных моделей BERT и ELMo для русского языка.
Но хватит про BERT'ов. Есть еще несколько важных трендов. Прежде всего это тренд на уменьшение размера модели. Тот же BERT очень требователен к ресурсам и многие стали задумываться о том, как сохранив (или не очень потеряв) качество, снизить требуемые ресурсы для работы моделей. Коллеги из Google придумали маленький BERT, я не шучу — ALBERT: A little BERT [12]. Можно посмотреть, что маленький BERT даже превосходит своего старшего брата в большинстве задач, имея при этом на порядок меньше параметров.
Другой подход к той же штанге совершили опять же мои коллеги из Гонконга. Они придумали крошечный BERT — TinyBERT [13]. (Если вы в этом месте подумали, что названия стали повторяться, я склонен с вами согласиться.)
Принципиальное отличие двух вышеназванных моделей состоит в том, что если ALBERT использует хитрые трюки для уменьшения оригинальной модели BERT, например, parameter sharing и уменьшение размерности внутренних векторных представлений через матричную декомпозицию, то TinyBERT использует принципиально другой подход, а именно дистилляцию знаний, то есть существует маленькая модель, которая учится повторять за своей старшей сестрой в процессе обучения.
Последние годы (примерно с 1990, когда появился Интернет), шло нарастание доступных корпусов. Потом появились алгоритмы, которые стали способны такие большие корпуса обрабатывать (это то, что мы называем «революцией глубокого обучения», это уже года с 2013). И, как следствие, стало восприниматься нормально, что для получения хорошего качества в какой-то задаче, необходимы огромные корпуса размеченных данных — корпусов текстов в нашем случае. Например, типичные корпуса для обучения задачи машинного перевода сегодня измеряются миллионами пар предложений. Достаточно давно стало очевидно, что для многих задач невозможно в разумные сроки и за разумные деньги собрать такие корпуса. Долгое время было не очень понятно, что с этим делать. Но в прошлом году на сцену вышел (кто бы вы думали?) BERT. Эта модель смогла предобучаться на больших объемах неразмеченных текстов, а уже готовую модель было легко адаптировать под задачу с небольшим корпусом.
Все перечисленные задачи в этой таблице имеют обучающие корпуса в размером несколько тысяч единиц. То есть на два-три порядка меньше. И это еще одна причина, почему BERT (и его потомки и родственники) стали так популярны.
Ну и под конец пару новых трендов, как я их увидел. Прежде всего — это принципиальное изменение отношения к тексту. Если все предыдущее время в большинстве задач текст воспринимался, только как входящий материал, а на выходе получалось что-то полезное, например, метка класса. То теперь сообщество имеет возможность вспомнить, что текст — это прежде всего средство коммуникации, то есть и с моделью можно «разговаривать» — задавать вопросы и получать ответы в виде человеко-читаемого текста. Именно об этом говорит новая статья от Google T5 [14] (название можно перевести как «пять раз трансформер»).
Другой важный тренд — область заново учится работать с длинными текстами. С 70-ых годов сообщество имеет способы работы с текстом произвольной длины — взять тот же TF-IDF. Но у этих моделей есть свой предел качества. А вот новые модели глубокого обучения не были способны работать с длинными текстами (тот же BERT имеет ограничение в 512 токенов длины входного текста). Но за последнее время появилось, как минимум, две работы, которые с разных сторон подходят к проблеме длинного текста. Первая работа от группы Руслана Салахутдинова под названием Transformer-XL.
В этой работе возрождается идея, которая сделала рекуррентные сети такими популярными, — можно сохранять предыдущее состояние и использовать его для построения следующего, даже если и не прокидывать назад по времени градиент (BPTT).
Вторая же работа [15] работает с полиномами Лежандра и с их помощью позволяет обрабатывать рекуррентными нейронными сетями последовательности длиной в десятки тысяч токенов.
На этом я бы хотел закончить обзор произошедших перемен и наметившихся трендов. Посмотрим, что будет в этом году, уверен, что много интересного. Видеозапись моего выступления на эту же тему на Data Ёлке:
P.S. У нас скоро будет еще несколько интересных анонсов, не переключайтесь!
Автор: madrugado
Источник [16]
Сайт-источник PVSM.RU: https://www.pvsm.ru
Путь до страницы источника: https://www.pvsm.ru/data-mining/346347
Ссылки в тексте:
[1] ELMo: https://arxiv.org/abs/1802.05365
[2] Allen AI: https://allenai.org/
[3] OpenAI: https://openai.com/
[4] Transformer: https://arxiv.org/abs/1706.03762
[5] обзору от 2017-ого года: https://habr.com/ru/company/mipt/blog/347524/
[6] GPT-2: https://d4mucfpksywv.cloudfront.net/better-language-models/language-models.pdf
[7] неплохо попиарились: https://habr.com/ru/news/t/475344/
[8] RoBERTa: https://arxiv.org/abs/1907.11692
[9] ERNIE: https://arxiv.org/abs/1905.07129
[10] BERT: https://arxiv.org/abs/1810.04805
[11] набор: https://github.com/vlarine/transformers-ru
[12] ALBERT: A little BERT: https://arxiv.org/abs/1909.11942
[13] TinyBERT: https://arxiv.org/abs/1909.10351
[14] T5: https://arxiv.org/abs/1910.10683
[15] работа: https://papers.nips.cc/paper/9689-legendre-memory-units-continuous-time-representation-in-recurrent-neural-networks.pdf
[16] Источник: https://habr.com/ru/post/487730/?utm_campaign=487730&utm_source=habrahabr&utm_medium=rss
Нажмите здесь для печати.