Изменения

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

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

1532 байта добавлено, 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 Источник]]]
Для обучения современных систем распознавания речи требуются тысячи часов размеченной речи, однако получение размеченных данных в необходимом объеме (особенно с учетом разнообразия существующих языков) затруднительно. Это повлияло на то, что сейчас в машинном обучении для распознавания речи успешно используется [[Обучение с частичным привлечением учителя| обучение с частичным привлечением учителя]], которое позволяет сначала обучать модель на большом объеме неразмеченных данных, а потом корректировать ее при помощи размеченных.
Для Одним из примеров обучения современных систем распознавания речи требуются тысячи часов размеченной речи, однако получение размеченных данных в необходимом объеме (особенно с учетом разнообразия существующих языков) затруднительно. Также изучение исключительно на размеченных данных не похоже на естественный процесс овладения языком, например, у детей, которые учатся, слушая окружающую их речь. Это повлияло на то, что сейчас в машинном обучении для распознавания речи успешно используется [[Обучение с частичным привлечением учителя#Самообучение (Self Training)| самообучение]]. Одним из примеров применения самообучения для автоматического распознавания речи является подход, впервые представленный в статье<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'' предварительно обучается на неразмеченных данных, при этом одновременно с этим на основе них генерируются размеченные. Таким образом, неразмеченные данные используются для двух целей: для обучения модели и для генерации размеченных данных, которые используются для дальнейшего обучения модели алгоритмом ''noisy student''.
===Конформер===
[[Файл:Conformer.png|600px|thumb|right|'''Рисунок 12.''' Общая схема Конформера (a) и схема блоков Конформера (b)]][[Трансформер|Трансформер]]<sup>[на 21.01.21 не создан]</sup>, использующий [[Механизм внимания#Self-Attention|механизм самовнимания]], хорошо захватывает глобальный контекст, однако не очень хорошо извлекает локальные признаки. [[Сверточные нейронные сети]], наоборот, эффективно используют локальные признаки, но требуют большого числа слоев для захвата глобального контекста. Конформер (англ. ''Conformer'') комбинирует сверточные слои с механизмом самовнимания. $WER$ на LibriSpeech test-clean/test-other составляет $1.9\%/3.9\%$.
Конформер сначала обрабатывает входные данные с помощью сверточной нейронной сети, состоящей из слоя [[Сверточные нейронные сети#Пулинговый слой|пулинга]], [[Нейронные сети, перцептрон|полносвязного слоя]] и [[Практики реализации нейронных сетей#Дропаут|дропаута]], а затем с помощью последовательности блоков Конформера.
Блоки Конформера {{---}} это последовательность из двух модулей прямой связи (англ. ''feed forward''), между которыми расположены модуль многоголового самовнимания (англ. ''Multi-Head Self Attention'') и сверточный модуль, с последующей нормализацией слоя (англ. ''layer normalization'').
[[Файл:Multi_Head_Self_Attention_module.png|400px|thumb|right|'''Рисунок 23.''' Модуль многоголового самовнимания]]
'''Модуль многоголового самовнимания'''
В модуле используется блок многоголового внимания с относительным позиционным кодированием (англ. ''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>) используется с целью исправить два недостатка Трансформера: ограничение на длину входа (что не позволяет модели, например, использовать слово, которое появилось несколько предложений назад) и фрагментацию контекста (последовательность разбивается на несколько блоков , каждый из которых обучается независимо). Для достижения этой цели используются два механизма: механизм повторения (англ. ''reccurence mechanism'') и относительное позиционное кодирование (англ. ''relational positional encoding''). Механизм повторения позволяет использовать информацию из предыдущих сегментов. Как и в оригинальной версии, Трансформер-XL обрабатывает первый сегмент токенов, но сохраняет выходные данные скрытых слоев. При обработке следующего сегмента каждый скрытый слой получает два входа: результат предыдущего скрытого слоя этого сегмента, как в Трансформере, и результат предыдущего скрытого слоя из предыдущего сегмента, который позволяет модели создавать зависимости от далеких сегментов.
Однако, с использованием механизма повторения возникает новая проблема: при использовании исходного позиционного кодирования каждый сегмент кодируется отдельно, и в результате токены из разных сегментов закодированы одинаково.
'''Сверточный модуль'''
[[Файл:Convolution_module.png|600px|thumb|right|'''Рисунок 34.''' Сверточный модуль]]Последовательность слоев в сверточном модуле начинается с управляемого модуля<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|'''Рисунок 45.''' Схема модуля прямой связи]]
В отличие от Трансформера, в котором единственный модуль прямой связи следует за модулем внимания и состоит из двух линейных преобразований и нелинейной активации между ними, Конформер представляет собой два модуля прямой связи, состоящих из слоя нормализации и двух линейных слоев. Кроме того, для регуляризации используется функция активации ''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> основан на самообучении на [[Распознавание речи#Признаки|мел спектрограммах]].
'''Модель'''
{|align="center"
|-valign="top"
|[[Файл:wav2vec.png | 600px | thumb | '''Рисунок 56.''' Схема обучения модели wav2vec]]
|}
'''Алгоритм'''
1. Произвести тонкую настройку Модель $M_0$ настраивается (англ. ''fine-tune'') предобученной модели $M_0$ на наборе данных $S$ с использованием ''SpecAugment''. $M = M_0$<br>2. Объединить Модель $M$ сливается (англ. ''fuse'')<ref>''Caglar Gulcehre, Orhan Firat. Kelvin Xu, Kyunghyun Cho, Loic Barrault, Huei-Chi Lin, Fethi Bougares, Holger Schwenk, Yoshua Bengio'' On Using Monolingual Corpora in Neural Machine Translation [https://arxiv.org/pdf/1503.03535.pdf] модель $M$ </ref> с моделью $LM$.<br>3. Сгенерировать новый набор Набор данных $A$, разметив $U$ размечается с помощью $M$, получается новый набор данных $A$.<br>4. Объединить наборы данных Наборы $S$ и $A$объединяются, произвести тонкую настройку производится настройка предобученной модели $M_i$ на объединенном наборе данных с использованием ''SpecAugment''.<br>5. Если перебраны не все модели из набора, то $M = M_{i + 1}$, перейти происходит возвращение к шагу $2$.
==Применение==
89
правок

Навигация