ЖАНРЫ

Охота на электроовец. Большая книга искусственного интеллекта
Шрифт:

В 2018 г. ваш покорный слуга вместе с коллегами также экспериментировал в области генерации стихотворений при помощи моделей глубокого обучения времён первой революции в NLP. Тогда мы использовали для этой цели ансамбль из пяти LSTM-сетей: сети, работавшей на уровне символов (роль этой сети была в том, чтобы обеспечить фонетическое благозвучие производимого текста); сети, отвечающей за стихотворный размер; сети, ответственной за рифмы; сети, ответственной за грамматику (мы использовали библиотеку PyMorphy, чтобы определить грамматические признаки для слов в словаре, а затем тренировали сеть генерировать грамматические конструкции, свойственные естественному языку), и последней сети, отвечавшей за смысл текста (на базе векторных представлений слов fastText). В качестве обучающего корпуса использовался набор из примерно 30 000 произведений русской поэзии, начиная с её золотого века и до наших дней. Вот один из продуктов «творческого коллектива» нейронных сетей:

на фоне формы каменной границы,

как будто бы равнина далека,

лениво стынет полная столица,

чернеет свечка синяя строка.

а я спешу к победе бесконечной,

лечу с отрадой томной чередой,

но не томлюсь томительно сердечной

нежданно грустной памятью былой

А вот какой вариант продолжения начальных слов детской песенки про ёлочку предлагает эта же модель:

[в лесу родилась ёлочка,

в лесу она росла,

зимой и летом стройная,

зелёная] была.

громада поднимается,

летает борода,

мелькает одиночество,

ложится пустота.

ликует революция,

шагает самолёт,

чернеет рана чистая,

синеет небосвод.

лениво качается,

дымится столица,

клубится стремительно,

бушует зарница.

несётся колокольчик,

рыдает долина,

волнуется комната,

мечтает картина,

грустит королева,

болит голова,

гуляет корова,

хохочет сова.

Конечно, таким произведениям далеко до звания литературных шедевров, однако, на мой непритязательный вкус, это гораздо лучше стихотворений среднестатистического автора на stihi.ru. Впрочем, ещё во времена GOFAI сгенерированные машинами тексты не раз успешно выдавали за творения людей. Как, впрочем, и наоборот. Например, в 1957 г. известный советский научно-популярный писатель Виктор Пекелис включил в свою книгу о кибернетике стихотворение «Ночь кажется чернее кошки чёрной…». Подстрочник стихотворения передал Пекелису его знакомый, известный советский математик. Литературную обработку подстрочника выполнил поэт Владимир Котов. Уже после выхода книги Пекелиса из печати выяснилось, что история о создании профессором Джоном Яффи электронной машины, сочиняющей стихи, как и сами «произведения» этой машины, оказалась мистификацией американских юмористов. Но победоносное шествие стихотворения по страницам многотиражного советского научпопа было уже не остановить: в течение более чем десятилетия этот текст регулярно приводился в качестве примера машинного творчества [2531] , [2532] .

2531

Пекелис В. (1982). Кибернетическая смесь. — М.: Знание.

2532

Бирюков Б. В., Гутчин И. Б. (1982). Машина и творчество. — М.: Радио и связь // http://informaticslib.ru/books/item/f00/s00/z0000024/index.shtml

Новый этап в развитии текстовых генеративных систем наступил с появлением моделей семейства GPT (Generative Pretrained Transformer, Генеративный, предобученный трансформер), созданных Алеком Редфордом и его коллегами из компании OpenAI. Причём если создание первой версии модели не произвело особого впечатления на общественность (её преимущества по сравнению с LSTM-сетями, оснащёнными механизмами внимания, были не столь очевидны), то появление GPT-2 произвело эффект разорвавшейся бомбы. Отчасти такой результат был спровоцирован позицией самой OpenAI, которая поначалу отказалась публиковать самую большую обученную версию модели (c 1,5 млрд весов), что породило множество шуток про ClosedAI (т. е. «закрытый ИИ» в противовес названию компании, дословно переводящемуся на русский язык как «открытый ИИ»). Позиция OpenAI была основана на опасениях, что публикация модели может оказаться опасной, поскольку вызовет волнообразный рост числа ложных новостей [fakenews], спама и другого нежелательного контента [2533] . Впрочем, позже модель всё же была опубликована [2534] . В принципе, исходной публикации OpenAI было вполне достаточно небольшой команде специалистов по глубокому обучению для того, чтобы воспроизвести модель, однако её обучение требовало существенных вычислительных затрат (несколько десятков тысяч долларов, если отталкиваться от тарифов облачных сервисов). Таким образом, изначальное решение OpenAI создавало ситуацию, когда крупные компании получали доступ к технологии, в то время как небольшим компаниям она была недоступна.

2533

Radford A., Wu J., Amodei D., Amodei D., Clark J., Brundage M., Sutskever I. (2019). Better Language Models and Their Implications / OpenAI blog, February 14, 2019 // https://openai.com/blog/better-language-models/

2534

Solaiman I., Clark J., Brundage M. (2019). GPT-2: 1.5B Release / OpenAI blog, November 5, 2019 // https://openai.com/blog/gpt-2-1-5b-release/

Впрочем, читатель может задать вполне резонный вопрос: а не было ли всё это лишь рекламным трюком OpenAI, желающей привлечь внимание к своим технологическим достижениям? Быть может, возможности модели были сильно преувеличены? В конце концов, в 2020 г., когда «большая» версия модели GPT-2 уже доступна всем желающим, а OpenAI выпустила уже GPT-4, мы вроде бы не наблюдаем взрывного роста объёмов нежелательного контента в Мировой сети?

Технически GPT-2 — это языковая модель, построенная из многократно повторяющихся блоков нейросети-трансформера. GPT-2 способна прогнозировать следующий токен последовательности, основываясь на предшествующих токенах (напомним, что под токеном понимается отдельный элемент последовательности — это может быть слово, символ или некоторая последовательность символов). За разбивку последовательности на токены отвечает отдельный алгоритм, называемый токенизатором. В оригинальной версии GPT-2, используемой для работы с текстами, записанными на естественных языках, в качестве токенизатора применялся метод, называемый BPE (Byte pair encoding, Кодирование пар байтов). BPE представляет собой некоторый компромисс между моделированием языка на уровне символов и на уровне слов: наиболее часто встречающиеся слова становятся отдельными токенами, в то время как более редкие слова разбиваются на несколько токенов. Если первая версия GPT опиралась при прогнозе следующего токена на 512 предшествующих [2535] , то в GPT-2 размер контекста был увеличен вдвое — до 1024 токенов. Размер словаря при этом увеличился с 40 000 до более чем 50 000 токенов. Таким образом, GPT-2 теоретически способна обнаружить связь между двумя токенами, отстоящими друг от друга на целых 1024 позиции.

2535

Radford A., Narasimhan K., Salimans T., Sutskever I. (2018). Improving Language Understanding by Generative Pre-Training // https://paperswithcode.com/paper/improving-language-understanding-by

Исследователи из OpenAI обучили четыре варианта модели: с 12 (маленькая [small]), 24 (средняя [medium]), 36 (большая [large]) и 48 (сверхбольшая [xlarge]) слоями трансформера. Число синаптических весов в этих моделях составило 117 млн, 345 млн, 762 млн и 1,542 млрд соответственно. В качестве обучающей выборки для моделей использовался набор из 8 млн документов, полученный в результате сканирования различных страниц в интернете с последующей фильтрацией результатов. Общий объём текста составил около 40 Гб. После того как модели были обучены на этом массиве данных, могло осуществляться их дообучение под конкретные задачи путём продолжения обучения модели в течение небольшого числа эпох, но уже не на базовом, а на некотором целевом датасете. Например, чтобы научить модель отвечать на вопросы, используется датасет, состоящий из вопросно-ответных пар, а чтобы научить модель реферировать тексты, необходим набор из оригинальных текстов и их сокращённых версий.

При таком подходе этап начального обучения модели на большом массиве данных называется предобучением [pre-training или pretraining].

Вообще концепция, сочетающая предобучение при помощи методов самообучения [self-supervised learning] с последующим дообучением под целевую [downstream] задачу стала наиболее популярным способом применения больших трансформерных моделей. Для предобучения обычно привлекаются огромные массивы информации (чаще всего собранной в интернете) и гигантские вычислительные мощности. Обучение модели решению задач вроде предсказания следующего токена приводит к тому, что в её весах находят отражение особенности структуры данных, их внутренних взаимосвязей. Например, в свёрточной сети, обученной распознавать котиков на фотографиях, можно обнаружить нейроны, активирующиеся при наличии глаз на предъявленной картинке. Аналогично большая трансформерная модель, обученная предсказывать продолжение текста, скорее всего, будет содержать нейроны, активация которых будет происходить при упоминании в тексте существа с глазами: ведь такой нейрон может быть полезен, чтобы угадать — может ли в продолжении текста быть сказано, что существо зажмурилось, моргнуло или увидело что-либо. Выученные моделью на этапе предобучения представления (абстракции, аналогии) могут быть успешно переиспользованы при решении самых разных задач. Если целевой задачей модели является определение, встречается ли в тексте упоминание рыжих пушистых существ с глазами, то на этапе дообучения сеть сможет связать между собой активации «нейронов глазастости», «нейронов рыжести» и «нейронов пушистости». При этом вам не нужна будет огромная обучающая выборка с положительными и отрицательными примерами, благодаря тому что при дообучении сеть будет опираться на уже имеющиеся у неё представления. Это напоминает процесс обучения людей, когда в ходе детских игр, школьных и институтских занятий да и в целом в процессе ежедневного взаимодействия с окружающим миром мы формируем представления о нём, которые потом успешно переиспользуем, сталкиваясь с различными жизненными задачами. Фактически, обучаясь предсказывать продолжение огромного количества самых разнообразных текстовых фрагментов, модель формирует в своих синаптических весах своеобразную статистическую картину мира: набор вероятностных распределений, отражающих сведения о различных объектах и явлениях, их свойствах и взаимосвязях.

На что же способны такие гигантские модели [2536] , как GPT-2-xlarge? Эта модель установила новые SOTA-результаты для семи из восьми использованных для тестов текстовых корпусов без какого-либо дообучения.

Итак, у авторов в руках оказалась мощная модель, способная оценивать для каждого токена из словаря вероятность того, что именно этот токен будет продолжением некоторой последовательности. Как можно использовать её для генерации самой последовательности? Казалось бы, достаточно на каждом шаге генерации просто выбирать наиболее вероятный с точки зрения модели токен. Такой подход называют жадным [greedy]. Проблема жадного подхода заключается в том же, в чём заключается проблема жадности вообще. В моменте он позволяет максимизировать результат, но на более длинном промежутке времени может привести к далеко не оптимальному итогу. То есть «схватившись» за наиболее вероятный токен на первом шаге генерации, такой метод может столкнуться с тем, что на следующем шаге у него не будет хороших кандидатов, в результате чего вся последовательность окажется не такой хорошей, как в случае, когда выбор первого токена был бы не таким жадным. Другой крайностью по отношению к жадному методу является метод полного перебора. Мы можем рассмотреть все варианты первого токена генерируемой последовательности, для каждого из них, в свою очередь, рассмотреть все варианты второго токена и так далее. В теории такой метод может позволить нам найти самое вероятное продолжение последовательности, однако на практике вычислительные затраты в случае более-менее длинной последовательности будут неприемлемыми. Действительно, если мы генерируем последовательность из одного токена, то нам необходимо будет изучить около 50 000 вариантов (по одному варианту на каждый токен в словаре), для двух — 50 000 x 50 000, то есть 2,5 млрд и так далее. Разумным компромиссом между этими двумя подходами являются методы, которые на каждом шаге генерации каким-либо образом ограничивают количество рассматриваемых вариантов. Например, если на каждом шаге мы будем оставлять только N наиболее перспективных вариантов, то на каждом шаге генерации нам потребуется рассмотреть лишь N x 50 000 возможностей. То есть мы на первом шаге рассматриваем 50 000 вариантов, оставляем из них N лучших, затем смотрим для каждого из них 50 000 возможных продолжений, оставляем из полученных последовательностей из двух токенов N лучших и так далее. Такой метод называется методом лучевого поиска [beam search]. Он получил такое название, потому что, подобно лучу прожектора, выхватывает из гигантского поискового дерева небольшую его часть, при этом число N называется шириной луча. Существуют и другие, более сложные алгоритмы поиска, в которых число вариантов на каждом шаге генерации не фиксировано. К их числу относится, например, ядерное семплирование [nucleus sampling] [2537] , применяемое во многих современных реализациях GPT-2.

2536

* Поскольку благодаря появлению трансформерной архитектуры возник ряд моделей с числом параметров, превышающим 100 миллионов, для обозначения таких моделей в научной литературе стали применять специальный термин — «большие языковые модели» (Large Language Model, LLM). Конечно, само значение в 100 миллионов параметров является весьма условным (в некоторых источниках вы найдёте другие значения этой границы, например 1 млрд параметров), поэтому в отношении некоторых моделей могут возникнуть сомнения: считать их большими или нет. Но с практической точки зрения эти споры вряд ли представляют какой-либо интерес.

2537

Holtzman A., Buys J., Du L, Forbes M., Choi Y. (2020). The curious case of neural text degeneration // https://arxiv.org/abs/1904.09751

Давайте посмотрим на образец «творчества» GPT-2, приводимый авторами оригинального исследования.

«Затравка» (текст, написанный человеком, в качестве начала генерируемой истории):

Шокирующим открытием стало обнаружение учёным стада единорогов, живущих в отдалённой, ранее не исследованной долине, в Андах. Ещё более удивительным для исследователей стало то, что единороги прекрасно говорили по-английски. [In a shocking finding, scientist discovered a herd of unicorns living in a remote, previously unexplored valley, in the Andes Mountains. Even more surprising to the researchers was the fact that the unicorns spoke perfect English.]

Поделиться с друзьями: