Авторы:
(1) ПЕТР МИРОВСКИЙ и КОРИ В. МЭТЬЮСОН, DeepMind, Великобритания, и оба автора внесли равный вклад в это исследование;
(2) ДЖЕЙЛЕН ПИТТМАН, Стэнфордский университет, США, и работа, проделанная в DeepMind;
(3) РИЧАРД ЭВАНС, DeepMind, Великобритания.
Повествование, форма историй и строки журнала
Использование больших языковых моделей для творческой генерации текста
Оценка текста, сгенерированного большими языковыми моделями
Выводы, благодарности и ссылки
A. СВЯЗАННАЯ РАБОТА ПО АВТОМАТИЗИРОВАННОМУ И КОНТРОЛИРУЕМОМУ СОЗДАНИЮ ИСТОРИЙ
Б. ДОПОЛНИТЕЛЬНОЕ ОБСУЖДЕНИЕ ИЗ ИГРЫ ТВОРЧЕСКОЙ КОМАНДЫ БОТОВ
C. ДЕТАЛИ КОЛИЧЕСТВЕННЫХ НАБЛЮДЕНИЙ
E. ПОЛНЫЕ ПРЕФИКСЫ ДЛЯ ДРАМАТРОНА
F. НЕОБРАБОТАННЫЙ ВЫХОД, СОЗДАННЫЙ ДРАМАТРОНОМ
G. Сценарии, написанные в соавторстве
Статистические языковые модели (языковые модели или LM) моделируют вероятность текстовых токенов с учетом контекста предыдущих токенов — токенами могут быть слова, символы или биграммы символов. Используя машинное обучение, LM обучаются на больших массивах текста, чтобы аппроксимировать условное распределение вероятностей. LM могут вычислять вероятность фрагмента текста и генерировать новый текст в качестве продолжения текстовой подсказки. Генерация текста является вероятностной и включает в себя случайную выборку из условных вероятностей. Различные случайные начальные числа приводят к различным случайным выборкам. На рис. 3 показан пример подачи текстового приглашения и использования LM для генерации различных образцов текста.
В этом исследовании мы использовали модель большого языка шиншиллы (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: одно предложение, описывающее центральный драматический конфликт. Средний уровень содержит описания персонажей, схему сюжета (последовательность высокоуровневых описаний сцен вместе с соответствующими локациями) и описания локаций. Нижний слой — это собственно диалоги персонажей текста сценария. Таким образом, контент на каждом уровне согласован с контентом на других уровнях. Обратите внимание, что «связный» здесь относится к «формированию единого целого», не предполагая какого-либо здравого смысла, логической или эмоциональной последовательности текста, сгенерированного LLM.
Как показано на рисунке 1, история генерируется сверху вниз [93, 108, 113]. После того, как человек предоставит строку журнала, Драматрон генерирует список персонажей, затем сюжет, а затем описания каждого места, упомянутого в сюжете. Описания персонажей, сюжета и локаций соответствуют спецификации в строке журнала, в дополнение к причинно-следственным зависимостям, которые становятся возможными с помощью цепочки подсказок [118] и объясняются на диаграмме на рисунке 1. Наконец, для каждой сцены в схеме сюжета Dramatron генерирует диалог, удовлетворяющий ранее сгенерированным спецификациям сцены. Результирующие диалоги объединяются для получения окончательного результата. Это иерархическое поколение было разработано для обеспечения долгосрочной семантической согласованности. Подобный, хотя и инвертированный, метод рекурсивной декомпозиции задач использовался для создания сводок сюжетов [117]. Включение среднего уровня, где сюжет резюмируется как последовательность абстрактных описаний сцен, позволяет всему сюжету поместиться в контекстное окно языковой модели. Это преодолевает предыдущие ограничения на долгосрочную семантическую последовательность. Наш метод позволяет элементам финальной сцены обеспечить драматическое завершение элементов, представленных в начальной сцене[3], а созданным историям следовать повествовательным дугам (см. Раздел 2).
Dramatron использует несколько жестко запрограммированных подсказок (т.е. префиксов ввода) для управления большой языковой моделью. Оперативное проектирование — это распространенный способ, с помощью которого пользователи контролируют LLM или влияют на него [12]. Каждая подсказка содержит несколько примеров желаемых результатов. Они включены в префикс, и адаптацию лишь к небольшому количеству примеров иногда называют обучением за несколько шагов. Как показано на рисунке 3, подсказки объединяются с введенными пользователем входными и/или выходными данными предыдущих поколений LLM. Этот метод называется цепочкой подсказок [118] и является разновидностью алгоритмических подсказок [24]. На более низких уровнях иерархии (см. рис. 1) подсказки связаны с результатами более высоких уровней иерархии.
В данной работе мы преимущественно использовали два набора подсказок: один по мотивам древнегреческой трагедии Еврипида «Медея» и другой по мотивам научно-фантастических фильмов. В Dramatron каждый набор подсказок состоит из: 1) подсказки к названию, 2) подсказки к описанию персонажа, 3) подсказки к сюжету, 4) подсказки к описанию локации, 5) подсказки к диалогу. Каждая подсказка кратко описана ниже, чтобы дать представление о том, как они устроены; дополнительная информация находится в Приложении E.
Подсказка заголовка используется для создания заголовков из строки журнала. Упрощенная подсказка к названию, строка журнала, предоставленная пользователем, и случайно выбранные заголовки показаны на рис. 3. На нем показан префикс с инструкцией (Примеры альтернативных, оригинальных и описательных названий для известных сценариев пьес и фильмов.) и пример ( Пример 1. Древнегреческая трагедия [...]. Название: Во имя моего брата). Префикс заканчивается следующим: Пример 2. Строка журнала, введенная пользователем (например, бабушка Филлис и дедушка Джим [...]) объединяется с этим префиксом, а также с тегом Title:, который побуждает LLM генерировать заголовок. это соответствует строке журнала. На нескольких примерах LLM «научился» генерировать связанный заголовок и завершающий тег. Подсказка описания персонажа используется для создания имен и описаний персонажей из строки журнала. Подсказка «Контур графика» используется для преобразования строки журнала и списка символов в сюжет. Эта подсказка побуждает языковую модель с несколькими кадрами преобразовать строку журнала из одного предложения в последовательность описаний сцен. Каждая сцена сильно сжата и описывает только краткое название места, элемент повествования, определяющий положение сцены в повествовательной арке (см. раздел 2), и краткое изложение того, что делают и говорят персонажи, часто называемое повествовательный ритм[69]. Следует отметить, что подсказка накладывает сильные репрезентативные ограничения на то, как «Драматрон» представляет сцену; каждая сцена состоит из локации, идентификатора повествовательного элемента и такта. Запрос описания местоположения используется для создания подробного описания пейзажа на основе названия места и строки журнала. Наконец, подсказка к диалогу используется для превращения такта (т. е. краткого содержания сцены), описания места сцены, описания каждого из персонажей, участвующих в сцене, и строки журнала (для обеспечения последовательности сюжета) в диалог. В этом приглашении используется информация о сцене, сгенерированная как для текущей, так и для предыдущей сцены.
Как описано выше, используя всего лишь несколько подсказок (т. е. 1–4) и строку журнала ввода данных пользователем, мы используем обученных LLM для создания полных сценариев и сценариев. Приложение F показывает пример необработанных результатов. Тем не менее, Dramatron предназначен для интерактивного совместного написания текстов и является дополнительным инструментом для писателей-людей. Соавторство с Dramatron происходит следующим образом: писатель начинает с написанной им строки журнала. Они вводят эту строку журнала в Dramatron и шаг за шагом генерируют заголовок, персонажей, схему сюжета, описания локаций и диалоги каждой сцены. На каждом этапе писатель может выполнить одну или несколько из следующих операций столько раз, сколько пожелает:
• Создайте новое предложение (т. е. снова запустите LLM с тем же приглашением).
• Продолжайте генерировать данные с конца предыдущего поколения, аналогично типичному «плоскому» генерированию LLM.
• Вручную отредактируйте некоторые или все выходные данные, созданные LLM.
Кроме того, писатель может выполнять эти операции, перемещаясь вперед и назад по иерархии Драматрона. Например, они могли: 1) создать заголовок, 2) создать новый заголовок, 3) отредактировать заголовок, 4) создать список символов, 5) отредактировать символы, удалив один символ и изменив описание другого, 6 ) создать схему сюжета, 7) отредактировать сюжет, удалив часть повествовательной дуги, 8) создать продолжение отредактированного сюжета, 9) вернуться и переписать строку журнала и т. д. Такой подход к совместному написанию позволяет человеку и Оба Dramatron внесли свой вклад в авторство сценария. После этих операций автор-человек мог продолжить редактирование и форматирование для завершения сценария. В приложении G показаны примеры сценариев, отредактированных человеком.
Код 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/