Speech Recognition with Multi-Task论文精读系列(一)多任务VS对抗学习

Multi-Task VS Adversarial Learning: To Reverse the Gradient or Not an Empirical Comparison of Adversarial and Multi-task Learning in Speech Recognition

前言

从今天开始要持续更新一个新的系列了——多任务学习在语音识别中的应用。唉,说起来都是泪,多模态学习还没搞出啥名堂,又要搞一个新的领域。不过也是事出有因,实验室老师在筹划写一本多任务学习的书,就给我们每一个人分配了一个章节。我大概要在两个月之内看完60+文章,而且是精读,需要把每一篇文章的主要内容、损失函数、网络架构都弄清楚,看完以后整理成一篇survey的文章,可能会试着投一下会议,最后会把survey的内容精简之后一个章节加入到书里面。任重道远~~

关于文章和作者

Yossi Adi, Neil Zeghidour, Ronan Collobert, Nicolas Usunier, Vitaliy Liptchinsky, Gabriel Synnaeve
(好像所有人都不认识的。。。)

主要内容

在语音识别的数据集中,除了语音数据意外,还有speaker的一些id信息,可以考虑借助识别speaker,帮助提升语音识别的准确度。本文想比较的两种方法是:multitask和adversarial learning。

multitask方法的思路是,在主线任务之外,添加一个支线任务,实现speaker的识别和分类,从而提升模型的鲁棒性。

Adversarial learning是基于语音本身的特征是独立的,与speaker的类别、accent、噪声等都无关,所以想让模型学习到一个invariant的表示。它的一个分支speaker分类任务就是训练后降低loss,主干任务是最大化speaker分类器的loss,这样学习到的语音特征对于speaker而言就是独立不变的,用这种方法还可以消除噪声、口音等对语音识别的影响。

介于这两种方法的思想都是一样的,结构上也有一定的相似性,作者想系统化对比这两种方法,在相同的实验条件下,哪个方法更适合。

模型结构、Loss函数

Adversarial Learning

前K层作为encoder,编码语音特征到低维的向量R,然后把R向量作为输入到decoder1,得到characters的后验概率,同时还有另外一个decoder2,得到speaker的后验概率,两个decoder都是以R作为输入。为了使学习到的representation与speaker无关,调节encoder的参数,使得speaker分类器的loss最大,同时调节decoder2的参数最小化speaker分类器的loss,从而实现对抗学习的效果。
(θr,θy,θs)=acoustic(θr,θy)λspeaker(θr,θs) \ell(\theta_r,\theta_y,\theta_s) = \ell_{acoustic}(\theta_r,\theta_y) - \lambda\ell_{speaker}(\theta_r, \theta_s)
Speech Recognition with Multi-Task论文精读系列(一)多任务VS对抗学习

Multi-Task Learning

网络结构和AL一样,只是loss函数不一样,正向传播是一样的,只是反向传播的时候两个decoder的梯度方向正好相反。
(θr,θy,θs)=acoustic(θr,θy)+λspeaker(θr,θs) \ell(\theta_r,\theta_y,\theta_s) = \ell_{acoustic}(\theta_r,\theta_y) + \lambda\ell_{speaker}(\theta_r, \theta_s)

实验结果、结论

第一张柱状图表示的是speaker分类的正确率,In, mid, out分别代表了用网络不同层的表示作为输入,首先可以看到一个趋势是随着网络层的增加,三种算法的loss都是在增加的,也就是准确率在下降,但是与此同时,语音识别的loss是在下降的,说明随着网络层数的增加,模型学习到的特征表示受到speaker的影响是越来越小的。然后通过横向比较可以发现,对抗学习的收敛效果是最好也是最快的。
Speech Recognition with Multi-Task论文精读系列(一)多任务VS对抗学习
Speech Recognition with Multi-Task论文精读系列(一)多任务VS对抗学习