ICLR 2021 | 微软亚洲研究院精选论文一览
编者按:机器学习领域的全球顶会 ICLR 2021 将于5月3日至7日在线上举行。今年的 ICLR 会议一共接收了860篇论文,接受率接近29%。其中,微软亚洲研究院有多篇论文入选,今天我们精选了5篇为大家进行介绍。这5个工作的研究主题关键词包括语音合成、代码智能、自监督、Transformer、复杂决策、预训练、分类任务......
AdaSpeech: 个性化定制的文本到语音合成系统
论文地址: https://arxiv.org/pdf/2103.00993.pdf
语音个性化定制(Custom Voice)是一个非常重要的文本到语音合成(Text to speech, TTS)服务。它通过使用很少量的目标说话人的语音数据,来微调(适配)一个源 TTS 模型以合成目标说话人的声音。然而,当前的语音个性化定制存在两个独特的挑战:1)为了支持不同类型的说话人,TTS 模型需要支持不同类型的声学条件,比如不同的口音、说话风格、录音环境等,这可能和训练源 TTS 模型使用的声音数据的声学条件非常不一样;2)为了支持大量的说话人,每个说话人所需要的微调参数量需要尽可能的小,否则将会极大地增加语音合成服务的模型存储消耗,例如,支持上百万用户的参数量将达到上百 PB 的存储大小。
在本文中,微软亚洲研究院的研究员们提出了 AdaSpeech,一个可适配的 TTS 系统来实现高质量和高效率的语音个性化定制。AdaSpeech 采用 FastSpeech 2 为基本的模型框架,如图1所示。AdaSpeech 含有两个重要的模块来解决上述两个个性化定制的挑战:1)为了支持含有不同类型声学条件的语音数据,研究员们设计了不同粒度的声学条件建模(Acoustic Condition Modeling);2)为了使用更少的适配参数同时又保证高的定制音质,研究员们提出了自适应层归一化(Conditional Layer Normalization)并应用在模型的解码器中,当微调模型时,只需调整自适应层归一化的参数就可极大降低适配参数。
图1:AdaSpeech 模型架构
声学条件建模(Acoustic Condition Modeling)的结构如图2所示。研究员们将声学条件建模分为三个粒度:说话人级别(speaker level)、句子级别(utterance level)和音素级别(phoneme level),如图2(a) 所示。在说话人级别,研究员们采用了常见的说话人嵌入向量来刻画说话人特征。在句子级别,使用了一个声学编码器从参考语音中抽取句子级特征,如图2(b)所示,其训练过程中利用了目标语音作为参考语音,而测试中则随机选用了该说话人的其它语音来作为参考语音。在音素级别,研究员们使用了另一个声学编码器从目标语音中抽取音素级别的特征,如图2(c)所示。同时,研究员们还训练了另一个音素级别的声学预测器来预测这些特征,以便在测试时使用,如图2(d)所示。
图2:Acoustic Condition Modeling 的结构示意
自适应层归一化(Conditional Layer Normalization)的结构如图3所示。在语音解码器的每一层中,自适应层归一化通过两个线性层从说话人嵌入表征里预测出层归一化的 scale 和 bias 参数,以更加自适应地调节模型的隐层表征。在适配过程中,只需要调整自适应层归一化的相关参数,极大降低了调整参数量,同时保证了定制音质。
图3:Conditional Layer Normalization 的结构示意
研究员们在 LibriTTS 数据集上训练了源 TTS 模型,然后在 VCTK 和 LJSpeech 上进行了语音定制。对于每个定制的说话人,只使用了20条语音进行模型适配。结果如表1所示,1)与基线(spk emb)相比,AdaSpeech 在极低的适配参数下(4.9K),取得了极大的定制音质提升;2)与基线(decoder)相比,AdaSpeech 取得了相同或略好的定制音质前提下,还能极大降低所需参数量(4.9K vs 14.1M),很好的满足了语音个性化定制场景的需求。
表1:AdaSpeech 的语音定制结果,MOS 和 SMOS 分别用来评估生成语音的自然度和相似度,分值范围为0-5分,分值越高表示越好。
GraphCodeBERT: 用代码的语义结构学习代码表示的预训练模型
论文地址: https://openreview.net/pdf?id=jLoC4ez43PZ
代码地址: https://github.com/microsoft/CodeBERT
近年来, 预训练模型在代码智能 (code intelligence) 领域中取得了巨大的成功,其能够支持各种代码相关的任务,如代码检索、补全、翻译、纠错等场景。目前的预训练模型通常将代码当作序列而忽视了代码本身潜在的结构,如抽象语法树和数据流等。然而,这些代码结构提供了重要的语义信息,能够帮助模型更好地理解代码。因此,微软亚洲研究院的研究员们提出了利用代码的语义结构来学习代码表示的预训练模型 GraphCodeBERT。
在本文中,研究员们使用了代码的数据流结构来表示变量之间的依赖关系,如图4所示。该数据流是一个图结构,其中结点为变量而边表示变量之间的信息流向。该语义结构对理解代码提供了重要的语义信息。以 v=max_value-min_value 为例,程序员并不总是遵循命名约定,比如 v。而数据流提供了一种理解变量v的语义的方法,即 v的值来自 max_value 和 min_value。
图4:源代码(左侧)中数据流(右侧)的抽取过程
基于数据流结构,研究员们提出了 GraphCodeBERT,如图5所示。该模型将代码、数据流和文本作为输入,经过12层的 Transformers 得到代码的表示。为了将图结构信息引入 GraphCodeBERT,研究员们提出了基于图的注意力机制来过滤不相关的信息,具体公式可参考论文。同时为了利用代码的语义结构来学习代码表示,研究员们还提出了两个基于数据流的预训练目标:代码和数据流的变量对齐(橙色),数据流的边预测(蓝色)。
图5:GraphCodeBERT 模型结构
该模型在代码搜索、克隆检测、翻译和纠错四个任务都进行了评测。在这四个任务中,GraphCodeBERT 均取得了当前最好的成绩,具体细节请见表2-5。
表2:代码搜索任务上的模型性能对比
表3:代码克隆检测任务上的模型性能对比
表4:代码翻译任务上的模型性能对比
表5:代码纠错任务上的模型性能对比
同时,通过样例分析(如表6)可以看出,当做出一点改动,如 return a→return b和 sum→mean,文本和代码的语义都将不匹配。如果不使用数据流,GraphCodeBERT 将预测错误。而使用了数据流之后,GraphCodeBERT 对于这些改动,仍然能够预测正确,这说明了数据流对代码理解的重要性。
表6:将文本和代码作为输入,利用 GraphCodeBERT 预测文本和代码语义的匹配概率
预训练还需要监督信息吗?一文了解自监督训练的优势
论文地址: https://arxiv.org/pdf/2006.06606.pdf
利用带有大量人工标注标签的数据集进行预训练曾经是大多数视觉应用的标准做法。然而随着自监督在多项任务上完胜有监督预训练,成本高昂的人工标注似乎只是徒劳。本篇论文深入研究了为什么自监督训练在迁移任务上更有优势,以及结合新的发现,是否有可能改进有监督的预训练。
一、透过迁移性能观察预训练
结论一:图像增强显著影响迁移性能
自监督的对比学习通常依赖于强烈的图像增强技术。这里,研究员们仔细对比了图像增强技术对于自监督模型以及有监督模型的影响。在下表中,研究员们发现图像增强对于自监督和有监督模型均是有效的,但是对于自监督模型的影响尤为明显。
表7:预训练阶段的图像增强对于迁移学习的影响显著
结论二:自监督的预训练模型主要迁移了低层和中层的特征,而非高层语义
自监督在线性分类任务上取得了不错的性能,似乎印证了自监督学习也学习到了高层次的语义信息,但本篇论文通过实验质疑了这个结论。当尝试在不同数据集上进行预训练时,即使这些数据和下游任务包含的图像大相径庭(比如人脸),也能取得不错的迁移性能。尝试的数据集如表8所示。相反,当预训练数据集和下游数据集的底层信息不同时,比如利用游戏合成的驾驶场景数据集,性能会有一定程度的下降。因此验证了对比学习主要迁移了底层和中层特征。
表8:迁移学习对于预训练数据的语义信息没有明显的依赖
结论三:预训练和下游任务的问题对齐决定了迁移效果
为了进一步解释为何自监督预训练在目标检测上效果更好,研究员们又做了如下实验。(1)通过分析检测错误,自监督预训练能得到更准确的位置信息。(2)当利用 Deep image prior 对高层特征进行图像重建时,自监督重建的图像更接近于原图并且更加完整。虽然对比学习训练时也包含了位置尺度不变性,但却能在重建中保持正确的尺度和位置。相反,有监督的学习过度关注物体的局部区域,丢失了很多对于精确定位的重要信息。研究员们认为 instance discrimination 方法为了保证当前实例区别与其它所有实例,尽可能的保留了更多的信息。
图6:对于物体检测,有监督的预训练(相比自监督)带来了更多定位的错误
图7:自监督模型可以更好的重建底层的图像信息
二、一种改进的有监督预训练方法
大量的标注数据包含了丰富的语义信息,应该对下游任务有所帮助,但传统的有监督预训练是通过减小 intra-class variation 进行学习的。这样模型更多的关注了对特定类有识别力的区域,从而忽略了其它可能包含有用信息的区域。一个更好的有监督预训练方法应该仅仅拉远不同类的实例,而不对同类样本加以任何约束,这样可以更好地保留每个实例的特征。参考 examplar SVM 的方法,研究员们在 instance discrimination 的损失函数上进行了改进。
实验证明这种方式在图像分类和目标识别两个下游任务上都得到了提升。
表9:改进的有监督模型 examplar 提高了迁移性能
基于实例的层序可变Transformer网络结构
论文地址: https://arxiv.org/abs/2103.03457
Transformer 网络在自然语言以及视觉领域取得了极大的成功。它由三个基本的子层:自注意力层 (self-attention, SA)、编码-解码注意力层 (encoder-decoder attention, ED)和前馈全连接层 (feed-forward, FF)线性堆叠而成,并且这些子层的顺序是固定的。然而,微软亚洲研究院的研究员们通过一些简单的验证发现,不同的子层顺序堆叠的网络 (如 SA→FF→ED 或者 FF→ED→SA) 对于不同的样本来说重要程度是不一样的。如表10所示,对于这个句子,用不同的子层顺序网络翻译出的结果差距非常大。这告诉研究员们,其实每个语句都拥有自己偏好的网络顺序来进行更好的翻译。
基于上述发现,研究员们提出了基于实例的子层顺序动态可变的 Transformer 网络结构 (IOT),以打破固定顺序的 Transformer 网络,使得网络能够通过不同顺序的堆叠来建模不同的函数,从而增大了网络的建模空间并提升最后的任务结果表现。值得注意的是,研究员们的方法几乎没有增加额外的参数,并且能够适用于各类神经网络 (如验证了在 DynamicConv 上的结果) ,只需网络包含不同的子层结构。
表10:一句德文语句的不同子层顺序网络对应的不同英文翻译结果以及 BLEU、TER 的分数差距
关于论文中使用的方法,具体来说,研究员们在 Transformer 的编码器和解码器模块之前各增加了一个轻量的、基于 MLP 的层序预测器网络,以此来进行不同的子层顺序选择。框架如图8所示,图中展示了对于三个不同的样本进行各自的子层顺序网络选择的结果。
图8:IOT: 基于实例的子层顺序变化的框架图以及三个样例的顺序选择
研究员们采用了基于 Gumbel-softmax 的不同子层顺序的权重学习。以解码器的顺序选择为例,λ_n 即为第 n 种层序的重要程度,其中 s_d 为编码器最后层输出的平均。同理,编码器的第m种顺序的重要程度用 γ_m 表示。所以研究员们根据 λ_n 以及 γ_m 的大小 (argmax) 来选择相应的编码器和解码器的子层顺序。
在训练过程中,研究员们还使用了一个探索(exploration)和一个利用(exploitation)的损失函数来辅助训练(通过约束顺序的分布),从而使得每个数据实例能够选择其偏好的顺序,并且网络能够稳定且有效。
研究员们在三个不同的序列生成任务——机器翻译、文本摘要以及代码生成上进行了验证,一共包含9个不同的数据集。实验表明 IOT 都取得了超越基准模型不少的优异结果。如在 IWSLT8 个方向的小数据集翻译任务上都取得了超过一个点的 BLEU 提升,在 WMT14 的 En->De 大数据上取得了30.03的 BLEU 分数。研究员们还进行了各类不同方面的分析,以数据和顺序间的选择关系为例,如图9所示,在数据所选择的子层顺序网络上的确取得了超越其余子层顺序的更优结果,因此证明了数据的确进行了自己更偏好的、更优的子层顺序选择。研究员们的方法简单而高效,希望能够让更多人关注如何构建动态网络,从而增强网络的建模能力。
图9:根据层序预测器预测划分的数据集以及不同子层顺序的翻译结果
基于回报的对比表征学习在强化学习中的应用
论文地址: https://openreview.net/pdf?id=_TM6rT7tXke
在深度强化学习中,如何学习紧致且有效的状态表示是解决复杂决策问题和提升样本效率的一个关键问题。最近,很多工作利用基于对比学习的辅助任务在强化学习过程中加强状态表示的学习,都取得了很好的实际效果,但已有的基于对比学习的辅助任务并没有充分考虑到强化学习问题的特性,而且大多是无/自监督的。因此,微软亚洲研究院的研究员们探究了如何利用回报分布 (Return Distribution)——强化学习中最为重要的反馈信号,来构建一个新的对比学习式辅助任务。
首先,为了从数学上严谨地刻画利用回报分布这一想法,研究员们提出了 Z^π-irrelevance 抽象函数。直观上来说,Z^π-irrelevance 抽象函数会把回报分布类似的状态动作对聚集到一起。相比于之前的抽象函数,该函数能够在不损失过多信息的同时,大幅缩小状态动作空间,从而提高学习效率。该抽象函数具有两大特点:
1.可以更大程度上地缩小状态动作空间。
2.能够在抽象状态动作空间中精确表示原状态动作空间的价值函数。
图10:Z^π-irrelevance 抽象函数示意图
接下来,为了从采样数据中学习得到 Z^π-irrelevance 抽象函数,研究员们提出了基于对比损失函数的Z学习算法:
这里,ϕ 代表编码器,也就是状态动作表示;w 代表判别器;y 是二元标签,用于判断当前两个状态动作对 x_1,x_2 是否具有相同的采样回报值。
在理论上,该方法严谨地证明了 Z 学习算法会以 1/√n 的速率收敛到 Z^π-irrelevance 抽象函数。而实际中,也可以通过分段的方式来判断两个状态动作是否具有同样的采样回报值。具体来说,轨迹内分段的思路如下:从头到尾捋一遍采样得到的整条轨迹,如果累计的奖励绝对值变动超过某个阈值,那么就会从这里形成一个新的分段。这就是实际的 RCRL 算法。
图11:RCRL 算法示意图
为了验证算法的有效性,研究员们分别在 Atari 游戏的26个游戏以及 DMControl 套件的6个任务中进行了大量实验,结果表明 RCRL 算法不仅可以取得比其它前沿的状态表示算法更佳的样本效率,还可以和一些已有的状态表示算法 (比如,CURL) 结合,共同提升基准算法的样本效率。
你也许还想看: