—
22.09.2023
Видео, слайды и стенограмма выступления Maggie Appleton о проблемах проектирования приложений, использующих языковые модели ➜ Squish Meets Structure: Designing with Language Models | Smashing Conference, Freiburg Germany, September 4th-5th, 2023.
Последние полтора года Maggie занимается изучением Language Models. В частности, теперь работает в компании Elicit, которая использует языковые модели для создания инструментов для профессиональных исследователей и ученых.
—
Для любителей сократить время ➜ Можно для начала сразу на 45-й слайд перескочить, с него начать чтение (или чуть ранее с 33-го). А потом уже, если заинтересует, то и преамбулу (первые слайды) посмотреть.
Выводы в выступлении во многом согласуются с моим пониманием возможного использования LLM, «как» и «к чему» сам готов их «пристроить». Ключевые на мой взгляд моменты из выступления Maggie смотрите ниже.
Что Maggie подразумевает под словом “squishy”?
Языковые модели кажутся чем-то органическим и биологическим, а не чем-то механическим. Такое ощущение, что мы их вырастили, а не построили.
Мы не до конца понимаем, как они работают, что необычно для творения. Было бы странно делать машину и не понимать, какие именно детали заставляют колеса вращаться. Но именно в такой ситуации мы находимся. Языковые модели часто называют «черными ящиками» из-за отсутствия прозрачности.
Они также немного эволюционны. Для обучения моделей мы используем процесс, называемый глубоким обучением. Мы даем им цель, а затем оцениваем, насколько хорошо они ее достигли. Мы запускаем этот цикл снова и снова, и они методом проб и ошибок учатся, как достичь цели. Подобно эволюции, они оптимизируются для достижения определенного результата в конкретной среде – они адаптируются, чтобы добиться успеха.
И, наконец, они часто обладают новыми навыками и удивительным поведением, которого мы не ожидаем. Трудно предсказать, в чем они будут хороши. Это делает их немного похожими на природные явления, над которыми нам нужно провести множество экспериментов, чтобы понять, как они работают. Как будто это какое-то новое химическое соединение или недавно открытый вид жуков.
Мягкая биологическая природа заставила многих людей в сообществе ИИ начать говорить о моделях как о существах. Популярная метафора про языковые модели и их неофициальный талисман ➜ Shoggoth
Shoggoth is a character from H.P. Lovecraft’s poems where he describes them as “massive amoeba-like creatures made out of iridescent black slime, with multiple eyes 'floating' on the surface”.
Мы пытаемся заставить непредсказуемую и непрозрачную систему соответствовать нашим жестким ожиданиям относительно поведения компьютеров. В настоящее время мы наблюдаем несоответствие между нашими старыми и новыми ментальными моделями для компьютерных систем.
До сих пор преимущество компьютеров заключалось в том, что они невероятно предсказуемы, структурированы и надежны. Они делают то, что вы им говорите. Неоднократно. Не уставая. Без перерыва на чай. Гораздо надежнее, чем это сделал бы человек.
Вот почему мы поручаем им отвечать за своевременную выплату зарплаты, отслеживание жизненно важных показателей пациента во время операции и контроль дорожного движения. Мы не хотим, чтобы люди делали такие вещи! Мы с ними плохи.
Но дело в том, что... то, что мы сейчас делаем с языковыми моделями, - это представляем те же устройства и интерфейсы, которые мы используем для предсказуемого программного обеспечения.
Но мы отправляем пользовательские запросы мягкому шогготу, который возвращает нечто, работающее совершенно иначе, чем традиционная логика программирования.
Проблема здесь в том, что мы используем одни и те же примитивы интерфейса, чтобы позволить пользователям взаимодействовать с принципиально другим типом технологий. Наши ожидания полностью не совпадают.
Предсказуемость должна быть отличительной чертой хорошего пользовательского опыта. Мы оцениваем интерфейс как «хороший», если пользователь знает, чего ожидать, и никогда не сталкивается с результатами или отзывами, которые кажутся ему неожиданными или сбивающими с толку.
Maggie по-прежнему считает, что это правда, но, возможно, нам придется переосмыслить это, когда мы начнем использовать в своей работе больше генеративных и эмерджентных систем. Если система непредсказуема по своей природе, нам потребуются новые паттерны взаимодействия, чтобы приспособиться к этому.
Большая часть текущей работы над языковыми моделями направлена на ограничение их поведения с помощью различных методов.
Prompt engineering — это когда вы описываете то, что хотите, в очень конкретных терминах. Вы также даете модели несколько примеров того, какие входные и выходные данные вы ожидаете. И как ни странно, приходится сильно подмазывать модель. Мы обнаружили, что сообщение модели, что она умный, правдивый, хорошо образованный и вдумчивый помощник, прежде чем задавать вопрос, приводит к значительно более высокому проценту правильных ответов и более высокому качеству результатов.
Fine-tuning — это просто обучение модели на небольшом наборе данных и указание модели уделять этим данным больше внимания, чем остальным обучающим данным.
Обучение с подкреплением — это когда вы заставляете людей оценивать выходные данные и вводить их обратно в модель, чтобы она узнала, какие ответы нужны людям. OpenAI активно использовала эту технику для улучшения ChatGPT.
Наша самая большая задача при проектировании с использованием языковых моделей — найти идеальный баланс между Squish и Structure. Однако это не выбор «или-или» — это спектр. К какой стороне этого спектра вам следует склоняться, зависит от вашего варианта использования.
Для большинства продуктов вам нужно находиться где-то посередине – в том, что Maggie называет зоной Златовласки.
−
Слишком далеко справа — это то, что мы могли бы получить от существующих систем компьютерного программирования. Нет особого смысла заставлять языковую модель выполнять поиск по ключевым словам, когда у нас есть гораздо более эффективные алгоритмы для этого.
Слишком далеко слева все становится странным. Результаты слишком далеки от того, что могло бы быть нам полезно.
Композиционность просто означает, что мы берем большие и сложные задачи когнитивного мышления и разбиваем их на более мелкие и более управляемые подзадачи.
В настоящее время, есть типичный подход к работе с LLM ➜ prompt chaining (цепочка подсказок):
−
Вы создаете цепочки команд, включающие подсказки к языковым моделям. Он сочетает в себе языковые модели с другими инструментами, такими как веб-поиск, традиционные функции программирования и извлечение информации из баз данных. Это помогает компенсировать недостатки языковой модели.
В рамках этого мы также можем заставить языковые модели участвовать в некотором примитивном познании. Мы заставляем их четко наблюдать, какие данные они видят, размышлять над ними, планировать свое следующее действие, а затем выполнять это действие. Это улучшает их конечный результат. Это упрощенный цикл OODA.
—
Идея в том, что каждый шаг в этой цепочке подсказок, включающий языковую модель, должен представлять собой крошечный механизм рассуждения.
Он должен быть спроектирован и оптимизирован для одной очень небольшой когнитивной задачи.
−
Мы можем разработать вызовы языковой модели для:
Затем мы можем запустить эти крошечные «двигатели» на основе данных, которым мы доверяем, таких как научные статьи, наши личные заметки или общедоступные базы данных, такие как Википедия.
Такой подход означает, что у нас всегда будут небольшие наблюдаемые входные и выходные данные, которые мы можем проверить.
—
Резюме
Вместо того, чтобы создавать общие интерфейсы и предоставлять пользователю возможность придумывать собственные решения, мы можем вместо этого разрабатывать языковые модели, которые предоставляют пользователям набор конкретных инструментов.
Нам следует создавать крошечные, четкие и специфичные инструменты с моделями.
Это согласуется с убеждением Maggie, что
Большинство реализаций языковых моделей должны иметь «размер проверки орфографии» (spell-check sized) ➜ Они должны хорошо делать одну конкретную вещь.
Как пример, этот инструмент предоставляет нам очень специфический набор команд для работы с выделенным текстом:
−
Недавно Google выпустил инструмент, который является отличным примером такого же подхода. Он называется TextFX и был создан в сотрудничестве с рэперами и поэтами. Он дает вам кучу крошечных языковых инструментов:
Этот блок решил оставить в оригинале
01 • Про «галлюцинации» языковых моделей
Это когда языковые модели говорят вещи, которые не отражают реальность. Галлюцинации случаются потому, что модели просто предсказывают, какие слова скорее всего последуют дальше (одна из причин). Они не ищут в Google научную литературу и не консультируются с экспертами, прежде чем ответить вам (по крайней мере, пока).
Существует так много ограничений и режимов сбоя языковых моделей, что люди создают на Github целые репозитории, документирующие их.
Это поучительно для просмотра. Вместо того, чтобы просто отвергать модели как ложные и, следовательно, бесполезные, нам необходимо выработать четкое понимание ограничений языковых моделей и того, почему они возникают.
Нам следует найти способы смягчить эти ограничения и сообщить о них конечным пользователям. Я думаю, что это важнейшая работа, которую должен выполнять каждый, кто проектирует и создает продукты с языковыми моделями.
02 • Языковые модели ➜ Это суперсовременные лингвистические калькуляторы
Языковые модели способны очень точно математически понимать сходства и различия между предложениями. Они понимают миллиарды тонких спектров, неявно заложенных в нашем языке: кошачий-собачий, формальный-повседневный, холодный-горячий, смешной-серьезный, сексуально-отталкивающий.
Вы можете себе представить, насколько интересны такого рода исследования для поэтов, рэперов, писателей, маркетологов и, откровенно говоря, для всех, кто пытается использовать язык для общения.