Большие языковые модели (LLM) пережили взрывной рост возможностей, распространения и принятия как в потребительских, так и в корпоративных целях. Вроде бы, по обывательскому мнению, они даже продемонстрировали замечательную производительность в задачах - от понимания естественного языка до генерации кода, а также стали центром исследований и приложений искусственного интеллекта. Однако в спешке по интеграции этих мощных инструментов в технологическую экосистему крайне важно понимать их фундаментальное поведение и последствия их широкого принятия. Но многие специалисты IT-отрасли воздерживаются от использования инструментов, основанных на этих платформах, и даже сейчас продолжают скептически отзываться, когда в беседах эти инструменты стремятся называть искусственным интеллектом (ИИ). Способность выдавать сносные маркетинговые тирады имеет примерно столько же общего с интеллектом, сколько и телега в наше время с транспортным средством. Хотя, и в том и в другом случае, эти два понятия явно и глубоко связаны.
Прежде чем пытаться использовать эти инструменты, вам нужно понять, что они делают, по крайней мере, на поверхности, поскольку даже их создатели открыто признают, что не понимают, как они работают глубоко в недрах всей статистики и текста, которые были выцарапаны из текущего Интернета. Хитрость LLM заключается в том, чтобы использовать немного случайности и много текста, чтобы угадать следующее слово в предложении. Такое действие кажется довольно тривиальным. На самом деле, это, конечно, не является мерой интеллекта, которую мог бы использовать любой, кто понимает этот термин. Но это умный трюк, и он действительно имеет некоторые применения.
Например, если вы составляете поздравление к юбилею (а в корпусе текста их тысячи), вполне возможно, что код сможет угадать, какое слово вы используете следующим, поскольку до того, как вы его напечатали, точно такую же процедуру уже проделывали тысячи людей.
По своей сути, сегодняшние LLM имеют общую архитектурную основу: они являются авторегрессионными преобразователями, обученными на обширных текстовых, а в некоторых случаях и на мультимодальных данных, включая изображения, аудио и видео. Эта архитектура оказалась исключительно эффективной и масштабируемой. Код - это, в некотором смысле, даже более ограниченная среда, чем проза, потому, что код должен проходить через процесс, который имеет строгий синтаксис - тот, который намного строже, чем любой человеческий язык. Считается, что эта узость облегчает процесс руководства созданием кода, при этом, использование шаблонов упоминается, как ранний вариант применения этих технологий. И кто бы не хотел помощи в такой нудной работе? Многие фрагменты кода, которые пишутся, особенно для визуального веба, являются просто скопированными и вставленными версиями других страниц, и то же самое можно сказать и о других областях кодирования.
Часто упускается из виду их изначально вероятностный характер, который проявляется двумя основными способами:
Вероятностное языковое моделирование.
Когда кодируется авторегрессионная модель естественного языка, полученная из обучающих данных, с использованием стохастического градиентного спуска. То есть, не только сам процесс обучения является стохастическим, но и его результатом является стохастическая модель естественного языка. В частности, изученные параметры кодируют распределение вероятностей по последовательностям, представленным, как произведение условных распределений. Это несовершенное, совокупное представление обучающих данных, разработанное для хорошего обобщения. Фактически, типичные режимы обучают модели с миллиардами параметров на триллионах байт информации с различных выделенных серверов, что делает невозможным для модели идеально запомнить всю информацию в своих обучающих данных.
Стохастическая генерация.
Процесс генерации также является случайно-вероятностным. Стратегии жадного декодирования, которые выбирают наиболее вероятный вариант, используются редко. Вместо этого, чтобы производить разнообразные выходные данные, приложения используют стратегии, делающие выборку из распределения вероятностей.
Третий фактор не является вероятностным, но фактически является недетерминированным:
Лингвистическая гибкость.
Большое количество способов сформулировать утверждение на естественном языке, в сочетании с базовой обученной потребностью продолжать текст так, как это сделал бы человек, означает, что нюансы человеческой уязвимости к ошибкам и неправильному толкованию также воспроизводятся этими моделями.
Хотя помощь с правильным синтаксисом кода является благом для производительности (рассмотрите IDE, которые выделяют синтаксические ошибки до того, как вы найдёте их с помощью компиляции), это далеко от СЕМАНТИЧЕСКОГО знания фрагмента кода. Обратите внимание, что именно семантическое знание позволяет вам создавать правильные программы, где правильность означает, что код действительно делает то, что изначально задумал разработчик. Существует много примеров программ, которые синтаксически, но не семантически правильны. Фактически, это корень почти каждой проблемы в развёрнутом программном обеспечении. Семантика остаётся далеко за пределами возможностей нынешней моды на ИИ, о чём свидетельствует количество разработчиков, которые теперь отказываются от этих технологий в своей работе. Единственная причина, по которой это кого-то впечатляет, заключается в том, что это написано в форме, более приемлемой для тех, кто желает очеловечить компьютерное железо.
Мы уже знаем, что текст и код, которые печатаются этими штуками, берутся из сканирования миллиардов строк текста и исходного кода, доступных в GitHub, но они могут быть полезны даже непреднамеренно. Интересен случай, поведанный одним программистом на форуме разработчиков: «Коллега, который посещал вечерний курс по распределённым системам, показал мне, что произошло, когда его профессора (по глупости) предложили студентам «использовать новые инструменты», чтобы стать «более современными специалистами, идущими в ногу со временем». По мере того, как учащиеся принимали всё больше и больше предложений ИИ, они заметил закономерность: это было похоже на то, как будто кто-то перепечатывал один и тот же файл, беря интерпретацию откуда-то из похожих источников. Сам стиль кодирования был одной из подсказок, но в конце концов сама языковая модель полностью выдала себя, сказав: «Знаешь, в другом репозитории есть точно такой же файл». В каком-то аспекте это имеет смысл для выполнения домашнего задания (да и то сомнительно). Но, как часть серьёзной разработки ПО - это просто уморительно. Чем больше мой коллега использовал эти инструменты в своих проектах, тем больше он понимал, что этот инструмент не более чем «пьяный плагиатор», сидящие позади него и создаваемого кода, с горячим, пропитанным джином дыханием, нашёптывающий на ухо семантические ерунды.»
Такое поведение создаёт значительные проблемы для широкого внедрения LLM, особенно в областях с высокими ставками, таких как здравоохранение, финансы или юридические приложения. Независимо от развертывания, их необходимо тщательно учитывать и смягчать.
Эти новомодные «штучки» - совсем не благо для вашей работы, они резиновый костыль — тот, который жестоко подведёт вас, когда вам это больше всего нужно. Все упомянутые характеристики обусловливают три внутренних типа поведения:
Галлюцинация - тенденция LLM генерировать контент, который фактически неверен или бессмыслен. Например, модель может вспомнить факт из своих обучающих данных или из своей подсказки с вероятностью 99 процентов (взятой по распределению процесса декодирования), но сокрушительно не вспомнить его в 1 проценте случаев. Или, игнорируя на мгновение беспорядочность декодирования, она может вспомнить факт для 99 процентов правдоподобных подсказок, требующих сделать это, но не для оставшегося 1 процента. Многочисленные исследования показали, что галлюцинации являются неотъемлемой характеристикой больших языковых моделей. Хотя более крупные из них, обычно демонстрируют более редкие случаи галлюцинаций, по сравнению с более мелкими. Но все они, без исключения, всё равно подвержены всем формам этого явления.
Фактические неточности - они включают утверждения, противоречащие установленным фактам. Например, LLM может утверждать, что «инсулин является эффективным средством лечения тяжёлой гипогликемии у больных диабетом». Такой ответ становится уже опасной фактической неточностью, поскольку инсулин на самом деле снижает уровень сахара в крови и может быть опасным для жизни, если его вводить человеку с уже низким уровнем сахара (гипогликемией).
Сфабрикованная информация - это происходит, когда машина генерирует полностью вымышленный контент. Например, она может утверждать, что «новаторское исследование показывает, что экстракт грейпфрута может вылечить рак поджелудочной железы на поздней стадии». Это зафиксированный пример из «живой» практики общения с ChatGPT. Такого исследования не существует, а продвижение недоказанных методов лечения серьёзных заболеваний, таких, как рак поджелудочной железы, может привести к тому, что пациенты будут отказываться от эффективных, потенциально спасающих жизнь методов лечения.
Упущения - исключение важных фактов при обобщении, может привести к неполным или вводящим в заблуждение ответам, особенно проблематичным в медицинском контексте.
Противоречия – нейросети могут создавать противоречивые утверждения в одном и том же тексте, отражая несоответствия в их понимании или обработке информации. Вот ещё один пример, когда ИИ выдал следующий ответ: «Пациентам с аллергией на пенициллин всегда следует назначать амоксициллин в качестве безопасной альтернативы. Однако амоксициллин никогда не следует назначать пациентам с любым типом аллергии на антибиотики». Это уже тоже опасное противоречие, поскольку амоксициллин относится к тому же семейству, что и пенициллин, и может вызвать тяжёлую аллергическую реакцию у пациентов с аллергией на пенициллин.
Косвенное внедрение подсказок - возможность внедрения вредоносных инструкций во входные данные, не находящиеся под прямым контролем пользователя (например, электронные письма), что может изменить поведение модели неожиданным образом. По сути, это проблема смешения инструкций и данных, поскольку эти каналы не строго разделены в текущих архитектурах LLM. В то время как цель самоконтролируемого предварительного обучения игнорирует инструкции, контролируемая тонкая настройка инструкций и RLHF (подкрепление обучения с помощью обратной связи от человека) направлены на то, чтобы научить модель следовать согласованным инструкциям и отказываться следовать несогласованным. Способность модели делать это во всех случаях ограничена её вероятностной природой и способностью обобщать за пределами примеров, увиденных во время обучения.
Джейлбрейки - уязвимость языковых моделей к специально созданным подсказкам ввода, которые могут манипулировать ими, чтобы обойти встроенные защитные меры или этические принципы. Массивные предварительные корпуса, взятые из Интернета и других источников, способствуют возможностям понимания естественного языка моделями, но обязательно включают сомнительный контент. Посттренировочное выравнивание может помочь лишь в некоторой степени предотвратить имитацию данных обучения и создание нежелательного контента. В помощниках чат-ботов вводимые пользователем данные и собственные ответы модели могут легко вывести ИИ за пределы пространства вводимых данных, где выравнивание будет уже неэффективно.
Не существует простого «исправления» для такого поведения, но эти принципы являются основополагающими для работы этих моделей. Вместо этого стратегии смягчения должны быть реализованы на разных уровнях. Например, на системном уровне, меры могут включать механизмы проверки фактов, многомодельные консенсусные подходы, сложные методы инженерии подсказок, фильтры ввода и вывода и системы с участием человека.