Как на самом деле работает ChatGPT, объяснение для нетехнических людей
Перевод статьи с Medium сформирован DEEPL. Оригинал статьи:
https://bootcamp.uxdesign.cc/how-chatgpt-really-works-explained-for-non-technical-people-71efb078a5c9
Выпуск ChatGPT компанией OpenAI в конце прошлого года был феноменальным - даже моя бабушка спрашивает о нем. Его способность генерировать человекоподобный язык вдохновила людей на эксперименты с его потенциалом в различных продуктах. Его дико успешный запуск даже оказал давление на таких технологических гигантов, как Google, чтобы они поспешили выпустить свою собственную версию ChatGPT.
Но давайте будем честными, для нетехнических менеджеров по продуктам, дизайнеров и предпринимателей внутренняя работа ChatGPT может показаться магическим черным ящиком. Не волнуйтесь! В этом блоге я постараюсь объяснить технологию и модель, лежащую в основе ChatGPT, как можно проще. К концу этого поста вы будете хорошо понимать, что может делать ChatGPT и как он творит свою магию.
Временная шкала трансформатора и GPT
Прежде чем мы погрузимся глубоко в механизм работы ChatGPT, давайте кратко рассмотрим хронологию развития архитектуры трансформаторов языковых моделей и различных версий GPT, чтобы вы могли лучше понять, как все развивалось в ChatGPT, который мы имеем сегодня.
Временная шкала трансформеров, GPT и ChatGPT. Изображение автора.
- OpenAI была основана Сэмом Альтманом, Элоном Маском, Грегом Брокманом, Питером Тилем и другими. OpenAI разрабатывает множество различных моделей ИИ, помимо GPT.
- Компания Google опубликовала работу Attention is All You Need, в которой была представлена архитектура transformer [2]. Трансформер - это архитектура нейронной сети, которая закладывает основу для многих современных (SOTA) больших языковых моделей (LLM), таких как GPT.
- GPT представлен в работе " Улучшение понимания языка с помощью генеративного предварительного обучения " [3]. Он основан на модифицированной архитектуре трансформатора и предварительно обучен на большом корпусе данных.
- GPT-2 представлен в работе Language Models are Unsupervised Multitask Learners [4], которые могут выполнять ряд задач без явного контроля при обучении.
- GPT-3 представлен в Language Models are Few-Shot Learners [5], который может хорошо работать с небольшим количеством примеров в подсказке без тонкой настройки.
- InstructGPT представлена в книге " Обучение языковых моделей для выполнения инструкций с обратной связью от человека " [6], которая может лучше выполнять инструкции пользователя путем точной настройки с учетом обратной связи от человека.
Временная шкала показывает, что GPT развился из первоначальной архитектуры трансформатора и приобрел свои способности в результате многих итераций. Если вам непонятны такие термины, как трансформаторы, предварительное обучение, тонкая настройка или обучение с подкреплением на основе человеческой обратной связи, не волнуйтесь! Я объясню их все в следующих разделах.
Глубокое погружение за моделями
Теперь, когда вы знаете, что ChatGPT основан на трансформаторах и предшествующих моделях GPT, давайте подробнее рассмотрим компоненты этих моделей и то, как они работают. Ничего страшного, если вы не знакомы с глубоким обучением, нейронными сетями или искусственным интеллектом - я опущу уравнения и объясню концепции с помощью аналогий и примеров.
В следующих разделах я начну с общего обзора языковых моделей и NLP, перейду к оригинальной архитектуре трансформатора, затем к тому, как GPT адаптировал архитектуру трансформатора, и, наконец, как ChatGPT дорабатывается на основе GPT.
Языковые модели и НЛП
Существует множество типов моделей ИИ или глубокого обучения. Для задач обработки естественного языка (NLP), таких как беседы, распознавание речи, перевод и обобщение, мы будем обращаться за помощью к языковым моделям.
Языковые модели могут изучать библиотеку текстов (называемую корпусом) и предсказывать слова или последовательности слов с помощью вероятностных распределений, т.е. насколько вероятно появление слова или последовательности. Например, когда вы говорите "Том любит есть ...", вероятность того, что следующим словом будет "пицца", будет выше, чем "стол". Если это предсказание следующего слова в последовательности, оно называется предсказанием следующего слова; если это предсказание отсутствующего слова в последовательности, оно называется моделированием языка по маске.
Поскольку это вероятностное распределение, может быть много вероятных слов с разными вероятностями. Хотя вы можете подумать, что идеально всегда выбирать лучшего кандидата с наибольшей вероятностью, это может привести к повторяющимся последовательностям. Поэтому на практике исследователи добавляют некоторую случайность**(температуру**) при выборе слова из лучших кандидатов.
Типичный процесс НЛП с языковой моделью. Изображение автора.
В типичном процессе НЛП входной текст проходит через следующие этапы [8]:
- Предварительная обработка: очистка текста с помощью таких методов, как сегментация предложений, токенизация (разбиение текста на небольшие фрагменты, называемые токенами), стемминг (удаление суффиксов или префиксов), удаление стоп-слов, исправление орфографии и т.д. Например, фраза "Том любит есть пиццу." будет преобразована в ["Том", "любит", "чтобы", "есть", "пицца", "."] и в ["Том", "любит", "чтобы", "есть", "пицца", "."].
- Кодирование или встраивание: превратить очищенный текст в вектор чисел, чтобы модель могла его обработать.
- Подача в модель: передача закодированного входного сигнала в модель для обработки.
- Получение результата: получить из модели результат распределения вероятностей потенциальных слов, представленных в виде векторов чисел.
- Декодирование: перевод вектора обратно в слова, читаемые человеком.
- Постобработка: доработка вывода с помощью проверки орфографии, грамматики, пунктуации, капитализации и т.д.
Исследователи ИИ придумали множество различных архитектур моделей. Трансформеры, разновидность нейронных сетей, в последние годы занимают передовые позиции и закладывают основу для GPT. В следующем разделе мы рассмотрим компоненты и механизмы трансформаторов.
Архитектура трансформера
Архитектура трансформера является основой GPT. Это тип нейронной сети, которая похожа на нейроны в нашем человеческом мозге. Трансформер может лучше понимать контексты в последовательных данных, таких как текст, речь или музыка, с помощью механизмов, называемых вниманием и самовниманием.
Внимание позволяет модели сосредоточиться на наиболее релевантных частях входных и выходных данных путем изучения релевантности или сходства между элементами, которые обычно представлены векторами. Если модель фокусируется на одной и той же последовательности, это называется самовниманием [2][9].
Механизм внимания измеряет релевантность/схожесть между каждым элементом. Изображение автора.
Возьмем в качестве примера следующее предложение: "Том любит есть яблоки. Он ест их каждый день". В этом предложении "он" относится к "Тому", а "они" - к "яблокам". А механизм внимания использует математический алгоритм, чтобы сообщить модели, что эти слова связаны, вычисляя балл сходства между векторами слов. С помощью этого механизма трансформеры могут лучше "понять смысл" значений в текстовых последовательностях более последовательным образом.
Трансформаторы состоят из следующих компонентов [2]:
- Встраивание и позиционное кодирование: превращение слов в векторы чисел
- Кодировщик: извлекает признаки из входной последовательности и анализирует ее смысл и контекст. Он выдает матрицу скрытых состояний для каждого входного токена, которая передается декодеру
- Декодер: генерирует выходную последовательность на основе выходного сигнала кодера и предыдущих выходных лексем
- Линейный слой и слой Softmax: превращение вектора в вероятностное распределение выходных слов
Кодер и декодер являются основными компонентами архитектуры трансформатора. Кодер отвечает за анализ и "понимание" входного текста, а декодер - за генерацию выходного.
Иллюстрация автора. Адаптировано из книги "Внимание - это все, что вам нужно" [2].
Если вам интересно, вы можете прочитать дальше, чтобы узнать подробности о кодерах и декодерах. Если нет, переходите к следующему разделу, где мы рассмотрим GPT, который является разновидностью трансформаторов.
Кодер представляет собой стопку из нескольких одинаковых слоев (6 в оригинальной статье о трансформаторе). Каждый слой имеет два подслоя: слой самовнимания с несколькими головками и слой прямой передачи, с некоторыми связями, называемыми остаточными связями и нормализацией слоя [2]. Многоголовый подслой самовнимания применяет механизм внимания для поиска связи/подобия между входными лексемами, чтобы понять входные данные. Подслой "вперед-назад" выполняет некоторую обработку перед передачей результата следующему слою, чтобы предотвратить перебор. Вы можете думать о кодировщиках, как о чтении книг - вы обращаете внимание на каждое новое слово, которое читаете, и думаете о том, как оно связано с предыдущими словами.
Декодер похож на кодер тем, что он также представляет собой стопку одинаковых слоев. Но каждый слой декодера имеет дополнительный слой внимания кодера-декодера между слоями самовнимания и обратной связи, чтобы позволить декодеру обратить внимание на входную последовательность. Например, если вы переводите "Я люблю тебя" (вход) в "Je t'aime" (выход), вам нужно знать, что "Je" и "I" выровнены, а "love" и "aime" выровнены.
Многоголовые слои внимания в декодере также отличаются. Они замаскированы, чтобы не обращать внимания ни на что справа от текущего токена, который еще не был сгенерирован [2]. Можно думать о декодерах как о свободном письме - вы пишете, основываясь на том, что вы уже написали и что прочитали, не заботясь о том, что вы собираетесь написать.
От трансформеров к GPT, GPT2 и GPT3
Полное название GPT - Generative Pre-trained Transformer. Из названия видно, что это генеративная модель, хорошо генерирующая результат; она предварительно обучена, то есть обучена на большом корпусе текстовых данных; это тип трансформатора.
Фактически, GPT использует только декодерную часть архитектуры трансформатора [3]. Из предыдущего раздела о трансформаторах мы узнали, что декодеры отвечают за предсказание следующей лексемы в последовательности. GPT повторяет этот процесс снова и снова, используя ранее сгенерированные результаты в качестве входных данных для создания более длинных текстов, что называется авторегрессией. Например, если он переводит "Я люблю тебя" на французский, он сначала сгенерирует "Je", затем использует сгенерированное "Je" для получения "Je t'aime". (См. пунктирную линию на предыдущем рисунке).
При обучении первой версии GPT исследователи использовали предварительное обучение без наблюдения с помощью базы данных BookCorpus, состоящей из более 7000 уникальных неопубликованных книг [3]. Неконтролируемое обучение - это как если бы ИИ сам читал эти книги и пытался выучить общие правила языка и слов. Помимо предварительного обучения, они также использовали контролируемую тонкую настройку на конкретных задачах, таких как резюмирование или вопросы и ответы. Наблюдение означает, что они показывают ИИ примеры запросов и правильных ответов и просят его учиться на этих примерах.
В GPT-2 исследователи расширили размер модели (1,5 ББ параметров) и корпус, который они подают в модель, добавив WebText, представляющий собой коллекцию миллионов веб-страниц, во время предварительного обучения без надзора [4]. Имея такой большой корпус для обучения, модель доказала, что она может очень хорошо справляться с широким спектром задач, связанных с языком, даже без контролируемой тонкой настройки.
В GPT-3 исследователи сделали еще один шаг вперед, расширив модель до 175 миллиардов параметров и используя огромный корпус, включающий сотни миллиардов слов из Интернета, книг и Википедии. С такой огромной моделью и большим корпусом при предварительном обучении исследователи обнаружили, что GPT-3 может научиться лучше выполнять задачи с одним (one-shot) или несколькими примерами (few-shot) в подсказке без явной контролируемой тонкой настройки.
(Если вы хотите узнать больше о том, как побудить модели к получению лучших результатов, вы можете прочитать мою другую статью: Как использовать ChatGPT в управлении продуктом)
На этом этапе модель GPT-3 уже впечатляет. Но это скорее языковые модели общего назначения. Исследователи хотели изучить, как он может выполнять человеческие инструкции и вести беседы с людьми. Поэтому они создали InstructGPT и ChatGPT на основе общей модели GPT. Давайте посмотрим, как они это сделали, в следующем разделе.
Обучение GPT взаимодействию с людьми: InstructGPT и ChatGPT
После итераций от GPT к GPT-3 с растущими моделями и объемом корпуса исследователи поняли, что большие модели не означают, что они могут хорошо следовать намерениям человека и могут давать вредные результаты. Поэтому они попытались доработать GPT-3 с помощью контролируемого обучения и обучения с подкреплением на основе человеческой обратной связи (RLHF) [6][12]. В результате этих шагов обучения появились две усовершенствованные модели - InstructGPT и ChatGPT.
Иллюстрация из книги Обучение языковых моделей выполнению инструкций с обратной связью от человека [6].
Первым шагом является контролируемое обучение на человеческих примерах. Исследователи сначала предоставили предварительно обученному GPT набор данных с метками, содержащий пары подсказок и ответов, написанных людьми. Этот набор данных используется для того, чтобы модель научилась желаемому поведению на этих примерах. На этом этапе была получена модель с тонкой настройкой под наблюдением (SFT).
Второй этап - обучение модели вознаграждения (RM) для оценки ответов, полученных с помощью генеративной модели. Исследователи использовали модель SFT для генерации нескольких ответов на каждую подсказку и попросили людей-метчиков ранжировать ответы от лучшего к худшему по качеству, вовлеченности, информативности, безопасности, связности и релевантности. Подсказки, ответы и рейтинги подаются в модель вознаграждения, чтобы узнать предпочтения человека в отношении ответов с помощью контролируемого обучения. Модель вознаграждения может предсказать скалярное значение вознаграждения, основанное на том, насколько хорошо ответ соответствует предпочтениям человека.
На третьем этапе исследователи использовали модель вознаграждения для оптимизации политики модели SFT посредством обучения с подкреплением. Модель SFT генерирует ответ на новый запрос; модель вознаграждения оценивает ответ и присваивает ему значение вознаграждения, которое приблизительно соответствует предпочтениям человека; затем вознаграждение используется для оптимизации генеративной модели путем обновления ее параметров. Например, если генеративная модель генерирует ответ, который, по мнению модели вознаграждения, может понравиться человеку, она получит положительное вознаграждение, чтобы продолжать генерировать подобные ответы в будущем; и наоборот.
Благодаря этому процессу с контролируемым обучением и обучением с подкреплением на основе обратной связи от человека, модель InstructGPT (с параметрами всего 1,3 Б) способна лучше справляться с задачами, выполняющими инструкции человека, чем гораздо более крупная модель GPT-3 (с параметрами 175 Б).
(Примечание: Однако это не означает, что InstructGPT лучше, чем GPT-3 во всех аспектах или областях. Например, GPT-3 может иметь преимущество в создании более длинных или более творческих текстов, таких как рассказы или статьи).
ChatGPT является дочерней моделью InstructGPT. Процесс обучения для ChatGPT и InstructGPT аналогичен, включая те же методы контролируемого обучения и RLHF, которые мы рассматривали ранее. Основное отличие заключается в том, что ChatGPT обучается на примерах из разговорных задач, таких как ответы на вопросы, болтовня, мелочи и т.д. [7]. Благодаря такому обучению ChatGPT может вести естественные диалоги с людьми. Во время беседы ChatGPT может отвечать на последующие вопросы и признавать ошибки, что делает взаимодействие с ним более увлекательным.
Выводы
Благодаря предыдущим объяснениям, я надеюсь, у вас появилось более четкое понимание того, как работает модель, лежащая в основе ChatGPT, и как она превратилась в то, чем является сегодня.
В качестве краткого резюме, вот наиболее важные выводы и ограничения моделей GPT:
- ChatGPT основан на модели авторегрессионного трансформатора только для декодера, который принимает последовательность текста и выдает вероятностное распределение лексем в последовательности, генерируя по одной лексеме за раз итеративно.
- Поскольку у него нет возможности искать ссылки в режиме реального времени, он делает вероятностные прогнозы в процессе генерации на основе корпуса, на котором он был обучен, что может привести к ложным утверждениям о фактах.
- Он предварительно обучен на огромном корпусе данных из Интернета и книг и доработан на примерах человеческих разговоров с помощью контролируемого обучения и обучения с подкреплением на основе человеческих отзывов (RLHF).
- Его возможности в основном зависят от размера модели, качества и размера корпуса и примеров, на которых он обучался. С помощью дополнительного контролируемого обучения или RLHF он может работать лучше в определенных контекстах или задачах.
- Поскольку корпус состоит из веб-контента и книг, они могут иметь предубеждения, на которых может учиться модель, особенно в отношении социальных, культурных, политических или гендерных предубеждений, что приводит к необъективным ответам на некоторые запросы.
Оставайтесь любознательными и открытыми для новых технологий, таких как ChatGPT. Я считаю, что открытое мышление и любопытство могут помочь нам, нетехническим менеджерам по продуктам, дизайнерам и предпринимателям, ориентироваться в этой новой волне технологической революции.
Ссылки
[1] "Introducing OpenAI." OpenAI, 12 декабря 2015 года, [https://openai.com/blog/introducing-openai/.](https://openai.com/blog/introducing-openai/)
[2] Васвани, Ашиш и др. "Внимание - это все, что вам нужно". Advances in neural information processing systems 30 (2017).
[3] Рэдфорд, Алек и др. "Улучшение понимания языка с помощью генеративного предварительного обучения". (2018).
[4] Radford, Alec, et al. "Language models are unsupervised multitask learners". OpenAI blog 1.8 (2019): 9.
[5] Браун, Том, и др. "Языковые модели - это немногочисленные обучающиеся". Advances in neural information processing systems 33 (2020): 1877-1901.
[6] Ouyang, Long, et al. "Обучение языковых моделей для выполнения инструкций с обратной связью от человека." arXiv preprint arXiv:2203.02155 (2022).
[7] "ChatGPT: Оптимизация языковых моделей для диалога". OpenAI, 30 ноября 2022 года, [https://openai.com/blog/chatgpt/.](https://openai.com/blog/chatgpt/)
[8] Murali, Aishwarya. "Руководство по выполнению 5 важных шагов НЛП с помощью Python". Analytics Vidhya, 17 Aug. 2021, [https://www.analyticsvidhya.com/blog/2021/08/a-guide-to-perform-5-important-steps-of-nlp-using-python/.](https://www.analyticsvidhya.com/blog/2021/08/a-guide-to-perform-5-important-steps-of-nlp-using-python/)
[9] Кристина, Стефания. "Механизм внимания трансформера". Machine Learning Mastery, 15 Sept. 2022, [https://machinelearningmastery.com/the-transformer-attention-mechanism/.](https://machinelearningmastery.com/the-transformer-attention-mechanism/)
[10] Доши, Кетан. "Трансформеры, объясненные визуально (часть 1): Обзор функциональных возможностей". Medium, 3 июня 2021 года, [https://towardsdatascience.com/transformers-explained-visually-part-1-overview-of-functionality-95a6dd460452.](https://towardsdatascience.com/transformers-explained-visually-part-1-overview-of-functionality-95a6dd460452)
[11] Косарь, Вацлав. Feed-Forward, Self-Attention & Key-Value. 2 Jan. 2021, [https://vaclavkosar.com/ml/Feed-Forward-Self-Attendion-Key-Value-Memory.](https://vaclavkosar.com/ml/Feed-Forward-Self-Attendion-Key-Value-Memory)
[12] "Выравнивание языковых моделей для выполнения инструкций". OpenAI, 27 Jan. 2022, [https://openai.com/blog/instruction-following/.](https://openai.com/blog/instruction-following/)