Охота на электроовец. Большая книга искусственного интеллекта - Марков Сергей Николаевич
на фоне формы каменной границы,
как будто бы равнина далека,
лениво стынет полная столица,
чернеет свечка синяя строка.
а я спешу к победе бесконечной,
лечу с отрадой томной чередой,
но не томлюсь томительно сердечной
нежданно грустной памятью былой
А вот какой вариант продолжения начальных слов детской песенки про ёлочку предлагает эта же модель:
[в лесу родилась ёлочка,
в лесу она росла,
зимой и летом стройная,
зелёная] была.
громада поднимается,
летает борода,
мелькает одиночество,
ложится пустота.
ликует революция,
шагает самолёт,
чернеет рана чистая,
синеет небосвод.
…
лениво качается,
дымится столица,
клубится стремительно,
бушует зарница.
несётся колокольчик,
рыдает долина,
волнуется комната,
мечтает картина,
грустит королева,
болит голова,
гуляет корова,
хохочет сова.
Конечно, таким произведениям далеко до звания литературных шедевров, однако, на мой непритязательный вкус, это гораздо лучше стихотворений среднестатистического автора на stihi.ru. Впрочем, ещё во времена GOFAI сгенерированные машинами тексты не раз успешно выдавали за творения людей. Как, впрочем, и наоборот. Например, в 1957 г. известный советский научно-популярный писатель Виктор Пекелис включил в свою книгу о кибернетике стихотворение «Ночь кажется чернее кошки чёрной…». Подстрочник стихотворения передал Пекелису его знакомый, известный советский математик. Литературную обработку подстрочника выполнил поэт Владимир Котов. Уже после выхода книги Пекелиса из печати выяснилось, что история о создании профессором Джоном Яффи электронной машины, сочиняющей стихи, как и сами «произведения» этой машины, оказалась мистификацией американских юмористов. Но победоносное шествие стихотворения по страницам многотиражного советского научпопа было уже не остановить: в течение более чем десятилетия этот текст регулярно приводился в качестве примера машинного творчества [2531], [2532].
Новый этап в развитии текстовых генеративных систем наступил с появлением моделей семейства GPT (Generative Pretrained Transformer, Генеративный, предобученный трансформер), созданных Алеком Редфордом и его коллегами из компании OpenAI. Причём если создание первой версии модели не произвело особого впечатления на общественность (её преимущества по сравнению с LSTM-сетями, оснащёнными механизмами внимания, были не столь очевидны), то появление GPT-2 произвело эффект разорвавшейся бомбы. Отчасти такой результат был спровоцирован позицией самой OpenAI, которая поначалу отказалась публиковать самую большую обученную версию модели (c 1,5 млрд весов), что породило множество шуток про ClosedAI (т. е. «закрытый ИИ» в противовес названию компании, дословно переводящемуся на русский язык как «открытый ИИ»). Позиция OpenAI была основана на опасениях, что публикация модели может оказаться опасной, поскольку вызовет волнообразный рост числа ложных новостей [fakenews], спама и другого нежелательного контента [2533]. Впрочем, позже модель всё же была опубликована [2534]. В принципе, исходной публикации OpenAI было вполне достаточно небольшой команде специалистов по глубокому обучению для того, чтобы воспроизвести модель, однако её обучение требовало существенных вычислительных затрат (несколько десятков тысяч долларов, если отталкиваться от тарифов облачных сервисов). Таким образом, изначальное решение OpenAI создавало ситуацию, когда крупные компании получали доступ к технологии, в то время как небольшим компаниям она была недоступна.
Впрочем, читатель может задать вполне резонный вопрос: а не было ли всё это лишь рекламным трюком 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 позиции.
Исследователи из OpenAI обучили четыре варианта модели: с 12 (маленькая [small]), 24 (средняя [medium]), 36 (большая [large]) и 48 (сверхбольшая [xlarge]) слоями трансформера. Число синаптических весов в этих моделях составило 117 млн, 345 млн, 762 млн и 1,542 млрд соответственно. В качестве обучающей выборки для моделей использовался набор из 8 млн документов, полученный в результате сканирования различных страниц в интернете с последующей фильтрацией результатов. Общий объём текста составил около 40 Гб. После того как модели были обучены на этом массиве данных, могло осуществляться их дообучение под конкретные задачи путём продолжения обучения модели в течение небольшого числа эпох, но уже не на базовом, а на некотором целевом датасете. Например, чтобы научить модель отвечать на вопросы, используется датасет, состоящий из вопросно-ответных пар, а чтобы научить модель реферировать тексты, необходим набор из оригинальных текстов и их сокращённых версий.
При таком подходе этап начального обучения модели на большом массиве данных называется предобучением [pre-training или pretraining].
Вообще концепция, сочетающая предобучение при помощи методов самообучения [self-supervised learning] с последующим дообучением под целевую [downstream] задачу стала наиболее популярным способом применения больших трансформерных моделей. Для предобучения обычно привлекаются огромные массивы информации (чаще всего собранной в интернете) и гигантские вычислительные мощности. Обучение модели решению задач вроде предсказания следующего токена приводит к тому, что в её весах находят отражение особенности структуры данных, их внутренних взаимосвязей. Например, в свёрточной сети, обученной распознавать котиков на фотографиях, можно обнаружить нейроны, активирующиеся при наличии глаз на предъявленной картинке. Аналогично большая трансформерная модель, обученная предсказывать продолжение текста, скорее всего, будет содержать нейроны, активация которых будет происходить при упоминании в тексте существа с глазами: ведь такой нейрон может быть полезен, чтобы угадать — может ли в продолжении текста быть сказано, что существо зажмурилось, моргнуло или увидело что-либо. Выученные моделью на этапе предобучения представления (абстракции, аналогии) могут быть успешно переиспользованы при решении самых разных задач. Если целевой задачей модели является определение, встречается ли в тексте упоминание рыжих пушистых существ с глазами, то на этапе дообучения сеть сможет связать между собой активации «нейронов глазастости», «нейронов рыжести» и «нейронов пушистости». При этом вам не нужна будет огромная обучающая выборка с положительными и отрицательными примерами, благодаря тому что при дообучении сеть будет опираться на уже имеющиеся у неё представления. Это напоминает процесс обучения людей, когда в ходе детских игр, школьных и институтских занятий да и в целом в процессе ежедневного взаимодействия с окружающим миром мы формируем представления о нём, которые потом успешно переиспользуем, сталкиваясь с различными жизненными задачами. Фактически, обучаясь предсказывать продолжение огромного количества самых разнообразных текстовых фрагментов, модель формирует в своих синаптических весах своеобразную статистическую картину мира: набор вероятностных распределений, отражающих сведения о различных объектах и явлениях, их свойствах и взаимосвязях.