bannerbanner
Искусственный интеллект от А до Б
Искусственный интеллект от А до Б

Полная версия

Искусственный интеллект от А до Б

Настройки чтения
Размер шрифта
Высота строк
Поля
На страницу:
14 из 15

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

1. Добавляем больше контекста к вопросу: «для семьи из шести человек?»

2. Добавление дополнительных вопросов: «Какие ингредиенты мне нужны? Сколько времени это займет?»

3. Даем инструкцию по приготовлению пиццы.

Если цель состоит в том, чтобы адекватно реагировать на запросы пользователей, правильным вариантом является 3.

Мы знаем, что модель имитирует свои обучающие данные. Чтобы побудить модель генерировать соответствующие ответы, можно показать примеры подходящих ответов. Такие примеры имеют формат (prompt, response) и называются демонстрационными данными. Некоторые люди называют этот процесс клонированием поведения: вы демонстрируете, как должна вести себя модель, а модель клонирует это поведение. Поскольку для разных типов запросов требуются разные типы ответов, демонстрационные данные должны содержать диапазон запросов, которые должна обрабатывать модель, такие как ответы на вопросы, обобщение и перевод.

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

Интуиция означает возникновение и развитие событий случайным образом в счастливом или выгодном ключе, но используйте это слово лишь в предложении: «Встреча с Маргарет и знакомство с Томом было счастливой случайностью».

Поэтому компании часто используют высококвалифицированных маркировщиков для создания демонстрационных данных. Среди тех, кто пометил демонстрационные данные для InstructGPT, ~90% имеют как минимум высшее образование и более трети имеют степень магистра. Если маркировка объектов на изображении может занять всего несколько секунд, то создание одной пары (подсказки, ответа) может занять до 30 минут, особенно для задач, связанных с длительными контекстами, такими как суммаризация. Если это стоит $10 за одну пару (prompt, response), то 13 000 пар, которые OpenAI использовал для InstructGPT, будут стоить $130 000. Это еще не включает в себя затраты на разработку данных (какие задачи и подсказки включать), подбор маркировщиков и контроль качества данных.

Не каждый может позволить себе следовать качественному подходу к аннотированию человека. Некоммерческая организация LAION мобилизовала 13 500 добровольцев по всему миру для создания 10 000 бесед, которые состоят из 161 443 сообщений на 35 различных языках с комментариями и 461 292 оценками качества. Поскольку данные были получены добровольцами, не было особого контроля над предвзятостью. Теоретически маркировщики, которые обучают моделей человеческим предпочтениям, должны быть репрезентативными для человеческой популяции. Демография маркировщиков для LAION неравномерна. Например, в опросе, о котором сообщили сами пациенты, 90% добровольцев идентифицировали себя как мужчины.

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

[A]: [Короткий абзац]

[B]: [Короткий абзац]

[A]: [Короткий абзац]

[B]: [Короткий абзац]

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

С большой властью приходит большая ответственность. Модель, которая может помочь пользователям в достижении великих целей, может также помочь пользователям в достижении ужасных вещей. Демонстрационные данные учат модель вести диалог, но не учат модель, какие разговоры она должна вести. Например, если пользователь просит модель написать эссе о том, почему одна раса уступает или как угнать самолет, должна ли модель подчиниться?

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

Страх перед моделями ИИ, генерирующими неадекватные ответы, может помешать компаниям выпустить свои приложения для пользователей. Цель тонкой настройки предпочтений состоит в том, чтобы заставить модели ИИ вести себя в соответствии с предпочтениями человека. Это амбициозная, если не сказать невыполнимая, цель. Это не только предполагает, что универсальные человеческие предпочтения существуют, но и предполагает, что их можно встроить в ИИ.

Если бы цель была простой, решение могло бы быть элегантным. Однако, учитывая амбициозный характер цели, решение, которое мы имеем сегодня, является сложным. Самым ранним успешным алгоритмом тонкой настройки предпочтений, который популярен до сих пор, является RLHF. RLHF состоит из двух частей:

1. Обучите модель вознаграждения, которая оценивает выходные данные базовой модели.

2. Оптимизируйте базовую модель для генерации ответов, за которые модель вознаграждения будет давать максимальные баллы.

В то время как RLHF все еще используется сегодня, новые подходы, такие как DPO, набирают обороты. Например, Meta переключилась с RLHF для Llama 2 на DPO для Llama 3, чтобы снизить сложность. Невозможно охватить все различные подходы, будем использовать RLHF вместо DPO, потому что RLHF, хотя и более сложный, чем DPO, обеспечивает большую гибкость для настройки модели. Авторы Llama 2 утверждают, что «превосходные писательские способности LLM, проявляющиеся в превосходстве над людьми-аннотаторами в определенных задачах, в основном обусловлены RLHF».

RLHF опирается на модель вознаграждения. При наличии пары (подсказка, ответ) модель вознаграждения выводит оценку того, насколько хорош ответ. Обучение модели для оценки заданных входных данных – это распространенная задача машинного обучения. Задача, как и в случае с SFT, заключается в получении достоверных данных. Если мы попросим маркировщиков оценить каждый ответ напрямую, оценки будут различаться. Для одной и той же выборки по 10-балльной шкале один маркировщик может дать 5, а другой 7. Даже один и тот же маркировщик, которому дважды дана одна и та же пара (prompt, response), может дать разные оценки. Независимая оценка каждой выборки также называется точечной оценкой.

Более простая задача – попросить маркировщиков сравнить два ответа и решить, какой из них лучше. Для каждого запроса люди или искусственный интеллект генерируют несколько ответов. Результирующие помеченные данные являются данными сравнения, которые следуют формату (prompt, winning_response, losing_response): «Как получить удовольствие от своей собаки? – не уверен, что вы имеете в виду; не знаю, стоит ли нам получать собаку под удовольствие; для собаки важно воспринимать мир в трезвом состоянии ума».

Тем не менее, эта более простая задача сравнения двух ответов требует времени. LMSYS (Large Model Systems Organization), открытая исследовательская организация, обнаружила, что ручное сравнение двух ответов занимает в среднем от трех до пяти минут, поскольку этот процесс требует проверки фактов каждого ответа. В беседе с моим сообществом в Discord автор Llama-2 Томас Скиалом поделился, что каждое сравнение обходится им в 3,50 доллара. Это все равно намного дешевле, чем написание ответов, которые стоят 25 долларов каждый.

Маркировщики выставляют конкретные баллы от 1 до 7, а также ранжируют ответы в порядке своих предпочтений, но для обучения модели вознаграждения используется только ранжирование. Их согласие между маркировщиками составляет около 73%, что означает, что, если они попросят 10 человек оценить одни и те же два ответа, примерно 7 из них будут иметь одинаковый рейтинг. Чтобы ускорить процесс маркировки, каждый аннотатор может ранжировать несколько ответов одновременно. Набор из трех ранжированных ответов (A > B > C) даст три ранжированные пары: (A > B), (A > C) и (B > C).

Учитывая только сравнительные данные, как мы обучаем модель давать конкретные оценки? Подобно тому, как вы можете заставить людей делать практически что угодно с правильным стимулом, вы можете получить модель, которая будет делать это при наличии правильной целевой функции. Обычно используемая функция представляет собой разницу в выходных баллах для выигрышного и проигрышного ответа. Цель состоит в том, чтобы максимизировать эту разницу. Для тех, кто интересуется математическими деталями, вот формула, используемая InstructGPT:

rθ: обучаемая модель вознаграждения, параметризованная с помощью θ. Цель тренировочного процесса – найти θ, для которого потери сведены к минимуму.

Формат обучающих данных:

x: подсказка

YW: победный ответ

YL: Потеря реакции

sw = r(x, yw): скалярная оценка модели вознаграждения за победный ответ

sl = r(x, yl): скалярный балл модели вознаграждения за проигравший ответ

σ: сигмовидная функция

Для каждой обучающей выборки (x, yw, yl) величина потерь вычисляется следующим образом:

log (σ(rθ(x, yw) – rθ(x, yl))

Цель: найти θ для минимизации ожидаемых потерь для всех обучающих выборок.

–Ex log (σ(rθ(x, yw) – rθ(x, yl))

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

С помощью обученного RM мы дополнительно обучаем SFT-модель генерировать выходные ответы, которые максимизируют баллы по модели вознаграждения. Во время этого процесса подсказки выбираются случайным образом из распределения подсказок, таких как существующие пользовательские подсказки. Эти подсказки вводятся в модель, ответы на которую оцениваются моделью вознаграждения. Этот процесс обучения часто выполняется с помощью проксимальной оптимизации политики (PPO) – алгоритма обучения с подкреплением, выпущенного OpenAI в 2017 году.

Эмпирически RLHF и DPO повышают производительность по сравнению только с SFT. Тем не менее, ведутся споры о том, почему они работают. По мере развития этой области тонкая настройка предпочтений значительно изменится в будущем. Если вам интересно узнать больше о RLHF и тонкой настройке предпочтений, ознакомьтесь с репозиторием книги на GitHub.

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

Некоторые компании считают нормальным вообще отказаться от обучения с подкреплением. Например, Stitch Fix и Grab обнаружили, что для их приложений достаточно иметь только модель вознаграждения. Они заставляют свои модели генерировать несколько выходных данных и выбирают те, которые получили высокие баллы в своих моделях вознаграждения. Этот подход, часто называемый стратегией наилучшего из N, использует способ выборки выходных данных модели для повышения ее производительности.

Модель конструирует свои выходные данные с помощью процесса, известного как выборка. В этом разделе обсуждаются различные стратегии выборки и переменные выборки, включая температуру, top-k и top-p. Затем будет изучено, как сделать выборку нескольких выходных данных для повышения производительности модели. Мы также увидим, как можно изменить процесс выборки, чтобы модели генерировали ответы, соответствующие определенным форматам и ограничениям.

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

Получив входные данные, нейронная сеть производит выходные данные, сначала вычисляя вероятности возможных исходов. Для модели классификации возможными результатами являются доступные классы. Например, если модель обучена классифицировать сообщение электронной почты как спам или нет, то возможны только два исхода: спам и не спам. Модель вычисляет вероятность каждого из этих двух исходов, например, вероятность того, что электронное письмо является спамом, составляет 90%, а не спама – 10%. Затем вы можете принимать решения на основе этих выходных вероятностей. Например, если вы решите, что любое письмо с вероятностью спама выше 50% должно быть помечено как спам, то письмо с вероятностью спама 90% будет помечено как спам.

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

Вместо того чтобы всегда выбирать следующий наиболее вероятный токен, модель может выбрать следующий токен в соответствии с распределением вероятностей по всем возможным значениям. Учитывая контекст «Мой любимый цвет – это…», если «красный» имеет 30% шанс стать следующей фишкой, а «зеленый» имеет 50% шанс, то «красный» будет выбран в 30% случаев, а «зеленый» – в 50% случаев.

Как модель вычисляет эти вероятности? Получив входные данные, нейронная сеть выводит вектор логит. Каждому логиту соответствует одно возможное значение. В случае языковой модели каждый логит соответствует одному токену в словаре модели. Размер вектора логит – это размер словаря.

В то время как большие логиты соответствуют более высоким вероятностям, логиты не представляют вероятности. Логиты не суммируются с единицей. Логиты могут быть даже отрицательными, в то время как вероятности должны быть неотрицательными. Для преобразования логитов в вероятности часто используется слой softmax. Допустим, модель имеет словарь N и вектор логита равен x1, x2,…, xN. Вероятность для i-го токена, pi, вычисляется следующим образом: pi = softmax(xi) = e^{xi} / ∑_{j} (e^{xj} ).

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

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

Чтобы перераспределить вероятности возможных значений, можно выполнить выборку с температурой. Интуитивно понятно, что более высокая температура снижает вероятность выпадения обычных жетонов и, как следствие, увеличивает вероятность более редких жетонов. Это позволяет моделям создавать более творческие ответы.

Температура – это константа, используемая для корректировки логитов перед преобразованием softmax. Логиты делятся по температуре. Для заданной температуры T скорректированный логит для i-го токена равен Txi. Затем Softmax применяется к этому скорректированному логиту вместо xi.

Давайте рассмотрим простой пример, чтобы изучить влияние температуры на вероятности. Представьте, что у нас есть модель, которая имеет только два возможных выхода: A и B. Логиты, вычисленные из последнего слоя: [1, 2]. Логит для A равен 1, а B равен 2.

Без использования температуры, которая эквивалентна использованию температуры 1, softmax вероятности равны [0.27, 0.73]. Модель выбирает B в 73% случаев.

При температуре = 0,5 вероятности равны [0,12, 0,88]. Теперь модель выбирает B в 88% случаев.

Чем выше температура, тем меньше вероятность того, что модель выберет наиболее очевидное значение (значение с наибольшим логитом), что делает результаты модели более креативными, но потенциально менее согласованными. Чем ниже температура, тем больше вероятность того, что модель выберет наиболее очевидное значение, что делает выходные данные модели более согласованными, но потенциально более скучными.

По мере того, как температура приближается к 0, вероятность того, что модель выберет маркер B, становится ближе к 1. В нашем примере при температуре ниже 0,1 модель почти всегда выводит B. По мере повышения температуры вероятность выбора фишки А увеличивается, а вероятность выбора фишки Б уменьшается. Поставщики моделей обычно ограничивают температуру в диапазоне от 0 до 2. Если вы являетесь владельцем своей модели, вы можете использовать любую неотрицательную температуру. Температура 0,7 часто рекомендуется для творческих сценариев использования, так как она уравновешивает креативность и предсказуемость, но вы должны поэкспериментировать и найти температуру, которая лучше всего подходит для вас.

Обычно для получения более согласованных выходных данных модели устанавливается значение 0. Технически температура никогда не может быть равна 0 – логиты не могут быть поделены на 0. На практике, когда мы устанавливаем температуру равной 0, модель просто выбирает токен с наибольшим логитом, не выполняя регулировку логита и расчет softmax.

Распространенный метод отладки при работе с моделью ИИ заключается в том, чтобы посмотреть на вероятности, которые эта модель вычисляет для заданных входных данных. Например, если вероятности выглядят случайными, значит, модель мало чему научилась.

Многие поставщики моделей возвращают вероятности, сгенерированные их моделями, в виде лог-проб. Логарифмические вероятности (сокращение от логарифмических вероятностей) – это вероятности в логарифмической шкале. Логарифмический масштаб предпочтительнее при работе с вероятностями нейронной сети, поскольку он помогает уменьшить проблему переполнения. Языковая модель может работать с размером словарного запаса 100 000, а это означает, что вероятности для многих лексем могут быть слишком малы для представления машиной. Маленькие числа можно округлить до 0 в меньшую сторону. Логарифмическая шкала помогает уменьшить эту проблему.

Как вы увидите на протяжении всей книги, logprobs полезны для создания приложений (особенно для классификации), оценки приложений и понимания того, как модели работают под капотом. Однако многие поставщики моделей не предоставляют logprobs своих моделей, а если и предоставляют, то API logprobs ограничен. Ограниченный API logprobs, скорее всего, связан с причинами безопасности, так как открытые logprobs модели облегчают репликацию модели другими пользователями.

Top-k – это стратегия выборки, позволяющая снизить вычислительную нагрузку без чрезмерного ущерба для разнообразия откликов модели. Напомним, что слой softmax используется для вычисления распределения вероятностей по всем возможным значениям. Softmax требует двух проходов по всем возможным значениям: один для выполнения экспоненциальной суммы, а другой для вычисления каждого значения. Для языковой модели с большим словарным запасом этот процесс требует больших вычислительных ресурсов.

Чтобы избежать этой проблемы после того, как модель вычислила логиты, мы выбираем топ-k логитов и выполняем softmax только над этими топ-k логитами. В зависимости от того, насколько разнообразным должно быть ваше приложение, k может быть от 50 до 500, что намного меньше, чем размер словарного запаса модели. Затем модель выполняет выборку из этих верхних значений. Меньшее значение k делает текст более предсказуемым, но менее интересным, так как модель ограничена меньшим набором вероятных слов.

При выборке top-k количество рассматриваемых значений фиксируется равным k. Однако это число должно меняться в зависимости от ситуации. Например, задан вопрос «Вы любите музыку? Отвечайте только «да» или «нет». Количество рассматриваемых значений должно быть два: «да» и «нет». Учитывая вопрос «В чем смысл жизни?», количество рассматриваемых ценностей должно быть значительно больше.

Метод top-p, также известный как выборка ядра, позволяет более динамично выбирать значения для выборки. При выборке top-p модель суммирует вероятности наиболее вероятных следующих значений в порядке убывания и останавливается, когда сумма достигает p. Учитываются только значения в пределах этой совокупной вероятности. Общие значения для выборки top-p (ядра) в языковых моделях обычно находятся в диапазоне от 0,9 до 0,95. Например, значение top-p 0,9 означает, что модель будет учитывать наименьший набор значений, совокупная вероятность которых превышает 90 %.

Допустим, вероятности всех токенов такова, что если top-p равно 90%, то будут рассматриваться только «да» и «возможно», так как их совокупная вероятность больше 90%. Если top-p равно 99%, то рассматриваются «да», «возможно» и «нет».

В отличие от top-k, top-p не обязательно снижает вычислительную нагрузку softmax. Его преимущество заключается в том, что, поскольку он фокусируется только на наборе наиболее релевантных значений для каждого контекста, он позволяет выводам быть более контекстуально релевантными. Теоретически, похоже, что у выборки top-p нет особых преимуществ. Однако на практике выборка top-p доказала свою эффективность, что привело к росту ее популярности.

Связанная с этим стратегия выборки – min-p, в которой вы задаете минимальную вероятность того, что токен должен быть достигнут, чтобы его учитывали во время выборки.

Авторегрессионная языковая модель генерирует последовательности лексем, генерируя одну лексим за другой. Длинная последовательность вывода занимает больше времени, требует больше вычислительных ресурсов (денег) и иногда может раздражать пользователей. Мы можем захотеть задать условие, при котором модель должна остановить последовательность.

Один из простых способов – попросить модели прекратить генерацию после фиксированного количества токенов. Недостатком является то, что вывод, скорее всего, будет прерван на полуслове. Другой метод – использовать стоп-токены или стоп-слова. Например, можно попросить модель прекратить генерацию при обнаружении маркера конца последовательности. Условия остановки полезны для снижения задержек и затрат.

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

На страницу:
14 из 15