新闻  |   论坛  |   博客  |   在线研讨会
ICLR 2021 | 微软亚洲研究院精选论文一览(1)
MSRAsia | 2021-05-07 08:53:10    阅读:813   发布文章

编者按:机器学习领域的全球顶会 ICLR 2021 将于5月3日至7日在线上举行。今年的 ICLR 会议一共接收了860篇论文,接受率接近29%。其中,微软亚洲研究院有多篇论文入选,今天我们精选了5篇为大家进行介绍。这5个工作的研究主题关键词包括语音合成、代码智能、自监督、Transformer、复杂决策、预训练、分类任务......

AdaSpeech: 个性化定制的文本到语音合成系统

1.png

论文地址: 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)并应用在模型的****中,当微调模型时,只需调整自适应层归一化的参数就可极大降低适配参数。

2.png

图1:AdaSpeech 模型架构

声学条件建模(Acoustic Condition Modeling)的结构如图2所示。研究员们将声学条件建模分为三个粒度:说话人级别(speaker level)、句子级别(utterance level)和音素级别(phoneme level),如图2(a) 所示。在说话人级别,研究员们采用了常见的说话人嵌入向量来刻画说话人特征。在句子级别,使用了一个声学编码器从参考语音中抽取句子级特征,如图2(b)所示,其训练过程中利用了目标语音作为参考语音,而测试中则随机选用了该说话人的其它语音来作为参考语音。在音素级别,研究员们使用了另一个声学编码器从目标语音中抽取音素级别的特征,如图2(c)所示。同时,研究员们还训练了另一个音素级别的声学预测器来预测这些特征,以便在测试时使用,如图2(d)所示。

3.png

图2:Acoustic Condition Modeling 的结构示意

自适应层归一化(Conditional Layer Normalization)的结构如图3所示。在语音****的每一层中,自适应层归一化通过两个线性层从说话人嵌入表征里预测出层归一化的 scale 和 bias 参数,以更加自适应地调节模型的隐层表征。在适配过程中,只需要调整自适应层归一化的相关参数,极大降低了调整参数量,同时保证了定制音质。

4.png

图3:Conditional Layer Normalization 的结构示意

研究员们在 LibriTTS 数据集上训练了源 TTS 模型,然后在 VCTK 和 LJSpeech 上进行了语音定制。对于每个定制的说话人,只使用了20条语音进行模型适配。结果如表1所示,1)与基线(spk emb)相比,AdaSpeech 在极低的适配参数下(4.9K),取得了极大的定制音质提升;2)与基线(decoder)相比,AdaSpeech 取得了相同或略好的定制音质前提下,还能极大降低所需参数量(4.9K vs 14.1M),很好的满足了语音个性化定制场景的需求。

5.png

表1:AdaSpeech 的语音定制结果,MOS 和 SMOS 分别用来评估生成语音的自然度和相似度,分值范围为0-5分,分值越高表示越好。

GraphCodeBERT: 用代码的语义结构学习代码表示的预训练模型

6.png

论文地址: 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。

7.png

图4:源代码(左侧)中数据流(右侧)的抽取过程

基于数据流结构,研究员们提出了 GraphCodeBERT,如图5所示。该模型将代码、数据流和文本作为输入,经过12层的 Transformers 得到代码的表示。为了将图结构信息引入 GraphCodeBERT,研究员们提出了基于图的注意力机制来过滤不相关的信息,具体公式可参考论文。同时为了利用代码的语义结构来学习代码表示,研究员们还提出了两个基于数据流的预训练目标:代码和数据流的变量对齐(橙色),数据流的边预测(蓝色)。

8.png

图5:GraphCodeBERT 模型结构

该模型在代码搜索、克隆检测、翻译和纠错四个任务都进行了评测。在这四个任务中,GraphCodeBERT 均取得了当前最好的成绩,具体细节请见表2-5。

9.jpg

表2:代码搜索任务上的模型性能对比

10.jpg

表3:代码克隆检测任务上的模型性能对比

11.jpg

表4:代码翻译任务上的模型性能对比

12.jpg

表5:代码纠错任务上的模型性能对比

同时,通过样例分析(如表6)可以看出,当做出一点改动,如 return a→return b和 sum→mean,文本和代码的语义都将不匹配。如果不使用数据流,GraphCodeBERT 将预测错误。而使用了数据流之后,GraphCodeBERT 对于这些改动,仍然能够预测正确,这说明了数据流对代码理解的重要性。

13.png

表6:将文本和代码作为输入,利用 GraphCodeBERT 预测文本和代码语义的匹配概率

预训练还需要监督信息吗?一文了解自监督训练的优势

14.png

论文地址: https://arxiv.org/pdf/2006.06606.pdf

利用带有大量人工标注标签的数据集进行预训练曾经是大多数视觉应用的标准做法。然而随着自监督在多项任务上完胜有监督预训练,成本高昂的人工标注似乎只是徒劳。本篇论文深入研究了为什么自监督训练在迁移任务上更有优势,以及结合新的发现,是否有可能改进有监督的预训练。

一、透过迁移性能观察预训练

结论一:图像增强显著影响迁移性能

自监督的对比学习通常依赖于强烈的图像增强技术。这里,研究员们仔细对比了图像增强技术对于自监督模型以及有监督模型的影响。在下表中,研究员们发现图像增强对于自监督和有监督模型均是有效的,但是对于自监督模型的影响尤为明显。

15.jpg

表7:预训练阶段的图像增强对于迁移学习的影响显著

结论二:自监督的预训练模型主要迁移了低层和中层的特征,而非高层语义

自监督在线性分类任务上取得了不错的性能,似乎印证了自监督学习也学习到了高层次的语义信息,但本篇论文通过实验质疑了这个结论。当尝试在不同数据集上进行预训练时,即使这些数据和下游任务包含的图像大相径庭(比如人脸),也能取得不错的迁移性能。尝试的数据集如表8所示。相反,当预训练数据集和下游数据集的底层信息不同时,比如利用游戏合成的驾驶场景数据集,性能会有一定程度的下降。因此验证了对比学习主要迁移了底层和中层特征。

16.jpg

表8:迁移学习对于预训练数据的语义信息没有明显的依赖

*博客内容为网友个人发布,仅代表博主个人观点,如有侵权请联系工作人员删除。

参与讨论
登录后参与讨论
推荐文章
最近访客