
Полная версия
ИИ
Пока компьютерное зрение праздновало победы, обработка естественного языка (NLP) отставала.
Проблема в природе данных. Изображение – это сетка пикселей. Каждый пиксель влияет только на соседние. Свёрточные сети идеально подходят для этого: они смотрят на локальные паттерны и строят иерархию.
Но язык – не сетка. Это последовательность. И значение слова зависит не от соседних слов, а от контекста – иногда за десятки слов до или после.
Возьмём предложение: «Банк на углу закрыт». Слово «банк» – это финансовое учреждение. Но в предложении «Он сел на банк и ловил рыбу» – это берег. Чтобы понять разницу, модель должна видеть весь контекст.
Для работы с последовательностями придумали рекуррентные нейронные сети (RNN). Они обрабатывают текст слово за словом, сохраняя «память» о предыдущих словах.
Но RNN имели проблему: они плохо запоминали на большие расстояния. Если важная информация была в начале предложения, а вопрос – в конце, RNN часто «забывала» начало.
LSTM: попытка решить проблему памяти
В 1997 году Сепп Хохрайтер и Юрген Шмидхубер предложили LSTM (Long Short-Term Memory) – улучшенную версию RNN с механизмом «ворот», который контролирует, что запоминать, а что забывать.
LSTM работал лучше. Он мог захватывать зависимости на расстоянии 50-100 слов. Но это всё ещё было недостаточно для сложных задач.
К тому же, LSTM был медленным. Обрабатывая текст последовательно, слово за словом, он не мог использовать параллелизм современных GPU. Обучение занимало недели.
И ещё одна проблема: LSTM хорошо работал на небольших данных, но плохо масштабировался. Чем больше данных, тем медленнее обучение и тем чаще он застревал в локальных минимумах.
Нужен был другой подход. Не последовательный, а параллельный. Не основанный на памяти, а на внимании.
2014: Механизм внимания – идея, которая изменит всё
В 2014 году Дмитрий Бахдану с коллегами опубликовал статью о механизме внимания (attention) для задачи машинного перевода.
Идея проста: вместо того чтобы пытаться запомнить всё предложение в одном векторе, давайте на каждом шаге позволим модели «смотреть» на всё исходное предложение и выбирать, какие слова важны прямо сейчас.
Это как человек при переводе: вы не держите всё предложение в голове целиком. Вы переводите по кусочкам, но периодически возвращаетесь взглядом к исходному тексту, чтобы проверить, правильно ли вы поняли.
Механизм внимания вычисляет, какие слова во входной последовательности релевантны для текущего слова в выходной. Он даёт веса: «это слово важно на 0.8, это – на 0.1, остальные – почти не важны».
Результаты были впечатляющими. Модели с attention переводили лучше, чем просто LSTM. Но attention был дополнением к RNN, а не заменой.
Следующий шаг был очевиден, но потребовал смелости: а что, если убрать RNN совсем? Что, если использовать только attention?
2017: «Attention Is All You Need» – трансформер
В июне 2017 года исследователи из Google опубликовали статью «Attention Is All You Need». Авторы: Ашиш Васвани, Ноам Шазир, Ники Пармар, Якоб Ушкорайт, Льон Джонс, Аидан Гомес, Лукаш Кайзер и Иллия Полосухин.
Название было провокационным. Авторы утверждали: всё, что нужно для обработки последовательностей, – это механизм внимания. Никаких рекуррентных связей. Никаких LSTM.
Они предложили архитектуру под названием «Трансформер» (Transformer). Её ключевые особенности:
Самовнимание (Self-Attention). Каждое слово смотрит на все другие слова в предложении и вычисляет, насколько они важны для его понимания. Это происходит параллельно для всех слов одновременно.
Многоголовое внимание (Multi-Head Attention). Вместо одного механизма внимания используется несколько параллельных. Каждая «голова» смотрит на разные аспекты: одна – на синтаксические связи, другая – на семантические, третья – на что-то ещё.
Позиционное кодирование (Positional Encoding). Поскольку трансформер не обрабатывает слова последовательно, нужно явно закодировать их позиции в предложении. Иначе модель не будет знать, что «кот съел мышь» отличается от «мышь съела кота».
Полная параллелизация. Все вычисления можно делать одновременно. Это значит: обучение на GPU в сотни раз быстрее, чем с LSTM.
На задаче машинного перевода трансформер превзошёл все предыдущие модели. Он обучался быстрее и давал лучшее качество. Но главное было не в этом.
Главное – трансформер масштабировался. Чем больше данных, чем больше параметров, тем лучше он работал. Не было потолка.
Это открыло дорогу к современным языковым моделям.
2018-2019: GPT и BERT – две стороны одной медали
Трансформер состоит из двух частей: энкодера (encoder), который читает входной текст, и декодера (decoder), который генерирует выходной текст.
Исследователи быстро поняли: эти части можно использовать отдельно для разных задач.
В июне 2018 года OpenAI выпустила GPT (Generative Pre-trained Transformer). Это был decoder-only трансформер, обученный предсказывать следующее слово в тексте. Идея: если модель научится хорошо предсказывать слова, она выучит язык.
GPT обучили на огромном корпусе текста из интернета – BookCorpus, коллекция из 7000 неопубликованных книг. Затем модель «дообучали» (fine-tuning) на конкретных задачах: классификация текстов, ответы на вопросы, суммаризация.
Результаты были хорошими. Но не революционными.
В октябре 2018 года Google выпустила BERT (Bidirectional Encoder Representations from Transformers). Это был encoder-only трансформер с другой задачей обучения: вместо предсказания следующего слова BERT учился заполнять пропуски.
Модель видела предложение вроде «Кот сидел на [MASK] и спал», и должна была угадать пропущенное слово. Это заставляло её использовать контекст с обеих сторон – отсюда «bidirectional» в названии.
BERT побил все рекорды на бенчмарках NLP. Он понимал контекст лучше всех предыдущих моделей.
Но у BERT была проблема: он не мог генерировать текст. Его архитектура была заточена под понимание, а не создание.
GPT мог генерировать, но понимал контекст хуже.
Следующий шаг был очевиден: увеличить масштаб.
2019-2020: GPT-2 и начало эры больших моделей
В феврале 2019 года OpenAI анонсировала GPT-2 – модель в 10 раз больше оригинальной GPT. 1.5 миллиарда параметров против 117 миллионов.
Её обучили на более крупном датасете – WebText, 40 гигабайт текста из интернета, отфильтрованного по качеству через Reddit-ссылки.
И GPT-2 продемонстрировала нечто новое: способность к zero-shot и few-shot обучению.
Zero-shot – это когда модель может выполнить задачу без специального обучения. Вы даёте ей текст вроде «Переведи на французский: Hello» – и она переводит. Хотя её специально не учили переводить.
Few-shot – это когда достаточно показать несколько примеров. «Кошка – cat, собака – dog, мышь – ?» Модель понимает паттерн и отвечает «mouse».
Это было неожиданно. Никто не программировал эти способности. Они возникли как побочный эффект обучения на огромных данных.
OpenAI была так впечатлена (и напугана), что сначала не опубликовала полную модель. Заявили, что GPT-2 «слишком опасна» – может генерировать убедительные фейковые новости.
Через несколько месяцев модель всё-таки выложили. Апокалипсис не случился. Но посыл был ясен: большие языковые модели – это новая реальность.
2020: GPT-3 и эпоха промптов
В июне 2020 года OpenAI представила GPT-3. 175 миллиардов параметров – в 116 раз больше GPT-2. Обучена на 45 терабайтах текста.
Цифры впечатляющие. Но важнее было другое: GPT-3 оказалась настолько хороша в few-shot learning, что могла выполнять задачи, просто читая инструкции.
Не нужно было дообучать модель. Не нужно было писать код. Достаточно было правильно сформулировать запрос – «промпт».
Это изменило парадигму. Раньше работа с моделью требовала машинного обучения: собрать данные, разметить, обучить, оценить. Теперь достаточно было написать текст.
Родилась новая профессия: prompt engineering – искусство формулировать запросы так, чтобы модель давала нужный результат.
GPT-3 стала доступна через API. Разработчики начали строить приложения: чат-боты, генераторы контента, помощники в коде. Появились стартапы, бизнес-модели, новые продукты.
Но GPT-3 имела проблемы. Она часто генерировала текст, который выглядел убедительно, но был фактически неверным. Она «галлюцинировала» – выдумывала несуществующие факты, цитаты, источники.
Следующий шаг был в улучшении не масштаба, а качества.
2022: InstructGPT и обучение с подкреплением от человека
В январе 2022 года OpenAI опубликовала статью о InstructGPT – модели, обученной следовать инструкциям.
Проблема GPT-3 была в том, что она обучалась просто предсказывать следующее слово. Это делало её хорошей в генерации текста, но не обязательно полезной. Она могла ответить не на ваш вопрос, а продолжить его. Могла сгенерировать токсичный контент, если контекст намекал на это.
InstructGPT использовал новый подход: обучение с подкреплением от человеческой обратной связи (RLHF – Reinforcement Learning from Human Feedback).
Процесс в три шага:
1. Обучить базовую модель на большом корпусе текста (как обычно).
Конец ознакомительного фрагмента.
Текст предоставлен ООО «Литрес».
Прочитайте эту книгу целиком, купив полную легальную версию на Литрес.
Безопасно оплатить книгу можно банковской картой Visa, MasterCard, Maestro, со счета мобильного телефона, с платежного терминала, в салоне МТС или Связной, через PayPal, WebMoney, Яндекс.Деньги, QIWI Кошелек, бонусными картами или другим удобным Вам способом.









