Охота на электроовец. Большая книга искусственного интеллекта
Шрифт:
Вот текст исходного твита Карпатого: «Мне нравится идея Программного обеспечения 3.0 ?. Программирование переходит от подготовки датасетов к подготовке запросов, позволяющих системе метаобучения „понять“ суть задачи, которую она должна выполнить. ЛОЛ» [Love the idea for Software 3.0 ?. Programming moving from curating datasets to curating prompts to make the meta learner “get” the task it’s supposed to be doing. LOL] [2569] .
2569
Karpathy A. (2020) / Twitter // https://twitter.com/karpathy/status/1273788774422441984
Развивая идею Карпатого, Бренуэн пишет:
Нейронная сеть GPT-3 настолько огромна с точки зрения мощности и набора [использованных для обучения] данных, что демонстрирует качественно иное поведение: вы не применяете её к фиксированному набору задач, представленных в обучающем датасете,
2570
Branwen G. (2020). GPT-3 Creative Fiction // https://www.gwern.net/GPT-3
Заголовок статьи, рассказывающей о модели GPT-3, звучит следующим образом: «Языковые модели — ученики, способные учиться всего на нескольких примерах» (Language Models are Few-Shot Learners). Что в данном случае имеется в виду? Возьмём для примера следующий текст: «русский: яблоко, английский: apple; русский: кошка, английский: cat; русский: дерево, английский: tree; русский: стол, английский:» и используем его в качестве затравки для GPT-3. Какое продолжение сгенерирует модель? Очевидно, что разумным продолжением такого текста является слово table, являющееся переводом на английский язык русского слова «стол». Оказывается, что GPT-3 способна «понять» это и сгенерировать правильное продолжение текста, опираясь всего на несколько примеров, помещённых в затравку. Способ обучения модели на крайне малом количестве примеров принято обозначать термином few-shot learning (обучение всего на нескольких примерах). Правда, если подумать, то указание примеров в затравке сложно считать полноценным обучением (learning) модели, ввиду чего некоторые исследователи стали называть такой подход few-shot prompting (составление затравки или запроса, содержащего небольшое количество примеров) или просто «натаскивание» [priming].
Удивительно, но применение этого метода позволяет использовать модель для решения огромного количества интеллектуальных задач: нужно лишь сформулировать задачу в виде текста, состоящего из вопросов и ответов.
Конечно, многие задачи GPT-3 решить таким образом не может, но всё же полученные результаты стали серьёзным шагом в направлении создания универсальных систем искусственного интеллекта. Более того, модели, подобные GPT-3, способны решать некоторые задачи в ещё более экстремальных условиях: когда затравка и вовсе не содержит ни одного примера! Такой способ называется zero-shot learning (обучение при отсутствии примеров) или даже, если пожелаете, zero-shot prompting — то есть вы можете написать в затравке «русский: стол, английский:» и надеяться, что модель «догадается», что правильным продолжением будет table. Оказывается, что иногда и этот подход работает! [2571]
2571
Reynolds L., McDonell K. (2021). Prompt Programming for Large Language Models: Beyond the Few-Shot Paradigm // https://arxiv.org/abs/2102.07350
Конечно, никто не мешает использовать для GPT-3 и классический для предобученных моделей подход, заключающийся в дообучении [fine-tuning] модели на целевых данных в течение ограниченного числа шагов и с небольшим значением параметра скорости обучения. Но в случае версий модели с достаточно большим числом параметров такой подход может оказаться вычислительно затратным, а иногда и вовсе невозможным в отсутствие дорогого специализированного оборудования. Возможным решением может стать обучение, затрагивающее не всё множество весов модели, а лишь их некоторую часть. Этого можно добиться путём «заморозки» части слоёв модели или использования адаптеров — новых нейросетевых блоков, вставляемых между слоями предобученной сети, веса которой при этом остаются неизменными [2572] , [2573] . Именно на этом подходе основан популярный в наши дни метод LoRA (Low-Rank Adaptation, Низкоранговая адаптация) [2574] .
2572
Rebuffi S.-A., Bilen H., Vedaldi A. (2017). Learning multiple visual domains with residual adapters // https://arxiv.org/abs/1705.08045
2573
Houlsby N., Giurgiu A., Jastrzebski S., Morrone B., de Laroussilhe Q., Gesmundo A., Attariyan M., Gelly S. (2019). Parameter-Efficient Transfer Learning for NLP // https://arxiv.org/abs/1902.00751
2574
Hu E. J., Shen Y., Wallis P., Allen-Zhu Z., Li Y., Wang S., Wang L., Chen W. (2021). LoRA: Low-Rank Adaptation of Large Language Models // https://arxiv.org/abs/2106.09685
Интересно, что иногда ограничение числа подстраиваемых в ходе дообучения параметров может приводить к улучшению результатов модели при решении целевой задачи. Например, авторы работы «Воспитайте ребёнка в большой языковой модели: на пути к эффективному и обобщаемому дообучению» [Raise a Child in Large Language Model: Towards Effective and Generalizable Fine-tuning] [2575] разработали подход, позволяющий выбирать подсеть большой
2575
Xu R., Luo F., Zhang Z., Tan C., Chang B., Huang S., Huang F. (2021). Raise a Child in Large Language Model: Towards Effective and Generalizable Fine-tuning // https://arxiv.org/abs/2109.05687
2576
Duan Z., Zhang H., Wang C., Wang Z., Chen B., Zhou M. (2021). EnsLM: Ensemble Language Model for Data Diversity by Semantic Clustering / Proceedings of the 59th Annual Meeting of the Association for Computational Linguistics and the 11th International Joint Conference on Natural Language Processing (Volume 1: Long Papers), pp. 2954—2967 // https://doi.org/10.18653/v1/2021.acl-long.230
2577
Conneau A., Kruszewski G., Lample G., Barrault L., Baroni M. (2018). What you can cram into a single vector: Probing sentence embeddings for linguistic properties // https://arxiv.org/abs/1805.01070
2578
Sahin G. G., Vania C., Kuznetsov I., Gurevych I. (2019). LINSPECTOR: Multilingual Probing Tasks for Word Representations // https://arxiv.org/abs/1903.09442
2579
Kim N., Patel R., Poliak A., Wang A., Xia P., McCoy R. T., Tenney I., Ross A., Linzen T., Durme B. V., Bowman S. R., Pavlick E. (2019). Probing What Different NLP Tasks Teach Machines about Function Word Comprehension // https://arxiv.org/abs/1904.11544
2580
Shi X., Padhi I., Knight K. (2016). Does String-Based Neural MT Learn Source Syntax? / Proceedings of the 2016 Conference on Empirical Methods in Natural Language Processing, pp. 1526—1534 // https://doi.org/10.18653/v1/D16-1159
2581
Lee J., Tang R., Lin J. (2019). What Would Elsa Do? Freezing Layers During Transformer Fine-Tuning // https://arxiv.org/abs/1911.03090
2582
Li X. L., Liang P. (2021). Prefix-Tuning: Optimizing Continuous Prompts for Generation // https://arxiv.org/abs/2101.00190
2583
Liu X., Zheng Y., Du Z., Ding M., Qian Y., Yang Z., Tang J. (2021). GPT Understands, Too // https://arxiv.org/abs/2103.10385
2584
Lester B., Al-Rfou R., Constant N. (2021). The Power of Scale for Parameter-Efficient Prompt Tuning // https://arxiv.org/abs/2104.08691
2585
Конодюк Н. (2021). Управляем генерацией ruGPT-3: библиотека ruPrompts / Хабр, 17 декабря 2021 // https://habr.com/ru/company/sberdevices/blog/596103/
Идея ансамблирования заключается в том, чтобы комбинировать выход большой предобученной модели с выходом сравнительно небольшой модели, обученной решению целевой задачи на небольшом датасете. Например, маленькую версию GPT-3 можно обучить генерации текста в стиле определённого автора, а затем в качестве распределения вероятностей токенов при генерации текста использовать усреднённое распределение двух моделей — предобученной на огромном наборе разнообразных текстов гигантской версии GPT-3 и маленькой «авторской» версии. При этом оценки моделей можно сочетать и более умным образом, чем путём простого усреднения: например, можно использовать взвешенное усреднение или вовсе приспособить для генерации итогового распределения отдельную модель.
Идея пробинга заключается в том, чтобы обучить маленькую модель, решающую целевую задачу, отталкиваться от представлений, выученных большой предобученной моделью. По сути, этот подход похож на послойное обучение нейронной сети. Более того, нередко глубокие трансформерные модели действительно обучают послойно, «замораживая» веса в части слоёв предобученной модели. Но пробинг нередко имеет более изощрённую форму, когда на вход обучаемой модели-«надстройки» могут подаваться активации (выходы) из разных слоёв предобученной сети. Часто в качестве «надстройки» применяются простые линейные модели, такую разновидность пробинга называют линейным пробингом [Linear Probing или Linear Probe].
И наконец, последний подход, подстройка затравки, получил популярность именно благодаря развитию генеративных текстовых моделей. В рамках этого подхода развиваются алгоритмы, позволяющие разными автоматизированными способами модифицировать затравку при генерации, чтобы добиться от модели нужного поведения.
В конце 2020 г. в результате совместных усилий нескольких исследовательских команд «Сбера» (в числе которых было и моё Управление экспериментальных систем машинного обучения департамента SberDevices) на свет появилась русскоязычная версия GPT-3 под названием ruGPT-3. Используя суперкомпьютер «Кристофари», мы обучили несколько версий модели (с числом весов от 125 млн до 13 млрд).
В обучающую выборку, помимо традиционного для GPT-3 подмножества корпуса Common Crawl (результата сплошного сканирования интернет-сайтов), вошла солидная подборка книг на русском языке, русскоязычная «Википедия», огромные коллекции новостей, научных статей и диалогов, подборки вопросов и ответов на различные темы и множество других наборов текстовых данных. Первые эксперименты с моделью показывают, что она довольно хорошо справляется с задачей генерации текстов самой различной тематики.
<