Изменения

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

Распознавание речи

5 байт добавлено, 20:25, 24 января 2021
м
State of the Art в автоматическом распознавании речи
Если <math>RTF \leqslant 1.0</math> - то распознавание речи ведется в режиме реального времени.
==Обучение с частичным привлечением учителя для автоматического распознавания State of the Art в автоматическом распознавании речи==
[[Файл:ASR_new_sota.png|600px|thumb|right|Рисунок 4. $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\%$ (Рисунок 4). $WER$ человека {{---}} $5.9\%$<ref>''W. Xiong, L. Wu, F. Alleva, J. Droppo, X. Huang, A. Stolcke'' The Microsoft 2017 Conversational Speech Recognition System[https://arxiv.org/pdf/1708.06073]</ref><br>
Основная идея состоит в том, что множество моделей Конформеров при помощи алгоритма ''wav2vec'' предварительно обучается на неразмеченных данных, при этом одновременно с этим на основе них генерируются размеченные. Таким образом, неразмеченные данные используются для двух целей: для обучения модели и для генерации размеченных данных, которые используются для дальнейшего обучения модели алгоритмом ''noisy student''.
[[Трансформер|Трансформер]]<sup>[на 21.01.21 не создан]</sup>, использующий [[Механизм внимания#Self-Attention|механизм самовнимания]], хорошо захватывает глобальный контекст, однако не очень хорошо извлекает локальные признаки. [[Сверточные нейронные сети]], наоборот, эффективно используют локальные признаки, но требуют большого числа слоев для захвата глобального контекста. Конформер (англ. ''Conformer'') комбинирует сверточные слои с механизмом самовнимания. $WER$ на LibriSpeech test-clean/test-other составляет $1.9\%/3.9\%$.
Сначала данные, подающиеся на вход Конформеру, проходят аугментацию. В применении к распознаванию речи, используется метод аугментации ''SpecAugment''. ''SpecAugment'' применяет к [[Распознавание речи#Признаки|мел спектрограмме]] три вида деформаций: искажение времени(удлинение или сжатие некоторого промежутка записи), удаление некоторого временного промежутка из записи, маскировку блока последовательных временных шагов и маскировку блока последовательных частотных каналовудаление некоторого промежутка частот. Таким образом, при обучении на зашумленных с помощью ''SpecAugment'' данных сеть обучается на признаках, устойчивых к деформации во времени, частичной потере частотной информации и потере небольших сегментов речи. Конформер обрабатывает итоговые аугментированные входные данные с помощью сверточной нейронной сети, состоящей из слоя [[Сверточные нейронные сети#Пулинговый слой|пулинга]], [[Нейронные сети, перцептрон|полносвязного слоя]] и [[Практики реализации нейронных сетей#Дропаут|дропаута]], а затем с помощью последовательности блоков Конформера.
Блоки Конформера {{---}} это последовательность из двух модулей прямой связи (англ. ''feed forward''), между которыми расположены модуль многоголового самовнимания (англ. ''Multi-Head Self Attention'') и сверточный модуль, с последующей нормализацией слоя (англ. ''layer normalization'').
Однако, с использованием механизма повторения возникает новая проблема: при использовании исходного позиционного кодирования каждый сегмент кодируется отдельно, и в результате токены из разных сегментов закодированы одинаково.
Относительное позиционное кодирование основано на относительном расстоянии между токенами. Для подсчета оценки, на основании которой на некоторое скрытое состояние будет "обращено внимание"почти полностью совпадает с абсолютным позиционным кодированием из оригинального Трансформера, но вместо позиции внутри сегмента используется относительное расстояние между токенами вместо абсолютного положения текущего токенасегментами. Кроме того, а также добавляются два вектора параметров: первый регулирует , задающие важность расстояния и содержания другого второго токена, а второй — важность расстояния между токенамиотносительно первого.
Использование модуля многоголового самовнимания с относительным позиционным кодированием позволяет сети лучше обучаться при различной длине ввода, а результирующая архитектура получается более устойчивой к неоднородности длины высказывания.
Последовательность слоев в сверточном модуле начинается с управляемого модуля<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''<ref>''Prajit Ramachandran, Barret Zoph, Quoc V. Le'' Searching for Activation Functions</ref> (до появления в статье ''Google Brain'' была известна как ''SiLU''<ref>''Dan Hendrycks, Kevin Gimpel'' Gaussian Error Linear Units (GELUs)</ref>,и ''SiL''<ref>''Stefan Elfwing, Eiji Uchibe, Kenji Doya'' Sigmoid-Weighted Linear Units for Neural Network Function Approximation in Reinforcement Learning</ref>): $swish(x) = \dfrac{x}{1 + e^{- \beta x}}$, $\beta$ {{---}} параметр.
'''Модули прямой связи'''
# Исходные мел спектрограммы $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''.
# [https://moluch.ru/archive/147/41443/] - статья "Выделение границ фонем речевого сигнала с помощью мел-частотных спектральных коэффициентов".
[[Категория: Машинное обучение]] [[Категория: Обработка естественного языка]] [[Категория: Распознавание речи]]
89
правок

Навигация