Изменения

Перейти к: навигация, поиск

Участница:DespairedController/Черновик:Распознавание речи

5470 байт добавлено, 16:40, 21 января 2021
м
Конформер
==Обучение с частичным привлечением учителя для автоматического распознавания речи==
[[Файл:ASR_new_sota.png|600px|thumb|right|'''Рисунок 1.''' $WER$ SOTA алгоритмов на датасетах LibriSpeech test-clean/test-other. $WER$ описываемого в статье алгоритма отмечен красной точкой. [https://arxiv.org/pdf/2010.10504.pdf Источник]]]
Для обучения современных систем распознавания речи требуются тысячи часов размеченной речи, однако получение размеченных данных в необходимом объеме (особенно с учетом разнообразия существующих языков) затруднительно. Это повлияло на то, что сейчас в машинном обучении для распознавания речи успешно используется [[Обучение с частичным привлечением учителя| обучение с частичным привлечением учителя]], которое позволяет сначала обучать модель на большом объеме неразмеченных данных, а потом корректировать ее при помощи размеченных.
Часто получить размеченные данные в необходимых объемах является сложно реализуемой задачей, особенно Одним из примеров обучения с учетом разнообразия существующих языков: частичным привлечением учителя для современных систем автоматического распознавания речи требуются тысячи часов размеченной речи для достижения приемлемой производительностиявляется подход, впервые представленный в статье<ref>''Yu Zhang, James Qin, Daniel S. Также изучение исключительно на размеченных данных не похоже на естественный процесс овладения языкомPark, Wei Han, Chung-Cheng Chiu, Ruoming Pang, напримерQuoc V. Le, у детейYonghui Wu'' Pushing the Limits of Semi-Supervised Learning for Automatic Speech Recognition[https://arxiv.org/pdf/2010.10504.pdf]</ref>, которые учатсяоснованный на комбинации алгоритмов [[Распознавание_речи#Noisy_student | noisy student]], слушая окружающую их речь[[Распознавание_речи#wav2vec | wav2vec]] и использовании модели [[Распознавание_речи#Конформер| Конформера]]. Такой метод позволил уменьшить $WER$ на наборах данных LibriSpeech test-clean/test-other с $1.7\%/3.3\%$ (предыдущий ''state-of-the-art'') до $1.4\%/2.6\%$ (Рисунок 1).<br>
Это повлияло Основная идея состоит в том, что множество моделей Конформеров при помощи алгоритма ''wav2vec'' предварительно обучается на тонеразмеченных данных, что сейчас в машинном обучении при этом одновременно с этим на основе них генерируются размеченные. Таким образом, неразмеченные данные используются для двух целей: для обучения модели и для генерации размеченных данных, которые используются для распознавания речи успешно используется [[Обучение с частичным привлечением учителя#Самообучение (Self Training)| самообучение]]дальнейшего обучения модели алгоритмом ''noisy student''.
Одним из примеров алгоритмов самообучения является подход, впервые представленный в статье===Конформер===[[httpsФайл://arxivConformer.org/pdf/2010png|600px|thumb|right|'''Рисунок 2.10504.pdf''' Общая схема Конформера (a) и схема блоков Конформера (b)]], основанный на комбинации алгоритмов [[Распознавание_речи#Noisy_student Трансформер| noisy studentТрансформер]]<sup>[на 21.01.21 не создан]</sup>, использующий [[Распознавание_речиМеханизм внимания#wav2vec Self-Attention| wav2vecмеханизм самовнимания]] и использовании модели , хорошо захватывает глобальный контекст, однако не очень хорошо извлекает локальные признаки. [[Распознавание_речи#Конформер| КонформерСверточные нейронные сети]], наоборот, эффективно используют локальные признаки, но требуют большого числа слоев для захвата глобального контекста. Конформер (англ. ''Conformer'') комбинирует сверточные слои с механизмом самовнимания. Такой метод позволил уменьшить $WER$ на наборах данных LibriSpeech test-clean/test-other с составляет $1.79\%/3.39\%$ (предыдущий ''state-of-the-art'') до $1.4\%/2 Конформер сначала обрабатывает входные данные с помощью сверточной нейронной сети, состоящей из слоя [[Сверточные нейронные сети#Пулинговый слой|пулинга]], [[Нейронные сети, перцептрон|полносвязного слоя]] и [[Практики реализации нейронных сетей#Дропаут|дропаута]], а затем с помощью последовательности блоков Конформера.6\%$. <br>
Основная его идея состоит в томБлоки Конформера {{---}} это последовательность из двух модулей прямой связи (англ. ''feed forward''), что множество моделей Конформеров при помощи алгоритма wav2vec предварительно обучается на неразмеченных данныхмежду которыми расположены модуль многоголового самовнимания (англ. ''Multi-Head Self Attention'') и сверточный модуль, при этом одновременно с этим на основе них генерируются размеченныепоследующей нормализацией слоя (англ. Таким образом, неразмеченные данные используются для двух целей: для обучения модели и для генерации размеченных данных, которые используются для дальнейшего обучения модели алгоритмом noisy student''layer normalization'').
===Конформер===[[Файл:ConformerMulti_Head_Self_Attention_module.png|600px400px|thumb|right|'''aРисунок 3.''' Схема архитектуры Конформер.<br> '''b.''' Блок конформера.]]Архитектура Трансформер, основанная на [[Механизм внимания#Self-Attention|самовнимании]] позволяет фиксировать взаимодействия на большом расстоянии, однако не очень хорошо извлекает точные паттерны локальных признаков. [[Сверточные нейронные сетиМодуль многоголового самовнимания]], наоборот, эффективно используют локальные признаки, но требуют большого числа слоев для захвата глобального контекста. Архитектура Конформер (англ. ''Conformer'') берет лучшее от двух подходов, комбинируя свертки и механизм самовнимания, достигая $WER$ $1.9\%/3.9\%$ на LibriSpeech.
Кодировщик сначала обрабатывает входные данные с помощью сверточной нейронной сети, состоящей из слоя [[Сверточные нейронные сети#Пулинговый слой|пулинга]], [[Нейронные сети, перцептрон|полносвязного слоя]] и [[Практики реализации нейронных сетей#Дропаут|дропаута]]), а затем с помощью последовательности блоков Конформера.'''Модуль многоголового самовнимания'''
Блок Конформера состоит В модуле используется блок многоголового внимания с относительным позиционным кодированием (англ. ''Multi-Head Attention with Relational Positional Encoding''). Такой блок (изначально часть архитектуры Трансформер-XL<ref>''Zihang Dai, Zhilin Yang, Yiming Yang, Jaime Carbonell, Quoc V. Le, Ruslan Salakhutdinov'' Transformer-XL: Attentive Language Models Beyond a Fixed-Length Context[https://arxiv.org/pdf/1901.02860.pdf]</ref>) используется с целью исправить два недостатка Трансформера: ограничение на длину входа (что не позволяет модели, например, использовать слово, которое появилось несколько предложений назад) и фрагментацию контекста (последовательность разбивается на несколько блоков, каждый из двух модулей прямой связи которых обучается независимо). Для достижения этой цели используются два механизма: механизм повторения (англ. ''feed forwardreccurence mechanism''), между которыми расположены модуль многоголового самовнимания и относительное позиционное кодирование (англ. ''Multi-Head Self Attentionrelational positional encoding'') . Механизм повторения позволяет использовать информацию из предыдущих сегментов. Как и сверточный модульв оригинальной версии, Трансформер-XL обрабатывает первый сегмент токенов, с последующим слоем нормализациино сохраняет выходные данные скрытых слоев. При обработке следующего сегмента каждый скрытый слой получает два входа: результат предыдущего скрытого слоя этого сегмента, как в Трансформере, и результат предыдущего скрытого слоя из предыдущего сегмента, который позволяет модели создавать зависимости от далеких сегментов.
[[ФайлОднако, с использованием механизма повторения возникает новая проблема:Multi_Head_Self_Attention_moduleпри использовании исходного позиционного кодирования каждый сегмент кодируется отдельно, и в результате токены из разных сегментов закодированы одинаково.png|400px|thumb|right|Модуль многоголового самовнимания]]
'''Модуль многоголового самовнимания'''Относительное позиционное кодирование основано на относительном расстоянии между токенами. Для подсчета оценки, на основании которой на некоторое скрытое состояние будет "обращено внимание", используется относительное расстояние между токенами вместо абсолютного положения текущего токена, а так же два вектора параметров: первый регулирует важность содержания другого токена, а второй — важность расстояния между токенами.
В модуле используется блок Использование модуля многоголового внимания самовнимания с относительным позиционным кодированием (англ. ''Multi-Head Attention with Relational Positional Encoding''). Использование относительного позиционного кодирования[https://arxiv.org/pdf/1901.02860.pdf] позволяет модулю самовнимания сети лучше обобщать обучаться при различной длине ввода, а результирующий кодировщик результирующая архитектура получается более устойчив устойчивой к неоднородности длины высказывания.
'''Сверточный модуль'''
[[Файл:Convolution_module.png|600px|thumb|right|'''Рисунок 4.''' Сверточный модуль]]Последовательность слоев в сверточном модуле начинается с стробирующего механизмауправляемого модуля<ref>''N. Dauphin, Angela Fan, Michael Auli, David Grangier'' Language Modeling with Gated Convolutional Networks[https://arxiv.org/pdf/1612.08083.pdf]</ref>: сверточного слоя с ядром $1 \times 1$ (англ. ''pointwise convolution'') и стробированного управляемого линейного блока (англ. ''gated linear unit''). Управляемый линейный блок {{---}} слой нейронной сети, определяемый как покомпонентное произведение двух линейных преобразований входных данных, [[Практики реализации нейронных сетей#Функции активации|функция активации]] одного из которых {{---}} сигмоида. Использование стробированного управляемого линейного блока уменьшает [[Сверточные нейронные сети#Residual block|проблему исчезающего градиента]]. После сверточного слоя используется [[Batch-normalization|пакетная нормализация]].
В модуле используется функция активации ''swish'': $swish(x) = \dfrac{x}{1 + e^{- \beta x}}$.
'''Модули прямой связи'''
[[Файл:FFN.png|600px|thumb|right|'''Рисунок 5.''' Схема модуля прямой связи]]В отличие от архитектуры ТрансформерТрансформера, в которой котором единственный модуль прямой связи следует за модулем внимания и состоит из двух линейных преобразований и нелинейной активации между ними, в Конформере Конформер представляет собой два модуля прямой связи, состоящие состоящих из слоя нормализации и двух линейных слоев. Кроме того , для регуляризации используется функция активации ''swish'' и [[Практики реализации нейронных сетей#Дропаут|дропаут]].
===wav2vec===
Подход wav2vec <ref>''Alexei Baevski, Henry Zhou, Abdelrahman Mohamed, Michael Auli'' wav2vec 2.0: A Framework for Self-Supervised Learning of Speech Representations[https://arxiv.org/pdf/2006.11477.pdf]</ref> основан на самообучении на [[Распознавание речи#Признаки|мел спектрограммах]].
'''Модель'''
# ''Энкодер признаков'' (англ. feature encoderFeature Encoder) $f: X \to Z$ реализован на основе [[Сверточные нейронные сети#Сверточный слой|сверточного слоя]]. Преобразует мел спектрограммы $X$, разбитые на $T$ временных интервалов, в наборы признаков $\{z_1, \dots, z_T\}$, которые описывают исходные данные в каждом из $T$ интервалов. <br># ''Контекстная сеть'' (англ. context networkContext Network) $g: Z \to C$ реализована на основе линейного слоя и слоя, состоящего из $N$ Конформеровблоков Конформера. Преобразует наборы признаков $\{z_1, \dots, z_T\}$, полученные в результате работы энкодера признаков, в контекстные вектора $\{c_1, \dots, c_T\}$. <br># ''Модуль линейного слоя'' (англ. linear layer moduleLinear Layer Module) $u: Z \to T$ реализован на основе линейного слоя. Преобразует наборы признаков $\{z_1, \dots, z_T\}$, полученные в результате работы энкодера признаков, в целевые вектора $\{t_1, \dots, t_T\}$. <br>
{|align="center"
|-valign="top"
|[[Файл:wav2vec.png | 600px | thumb | '''Рисунок 6.''' Схема обучения модели wav2vec]]
|}
# Исходные мел спектрограммы $X$ проходят через через энкодер признаков $f$ и таким образом преобразуются в $T$ наборов признаков $\{z_1, \dots, z_T\}$. <br>
# $\{z_1, \dots, z_T\}$ преобразуются в контекстные и целевые вектора:
## Случайное подмножество векторов $z_{\varphi_(n)}$ маскируется , и каждый $z \in z_{\varphi_(n)}$ заменяется на обученный вектор признаков. Полученное новое множество признаков $\{z'_1, \dots, z'_T\}$ подается на вход контекстной сети и преобразуется в контекстные вектора $\{c_1, \dots, c_T\}$.
## Множество $\{z_1, \dots, z_T\}$ без замаскированных наборов признаков подается на вход модуля линейного слоя $u$ и преобразуется в целевые вектора $\{t_1, \dots, t_T\}$.
# Для полученных контекстных и целевых векторов считается функция потерь $L$, в качестве которой используется функция ''Contrastive Loss''.
Суть данного подхода состоит в том, что маскируются наборы признаков для некоторых из $T$ интервалов, и путем минимизации функции потерь модель на основе $N$ Конформеров блоков Конформера учится подбирать наиболее похожий вектор, характеризующий признаки замаскированных участков. При этом модуль линейного слоя позволяет получить целевые вектора для замаскированных данных и, следовательно, таким образом получется, что модель обучается на размеченных данных.
===Noisy student===
Вариация классического алгоритма [[Обучение с частичным привлечением учителя#Самообучение (Self Training)| самообучения]]: на каждой итерации модель-ученик обучается на аугментированных данных. В применении к распознаванию речи, используется метод аугментации ''SpecAugment''. ''SpecAugment'' применяет к [[Распознавание речи#Признаки|мел спектрограмме]] три вида деформаций: искажение времени, маскировку блока последовательных временных шагов и маскировку блока последовательных частотных каналов. Таким образом, при обучении на зашумленных с помощью ''SpecAugment'' данных сеть обучается на признаках, устойчивых к деформации во времени, частичной потере частотной информации и потере небольших сегментов речи.
'''Данные'''
1. Размеченные данные Набор размеченных данных $\{(x_1, y_1), \dots, (x_n, y_n)\}S$ <br>2. Неразмеченные данные Набор неразмеченных данных $U$ <br>3. Обученная [[Распознавание речи#Языковая модель| языковая модель]] $LM$. <br>4. Набор предобученных с помощью ''wav2vec'' моделей $\{\tilde{x}_1M_0, \dots, \tilde{x}_m\}M_n$.
'''Алгоритм'''
1. Обучить модель-учителя Модель $MM_0$ настраивается (англ. ''fine-tune'') на размеченных аугментированных наборе данных$S$ с использованием ''SpecAugment''.$M = M_0$<br>2. Разметить Модель $M$\{\tilde{x}_1сливается (англ. ''fuse'')<ref>''Caglar Gulcehre, Orhan Firat. Kelvin Xu, Kyunghyun Cho, Loic Barrault, Huei-Chi Lin, Fethi Bougares, \dotsHolger Schwenk, \tilde{x}_m\}$ Yoshua Bengio'' On Using Monolingual Corpora in Neural Machine Translation [https://arxiv.org/pdf/1503.03535.pdf]</ref> с помощью моделью $MLM$. <br>3. Обучить модель-ученика Набор данных $U$ размечается с помощью $M'$ на полученных на предыдущем шаге метках $\{\tilde{y}_1, \dots, \tilde{y}_m\}$ и получается новый набор данных $\{x_1, \dots, x_m\}A$. <br>4. Наборы $M = M'S$, вернуться к шагу 2. '''Noisy student и распознавание речи''' В применении к распознаванию речи, алгоритм будет несколько отличаться: на каждой итерации модель-учитель $MA$ сначала будет сливаться(англ. ''fuse'') с объединяются, производится настройка предобученной языковой моделью модели $LMM_i$. Для аугментации на объединенном наборе данных используется метод с использованием ''SpecAugment''. SpecAugment применяет к мел спектрограмме три вида деформаций: искажение времени, маскировка блока последовательных временных шагов и маскировка блока последовательных частотных каналов<br>5. Таким образомЕсли перебраны не все модели из набора, при обучении на зашумленных с помощью SpecAugment данных сеть обучается на признакахто $M = M_{i + 1}$, устойчивых происходит возвращение к деформации во времени, частичной потере частотной информации и потере небольших сегментов речишагу $2$.
==Применение==
89
правок

Навигация