Денис Соломатин – Искусственный интеллект от А до Б (страница 21)
Если описать ИИ после 2020 года только одним словом, то это было бы слово масштаб. Модели искусственного интеллекта, лежащие в основе таких приложений, как ChatGPT, Google Gemini и Midjourney, настолько масштабны, что они потребляют нетривиальную часть мировой электроэнергии, и мы рискуем остаться без общедоступных интернет-данных для их обучения.
Масштабирование моделей ИИ имеет два основных последствия. Во-первых, модели ИИ становятся все более мощными и способными выполнять больше задач, что позволяет использовать больше приложений. Все больше людей и команд используют ИИ для повышения производительности, создания экономической ценности и улучшения качества жизни.
Во-вторых, для обучения больших языковых моделей (LLM) требуются данные, вычислительные ресурсы и специализированные таланты, которые могут позволить себе лишь немногие организации. Это привело к появлению модели как услуги: модели, разработанные этими несколькими организациями, становятся доступными для использования другими в качестве услуги. Любой, кто хочет использовать ИИ для создания приложений, теперь может использовать эти модели для этого без необходимости вкладывать средства в создание модели.
Короче говоря, спрос на приложения ИИ вырос, в то время как барьер для входа в создание приложений ИИ снизился. Это превратило инженерию ИИ – процесс создания приложений на основе готовых моделей – в одну из самых быстрорастущих инженерных дисциплин.
Создание приложений на основе моделей машинного обучения (ML) не является чем-то новым. Задолго до того, как LLM стали популярными, ИИ уже использовался во многих приложениях, включая рекомендации по продуктам, обнаружение мошенничества и прогнозирование оттока. В то время как многие принципы создания приложений ИИ остаются прежними, новое поколение крупномасштабных, легкодоступных моделей открывает новые возможности и ставит новые задачи, которые и находятся в центре внимания этой книги.
Эта глава начинается с обзора базовых моделей, которые стали ключевым катализатором бурного развития инженерии искусственного интеллекта. По мере того, как возможности ИИ расширяются с каждым днем, прогнозировать его будущие возможности становится все сложнее. Тем не менее, существующие шаблоны приложений могут помочь раскрыть возможности сегодня и дать подсказки о том, как ИИ может продолжать использоваться в будущем.
Базовые модели возникли из больших языковых моделей, которые, в свою очередь, возникли как просто языковые модели. Хотя может показаться, что такие приложения, как ChatGPT и Copilot от GitHub, появились из ниоткуда, они являются кульминацией десятилетий технологического прогресса, первые языковые модели которого появились в 1950-х годах. В этом разделе прослеживаются ключевые прорывы, которые позволили совершить эволюцию от языковых моделей к инженерии искусственного интеллекта.
Несмотря на то, что языковые модели существуют уже некоторое время, они смогли вырасти до таких масштабов, как сегодня, только благодаря самоконтролю. В этом разделе дается краткий обзор того, что означают языковая модель и самоконтроль. Если вы уже знакомы с ними, не стесняйтесь пропустить этот раздел.
Языковая модель кодирует статистические данные об одном или нескольких языках. Интуитивно эта информация говорит нам о том, насколько вероятно появление слова в данном контексте. Например, учитывая контекст «Мой любимый цвет – __», языковая модель, кодирующая английский язык, должна предсказывать «синий» чаще, чем «автомобиль».
Статистическая природа языков была открыта столетия назад. В рассказе 1905 года «Пляшущие человечки» Шерлок Холмс использовал простую статистическую информацию на английском языке для расшифровки последовательностей загадочных фигурок. Поскольку самая распространенная буква в английском языке – E, Холмс пришел к выводу, что самая распространенная фигурка из палочек должна обозначать E.
Позже Клод Шеннон использовал более сложную статистику для расшифровки сообщений врагов во время Второй мировой войны. Его работа о моделировании английского языка была опубликована в 1951 году в его знаковой статье «Предсказание и энтропия печатного английского языка». Многие концепции, представленные в этой статье, включая энтропию, до сих пор используются для моделирования языка.
В первые дни языковая модель включала в себя один язык. Однако сегодня языковая модель может включать в себя несколько языков.
Основной единицей языковой модели является лексем. Лексема может быть символом, словом или частью слова (например, -ция), в зависимости от модели. Например, GPT-4, модель, лежащая в основе ChatGPT, разбивает фразу на токены. Разные модели OpenAI токенизируют текст по-разному. Процесс разбиения исходного текста на токены называется токенизацией. Для GPT-4 средний токен составляет примерно 3/4 длины слова. Таким образом, 100 токенов – это примерно 75 слов.
Набор всех лексем, с которыми может работать модель, – это словарь модели. Вы можете использовать небольшое количество лексем для создания большого количества отдельных слов, подобно тому, как вы можете использовать несколько букв алфавита для создания множества слов. Модель Mixtral 8x7B имеет словарный запас 32 000. Размер словарного запаса GPT-4 составляет 100 256 токенов. Метод токенизации и размер словаря определяются разработчиками модели.
Почему языковые модели используют токен в качестве единицы измерения, а не слово или символ? Можно выделить три основные причины:
1. По сравнению с символами, токены позволяют модели разбивать слова на значимые компоненты. Например, слово «телевизор» можно разбить на «теле» и «визор», причем оба компонента несут в себе некоторое значение исходного слова.
2. Поскольку уникальных лексем меньше, чем уникальных слов, это уменьшает размер словаря модели, что делает модель более эффективной.
3. Лексемы также помогают модели обрабатывать неизвестные слова. Например, такое придуманное слово, как «чебурнет», можно разделить на «чебур» и «нет», что поможет модели понять его структуру. Токены балансируют между меньшим количеством единиц, чем словами, сохраняя при этом больше значения, чем отдельные символы.
Существует два основных типа языковых моделей: маскированные языковые модели и авторегрессионные языковые модели. Они различаются в зависимости от того, какую информацию они могут использовать для прогнозирования токена:
Замаскированная языковая модель
Маскированная языковая модель обучается прогнозировать отсутствующие лексемы в любом месте последовательности, используя контекст как до, так и после отсутствующих лексем. По сути, замаскированная языковая модель обучается заполнять пробелы. Например, учитывая контекст «Мой любимый __ – синий», замаскированная языковая модель должна предсказать, что пропуск, скорее всего, является «цветом». Хорошо известным примером замаскированной языковой модели являются двунаправленные представления энкодеров от трансформаторов.
Замаскированные языковые модели обычно используются для негенеративных задач, таких как анализ тональности и классификация текста. Они также полезны для задач, требующих понимания общего контекста, таких как отладка кода, где модель должна понимать как предыдущий, так и последующий код для выявления ошибок.
Языковая модель с авторегрессией обучается прогнозировать следующую лексему в последовательности, используя только предыдущие лексемы. Он предсказывает, что будет дальше в строке «Мой любимый цвет – __». Модель авторегрессии может постоянно генерировать один маркер за другим. В настоящее время авторегрессионные языковые модели являются моделями выбора для генерации текста, и по этой причине они гораздо популярнее, чем замаскированные языковые модели.
Выходные данные языковых моделей являются открытыми. Языковая модель может использовать свой фиксированный, конечный словарь для создания бесконечного количества возможных выходных данных. Модель, которая может генерировать открытые выходные данные, называется генеративной, отсюда и термин «генеративный ИИ».
Языковую модель можно представить себе как машину для завершения: получив текст (подсказку), она пытается дополнить этот текст. Вот пример:
Подсказка (от пользователя): "Быть или не быть"
Завершение (из языковой модели): "вот в чем вопрос."
Важно отметить, что завершения – это прогнозы, основанные на вероятностях, и не гарантируется, что они верны. Эта вероятностная природа языковых моделей делает их одновременно и захватывающими, и разочаровывающими в использовании.
Как бы просто это ни звучало, завершение невероятно мощно. Многие задачи, включая перевод, обобщение, кодирование и решение математических задач, можно сформулировать как задачи на завершение. Например, если у вас есть подсказка: «Как дела на французском…», языковая модель может дополнить ее словами: «Comment ça va», эффективно переводя с одного языка на другой. В качестве другого примера, учитывая подсказку:
Вопрос: Является ли это письмо вероятным спамом? Вот электронное письмо: <содержимое электронной почты> Ответьте:
Языковая модель может дополнить его следующим образом: "Вероятный спам", что превращает эту языковую модель в классификатор спама.