paint-brush
Понимание статистических языковых моделей и генерации иерархического языкак@teleplay
859 чтения
859 чтения

Понимание статистических языковых моделей и генерации иерархического языка

к Teleplay Technology 7m2024/05/20
Read on Terminal Reader

Слишком долго; Читать

Языковые модели, такие как Chinchilla LLM и GPT-3, используются для генерации текста на основе статистических вероятностей. Dramatron — это интерактивный инструмент для совместного написания повествований, использующий быстрое проектирование и иерархическую генерацию для связного повествования.
featured image - Понимание статистических языковых моделей и генерации иерархического языка
Teleplay Technology  HackerNoon profile picture
0-item

Авторы:

(1) ПЕТР МИРОВСКИЙ и КОРИ В. МЭТЬЮСОН, DeepMind, Великобритания, и оба автора внесли равный вклад в это исследование;

(2) ДЖЕЙЛЕН ПИТТМАН, Стэнфордский университет, США, и работа, проделанная в DeepMind;

(3) РИЧАРД ЭВАНС, DeepMind, Великобритания.

Таблица ссылок

Аннотация и введение

Повествование, форма историй и строки журнала

Использование больших языковых моделей для творческой генерации текста

Оценка текста, сгенерированного большими языковыми моделями

Интервью с участниками

Опросы участников

Обсуждение и будущая работа

Выводы, благодарности и ссылки

A. СВЯЗАННАЯ РАБОТА ПО АВТОМАТИЗИРОВАННОМУ И КОНТРОЛИРУЕМОМУ СОЗДАНИЮ ИСТОРИЙ

Б. ДОПОЛНИТЕЛЬНОЕ ОБСУЖДЕНИЕ ИЗ ИГРЫ ТВОРЧЕСКОЙ КОМАНДЫ БОТОВ

C. ДЕТАЛИ КОЛИЧЕСТВЕННЫХ НАБЛЮДЕНИЙ

D. ДОПОЛНИТЕЛЬНЫЕ ЦИФРЫ

E. ПОЛНЫЕ ПРЕФИКСЫ ДЛЯ ДРАМАТРОНА

F. НЕОБРАБОТАННЫЙ ВЫХОД, СОЗДАННЫЙ ДРАМАТРОНОМ

G. Сценарии, написанные в соавторстве

3 ИСПОЛЬЗОВАНИЕ КРУПНЫХ ЯЗЫКОВЫХ МОДЕЛЕЙ ДЛЯ ТВОРЧЕСКОЙ ГЕНЕРАЦИИ ТЕКСТА

3.1 Языковые модели

Статистические языковые модели (языковые модели или LM) моделируют вероятность текстовых токенов с учетом контекста предыдущих токенов — токенами могут быть слова, символы или биграммы символов. Используя машинное обучение, LM обучаются на больших массивах текста, чтобы аппроксимировать условное распределение вероятностей. LM могут вычислять вероятность фрагмента текста и генерировать новый текст в качестве продолжения текстовой подсказки. Генерация текста является вероятностной и включает в себя случайную выборку из условных вероятностей. Различные случайные начальные числа приводят к различным случайным выборкам. На рис. 3 показан пример подачи текстового приглашения и использования LM для генерации различных образцов текста.


Рис. 3. Иллюстрация настройки подсказок для языковой модели, при этом подсказка, созданная пользователем или Dramatron, объединяется с префиксом и украшается тегами. Для разных случайных начальных чисел генерируется несколько выходных заголовков, каждый из которых заканчивается тегом <end> .


В этом исследовании мы использовали модель большого языка шиншиллы (LLM) [48], представленную в виде нейронной сети с 70B-параметрами и обученную на 1,4T токенах набора данных MassiveText. Как описано Rae et al. [84], этот корпус содержит 604 миллиона документов MassiveWeb, 4 миллиона книг, 361 миллион вопросов и ответов из C4, 1.1 миллиард новостных статей, 142 миллиона записей кода GitHub и 6 миллионов статей в Википедии. Обратите внимание, что можно использовать альтернативные LLM, такие как GPT-3.[1]

3.2 Генерация иерархического языка для обхода ограниченных контекстов


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


Наше повествовательное поколение разделено на 3 иерархических уровня абстракции. Самый высокий уровень — это строка журнала, определенная в разделе 2: одно предложение, описывающее центральный драматический конфликт. Средний уровень содержит описания персонажей, схему сюжета (последовательность высокоуровневых описаний сцен вместе с соответствующими локациями) и описания локаций. Нижний слой — это собственно диалоги персонажей текста сценария. Таким образом, контент на каждом уровне согласован с контентом на других уровнях. Обратите внимание, что «связный» здесь относится к «формированию единого целого», не предполагая какого-либо здравого смысла, логической или эмоциональной последовательности текста, сгенерированного LLM.


Как показано на рисунке 1, история генерируется сверху вниз [93, 108, 113]. После того, как человек предоставит строку журнала, Драматрон генерирует список персонажей, затем сюжет, а затем описания каждого места, упомянутого в сюжете. Описания персонажей, сюжета и локаций соответствуют спецификации в строке журнала, в дополнение к причинно-следственным зависимостям, которые становятся возможными с помощью цепочки подсказок [118] и объясняются на диаграмме на рисунке 1. Наконец, для каждой сцены в схеме сюжета Dramatron генерирует диалог, удовлетворяющий ранее сгенерированным спецификациям сцены. Результирующие диалоги объединяются для получения окончательного результата. Это иерархическое поколение было разработано для обеспечения долгосрочной семантической согласованности. Подобный, хотя и инвертированный, метод рекурсивной декомпозиции задач использовался для создания сводок сюжетов [117]. Включение среднего уровня, где сюжет резюмируется как последовательность абстрактных описаний сцен, позволяет всему сюжету поместиться в контекстное окно языковой модели. Это преодолевает предыдущие ограничения на долгосрочную семантическую последовательность. Наш метод позволяет элементам финальной сцены обеспечить драматическое завершение элементов, представленных в начальной сцене[3], а созданным историям следовать повествовательным дугам (см. Раздел 2).

3.3 Важность быстрого проектирования

Dramatron использует несколько жестко запрограммированных подсказок (т.е. префиксов ввода) для управления большой языковой моделью. Оперативное проектирование — это распространенный способ, с помощью которого пользователи контролируют LLM или влияют на него [12]. Каждая подсказка содержит несколько примеров желаемых результатов. Они включены в префикс, и адаптацию лишь к небольшому количеству примеров иногда называют обучением за несколько шагов. Как показано на рисунке 3, подсказки объединяются с введенными пользователем входными и/или выходными данными предыдущих поколений LLM. Этот метод называется цепочкой подсказок [118] и является разновидностью алгоритмических подсказок [24]. На более низких уровнях иерархии (см. рис. 1) подсказки связаны с результатами более высоких уровней иерархии.


В данной работе мы преимущественно использовали два набора подсказок: один по мотивам древнегреческой трагедии Еврипида «Медея» и другой по мотивам научно-фантастических фильмов. В Dramatron каждый набор подсказок состоит из: 1) подсказки к названию, 2) подсказки к описанию персонажа, 3) подсказки к сюжету, 4) подсказки к описанию локации, 5) подсказки к диалогу. Каждая подсказка кратко описана ниже, чтобы дать представление о том, как они устроены; дополнительная информация находится в Приложении E.


Подсказка заголовка используется для создания заголовков из строки журнала. Упрощенная подсказка к названию, строка журнала, предоставленная пользователем, и случайно выбранные заголовки показаны на рис. 3. На нем показан префикс с инструкцией (Примеры альтернативных, оригинальных и описательных названий для известных сценариев пьес и фильмов.) и пример ( Пример 1. Древнегреческая трагедия [...]. Название: Во имя моего брата). Префикс заканчивается следующим: Пример 2. Строка журнала, введенная пользователем (например, бабушка Филлис и дедушка Джим [...]) объединяется с этим префиксом, а также с тегом Title:, который побуждает LLM генерировать заголовок. это соответствует строке журнала. На нескольких примерах LLM «научился» генерировать связанный заголовок и завершающий тег. Подсказка описания персонажа используется для создания имен и описаний персонажей из строки журнала. Подсказка «Контур графика» используется для преобразования строки журнала и списка символов в сюжет. Эта подсказка побуждает языковую модель с несколькими кадрами преобразовать строку журнала из одного предложения в последовательность описаний сцен. Каждая сцена сильно сжата и описывает только краткое название места, элемент повествования, определяющий положение сцены в повествовательной арке (см. раздел 2), и краткое изложение того, что делают и говорят персонажи, часто называемое повествовательный ритм[69]. Следует отметить, что подсказка накладывает сильные репрезентативные ограничения на то, как «Драматрон» представляет сцену; каждая сцена состоит из локации, идентификатора повествовательного элемента и такта. Запрос описания местоположения используется для создания подробного описания пейзажа на основе названия места и строки журнала. Наконец, подсказка к диалогу используется для превращения такта (т. е. краткого содержания сцены), описания места сцены, описания каждого из персонажей, участвующих в сцене, и строки журнала (для обеспечения последовательности сюжета) в диалог. В этом приглашении используется информация о сцене, сгенерированная как для текущей, так и для предыдущей сцены.

3.4 Интерактивное письмо с Dramatron

Как описано выше, используя всего лишь несколько подсказок (т. е. 1–4) и строку журнала ввода данных пользователем, мы используем обученных LLM для создания полных сценариев и сценариев. Приложение F показывает пример необработанных результатов. Тем не менее, Dramatron предназначен для интерактивного совместного написания текстов и является дополнительным инструментом для писателей-людей. Соавторство с Dramatron происходит следующим образом: писатель начинает с написанной им строки журнала. Они вводят эту строку журнала в Dramatron и шаг за шагом генерируют заголовок, персонажей, схему сюжета, описания локаций и диалоги каждой сцены. На каждом этапе писатель может выполнить одну или несколько из следующих операций столько раз, сколько пожелает:


• Создайте новое предложение (т. е. снова запустите LLM с тем же приглашением).


• Продолжайте генерировать данные с конца предыдущего поколения, аналогично типичному «плоскому» генерированию LLM.


• Вручную отредактируйте некоторые или все выходные данные, созданные LLM.


Кроме того, писатель может выполнять эти операции, перемещаясь вперед и назад по иерархии Драматрона. Например, они могли: 1) создать заголовок, 2) создать новый заголовок, 3) отредактировать заголовок, 4) создать список символов, 5) отредактировать символы, удалив один символ и изменив описание другого, 6 ) создать схему сюжета, 7) отредактировать сюжет, удалив часть повествовательной дуги, 8) создать продолжение отредактированного сюжета, 9) вернуться и переписать строку журнала и т. д. Такой подход к совместному написанию позволяет человеку и Оба Dramatron внесли свой вклад в авторство сценария. После этих операций автор-человек мог продолжить редактирование и форматирование для завершения сценария. В приложении G показаны примеры сценариев, отредактированных человеком.

3.5 Детали реализации

Код Dramatron реализован на Python, а пользовательский интерфейс реализован в Google Colab[4] с текстовыми виджетами, позволяющими интерактивное редактирование. Существует несколько специальных маркеров, которые мы используем для генерации скриптов: представляют собой маркер конца генерации полной последовательности и маркер, используемый для обозначения конца сгенерированной строки. Для данного запроса (см. следующий раздел 3.3), переданного в LLM, было выбрано до 511 текстовых токенов. Мы использовали выборку Nucleus [49] для поощрения разнообразных результатов, выбирая токены из верхней массы вероятности 0,9 и с температурой softmax 1,0. Наконец, чтобы уменьшить циклы при генерации диалога, мы реализовали простой детектор, который разбивает сгенерированный текст на блоки (разделенные двумя пустыми строками) и подсчитывает, сколько раз каждый блок появляется за одну генерацию. За пределами фиксированного порога (например, 3 раза) LLM генерирует новый результат путем выборки токенов с использованием другого начального числа в генераторе случайных чисел.



Этот документ доступен на arxiv под лицензией CC 4.0.


[1] Доступно по адресу: https://openai.com/api/.


[2] Например: https://theguardian.com/commentisfree/2020/sep/08/robot-wrote-this-article-gpt-3.


[3] См., например, пистолет Чехова [27].


[4] https://colab.research.google.com/