24
правки
Изменения
→wav2vec
===wav2vec===
'''Идея'''
Часто получить размеченные данные в необходимых объемах является сложно реализуемой задачей, особенно с учетом разнообразия существующих языков: для современных систем распознавания речи требуются тысячи часов размеченной речи для достижения приемлемой производительности. Также изучение исключительно на размеченных данных не похоже на естественный процесс овладения
языком, например, у детей, которые учатся, слушая окружающую их речь. <br>
Это повлияло на то, что сейчас в машинном обучении для распознавания речи успешно
используется [[Обучение с частичным привлечением учителя#Самообучение (Self Training)| самообучение]]. <br>
Подход '''wav2vec''' основан на самообучении на мел спектрограммах.
'''Модель'''
# ''Энкодер признаков'' (feature encoder) $f: X \to Z$ реализован на основе [[Сверточные нейронные сети#Сверточный слой|сверточного слоя]]. Преобразует мел спектрограммы $X$, разбитые на $T$ временных интервалов, в наборы признаков $\{z_1, \dots, z_T\}$, которые описывают исходные данные в каждом из $T$ интервалов. <br>
# ''Контекстная сеть'' (context network) $g: Z \to C$ реализована на основе линейного слоя и слоя, состоящего из $N$ конформеров. Преобразует наборы признаков $\{z_1, \dots, z_T\}$, полученные в результате работы энкодера признаков, в контекстные вектора $\{c_1, \dots, c_T\}$. <br>
# ''Модуль линейного слоя'' (linear layer module) $u: Z \to T$ реализован на основе линейного слоя. Преобразует наборы признаков $\{z_1, \dots, z_T\}$, полученные в результате работы энкодера признаков, в целевые вектора $\{t_1, \dots, t_T\}$. <br>
'''Обучение'''
# Исходные мел спектрограммы $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===