Выжимка из выступления Maggie Appleton «Squish Meets Structure: Designing with Language Models»

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 смотрите ниже.


Language models как “squishy” (нечто мягкое, аморфное)

Что 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”.


Squish vs. Structure

Мы пытаемся заставить непредсказуемую и непрозрачную систему соответствовать нашим жестким ожиданиям относительно поведения компьютеров. В настоящее время мы наблюдаем несоответствие между нашими старыми и новыми ментальными моделями для компьютерных систем.

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

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

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

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

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

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

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


Как поместить Shoggoth в коробку

Большая часть текущей работы над языковыми моделями направлена ​​на ограничение их поведения с помощью различных методов.

Prompt engineering — это когда вы описываете то, что хотите, в очень конкретных терминах. Вы также даете модели несколько примеров того, какие входные и выходные данные вы ожидаете. И как ни странно, приходится сильно подмазывать модель. Мы обнаружили, что сообщение модели, что она умный, правдивый, хорошо образованный и вдумчивый помощник, прежде чем задавать вопрос, приводит к значительно более высокому проценту правильных ответов и более высокому качеству результатов.

Fine-tuning — это просто обучение модели на небольшом наборе данных и указание модели уделять этим данным больше внимания, чем остальным обучающим данным.

Обучение с подкреплением — это когда вы заставляете людей оценивать выходные данные и вводить их обратно в модель, чтобы она узнала, какие ответы нужны людям. OpenAI активно использовала эту технику для улучшения ChatGPT.

Наша самая большая задача при проектировании с использованием языковых моделей — найти идеальный баланс между Squish и Structure. Однако это не выбор «или-или» — это спектр. К какой стороне этого спектра вам следует склоняться, зависит от вашего варианта использования.

Для большинства продуктов вам нужно находиться где-то посередине – в том, что Maggie называет зоной Златовласки.

Squish Meets Structure

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

Слишком далеко слева все становится странным. Результаты слишком далеки от того, что могло бы быть нам полезно.


Языковые модели ➜ композиционные, как крошечные механизмы рассуждения, а не как источники истины

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

В настоящее время, есть типичный подход к работе с LLM ➜ prompt chaining (цепочка подсказок):

Squish Meets Structure prompt chaining

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

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

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

Он должен быть спроектирован и оптимизирован для одной очень небольшой когнитивной задачи.

Squish Meets Structure tiny reasoning engine

Мы можем разработать вызовы языковой модели для:

  • summarising
  • extracting structured data from long text
  • finding contradictions between claims
  • comparing and contrasting claims
  • generating research questions…

Затем мы можем запустить эти крошечные «двигатели» на основе данных, которым мы доверяем, таких как научные статьи, наши личные заметки или общедоступные базы данных, такие как Википедия.

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

Резюме

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

Нам следует создавать крошечные, четкие и специфичные инструменты с моделями.

Это согласуется с убеждением Maggie, что

Большинство реализаций языковых моделей должны иметь «размер проверки орфографии» (spell-check sized) ➜ Они должны хорошо делать одну конкретную вещь.

Как пример, этот инструмент предоставляет нам очень специфический набор команд для работы с выделенным текстом:

Squish Meets Structure spell check sized

Недавно Google выпустил инструмент, который является отличным примером такого же подхода. Он называется TextFX и был создан в сотрудничестве с рэперами и поэтами. Он дает вам кучу крошечных языковых инструментов:

  • Сравнения
  • Семантические цепочки
  • Аллитерация
  • Измените свою точку зрения
  • Найдите пересечение двух вещей…

Подведем итог

Этот блок решил оставить в оригинале

  • We should think of models as squishy, biological crations
  • When you're designing with these models you need to find the Goldilocks zones between squish–structure for your specific use case
  • You should treat models as tiny reasoning engines for specific tasks. Don’t try to make some universal text input that claims to do everything. Because it can’t. And you'll just disappoint people by pretending it can.

Squish Meets Structure Summarise


Пара комментариев, сделанных по ходу выступления

01 • Про «галлюцинации» языковых моделей

Это когда языковые модели говорят вещи, которые не отражают реальность. Галлюцинации случаются потому, что модели просто предсказывают, какие слова скорее всего последуют дальше (одна из причин). Они не ищут в Google научную литературу и не консультируются с экспертами, прежде чем ответить вам (по крайней мере, пока).

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

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

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

02 • Языковые модели ➜ Это суперсовременные лингвистические калькуляторы

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

Вы можете себе представить, насколько интересны такого рода исследования для поэтов, рэперов, писателей, маркетологов и, откровенно говоря, для всех, кто пытается использовать язык для общения.