Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Шолле Ф. - Глубокое обучение на Python (Библиотека программиста) - 2023.pdf
Скачиваний:
5
Добавлен:
07.04.2024
Размер:
11.34 Mб
Скачать

12.1. Генерирование текста    451

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

12.1. ГЕНЕРИРОВАНИЕ ТЕКСТА

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

Генерирование.последовательностей.данных.не.ограничивается.созданием.художественных.произведений..Этот.прием.с.успехом.используется.для.синтеза. речи.и.генерирования.диалогов.для.чат-ботов..Функция.Smart.Reply,.представ- ленная.компанией.Google.в.2016.году.и.способная.автоматически.генерировать. короткие.ответы.на.электронные.письма.или.текстовые.сообщения,.основана. на.подобных.приемах.

12.1.1. Краткая история генеративного глубокого обучения для генерирования последовательностей

В.конце.2014.года.даже.в.сообществе.машинного.обучения.мало.кто.был.знаком. с.аббревиатурой.LSTM..Успешное.применение.методов.генерации.последовательностей.данных.с.помощью.рекуррентных.сетей.начало.приобретать.широкую. известность.только.в.2016.году..Но.сами.методы.имеют.довольно.давнюю.историю,.начиная.с.разработки.алгоритма.LSTM.в.1997.году..Этот.новый.алгоритм. первое.время.использовался.для.генерации.текстов.символ.за.символом.

В.2002.году.Дуглас.Эк,.а.затем.и.исследователи.в.швейцарской.лаборатории. имени.Шмидхубера.применили.алгоритм.LSTM.для.генерации.музыки.и.получили.многообещающие.результаты..В.настоящее.время.Эк.занимается.исследованиями.в.подразделении.Google.Brain..В.2016.году.он.основал.новую.

452    Глава 12. Генеративное глубокое обучение

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

В.конце.2000-х.—.начале.2010-х.годов.Алекс.Грейвз.проделал.важную.нова- торскую.работу.по.использованию.рекуррентных.сетей.для.генерации.последовательностей.данных..В.частности,.в.2013.году.он.работал.над.комбинацией. рекуррентной.и.полносвязной.сетей.для.получения.человекоподобного.почерка,. используя.временные.последовательности.позиций.ручки,.и.эта.работа.расценивается.некоторыми.как.поворотный.момент1..Так,.именно.тогда.данное.конкретное.применение.нейронных.сетей.открыло.мне.понятие.мечтающих машин. и.подтолкнуло.начать.разработку.фреймворка.Keras..В.2013.году.Грейвз.оставил. похожее.закомментированное.замечание,.скрытое.в.файле.LaTeX,.выгруженном. на.сервер.препринтов.arXiv:.«Генерация.последовательностей.данных.—.это. самая.близкая.к.воплощению.мечта.компьютеров»..Несколько.лет.спустя.мы. принимаем.такие.разработки.как.нечто.само.собой.разумеющееся;.однако.в.то. время.трудно.было.наблюдать.за.демонстрациями.Грейвза.и.не.приходить.в.восторг.от.открывающихся.возможностей.

Затем,.примерно.в.2017–2018.годах.появилась.архитектура.Transformer,.исполь- зовавшая.рекуррентные.нейронные.сети.не.только.для.задач.обработки.естественного.языка,.но.и.для.моделей.генерирования.последовательностей,.в.частности. моделирования языка .(генерации.текста.на.уровне.слов)..Самым.известным. примером.генеративной.модели.с.архитектурой.Transformer.является,.пожалуй,. модель.GPT-3.с.175.миллиардами.параметров,.обученная.стартапом.OpenAI.на. поразительно.большом.текстовом.корпусе,.который.включал.множество.книг,. доступных.в.цифровом.формате,.статьи.в.«Википедии».и.значительный.объем. текста,.полученного.сканированием.интернета..В.2020.году.модель.GPT-3.даже. попала.в.заголовки.газет.благодаря.своей.способности.генерировать.правдоподоб- но.выглядящие.абзацы.текста.практически.на.любую.тему.—.такое.ее.мастерство. вызвало.кратковременную.волну.ажиотажа,.достойную.самого.жаркого.лета.ИИ.

12.1.2. Как генерируются последовательности данных

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

1. Graves A..Generating.Sequences.With.Recurrent.Neural.Networks.//.arXiv,.2013,.https:// arxiv.org/abs/1308.0850.

12.1. Генерирование текста    453

на.предыдущие.токены..Например,.для.входной.последовательности.The cat is on the .модель.обучается .предсказывать .mat .— .следующее .целевое .слово..Как. обычно, .при .работе .с .текстовыми .данными .в .роли .токенов .часто .выступают. слова .или .символы, .и .любая .сеть, .моделирующая .вероятность .появления. следующего .токена .на .основе .предыдущих, .называется .языковой моделью.. Языковая.модель.фиксирует.скрытое пространство .языка:.его.статистическую.структуру.

После.получения.такой.обученной.языковой.модели.мы.можем.извлекать образцы.из.нее.(генерировать.новые.последовательности):.передать.ей.начальную. строку.текста.(так.называемые.кондиционные данные),.попросить.сгенерировать. следующий.символ.или.слово.(можно.даже.сгенерировать.несколько.слов.сразу),.добавить.сгенерированный.вывод.в.конец.предыдущих.входных.данных. и.повторить.процесс.много.раз.(рис..12.1)..Этот.цикл.позволяет.генерировать. последовательности.произвольной.длины,.отражающие.структуру.данных,.на. которых.обучалась.модель:.последовательности,.которые.выглядят.почти.как. предложения,.написанные.человеком.

Рис. 12.1. Процесс пословной генерации текста с использованием языковой модели

12.1.3. Важность стратегии выбора

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

454    Глава 12. Генеративное глубокое обучение

является.синонимом.слова.«случайный»)..Таким.образом,.если.слово.имеет. вероятность.0,3.стать.следующим.в.предложении,.согласно.модели.мы.выберем. его.в.30.%.случаев..Обратите.внимание,.что.жадный.выбор.тоже.может.исполь- зоваться.для.выбора.из.распределения.вероятностей,.когда.какой-то.символ. имеет.вероятность.1,.а.все.остальные.—.вероятность.0.

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

Зачем.может.понадобиться.увеличивать.или.уменьшать.случайную.составля­ ющую?.Рассмотрим.крайний.случай:.чисто.случайный.выбор,.когда.следующее. слово.выбирается.из.равномерно.распределенных.вероятностей.и.каждое.слово. одинаково.вероятно..Эта.схема.имеет.максимальную.случайность;.иными.словами,.это.распределение.вероятностей.имеет.максимальную.энтропию..Естественно,.она.не.произведет.ничего.интересного..С.другой.стороны,.жадный.выбор. тоже.не.производит.ничего.интересного.и.не.имеет.случайной.составляющей:. соответствующее.распределение.вероятностей.имеет.минимальную.энтропию..

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

Для.управления.величиной.случайности.в.процессе.выбора.введем.параметр,. который.назовем.температурой softmax,.характеризующий.энтропию.распределения.вероятностей,.используемую.для.выбора:.она.будет.определять.степень. необычности .или.предсказуемости.выбора.следующего.символа..С.учетом. значения.temperature .и.на.основе.оригинального.распределения.вероятностей. (результата.функции.softmax.модели).будет.вычисляться.новое.распределение. путем.взвешивания.вероятностей,.как.показано.ниже.

12.1. Генерирование текста    455

Листинг 12.1. Взвешивание распределения вероятностей с учетом значения температуры

original_distribution — это одномерный массив NumPy значений вероятностей, сумма которых должна быть равна 1; temperature — это коэффициент, определяющий уровень энтропии выходного распределения

import numpy as np

def reweight_distribution(original_distribution, temperature=0.5): distribution = np.log(original_distribution) / temperature distribution = np.exp(distribution)

return distribution / np.sum(distribution)

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

Чем.выше.температура,.тем.больше.энтропия.распределения.вероятностей.и.тем. более.неожиданными.и.менее.структурированными.будут.генерируемые.данные..

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

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