Добавление признаков композиций в функцию потерь модели MusicTransformer для настраиваемой генерации музыки
|
Глава 1. Введение 3
1.1. MusicTransformer 3
1.1.1 Self-Attention в Transformer 3
1.1.2 Relative Position Representations 4
1.1.3 Представление композиций 6
Глава 2. Обзор литературы 7
Глава 3. Основная часть 9
3.1. Постановка задачи 9
3.2. Подбор дифференцируемого алгоритма подсчёта признака 10
3.2.1 Подход с предобученным предсказателем признака 10
3.2.2 Подход с модификацией оригинальной модели 11
3.3. Динамика 12
3.3.1 Разметка динамики 13
3.3.2 Подход с предобученным предсказателем динамики 14
3.3.3 Анализ обученной модели 16
3.3.4 Подход с модификацией исходной модели 18
3.4. Гармония 19
3.4.1 Разметка гармонии 19
3.4.2 Подход с предобученным предсказателем гармонии 20
3.4.3 Подход с модификацией исходной модели 21
3.4.4 Анализ обученных моделей 21
Заключение 23
Список литературы 23
1.1. MusicTransformer 3
1.1.1 Self-Attention в Transformer 3
1.1.2 Relative Position Representations 4
1.1.3 Представление композиций 6
Глава 2. Обзор литературы 7
Глава 3. Основная часть 9
3.1. Постановка задачи 9
3.2. Подбор дифференцируемого алгоритма подсчёта признака 10
3.2.1 Подход с предобученным предсказателем признака 10
3.2.2 Подход с модификацией оригинальной модели 11
3.3. Динамика 12
3.3.1 Разметка динамики 13
3.3.2 Подход с предобученным предсказателем динамики 14
3.3.3 Анализ обученной модели 16
3.3.4 Подход с модификацией исходной модели 18
3.4. Гармония 19
3.4.1 Разметка гармонии 19
3.4.2 Подход с предобученным предсказателем гармонии 20
3.4.3 Подход с модификацией исходной модели 21
3.4.4 Анализ обученных моделей 21
Заключение 23
Список литературы 23
Генерация музыки - задача, целью которой является получение звуковой последовательности, которая бы звучала складно, гармонично; которая бы могла быть охарактеризована человеком как музыка. Настраиваемое создание музыки отсылает к генерации, позволяющей менять параметры создаваемой музыки, такие как настроение, жанр и т.д.
Задачу генерации музыки можно рассматривать как частный случай задачи порождения последовательностей в машинном обучении. Широкое распространение здесь получили нейросетевые подходы, которые продолжают исследоваться и совершенствоваться дальше. Одним из путей их развития в контексте музыки может служить привнесение доменных знаний о музыке в модель; в данной работе будет рассмотрено привнесение таких знаний посредством добавления признаков композиций в модель через её функцию потерь. Подробнее об этом будет сказано в основной части.
Далее представлен обзор на модель MusicTransformer [1], генерирующую музыку и которая была выбрана базовой в экспериментах.
1.1 MusicTransformer
MusicTransformer [1] - это авторегрессионая модель генерации музыки, использующая в основе архитектуру Transformer [2] (вернее, её часть декодировщик1).
1.1.1 Self-Attention в Transformer
В классическом Transformer [2] используется так называемый механизм самовнимания (Self-Attention), который архитектурно устроен так.
На вход слоя самовнимания подаётся последовательность из n вещественнозначных векторов размерности D X = (x1,..., xn) G RnxD, xi G RD. Из матрицы X линейным преобразованием при помощи обучаемых матриц WQ ,WK, Wv G RDXD получаются матрицы запросов Q = XWQ, ключей K = XWK, значений V = XWv. Каждая из трёх полученных матриц размера n х D разделяется на H подматриц размера n х Dh,h = 1,... ,H, где Dh = H, обозначим их {Qh}h=i, {Kh}h=i, {И}^.
Далее для каждой «головы» h = 1,..., H считается следующее:
Zh = Attention(Qh, Kh, Vh) = Softmax (%=Л Vh, (1)
Dh
где для матрицы A G Rlxm Softmax(A) - матрица, элементы которой определяются следующим образом: Softmax(A)[i][j]2 = ^m^eXpr^j.
Затем матрицы {Zh}h=1 конкатенируются, порождая матрицу Z размера n х D. К Z при помощи обучаемой матрицы WO применяется линейное преобразование ZWO, формирующее выход слоя самовнимания.
1.1.2 Relative Position Representations
В обычном Transformer [2] за информацию о позициях отвечает слой Positional Encoding, который добавляет к скрытым представлениям2 3 входной последовательности функцию, зависящую от позиции векторов.
Авторы MusicTransformer [1] предложили использовать информацию о том, что насколько далеки векторы в смысле последовательности, в которой они находятся, поскольку для моделирования музыкальной последовательности могут быть важны относительные взаимоотношения между позициями нот, нежели их абсолютное значение.
Такой подход рассматривался ранее в статье «Self-Attention with Relative Position Representations» [3]; там в качестве такой информации использовали обучаемую матрицу эмбеддингов Er размера H х n х Dh, где для каждой головы хранятся эмбеддинги расстояний r = iq — jk между «запросом» в позиции iq и «ключом» в позиции jk. Эмбеддинги упорядочены в порядке возрастания r от — (n — 1) до 0. В оригинальной статье [3] из тензора Er для каждой «головы» h = 1,..., H получался промежуточный тензор Rh размера n х n х Dh, элементы которого вычисляются следующим образом:
„ Er[Е][п - 1 - (i - j)], 0 < i - j < n - 1,
Rh[i][j ] = <
|0 G RDh, иначе,
для Vi, j = 0,... ,n - 1. После чего вычисляется матрица Shel следующим образом:
Shel [i][j ] =
где <•, -) обозначает обычное скалярное произведение векторов из RDh. Матрица Shel содержит в себе информацию о влиянии позиций векторов из матрицы «ключей» Kh на «запросы» из матрицы Qh. Она же и используется в качестве аддитивной добавки в числителе Softmax в формуле 1:
Zh = AttentionWithRPR(Qh, Kh, Vh) = Softmax
Помимо использования относительных позиционных представлений в порождающей музыку модели авторы работы [1] предложили усовершенствовать алгоритм вычисления {Srhel}H=i, который в описанной выше вариации требует O(n2D) дополнительной памяти для хранения тензоров {Rh}H=1, что неподъёмно для больших п, что, в свою очередь, является обычным делом для кодирования музыкальных композиций, о котором будет сказано позднее. Усовершенствование уменьшает потребление памяти до O(nD) и состоит в следующем.
Вместо использования промежуточного тензора Rh предлагается напрямую умножать матрицу «запросов» Qh на матрицу эмбеддингов Er [h]T, производя матрицу Bh размера п х п. Эта матрица также как и Srhel содержит информацию о влиянии позиций векторов из матрицы «ключей» Kh на «запросы» из матрицы Qh, только её элементы необходимо правильно выравнять. Для этого Bh дополняется справа столбцом из нулей, её размер теперь п х (п + 1). Затем над ней производится операция Reshape(Bh,п + 1, п), которая для произвольной матрицы A G Rkxl и для row_num, col_num G N таких, что верно row_num • col_num = k • l описывается так:
Reshape(A, row_num, col_num)[i][j] = Flatten(A)[i • col_num + j], где i = 0,..., row_num — 1, j = 0,..., col_num — 1, а операция Flatten(A) - вытягивание матрицы A в вектор-строку посредством последовательного конкатенирования её строк. Для получения матрицы Srhel необходимо взять последние n строк.
1.1.3 Представление композиций
Первоначально Transformer [2] - модель, работающая с текстовыми последовательностями, для которых естественно разбиение на дискретные сег- менты4 (отдельные буквы, отдельные слова, части слов). Таким образом, для переноса модели в музыкальную область необходимо использовать способ дискретного представления композиций; авторы MusicTransformer [1] предложили применить переработанную кодировку из работы «This Time with Feeling: Learning Expressive Musical Performance» [4]. Авторы последней статьи адаптировали цифровой формат представления композиций MIDI, содержащий информацию об использующихся инструментах, нажатых клавишах, силе нажатия, темпе и пр. Музыкальная композиция в кодировке работы [4] представляется как последовательность событий из словаря 413 следующих событий:
1. 128 событий NOTE-ON, обозначающих начало проигрывания ноты с одной из 128-и высот звука в представлении MIDI.
2. 128 событий NOTE-OFF, обозначающих конец проигрывания ранее сыгранной ноты с одной из 128-и высот звука в представлении MIDI.
3. 125 событий TIME-SHIFT, обозначающих паузу длиной от 8 миллисекунд до 1 секунды.
4. 32 события VELOCITY, обозначающих силу нажатия на ноты, которые будут сыграны далее (до следующего события VELOCITY).
Авторы MusicTransformer [1] изменили приведённый выше словарь: в нём 125 событий TIME-SHIFT, где между двумя соседними событиями разница в паузе в 8 миллисекунд, заменили на 100 событий TIME-SHIFT, обозначающих паузу длиной от 10 миллисекунд до 1 секунды, разница между соседними событиями - 10 миллисекунд.
Задачу генерации музыки можно рассматривать как частный случай задачи порождения последовательностей в машинном обучении. Широкое распространение здесь получили нейросетевые подходы, которые продолжают исследоваться и совершенствоваться дальше. Одним из путей их развития в контексте музыки может служить привнесение доменных знаний о музыке в модель; в данной работе будет рассмотрено привнесение таких знаний посредством добавления признаков композиций в модель через её функцию потерь. Подробнее об этом будет сказано в основной части.
Далее представлен обзор на модель MusicTransformer [1], генерирующую музыку и которая была выбрана базовой в экспериментах.
1.1 MusicTransformer
MusicTransformer [1] - это авторегрессионая модель генерации музыки, использующая в основе архитектуру Transformer [2] (вернее, её часть декодировщик1).
1.1.1 Self-Attention в Transformer
В классическом Transformer [2] используется так называемый механизм самовнимания (Self-Attention), который архитектурно устроен так.
На вход слоя самовнимания подаётся последовательность из n вещественнозначных векторов размерности D X = (x1,..., xn) G RnxD, xi G RD. Из матрицы X линейным преобразованием при помощи обучаемых матриц WQ ,WK, Wv G RDXD получаются матрицы запросов Q = XWQ, ключей K = XWK, значений V = XWv. Каждая из трёх полученных матриц размера n х D разделяется на H подматриц размера n х Dh,h = 1,... ,H, где Dh = H, обозначим их {Qh}h=i, {Kh}h=i, {И}^.
Далее для каждой «головы» h = 1,..., H считается следующее:
Zh = Attention(Qh, Kh, Vh) = Softmax (%=Л Vh, (1)
Dh
где для матрицы A G Rlxm Softmax(A) - матрица, элементы которой определяются следующим образом: Softmax(A)[i][j]2 = ^m^eXpr^j.
Затем матрицы {Zh}h=1 конкатенируются, порождая матрицу Z размера n х D. К Z при помощи обучаемой матрицы WO применяется линейное преобразование ZWO, формирующее выход слоя самовнимания.
1.1.2 Relative Position Representations
В обычном Transformer [2] за информацию о позициях отвечает слой Positional Encoding, который добавляет к скрытым представлениям2 3 входной последовательности функцию, зависящую от позиции векторов.
Авторы MusicTransformer [1] предложили использовать информацию о том, что насколько далеки векторы в смысле последовательности, в которой они находятся, поскольку для моделирования музыкальной последовательности могут быть важны относительные взаимоотношения между позициями нот, нежели их абсолютное значение.
Такой подход рассматривался ранее в статье «Self-Attention with Relative Position Representations» [3]; там в качестве такой информации использовали обучаемую матрицу эмбеддингов Er размера H х n х Dh, где для каждой головы хранятся эмбеддинги расстояний r = iq — jk между «запросом» в позиции iq и «ключом» в позиции jk. Эмбеддинги упорядочены в порядке возрастания r от — (n — 1) до 0. В оригинальной статье [3] из тензора Er для каждой «головы» h = 1,..., H получался промежуточный тензор Rh размера n х n х Dh, элементы которого вычисляются следующим образом:
„ Er[Е][п - 1 - (i - j)], 0 < i - j < n - 1,
Rh[i][j ] = <
|0 G RDh, иначе,
для Vi, j = 0,... ,n - 1. После чего вычисляется матрица Shel следующим образом:
Shel [i][j ] =
Zh = AttentionWithRPR(Qh, Kh, Vh) = Softmax
Помимо использования относительных позиционных представлений в порождающей музыку модели авторы работы [1] предложили усовершенствовать алгоритм вычисления {Srhel}H=i, который в описанной выше вариации требует O(n2D) дополнительной памяти для хранения тензоров {Rh}H=1, что неподъёмно для больших п, что, в свою очередь, является обычным делом для кодирования музыкальных композиций, о котором будет сказано позднее. Усовершенствование уменьшает потребление памяти до O(nD) и состоит в следующем.
Вместо использования промежуточного тензора Rh предлагается напрямую умножать матрицу «запросов» Qh на матрицу эмбеддингов Er [h]T, производя матрицу Bh размера п х п. Эта матрица также как и Srhel содержит информацию о влиянии позиций векторов из матрицы «ключей» Kh на «запросы» из матрицы Qh, только её элементы необходимо правильно выравнять. Для этого Bh дополняется справа столбцом из нулей, её размер теперь п х (п + 1). Затем над ней производится операция Reshape(Bh,п + 1, п), которая для произвольной матрицы A G Rkxl и для row_num, col_num G N таких, что верно row_num • col_num = k • l описывается так:
Reshape(A, row_num, col_num)[i][j] = Flatten(A)[i • col_num + j], где i = 0,..., row_num — 1, j = 0,..., col_num — 1, а операция Flatten(A) - вытягивание матрицы A в вектор-строку посредством последовательного конкатенирования её строк. Для получения матрицы Srhel необходимо взять последние n строк.
1.1.3 Представление композиций
Первоначально Transformer [2] - модель, работающая с текстовыми последовательностями, для которых естественно разбиение на дискретные сег- менты4 (отдельные буквы, отдельные слова, части слов). Таким образом, для переноса модели в музыкальную область необходимо использовать способ дискретного представления композиций; авторы MusicTransformer [1] предложили применить переработанную кодировку из работы «This Time with Feeling: Learning Expressive Musical Performance» [4]. Авторы последней статьи адаптировали цифровой формат представления композиций MIDI, содержащий информацию об использующихся инструментах, нажатых клавишах, силе нажатия, темпе и пр. Музыкальная композиция в кодировке работы [4] представляется как последовательность событий из словаря 413 следующих событий:
1. 128 событий NOTE-ON, обозначающих начало проигрывания ноты с одной из 128-и высот звука в представлении MIDI.
2. 128 событий NOTE-OFF, обозначающих конец проигрывания ранее сыгранной ноты с одной из 128-и высот звука в представлении MIDI.
3. 125 событий TIME-SHIFT, обозначающих паузу длиной от 8 миллисекунд до 1 секунды.
4. 32 события VELOCITY, обозначающих силу нажатия на ноты, которые будут сыграны далее (до следующего события VELOCITY).
Авторы MusicTransformer [1] изменили приведённый выше словарь: в нём 125 событий TIME-SHIFT, где между двумя соседними событиями разница в паузе в 8 миллисекунд, заменили на 100 событий TIME-SHIFT, обозначающих паузу длиной от 10 миллисекунд до 1 секунды, разница между соседними событиями - 10 миллисекунд.
В рамках данной работы был рассмотрен метод настраиваемой генерации музыки через добавление в функцию потерь модели отклонения значения признака от сгенерированной композиции. Были сформулированы два подхода его реализации: первый состоит в использовании предобученного предсказателя признака, второй - в модификации исходной модели для предсказания признака. Оба подхода были протестированы на примере модели MusicTransformer [1].
В рамках экспериментов были рассмотрены два признака композиций: динамика и гармония. Для каждого из них была собрана разметка на композициях, в случае динамики был дополнительно придуман и реализован алгоритм разметки. Для каждого признака были протестированы оба подхода.
Для динамики в рамках первого метода удалось обучить модель, для которой было экспериментально установлено следование данному признаку. Обусловливание на динамику получилось логичным и музыкальным: малые её значения порождают тихие, спокойные части, пиковые значения в динамике - согласованные с остальной композицией кульминационные моменты.
Предполагается, что рассмотренные подходы можно успешно применить и к другим признакам композиций и обобщить для текстовых моделей и признаков текстов.
В рамках экспериментов были рассмотрены два признака композиций: динамика и гармония. Для каждого из них была собрана разметка на композициях, в случае динамики был дополнительно придуман и реализован алгоритм разметки. Для каждого признака были протестированы оба подхода.
Для динамики в рамках первого метода удалось обучить модель, для которой было экспериментально установлено следование данному признаку. Обусловливание на динамику получилось логичным и музыкальным: малые её значения порождают тихие, спокойные части, пиковые значения в динамике - согласованные с остальной композицией кульминационные моменты.
Предполагается, что рассмотренные подходы можно успешно применить и к другим признакам композиций и обобщить для текстовых моделей и признаков текстов.
Подобные работы
- Добавление признаков композиций в функцию потерь модели MusicTransformer для настраиваемой генерации музыки
Дипломные работы, ВКР, математика. Язык работы: Русский. Цена: 4600 р. Год сдачи: 2023





