Обработка естественного языка – это техническая дисциплина, связанная с созданием машин, которые могут обрабатывать человеческий язык или данные, похожие на него, тем самым выполняя полезные для пользователя задачи. Эта дисциплина так же стара, как сами компьютеры: когда они были только изобретены, одной из потенциальных областей их применения предполагался перевод с одного человеческого языка на другой. Конечно, в то время само программирование выполнялось совсем иначе – программа задавалась последовательностью логических операций, записанных на перфокарте. Тем не менее, чтобы компьютеры могли полностью реализовать свой потенциал (и люди это осознавали), необходимо было научить их понимать естественный язык – преобладающую форму общения в мире. В 1950 году британский ученый в области компьютерных наук Алан Тьюринг опубликовал статью, в которой предложил способ оценки искусственного интеллекта, ныне известный как тест Тьюринга5. В популярной формулировке, машина считается «обладающей интеллектом», если в разговоре она способна давать ответы, неотличимые от человеческих. И хотя сам Тьюринг не использовал подобную терминологию, это каноническая задача для понимания и генерации естественного языка. В настоящее время тест Тьюринга как способ оценки интеллектуальной системы считается неполным, поскольку его легко проходят многие современные программы, способные имитировать человеческую речь, но при этом негибкие и не умеющие выстраивать логические выводы6. Тем не менее он служил критерием для оценки на протяжении десятилетий, да и сейчас остается популярным стандартом для современных моделей по обработке естественного языка.
Ранние программы по обработке естественного языка использовали тот же подход, что и первые системы искусственного интеллекта, следуя набору правил и эвристик. В 1966 году Джозеф Вейценбаум, профессор Массачусетского технологического института (MIT), выпустил чат-бота, которого назвал ELIZA в честь персонажа пьесы «Пигмалион». ELIZA разрабатывалась для терапевтических целей. Предполагалось, что чат-бот будет общаться с пациентом с помощью открытых вопросов, а на слова и фразы, которые не смог распознать, будет давать общие ответы, например «Продолжайте, пожалуйста». Хотя бот работал по простому алгоритму сопоставления с образцом, люди чувствовали себя с ним вполне комфортно и могли делиться интимными подробностями. Например, во время тестирования бота секретарша Вейценбаума попросила его выйти из комнаты7. Вейценбаум писал, что был ошеломлен, до какой степени люди, беседовавшие с ELIZA, приписывали модели настоящее сочувствие и понимание. Однако антропоморфизм, примененный к его инструменту, беспокоил Вейценбаума, и впоследствии он потратил немало времени, пытаясь убедить людей, что чат-бот ELIZA на самом деле не так хорош, как его восхваляли.
Хотя основанный на правилах синтаксический анализ текста оставался распространенным в течение последующих нескольких десятилетий, такого рода подходы оказались нестабильными, требовали сложной логики «если – то» и значительных лингвистических знаний. Однако к 1990‐м годам некоторые из лучших результатов в задачах типа машинного перевода были достигнуты с помощью статистических методов, чему способствовали возросшая доступность как данных, так и вычислительных мощностей. Переход от методов, основанных на правилах, к статистическим методам представлял собой серьезную смену парадигмы в обработке естественного языка: людям уже не надо было обучать свои модели грамматике, тщательно определяя и выстраивая такие языковые понятия, как части речи и времена. Новые статистические модели добивались большего успеха, самостоятельно изучая закономерности при обработке тысяч переведенных документов.
Этот тип машинного обучения называется обучением с учителем, поскольку модель получает то, что мы обычно называем размеченными данными, – данные, для которых известны правильные ответы, в данном случае – переведенные документы. В других системах могут использовать обучение без учителя, то есть по неразмеченным данным, или обучение с подкреплением – метод на основе проб и ошибок, где модель постоянно обучается находить наилучший результат, получая обратную связь в виде вознаграждений и штрафов. Сравнение между этими тремя типами приведено в таблице 1.1.
Таблица 1.1. Типы машинного обучения
При обучении с подкреплением (рис. 1.1) вознаграждения и штрафы – это числовые значения, которые направляют прогресс модели в выполнении конкретной задачи. Когда поведение вознаграждается, эта положительная обратная связь создает цикл подкрепления, при котором модель с большей вероятностью будет снова повторять это действие, тогда как наказуемое поведение становится менее вероятным. Как мы увидим дальше, большие языковые модели обычно используют комбинацию этих стратегий.
Обучение с подкреплением – это метод обучения на основе проб и ошибок, при котором модель постоянно обучается находить наилучший результат, получая за свои ответы либо вознаграждение, либо штрафы от алгоритма.
Рис. 1.1. Цикл обучения с подкреплением
Кроме особенностей обучения, есть еще несколько ключевых компонентов, которые характерны для модели NLP (обработка естественного языка). Первый – это данные, которые для задач на естественном языке представлены в виде текста. Второй – это целевая функция, которая, по сути, является математической формулировкой цели модели. Цель может заключаться в том, чтобы свести к минимуму количество ошибок, допущенных в конкретной задаче, или минимизировать различие между прогнозом модели для какой-то величины и ее истинным значением. Третий – существуют различные типы моделей и архитектуры, но фактически все продвинутые модели NLP за последние несколько десятилетий относились к единственной категории – нейронным сетям.
Нейронные сети были представлены в 1944 году как алгоритмическое представление человеческого мозга8. В каждой нейронной сети есть входной и выходной слой, а между ними – какое-либо количество «скрытых» слоев; каждый слой, в свою очередь, имеет несколько нейронов, или узлов, которые могут соединяться разными способами. Каждый нейрон присваивает передаваемым ему входным данным весовые коэффициенты (веса) [4], суммирует их и «активируется», то есть передает сигнал на следующий слой, если сумма входных данных превышает некоторое пороговое значение. Сутью обучения таких нейронных сетей является подбор оптимальных значений для весовых коэффициентов и пороговых значений. Обрабатывая обучающие данные, алгоритм будет итеративно обновлять весовые коэффициенты и пороговые значения до тех пор, пока не найдет те, которые лучше всего соответствуют целевой функции модели. Мы не будем сейчас обсуждать точную математику, лежащую в основе этого процесса, но важно отметить, что большие нейронные сети могут аппроксимировать любую функцию, какой бы сложной она ни была, что делает их полезными при обработке огромных объемов данных, например во многих задачах по обработке естественного языка. Количество параметров относится к количеству весовых коэффициентов, встроенных в модель, и является условным обозначением уровня сложности, с которым она способна справиться, что, в свою очередь, определяет ее возможности. Самые эффективные на сегодняшний день LLM учитывают сотни миллиардов параметров.
За последние несколько десятилетий доступность больших объемов данных и вычислительных мощностей способствовала укреплению доминирования нейронных сетей и привела к бесчисленным экспериментам с различными сетевыми архитектурами. Глубокое обучение возникло как подраздел, где «глубокое» означает просто глубину задействованных нейронных сетей, то есть количество скрытых слоев между входом и выходом. Было обнаружено, что по мере увеличения масштаба и глубины нейронных сетей – при наличии достаточного количества данных – производительность моделей улучшалась.