Секреты генеративного ИИ

От теста Тьюринга до больших языковых моделей

Книга раскрывает этапы развития интеллектуальных алгоритмов обработки естественного языка, приведших к появлению архитектуры трансформера и моделей семейства GPT, самым ярким представителем которых стал чат-бот ChatGPT. Она поможет читателю проникнуть в тайны построения трансформера, обучить свою модель GPT и узнать множество любопытных фактов о природе языка, проявляющихся при его обработке искусственными нейронными сетями. Книга содержит ключевые примеры кода на Python, необходимые математические сведения о процессе вычислений и предысторию развития алгоритмов этой отрасли, включая базовые принципы работы искусственных нейронных сетей, до момента появления технологий, за которыми люди увидели намёк на создание искусственного интеллекта.

Содержание

  1. О чём эта книга?
    • Классификация задач обработки языка
    • Для кого предназначено эта книга?
    • Использованные обозначения
  2. Предварительная обработка текста
    • Токенизация
    • Сегментация
    • Лемматизация и стемминг
  3. Классические алгоритмы
    • Аналитические формальные грамматики
    • Вероятностные алгоритмы
      • Мера TF-IDF
      • Скрытые марковские модели
      • EM-алгоритм
  4. Искусственные нейронные сети
    • Перцептрон
    • Термины и понятия
    • Модель ИНС
    • Метод обратного распространения ошибки
    • Обучение ИНС
    • CUDA
  5. Введение в PyTorch
    • Тензоры и вычисление градиентов
    • Обработка градиентов и оптимизаторы
    • Общая схема обучения модели
    • Модели и датасеты
    • Выбор устройства для вычислений
  6. Сеть прямого распространения
    • Функции активации
    • Обучение сети прямого распространения
  7. Векторное представление слов
    • Вложение слов (word embedding)
    • Word2vec
    • FastText
    • ELMO
    • GloVe
  8. Рекуррентные ИНС
    • Сеть Элмана
    • Модель кодер-декодер
    • Долгая краткосрочная память
    • Управляемый рекуррентный блок
    • Механизм внимания
  9. Трансформер
    • Внутреннее внимание
    • Multi-head attention
    • Позиционное кодирование
    • Кодирующая часть
    • Декодирующая часть трансформера
    • Обучение трансформера
    • Модель BERT
    • Модель T5
  10. Генеративные модели
    • Архитектура GPT
    • Двухбайтная токенизация
    • Запуск генеративной модели
    • Обучение генеративной модели
    • Точная настройка и PEFT
    • Построение промта
      • Цепочка мыслей
      • Генерация, дополненная поиском
      • Рассуждающие модели и агенты
    • Популярные языковые модели
  11. Оценка качества
    • Оценка решений задачи классификации
    • Основные датасеты, метрики и тесты
    • Оценка работы языковых моделей

Введение

К концу XX в. прогрессивная философская мысль пришла к парадоксальному заключению: язык и законы логики, находясь в прочной связке друг с другом, остаются ограниченными и неспособными полностью выразить сложность человеческого опыта. А ведь они исторически служили основой практически любого традиционного познания! К примеру, критикой так называемого логоцентризма известен французский философ Жак Деррида. Он видел в избыточной ориентировке на слово и его связь с логикой один из ключевых барьеров на пути к расширению возможностей человеческого познания.

Удивительно, но пессимистичные умозаключения передовых мыслителей никак не повлияли на амбиции специалистов в сфере теоретической информатике найти способ обработки текста на естественном языке при помощи программных инструментов. Вычислительная техника, очевидно, воплощает на практике буквальные законы логики в самой строгой их форме, и это, казалось бы, не должно сулить ничего хорошего — намерения информатиков требуют связку языка и логики, перед которой философы уже почти готовы признать своё бессилие. Но программисты никогда не унывают! Интересно, что именно автоматизированная обработка естественного языка стала олицетворением искусственного интеллекта, поскольку текст является основным способом обмена мыслями как людей между собой, так и с вычислительной техникой.

В теории поставленная задача не казалась такой уж невероятно сложной. Так, например, в 1980 г. американский философ Джон Сёрл опубликовал описание мысленного эксперимента под названием «Китайская комната», в котором предложил своё доказательство возможности создания искусственного интеллекта с сознанием, внешне неотличимого от естественного. Эксперимент описывает человека, находящегося в изолированной комнате и имеющего обширную инструкцию с коллекцией пронумерованных карт, на которых изображены китайские иероглифы. При этом в инструкции полностью отсутствуют сведения о смысле иероглифов. Получая через щель вопрос на китайском языке от человека, понимающего смысл вопроса, человек в комнате обрабатывает последовательность полученных иероглифов в соответствии с имеющейся инструкцией и формирует ответ, который передаёт обратно в виде новых карт.

Очевидно, что качество обработки вопросов зависит от полноты инструкции. Она, будучи даже безупречно совершенной, никак не приближает человека в комнате к пониманию китайского языка, но это неважно ни в малейшей степени, потому что не препятствует ему в выполнении его работы. Предложенное доказательство носит, скорее, полемическую природу и не является доказательством в математическом смысле, но оно хорошо представляет процесс обработки текста. Человек в комнате выполняет функцию процессора или множества процессоров, а инструкция — программу или алгоритм. При этом процессор, в отличие от человека в комнате, не имеет никаких иных способностей, кроме обработки инструкции. Таким образом, единственный способ научиться отвечать на вопросы на китайском языке — это правильно составить программу-инструкцию, чем и следует заняться программистам.

Как известно, в теории нет различий между теорией и практикой, но они, к сожалению, есть на практике. Специалисты по комбинаторике, услышав описание эксперимента, вежливо развели руками, потому что идея «Китайской комнаты» не учитывает потенциальный размер инструкции. С большой вероятностью её составление окажется невозможным в силу чрезмерного количества информации, с хранением которой не справятся современные вычислительные мощности, какими бы совершенными они ни были.

Подозрение о том, что комбинаторика, в свою очередь, как-то должна быть связана с языком и знаниями у пытливых умов появлялось задолго до этого. В 1941 г. аргентинский писатель Хорхе Луис Борхес в своём рассказе «Вавилонская библиотека» заключил, что, собственно, одной только комбинаторики самой по себе уже достаточно для получения любых знаний, которые могут потенциально существовать, одновременно подсчитав, сколько потребуется книг для хранения таких знаний. Он получил так называемое число Борхеса, которое для своего представления потребует 1 834 098 десятичных цифр.

Деррида, Сёрл, Борхес представили очень наглядную иллюстрацию проблем современной компьютерной лингвистики. Обобщение их утверждений позволяет представить многогранность и комплексность проблемы автоматизированной обработки текста. Каждый из них во многом, бесспорно, прав, но и в чём-то ошибается, т. к. прогресс, который в наше время демонстрируют большие языковые модели, наглядно доказывает, что решение задачи автоматизированной обработки естественного языка всё же может существовать. Естественный язык — чрезвычайно гибкое явление, хранящее множество сюрпризов и нераскрытых возможностей. Его представление напрямую в цифровом виде требует недостижимого количества вычислительных ресурсов, так что основные усилия исследователей направлены на понижение вычислительной сложности с целью нахождения методов, которые были бы способны дать полезный эффект с задействованием доступных мощностей.

Теоретическая информатика накопила немалый опыт в оценке сложности различных задач и способна предложить разнообразные способы оптимизации. Нередко оптимизация приводит к понижению точности результата, но он может считаться оправданным, если прежде неразрешимая задача становится разрешимой.

В настоящий книге читателю предлагается обзор современных методов обработки естественного языка, показывая в общих чертах эволюцию их развития, которая в значительной мере идёт по пути увеличения полноты представления знаний о языке и стремления к понижению вычислительной сложности.