Я не представляю свою рабочую жизнь без ChatGPT, он вдохновляет и помогает, делает за меня скучные мануальные процессы и объясняет вещи, которые иногда мне было бы стыдно спрашивать у людей. И кажется, он меня понимает!
Но ChatGPT: что это вообще такое? Как работает эта магия? Без всякого технического опыта мне сложно было разобраться в терминологии и научных статьях. Но очень хотелось понять.
Перечитав несколько книг, статей и прослушав пару подкастов, я написала результат объяснения для таких, как я — людей нетехнических специальностей.
А еще мы уже рассказывали, как пользоваться чат GPT для поиска работы.
Рекомендуем публикацию по теме
Что такое ChatGPT самыми простыми словами
Если ваше детство/юность пришлись на 90-е, скорее всего, вы помните антивандальные телефоны Nokia 3210, их выпустили в 99 году, и в них уже была технология Т9, которая ускоряла ввод текста. Т9 угадывала только текущее слово (или его часть), а не следующее, то есть не учитывала контекст.
Все же и Т9 и ChatGPT с технической точки зрения схожи, это — языковые модели (Language Models), и их основная функция — предусмотреть, какое слово должно идти после уже написанного текста. Конечно, за 20 лет технологии развились, и уже в 2010 году смартфоны умели ограниченно понимать контекст (учитывать предыдущее слово) и даже помогать с правильным синтаксисом. (Источник 1, Источник 2)
То есть и Т9, и ChatGPT умеют выполнять, казалось бы, простую задачу: предугадывать только одно слово. Это и есть языковое моделирование (Modeling language) — прогноз, какое слово будет следующим, сделанный на основе анализа предыдущего текста.
Для таких предсказаний языковой модели необходимо просчитывать вероятность того, какое слово будет следующим. (Источник 1)
Конечно, это подсказка не случайных слов, для такого рандомайзера ни одна языковая модель не требовалась бы, вся сложность и корни технологии собственно в расчетах вероятностей.
Вы легко можете проверить это на своем смартфоне:
Чтобы понять, как Т9 выбирает слова, рассмотрим принцип работы простых нейронных сетей. Начнем с задачи проще языкового моделирования, научим компьютер находить зависимости между простыми явлениями. Например «угадывать» вес человека в зависимости от его роста.
В первую очередь собираем данные, на которых мы будем искать эти зависимости. Для наглядности выстроим график: на горизонтальной оси X мы будем отмечать рост в сантиметрах, а на вертикальной оси Y — вес в килограммах. (Источник 1)
Зависимость очевидна: чем выше человек, тем больше он весит.
В виде уравнения зависимость выглядит так: y=k*x+b, а на графике нужная нам линия уже нарисована с помощью модели линейной регрессии.
Пример такой зависимости очень прост и понятен интуитивно, но этот принцип заложен в языковое моделирование.
Анализируя большое количество текстов, языковые модели рассчитывают на вероятность появления слов в разных контекстах. Итак, если вы уже набрали «желаю успехов», Т9 анализирует свою статистику и обнаруживает, что после фразы «желаю успехов» часто идут слова, такие как «у», «в», и словосочетание «в работе» и так далее. Эти слова будут иметь более высокий коэффициент вероятности. Этот подход основан на статистике и может быть очень эффективен для предсказания следующих слов в тексте, но не учитывает семантическую и синтаксическую связь между словами. То есть, Т9 не понимает значение слов или грамматическую структуру предложений, он просто использует вероятность на основе статистики.
Очень упростив, ChatGPT тоже можно назвать большим количеством уравнений, предусматривающих следующее слово (игрек) на основе введенного набора предыдущих слов (икс).
Основная сложность в работе модели — подбор таких коэффициентов для этих иксов, чтобы они правильно отражали зависимость (как в нашем примере с ростом/весом). Расчет коэффициентов происходит в процессе анализа данных, загруженных в систему. Такие данные называют датасетом, а процесс анализа — машинным обучением, точнее, обучением языковым моделям для NLP (Natural Language Processing).
Рекомендуем курс по теме
Из-за огромного объема данных появилось понятие LLM (Large Language Model) — большие языковые модели. Чем больше параметров (уравнений для расчетов вероятности) использует модель, тем лучше тексты она способна генерировать. Первой такой моделью стала GPT-1 (Generative Pre-trained Transformer 1), разработанная компанией OpenAI и представленная в мае 2018 года.
Итак, отвечая вам на запрос «Напиши для меня инструкцию к стиралке в стиле Ивана Франко», языковая модель интерпретирует контекст вопроса и генерирует ответ путем предсказания каждого последующего слова последовательно. И этот процесс состоит в расчетах вероятностей, которые прогнозируют каждое следующее слово.
Творчество языковой модели
Современные языковые модели ищут не одно-единственное правильное слово, а вероятность разных слов, которыми можно продлить фразу.
Понятнее на примере — если мы попросим модель продолжить предложение «Ганнибала Лектора в фильме «Молчание Ягнят» сыграл актер Сэр…», вероятно, вы уверены, что система с вероятностью 100% добавит слово Энтони (поскольку эту роль сыграл актер Сэр Энтони Хопкинс). На самом деле, полное имя актера — Филипп Энтони Гопкинс, хотя полная форма встречается очень редко. Поэтому есть 2 варианта — 1) Энтони, коэффициент вероятности 90%, 2) Филипп, вероятность — 10%.
И очень интересным фактом является то, что система не всегда выбирает слова с большим коэффициентом. (Источник 1) То есть, в нашем примере слово «Энтони» вместо слова «Филипп» только потому, что 90 больше 10. Этот выбор обусловлен гораздо более сложной зависимостью, а пользователям часто кажется случайным.
И хотя на первый взгляд логичнее кажется выбор слова с большей вероятностью, ученые когда-то пытались заставить нейронные сети всегда выбирать «наиболее вероятное» следующее слово, на практике такие модели работали хуже. Именно элемент случайности делает генерируемые ответы похожими на созданные человеком.
И именно поэтому модель на одинаковые вопросы может давать разные ответы. Так же, как и мы, люди.
В целом любой язык — это система с четкими наборами правил и исключений. Слова в предложениях не возникают из ниоткуда, они связаны друг с другом. Мы усваиваем эти связи автоматически, когда в детстве учимся разговаривать. Вместе с тем речь имеет много тонов и полутонов, с помощью разных стилей и их комбинаций мы выражаем не меньше информации, чем сам текст.
И все это разнообразие лингвистическая модель анализирует, переводит в формулы и генерирует новые тексты с помощью формул.
Итак, с принципом работы языковых моделей более или менее разобрались, но магия ChatGPT не до конца ясна. Здесь будет немного истории:
Первоначально в мире обработки естественного языка (NLP) использовали рекуррентные сети (RNN) для разных задач. Рекуррентные сети подобны роботу, который читает слово за словом. Каждое слово, которое он читает, оказывает влияние на то, как он понимает следующее слово. Например, во фразе «Я люблю солнце», когда робот прочитал слово «я», он понимает, что это может быть начало предложения, и это влияет на то, как он понимает следующие слова.
В середине 2010-х создали механизм внимания — ключевой компонент многих современных моделей. Он позволяет моделям «фокусироваться» на определенных частях входных данных, уделяя им больше внимания, в зависимости от их важности, для решения конкретной задачи. Основная идея состоит в том, чтобы модель определяла, какие части входных данных имеют большее значение, и использовала эту информацию для принятия верных решений.
А в 2017 году команда ученых из Google Brain издала статью «Attention is All You Need», в которой описала новый тип архитектуры на основе технологии внимания, уже без RNN (отсюда и название статьи). Такую архитектуру назвали Трансформером.
Наш пример с предложением «Я люблю солнце» Трансформер обрабатывает так: видит все слова в предложении: «Я», «люблю», «солнце». Он может учесть, что «Я» — это начало предложения, и использует эту информацию при рассмотрении других слов. Он также обращает внимание на взаимосвязи между всеми словами в один момент времени.
GPT — это аббревиатура от Generative Pre-trained Transformer, то есть «трансформер, обученный генерировать текст».
Появление Трансформера было большим толчком для всех отраслей искусственного интеллекта (AI) — от текстовых переводов до обработки изображений, звука или видео.
Рекомендуем публикацию по теме
Поскольку текст, изображение и звук (и практически все в этом мире) можно представлять в виде последовательностей чисел, Трансформер может решать практически любые задачи. Ключевое преимущество трансформера над другими типами архитектуры — это гибкость и удобство масштабирования.
Это позволило сделать значительный прогресс в использовании нейросетей для обработки текстов, включая их создание. Теперь модель способна достичь лучшей сохранности информации: она использует ранее введенную информацию более эффективно, удерживает связь с контекстом и, что самое важное, может понимать взаимосвязи между каждым словом на большом количестве данных.
GPT-2 и увеличение объема датасета
Чтобы научить нейросеть различать фото таксы от фото бублика, нельзя просто скачать много фоток и сказать — разбирайся. Сначала нужно описать фотографии, то есть создать начальный набор данных.
С другой стороны модели можно предоставить какие-либо текстовые данные, их не нужно как-то обрабатывать или структурировать. Если бы это работало с людьми, мы могли бы просто дать ребенку учебники с первого по последний класс и получить выпускника с медалью.
Любой текст, написанный человеком, и есть те же «тренировочные данные», потому что подходит для анализа последовательности слов.
Архитектура Трансформера совершенствовалась на GPT-1 и стала еще лучше масштабироваться, то есть работать с огромным объемом данных и вместе с тем поддерживать массивную модель, то есть состоящую из большого количества параметров.
В 2019 году ученые из OpenAI создают новую, более сложную систему — GPT-2. Изменились 2 параметра — объем датасета и размер самой модели, то есть количество параметров анализа данных.
Во время работы над апдейтом системы команда столкнулась с проблемой — не было готового подходящего датасета, столь большого, чтобы использовать его для такой масштабной модели. Тогда OpenAI нашли решение — источником текстов, написанных людьми, стал Reddit. Каждое сообщение, которое имело более трех лайков, было «скормлено» системе. Объем всего текста составил около 40 гигабайт. Это в 7 тысяч раз больше, чем все творческое наследие Уильяма Шекспира. Человеку для того, чтобы прочитать столько текста, понадобилось бы 40 лет непрерывного чтения.
Но важен не только размер датасета, но тоже сложность модели, определяемая количеством ее параметров. Параметры модели — это числа, которые определяют, как модель адаптируется к тренировочным данным. Чем больше параметров, тем больше информации модель может изучить и отобразить.
Итак, сколько было параметров в уравнении, которое описывает самую большую модель GPT-2 в 2019 году?
Модель GPT-2 имела примерно 1,5 миллиарда параметров. Это было значительным увеличением по сравнению с предыдущей версией GPT-1, которая имела примерно 117 миллионов параметров. Такая большая модель потребовала больше ресурсов вычисления и более мощных компьютеров.
В очень упрощенном приближении это то же уравнение y=k*x+b, где y — выходная переменная или результат (т.е. следующее слово), x = это входная переменная (предыдущие слова), k — это параметр, определяющий наклон линии, а b — это параметр, определяющий точку пересечения линии с осью y.
В контексте лингвистических моделей параметры, аналогичные `k` и `b` в уравнении прямой линии, определяют спецификации модели и ее поведение при обработке текста. Однако в лингвистических моделях такие параметры могут быть гораздо более сложными, и их роль не ограничивается простой линейной зависимостью.
Коэффициенты (k) в лингвистических моделях, таких как GPT, определяют, насколько важна каждая лексическая единица по отношению к другим. К примеру, больший коэффициент может указывать на важность определенного слова или понятия в контексте текста.
Смещение (b) в лингвистических моделях может указывать на дополнительную константу или смещение в результатах модели. Он может использоваться, например, для решения проблемы двусмысленности изречений, отсутствия контекста или для настройки стиля генерируемого текста.
Итак, параметры (их также называют «весами» или «коэффициентами») в лингвистических моделях — это наборы чисел, которые определяются при тренировке модели на большом объеме текста. Они используются для настройки внутренней структуры и работы модели так, чтобы она могла генерировать текст, понимать язык и выполнять различные задачи языкового анализа.
Эти параметры после обучения модели сохраняются и не изменяются. То есть при использовании модели к этому уравнению каждый раз подставляются разные x (вводимые слова в тексте), но сами параметры уравнения (числовые коэффициенты k при x) остаются неизменными.
GPT-2 удивила мир генерируемыми текстами. В отличие от GPT-1, она могла не только давать общие ответы, а писать тексты в конкретном стиле, выдавая себя за журналиста местной газеты или школьника, пишущего эссе.
2020: GPT-3, когда размер имеет значение
В 2020 году появилась на свет следующая версия, GPT-3, она была в 116 раз больше, чем ее предшественница. Не менее впечатляющей была и увеличенная мощность: вес разработанной мозговой сетки достиг 700 гигабайт.
Вместе с увеличением объема модели большое внимание уделялось и улучшению датасета для ее обучения. Хотя увеличение было менее радикальным, чем в случае параметров, объем датасета вырос до 420 гигабайт, включая в себя много книг, материалов из Википедии и текстов из разных уголков Интернета.
Рекомендуем публикацию по теме
Как общаться с ИИ и что такое Промты?
Промпты — это команды, которыми вы объясняете GPT-3, что вы хотите от него получить. Это похоже на программирование, но обычно выполняется обычным «человеческим языком».
Любой текст, который мы предоставляем ИИ, токенизируется, то есть разбивается на меньшие единицы, которые называются токенами.
Важен размер промпта. Хотя промпт может быть любым текстом, общее количество токенов в промпте и полученном результате должно составлять менее 2,048 токенов — это примерно 1,500 слов. Для эффективных промтов важен не только размер, но и качество.
В заключение предлагаю 8 советов, как писать лучшие команды ChatGPT:
- Определите роль для модели, которая вам нужна, и предоставьте эту роль в промпте. Например, «я хочу, чтобы ты был писателем, специализирующимся на жанре детектив» или «мне нужно, чтобы ты выступил в роли юриста»
- Используйте слова-действия, такие как «создай», «сделай», «придумай», «опиши», «предложи»
- Избегайте употребления формулировок «мог бы», «можешь»
- Сделайте ваш промпт более конкретным и понятным, избегайте абстрактных запросов
- Установите ограничения по количеству символов, если вам нужен ответ ограниченной длины
- Определите, какой стиль текста вам нужен: официальный, разговорный, творческий, публицистический
- Рассмотрите возможные форматы ответа, такие как таблица, нумерованный список, фрагменты или цитаты
- Объясните задачу подробно и добавьте как можно больше контекста для лучшего понимания вашего запроса