Эта статья была впервые опубликована на:Уокер ИИ
По сравнению с обычной генерацией текста, генерация текстов должна соответствовать определенной музыке и пению. Следовательно, требуется, чтобы длина каждой песни, которую нужно петь, была точно по времени, то есть количество символов в каждой строке было ограничено мелодией для разных мелодий.
В этой статье пока не рассматривается проблема музыки и лирики, а абстрагируется проблема, заключающаяся в том, как сгенерировать текст, соответствующий формату подсчета слов, когда известно количество слов в каждом предложении лирики. Рифмовка лирики не такая строгая, как у старинных стихов, но рифмованная лирика запоминающаяся и ее легче петь, что по-прежнему очень важно для генерации лирики. Короче говоря, генерация текстов должна удовлетворять двум условиям:
(1) Количество слов в каждом предложении можно контролировать (2) рифма
В ответ на две вышеупомянутые проблемы, опубликованные в ACL2020 "Rigid Formats Controlled Text Generation》[1], что вполне может решить проблему управляемости подсчета слов и рифмовки. Бумага называет свою модель какSongNet. Его можно прочитать как «Сеть песни (слова)» (сама бумага предназначена для создания слов песни), а можно прочитать как «Song Net"(Lyric Network), каламбур.
1. Краткий обзор SongNet
SongNetЭто усовершенствование, основанное на BERT [2]. По сравнению с BERT,SongNetИмеются следующие отличия:
Встраивание информации о формате в модель
Сделайте так, чтобы BERT мог генерировать по маске
Далее мы сначала вводим поле, к которому принадлежит SongNet: генерация условного текста.
2. Условная генерация текста
Поле генерации текста разделено на три части:бесплатная генерация текста(Generic / Free-Text Generation),Условная генерация текста(Conditional Text Generation)а такжеОграниченная генерация текста(Constrained Text Generation), нет четкой границы между генерацией условного текста и генерацией текста с ограничениями.В этой статье область генерации текста рассматривается как две частибесплатная генерация текстаиУсловная генерация текста. 【3】
Генерация произвольного текста — это задача генерации текста, которая явно не задает условия, то есть, пока это не генерация условного текста, это задача генерации произвольного текста. Его формула вероятности выглядит следующим образом:
По сравнению с генерацией условного текста, генерация произвольного текста — это всего лишь предварительная и последующая зависимость от моделируемого текста.
Условная генерация текста, визвестные условияслучае, генерироватьЧтобы выполнить условиятекстовое задание. Вероятность этой задачи выражается следующим образом:
То есть модель должна моделировать условную вероятность p(x|c), где c — векторное представление условия, x — векторное представление одного текста, а
На практике существует больше применений условной генерации текста.В узком смысле это включает в себя генерацию текстов на основе тем и генерацию текстов на основе эмоций.В широкой перспективе машинный перевод также можно рассматривать как условную генерацию текста.Для китайского- Задачи перевода на английский язык вы можете увидеть Выполните условие как китайский, а затем сгенерируйте текст на английском языке.
Например, сгенерируйте текст с позитивным и оптимистичным настроем. (Настроение текста положительное и оптимистичное, т.е. состояние)
Ключом к генерации условного текста является добавление условий в модель. Существует два распространенных метода:
Вставить условие: будь то обучение или создание усечения, условие кодируется как ввод, аembedding
взвешивание: На этапе генерации значение вероятности каждого слова, сгенерированного на каждом временном шаге, перенастраивается с информацией об условии.
SongNetИспользуя первый метод,Вставить условие.
3. Embedding
В этой главе в основном представлена разработка внедрения, то есть от внедрения токена (кодировка символов) до внедрения позиции (кодирование положения).С этими предварительными условиями мы можем лучше понять условное внедрение.
Первоначальное встраивание: встраивание токена
embeddingДа,Процесс преобразования данных последовательности, состоящих из дискретных символов, в матрицу, представленную вектором слов..
token embeddingДа, будеттекст на естественном языкеПроцесс преобразования в матрицу, представленную вектором слов. только текстинформация о последовательности символов.
Модели машинного обучения выполняют числовые операции, а текст на естественном языке состоит издискретные символыУказывает на невозможность прямого выполнения сложения, умножения и других операций, а также невозможности выполнения обратного распространения ошибки, поэтому необходимо преобразовать текстНумерация(непрерывный), этот процессembedding. Обычное решение состоит в том, чтобы разбить текст наtoken, затем idize, а затем преобразовать каждыйtokenпредставлен вектором, процесс завершенembeddingРабота.
embeddingПроцесс можно разложить на следующие процессы:
1. token化:将文本切分成token,token指的是代表文本的组成元素的符号,常用的是字、子词或者词。
2. id化:每个token都对应着一个id号,用id号表示token。
3. embedding:将id转化为向量。通常id号对应着向量的embedding的权重表中的位置。对于每个id,查找权重表中其对应的向量,拼接成整个文本。
Далее идет встраивание текста «Ненужная скученность».
Текст: Бесстрашная толпа
Первый шаг: токенизация (слова — единицы,Пробелы разделяют каждый токен), результат токенизацииМноголюдная толпа бесстрашного моря
Второй шаг: id, предполагая, что идентификатор none равен 0 и т. д., повторяющиеся слова представлены номером идентификатора, который появляется в первый раз.
Тогда результатом идизации является0 1 2 3 4 5 3
третий шаг:embedding, (только перехвачено) Предположим, что размер V равен 6, а размер dim равен 6
ПредположениеembeddingМатрица весов W = [[1,2,3,4,5,6],[7,8,9,10,11,12],[13,14,15,16,17,18] ,[19,20,21,22,23,24],[25,26,27,28,29,30],[31,32,33,34,35,36]]
затем текстembedddingдля E = [[1,2,3,4,5,6],[7,8,9,10,11,12],[13,14,15,16,17,18],[19,20,21,22,23,24],[25,26,27,28,29,30],[31,32,33,34,35,36],[19,20,21,22,23,24]]
3.1 Position Embedding
Но только символьная информация не может очень хорошо представлять текст. следующее,
Текст 1: Мне нравится этот фильм, потому что онНетСодержит человеческое мышление.
Второй текст: яНетЛюблю этот фильм, потому что он содержит человеческое мышление.
Значения текста 1 и текста 2 полностью противоположны, но для моделей естественного языка, особенно для моделей внутреннего внимания, сложно выявить различия в тексте, вызванные разным положением символов.
Формула самоконтроля выглядит следующим образом. плотный — полносвязный слой.
Соответствующий пример показан ниже.
Как показано на рисунке, само-внимание эквивалентно выполнению парных операций над всеми е. В этом процессе нет моделирующей последовательности, поэтому само-внимание в принципе не обладает способностью к моделированию последовательности.
Поэтому НЛПер предложилPosition Embedding[4], то есть положение каждого токена операцией преобразуется в вектор, а затем объединяется с исходнымtoken embeddingпровестиaddДействие, как представление текста. Это повышает чувствительность модели к токенам, и этот процесс также моделирует синтаксические функции.
Процесс воплощает идею, которая будет моделироватьОсобенности, которые трудно моделироватьпройти черезembedding, интегрированный в модель, тем самым расширяя ее возможности моделирования.
Для условной генерации текста под условием можно понимать информацию, которую сложно смоделировать в тексте, а затемembedding.
Рассматривая два требования, упомянутые в начале статьи, контролируемое количество слов и рифмование, которые отсутствуют в современных моделях генерации текста, автор предлагаетToken Embeddings,Format and Rhyme Embeddings,Segment Embeddings,Intra-Position Embeddingsчетыре дополнительныхВстраивание информации о форматеПовысить производительность модели по управляемости подсчета слов и рифмовке.
4. Встраивание информации о формате
Внедрение информации о формате также аналогично шагу встраивания маркера.Первый шаг w также является токенизированным.Поскольку сама информация не является дискретным символом, первый шаг должен быть выражен как дискретный символ.
4.1 Format and Rhyme Embeddings
Для каждой лирики знак препинания представлен c1, последнее слово представлено символом c2, а остальные символы представлены c0.
Например: я слышу, как вдалеке звонит конец звонка на выход из класса (11 слов, 1 знак препинания)
ТотFormat and Rhyme Embeddings= [с0,с0,с0,с0,с0,с0,с0,с0,с0,с0,с2,с1] 10 с0, 1 с2, 1 с1.
Это позволяет рифмующемуся слову получить отдельное представление, так что модель замечает, что слово в этой позиции отличается от других символов, поэтому оно рифмуется.
4.2 Intra-Position Embeddings
Для каждой лирики позиции символов представлены справа налево в виде p[индекс позиции].
Например:Я слышу конец звонка вон из класса, звонящего вдалеке,(11 символов, 1 знак препинания)
ТотIntra-Position Embeddings = [p11,p10,p9,p8,p7,p6,p5,p4,p3,p2,p1,p0]
Внутрипозиционные вложения позволяют модели узнать, сколько слов содержит эта лирика, когда она генерирует первое слово; порядок справа налево заставляет p1 просто указывать на рифму, которая лучше подходит для рифмы.
4.3 Segment Embeddings
Подобно встраиванию сегментов BERT, вложение сегмента каждого символа в первом предложении равно s0, а встраивание сегмента каждого символа во втором предложении равно s1.
Для текстов:
Я слышу капли дождя, падающие на зеленую траву Я слышу колокольный звон вдалеке но я не слышал Твой голос серьезно зовет меня
ТотSegment Embeddingsза
s0,s0,s0,s0,s0,s0,s0,s0,s0,s0,s0,s0, s1,s1,s1,s1,s1,s1,s1,s1,s1,s1,s1,s1, s2,s,2,s2,s2,s2,s,2,s2,s2,s2,s,2,s2,s2, s3,s3,s3,s3,s3,s3,s3, s4,s4,s4,s4,s4,s4,s4,s4,
Segment EmbeddingsМожно сделать модель, чтобы определить, в каком порядке предложения находится каждое слово.
4.4 Как интегрировать указанную выше информацию о формате в модель
Все эти три вложения учитывают контролируемое количество слов и рифму.
SongNet рассматривает три приведенных выше символа встраивания (s0, s1, c0, c1, p0, p1 и т. д.) как слова (токены), добавляет их в словарь и выполняет такое же встраивание, как текстовые символы (я, ты и т. д. ), получить векторы и сложить их вместе.
То есть будетIntra-Position Embeddings,Segment Embeddings,Format and Rhyme Embeddingsдобавитьformat_embedding.
Соответствующий код:
x = self.tok_embed(ys_inp) + self.pos_embed(ys_inp) + self.tok_embed(ys_tpl) + self.tok_embed(ys_seg) + self.tok_embed(ys_pos)
ys_inp:Token Embeddingsпредставление идентификатора
ys_tpl:Format and Rhyme Embeddingsпредставление идентификатора
ys_seg:Segment Embeddingsпредставление идентификатора
ys_pos:Intra-Position Embeddingsпредставление идентификатора
self.tok_embed:Слой встраивания символов
self.pos_embed:Слой внедрения местоположения
По сравнению с внедрением токенов в главе о внедрении, при внедрении информации о формате для представления токенов используются символы вместо слов. Идизация и встраивание также необходимы.
Вышеизложенное является первым важным моментом SongNet.Далее мы объясним, как SongNet позволяет BERT иметь возможность генерировать.
5. Стратегия маски
Первоначальная версия BERT не имеет возможности генерировать, и причина в том, чтобы начать с авторегрессионной языковой модели.
5.1 Авторегрессионные языковые модели
Авторегрессивная генеративная модель является широко используемой моделью для генерации текста. Генерировать итеративноtoken, чтобы завершить генерацию всего текста.
Как показано на рисунке ниже, светло-зеленый прямоугольникта же модель(Его можно рассматривать как одностороннюю одноуровневую сетевую модель RNN), синий прямоугольник — это текстtoken(можно рассматривать как слова).
Чтобы сгенерировать «кто вы», необходимо на первом временном шаге на основе «вы» сгенерировать «да»; на втором временном шаге на основе «да» и информации «вы» из первого временного шага сгенерировать « ВОЗ"·····
5.2 Генерация BERT: маскировка многоголового самоконтроля
BERT — это модель двунаправленного преобразователя, которая знает контекст на каждом временном шаге (то есть в позиции «вы», зная информацию «да» и «кто»), поэтому ее нельзя использовать в качестве генеративной модели.
Информация, известная на каждом временном шаге BERT, может быть выражена как:
Первый временной шаг: кто вы Второй временной шаг: кто вы Третий временной шаг: кто вы
Авторегрессивная генеративная модель, что она знает на каждом временном шаге:
Первый временной шаг: вы Второй временной шаг: вы Третий временной шаг: кто вы
Оба могут быть преобразованы треугольной матрицей, т.е.mask,Как показано ниже.SongNet превращает BERT в модель авторегрессионного языка с помощью маски на рисунке выше.Его основная реализацияMasking Multi-Head Self-Attention.
Masking Multi-Head Self-AttentionШаги алгоритма следующие:
(1) будетembeddingИнформацияmask,получитьmask_embedding(2) будетmask_embeddingВводим в слой трансформатора, получаемcontext_vector
Примечание: это решение не первое для SongNet, похожие идеи отражены в модели Microsoft Unilm [5] 2019 года.
5.3 Пусть у модели будет общая картина: глобальное многоголовое внимание
На каждом временном шаге модель не должна знать информацию о формате, но может знать информацию об общем формате текста, чтобы лучше выводить текст, соответствующий формату. Следовательно, для информации о формате не следует выполнять операцию маски, то есть внимание без маски является глобальным многоголовым вниманием.
Кроме того, Global Multi-Head Attention также объединяет информацию о содержании и информацию о формате.
Примечание. Этот процесс включает в себя реализацию внимания к себе и пока не будет расширяться.
Шаги алгоритма:
Информация о формате и информация о содержимом объединяются через слой преобразователя без маски.
А пока посмотрите на структурную схему SongNet.
Шаги алгоритма модели SongNet можно резюмировать:
(1) Внедрение информации о формате для полученияformat_embedding
(2) будетformat_embeddingполучить через добавитьformat_vector
(3) Вставьте информацию о символе и информацию о формате перед текущим временным шагом, чтобы получитьcontent_embedding
(4) будетcontent_embeddingпроходить черезMasking Multi-Head Self-Attentionполучитьcontent_vector
(5) будетcontent_vectorиcontent_embeddingвошли вместе вGlobal Multi-Head Attention, получить вывод
6. Резюме
Архитектура SongNet не имеет математического обоснования, а имеет более интуитивные настройки. Добавление вложений для управления генерацией текста может стать основной идеей в области управляемой генерации текста.
А именно: Функция->Символизация->Встраивание->Интеграция в модель
Цель этой статьи - представитьSongNetМодель используется для генерации текстов песен, а искусственный интеллект Уокера будет продолжать следить за сообщениями в блогах, созданными текстами песен. Надеюсь, вы будете уделять больше внимания.
использованная литература
- Li, P., Zhang, H., Liu, X. and Shi, S., 2020. Rigid Formats Controlled Text Generation. arXiv preprint arXiv:2004.08022.
- Devlin J, Chang MW, Lee K, Toutanova K. Bert: Pre-training of deep bidirectional transformers for language understanding. arXiv preprint arXiv:1810.04805. 2018 Oct 11.
- Garbacea, C. and Mei, Q., 2020. Neural Language Generation: Formulation, Methods, and Evaluation. arXiv preprint arXiv:2007.15780.
- Васвани А., Шазир Н., Пармар Н., Ушкорейт Дж., Джонс Л., Гомес А.Н., Кайзер Л. и Полосухин И., 2017. Внимание — это все, что вам нужно. нейронные системы обработки информации (стр. 5998-6008).
- Dong, L., Yang, N., Wang, W., Wei, F., Liu, X., Wang, Y., Gao, J., Zhou, M. and Hon, H.W., 2019. Unified language model pre-training for natural language understanding and generation. In Advances in Neural Information Processing Systems (pp. 13063-13075).
PS: Для получения дополнительной технической галантереи, пожалуйста, обратите внимание на [Публичный аккаунт | xingzhe_ai] и обсудите с ходоками!