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 ) = ℓ a c o u s t i c ( θ r , θ y ) − λ ℓ s p e a k e r ( θ r , θ s ) \ell(\theta_r,\theta_y,\theta_s) = \ell_{acoustic}(\theta_r,\theta_y) - \lambda\ell_{speaker}(\theta_r, \theta_s) ℓ(θr