Auto Byte

专注未来出行及智能汽车科技

微信扫一扫获取更多资讯

Science AI

关注人工智能与其他前沿技术、基础学科的交叉研究与融合发展

微信扫一扫获取更多资讯

王子嘉作者Joni Zhong编辑

窥一斑而知全豹,三篇论文遍历ICLR 2020新型表征方式

今年 4 月份,本文作者探索了CVPR 2020 会议论文中出现的通用表征研究,并着重介绍了三种解决方案。在本文中,作者进一步介绍了 ICLR 2020 上几种新型的表征方式,以及这些表征方式的需求和今后改进方向。

前段时间,我刚刚写过一个 CVPR 2020 中的表征学习进展,当时主要的着重点以及启发点是在如何改进表征方式的通用性,今天这篇文章则着重于介绍几种新型的表征方式,以了解几种表征方式的需求以及改进方向,从而在创新表征方式时可以有一定的方向。本文主要介绍的是表征方式,所以论文中跟表征方式无关的内容不会被涉及,如果对整体解决方案感兴趣可以再移步原论文去了解更完整地方案。

本文主要涉及了三篇论文,第一篇论文比较综合,涉及了当前很多经典的表征方式,并对其做了一定的改进;第二篇则提及了稀疏表征方式,为其在一定程度上正名;很明显的,前面两篇涉及的主要是数字信号(离散信息)的处理,而最后一篇讲到了模拟信号(连续信息)的表征方式,这也非常值得我们学习

1. Reinforcement Learning Based Graph-to-Sequence Model for Natural Question Generation

论文链接:https://openreview.net/forum?id=HygnDhEtvr

1.1 算法概述

这篇文章的目标任务是问题生成(Natural Question Generation, QG),这个任务主要是根据一段话以及回答生成对应的问题。文中提出的图到序列(Graph to sequence generator, Graph2Seq)的生成模型如图 1 所示(本文中所有图片均来源于原论文)。

图 1:系统架构。

从图中可以看出,为了对文本和答案语义的联系进行建模,作者提出了深度对齐网络(Deep Alignment Network, DAN)。然后为了更好地提取文本中的结构信息(如语法树信息),本文先基于文本生成了一种语义相关的图,然后使用了一种新型的双向门控图神经网络(Bidirectional gated neural network )对文本的图进行表征,它在 门控图神经网络( gated graph neural network,原论文在 https://arxiv.org/abs/1511.05493,有兴趣可以自己了解一下,本文主要介绍改良后的双向网络)基础上加入了对对双向边的信息(incoming and outgoing)的考量,从而实现双向信息的表征,最后生成的序列会由 RNN Decoder 解码成最终的问题。

此外,因为本论文方法是基于强化学习的,所以产生的问题还会有对应的 reward,这也是这篇论文的的一大创新点,不过本文对此不做介绍。接下来主要对上方黑框内的内容进行介绍。

1.2 Deep Alignment Network (DAN)

这一部分的主要任务是把回答中的信息与文本信息融合在一起,从而得到一个综合的嵌入。先看看这个对齐的图解(图 2)。

图 2:对齐算法(soft-alignment)图解。

先看最左边的四个矩阵 X,右上角标是 p 的代表文本(passage)得到的嵌入,角标是 a 的代表基于回答(answer)得到的嵌入,头上带波浪线跟没带波浪线的分别代表一种嵌入,比如 X^p 和 \~{X^p}都是基于文本生成的嵌入,但是它们生成嵌入的方式不一样,可能 X^p 是基于 GloVe 生成的嵌入,而 \~{X^p}是基于 BERT 生成的嵌入,实际上文章作者用了更巧妙的方式,在后面两个层次上对齐的具体计算过程中会有提及。

然后是紫色的矩阵 \ beta,这是我们熟悉的注意力矩阵,通过 X^a 和 X^p 计算得到这个注意力矩阵,然后再跟回答对应的另一个带波浪线嵌入相乘(注意这里也可能这两个嵌入是相同的,类似于给了一个 a+b+c+d 的公式,ab 不带波浪线,cd 带波浪线,作者没有限制 a!=c,也就是带波浪线的 \~{X^a}和不带波浪线的 X^a 可以是相同的,毕竟来源于同一个语料,如果提取特征的方法相同,那么 a 和 c 就相同了,但是 a 一定是不等于 b 的,因为来源不同,就算特征提取方法相同也没法一致),最后通过简单的矩阵合并(concatenate)得到最终的矩阵 \~{H^p}。这个过程可以表示为下式:

值得注意的是 Align()这个函数里的嵌入顺序并不是图 2 中从上到下的顺序,不然会影响后面具体计算时的理解。至于注意力的计算,本文作者使用了下式:

上面介绍的对齐算法在文中被使用了两次,先在词的层面进行了一次对齐得到 \~{H^p}:

这里的 G 代表 GloVe 嵌入,B 代表 BERT 嵌入,L 代表语言学嵌入(NER,POS 等)。然后这个 \~{H^p}又经过了一个双向 LSTM 的处理,最终得到了 \={H^p}。同时作者又将回答的 BERT 嵌入和 GloVE 嵌入合并在一起,然后也用一个双向 LSTM 对齐进行进一步处理,最终得到回答的嵌入 \={H^a}。这里 LSTM 处理的目的是让这些嵌入获得背景信息(contextualize)。

万事俱备,现在可以进入背景层面的对齐了,这也是对齐的最后一步,基于上文得到的那些带有背景信息的嵌入,最终就可以得到文本嵌入 X:

1.3 BIDIRECTIONAL GRAPH-TO-SEQUENCE GENERATOR

这也是这篇文章的主要创新点之一,文中提出的方法先为文本建立了图,然后通过 GNN 计算出节点的嵌入,最终先对节点嵌入进行线性映射,最后对这些映射进行 max-pooling 的操作,最终的方式得到一个 d 维的向量。接下来的内容简要介绍图建立的过程和 GNN 的计算过程。

1.3.1 图建立

本文作者为文本建立了两种图——第一种是依赖解析树(dependency parse tree),第二种是基于 KNN 和自注意力机制动态建立的语意树。第一种树的建立和后续操作比较简单,就是先将每个句子解析成依赖树(根据语法),然后将相近的依赖树通过边界上的词节点连接起来。然而这种简单的方法反而获得了更好的结果。

第二种稍微复杂一点的,主要有三步,如下式所示:

第一步是对上文中求得的词嵌入 \~{H^p}进行自注意力计算,从而得到 A,这里的 U 是可训练的。然后利用 KNN 这类算法进行聚类,只保留最近的 K 个节点和其注意力分数,其他的都被挡住了。最后一步是通过 softmax 操作获得输入和输出两个方向上的矩阵。

1.3.2 BIDIRECTIONAL GATED GRAPH NEURAL NETWORKS(BiGGNN)

在 BiGGNN 中,每个节点的初始嵌入都由 DAN 获得,然后在 GNN 的每一跳计算中,都会对输入和输出的相邻接点分别进行前向和反向的聚合操作

在第一种图中,作者选择均值作为聚合函数,从而得到正向和反向的新嵌入(k 表示第 k 跳):

在第二种图中,作者在使用加权平均值作为聚合函数,这里的权重是在图建立时得到的:

接下来,作者对上面计算得到的双向嵌入进行融合:

这里的融合操作如下式所示:

这里的 \ odot 是点乘,\sigma()表示 simoid 函数,z 是门向量。最后,作者使用 Gated Recurrent Unit(GRU)对节点嵌入进行更新:

更新完后,如最开始所说,作者对最终第 n 跳的结果进行线性映射和 max-pooling 操作,从而得到图嵌入。

1.4 实验结果

因为本文介绍的并不是完整的算法,所以这里不展示后面完整的熔断实验(ablation study),图 3 展示了整体系统的结果,可以看到虽然比 ground truth 要差一点,但是比现有的模型都要先进。

图 3:实验结果。

1.5 小结

这篇文章有很多信息,都很具有启发性,比如在 DAN 中对各种嵌入的处理,如何将另一段文本的信息融合到当前文本中的处理方式等,以及图的建立方法和图嵌入的计算方式等。不管是图的表征还是文本的表征,这篇论文都可以提供很好的初始想法。

2. Massively Multilingual Sparse Word Representations

论文链接:https://openreview.net/forum?id=HyeYTgrFPB

2.1 算法概述

本文的题目已经很直白的表达了本文的主要任务——找到一种稀疏的词表征方式(sparse word representations),并且是多语言通用的(multilingual),也就是说在不同语言中具有相似意义的词会有相似的稀疏向量。之所以选择稀疏的词表征方式,最直接的好处是某些资源丰富的源语言的稀疏表示可以直接用于某种目标语言,这样模型就更小了,而且模型的可解释性更高。

当然这种稀疏的词表征其实在很多其他特定任务中也有奇效。本文作者提出了一种高效(优化函数为凸函数)且可适应于多语言转换任务(基于共享语义单元)的算法。

2.2 算法细节

整体算法如图 4 所示,算法的输入 (require) 是源语言和目标语言的嵌入(GloVE 等)以及不同语言之间对应的翻译(semantically equivalent word pairs),最终得到的结果是 \ alpha^s, \alpha^{t_i},这些分别是源语言(s)和多个目标语言(t_i)的稀疏向量,这些表示中不同语言中具有相似意义的词会有相似的稀疏向量,至于为什么这些 \ alpha 可以做到这些,会在后面的具体介绍中提及。论文中是以模块为单位进行介绍的,为了方便理解,本文我们按照这个伪代码的顺序走一遍。

建议读者可以自己再去读一下原论文的对应部分,因为有些步骤的顺序有其自己的原因,这里会大概提及,但是原文的排版方式确实更能突出其算法的优势,本文按照伪代码来介绍只是为了更方便理解。

图 4:算法伪代码。

对于目标语言嵌入(T)和源语言嵌入(S),作者都对其进行了变换(unit normalize), 从而使得词嵌入的点积等于它们的余弦相似度。这个预处理步骤确保了词嵌入的单元规范化,也使得跨语言比较更加自然,因为不管这个词属于哪种语言,它们的嵌入都有相同的长度。这里的 T_k 表示一共有 k 个目标语言。

第一个优化函数

这里作者首先对源语言的嵌入做了稀疏编码——将 S 分解成一个字典矩阵 D 和一个稀疏的系数矩阵 \ alpha,这个优化函数的前一半就是为了让 S 可以由 D 和 \ alpha 重建,后一半则是为了保证 \ alpha 足够稀疏。这里的 \ alpha 类似于一种索引,代表词典 D 中的哪些东西在重建 S 时是有用的,如果没用的部分,\alpha 中对应的值就是 0。除此之外,作者希望保证 \ alpha 非负,因为词向量的符号不能不一致,同时非负也增加了这个嵌入的可解释性。

第二个优化函数

这个优化函数就是为了实现“不同语言中具有相似意义的词会有相似的稀疏向量”。具体来说,就是找到一个权重矩阵 W,通过线性映射将同义词对(s, t)匹配起来。这个优化函数有固定的的解,即目标语言的广义逆矩阵(Moore-Penrose pseudoinverse),如果感兴趣的话,具体计算过程可以自己上网查一下。

第三个优化函数

这是这篇论文最后一个优化函数,目的就是为了得到目标语言的稀疏向量 \ alpha_{t_k}。但是这里跟第一个优化函数并不一样,这里首先用 WT 来将目标语言映射到源语言的词嵌入空间中去(W 是在上一个优化函数中学习到的),然后用第一个优化函数中学到的 D_s 来寻找所有目标语言的等距变换嵌入的稀疏系数矩阵 \ alpha_{t_k}。

完成这些优化后,最后的所有 \ alpha 则是我们需要的稀疏嵌入了。

2.4 实验结果

图 5:单一语言表征评估结果。

从图 5 可以看出,\lambda 是 0.1 的时候,效果最好,因此作者在后面的实验中将 \ lambda 定为了 0.1。然后作者在 multiNLI 和 XNLI 两个数据集上进行了自然语言推断任务(Natural Language Inference,NLI)的测试,实验结果如图 6 所示,基本上 MAMUS 在所有任务上,以及平均分上,都是第一或第二的成绩。

图 6:实验结果。

作者也在其他的一些平台上进行了测试,测试结果也相当不错,有兴趣可以去源论文看一下,而且这篇论文的代码也已经开源了,有兴趣可以自己复现一下结果。

2.5 小结

这篇文章主要是带给大家一个很好的方向——稀疏表征。在特定的任务中,稀疏表征是要比密集表征要有优势的,所以表征矩阵的稀疏有时并不是坏事。同时,作者提供了一种很好的将映射和其他功能(稀疏编码)结合在一起的思路,如何建立一个凸函数,如何将多语言在共通的情况下进行编码,当遇到这些问题的时候,这篇论文可能就可以给你很好的出发点,甚至方案。

3. vq-wav2vec: Self-Supervised Learning of Discrete Speech Representations

论文链接:https://openreview.net/forum?id=rylwJxrYDS

3.1 算法概述

同样的,根据这篇论文的题目,可以看出这篇论文的要点有两个——自监督学习(self-supervised learning)和语音表征(speech representation)。这里的自监督学习来自于在信号处理任务中 BERT 的引入(创新点之一),语音表征的创新点则在于提供了离散的表征。其算法具体流程如图 7 所示:

图 7:vq-wav2vec(a)和整体语音识别任务 pipeline(b)。

图 7(a)中,音频 X 先被映射成一个密集的表征 Z,这个表征是连续的,于是作者对其进行量化(离散化)处理得到 \ hat(Z),最终经过聚合得到语境表征 C。如图 7(b)所示,经过这些流程得到的表征就变得很像 NLP 中常用的输入了,因此后面就开始进入常规的 NLP 流程——预训练 BERT,通过 BERT 得到的表征被输入到声学模型(Acoustic Model, AM)中,最终得到识别结果。后续 NLP 相关的任务流程大家应该很熟悉,这里就不做详细介绍了,本文主要介绍如何生成离散化的语音表征。

3.2 算法细节

3.2.1 wav2vec

wav2vec 的核心是自监督学习,跟 word2vec 极其类似,其损失函数是一样的。每个时间点输入的音频信号先经由一个编码器变成一个表征 z_i,然后又通过一个聚合器对多个时间点的表征进行聚合,最终得到表征 c_i,这里的编码器和聚合器都是卷积神经网络(CNN)。然后在给定这个语境表征 c_i 的前提下,本算法需要训练一个判别器来分辨未来的样本 z_{i+k}(这里指 k 个时间点后的样本)和根据一个分布 p_n 随机取样的假样本 \~{z},最终得到以下损失函数:

这里的 \ sigma(*)表示 z_{i+k}和 \ hat{z}被判别为真的概率,是 sigmoid 函数。这里的 h_k()对 c_i 进行线性映射:

最终对对所有时间点的损失 L 进行求和,并最小化这个损失,训练后由 c_i 生成的表征就会被传入语言模型中了。

3.2.2 VQ-wav2vec

如图 7(a)所示,VQ-wav2vec 与原始 wav2vec 的区别在于 wav2vec 并没有量化器 q,而这里量化器的加入就是为了让信号变成离散的,也就是所谓的 vector quantized(VQ)表征。这里变离散的过程就很像一个 multi-label 的分类任务,只不过每一个 label 代表一个值。因此这里的量化器 q 有两个选择——Gumbel softmax 和 K-means 聚类。之所以选择这两个方案,是因为它们都是可微的,从而让模型可以训练。

1. Gumbel softmax: 这跟传统的 multi-label 分类任务基本一致,对于生成的密集表征 z 进行线性映射和 ReLU 操作,最后再接一个线性层,从而输出 logits* l*。训练时,第 j 个值(label)被输出的可能性为:

这里 v = -log(-log(u)),而 u 是从均匀分布中随机抽取的值。在推理阶段,直接取 l 中最大值对应的那个值就可以了。

2. K-MEANS: 在这个方法里,每个 label 都对应 codebook 里的一个嵌入 e,然后用这些点作为中心点进行 K-Means 计算,最终取跟这个特征 z 的 Euclidean 距离最短的 label:

在训练的时候,从 codebook 中选取对应的变量 \ hat{z}=e_i,从而最终的损失函数变成了:

这里 sg(x) \equiv x, 而其导数恒等于 0。这里括号中的前半部分是为了让 codebook 中的表征与编码器的输出更接近,而后半部分则是为了让编码器的输出能够与 codebook 中的中心点更近。

在上述基础上,为了避免模式瓦解(mode collapse)的问题,作者又提出了多变量组(multiple variable groups)的方法。首先将密集的特征向量 z 分成 G 组,从而得到 \ hat{z}。然后作者用整数索引表示每一行,因此可以这个索引 i∈[V]^G 来表示完整的特征向量。

其中 V 表示该特定组的可能变量数,每个元素 i_j 对应一个固定的 codebook 向量。对于每一个组,我们使用两种 VQ 方法中的一种。

codebook 本身可以通过两种可能的方式进行初始化:可以在组之间共享 codebook 变量,即索引也将共享。相反,不共享 codebook 变量,索引的大小就会变大一些。。在实践中,我们观察到共享 codebook 变量通常会比非共享表征的效果要好。

3.3 实验结果

如图 8 所示,这个算法在各种任务上的表现基本都是最好的(黑体),具体的实验细节以及熔断研究这里不做详细探讨。值得一提的是,不管是这里跟 wav2vec 的对比还是作者后面与单独 vq-wav2vec 的对比,BERT 的加入都是让结果优化极多的。

图 8:实验结果。

3.4 小结

这篇文章主要的亮点在于 BERT 和 wav2vec 两个方法的合并,也是一种连续信号的处理方式,提供了一种将语音信号转换成 NLP 任务常见输入的思路,但是正如这篇论文的评论说的那样,BERT 会提供那么大的改进的原因是很有探索的必要的,这样才能降低这个算法的计算量,同时真正能够更加灵活地用更高效的方法完成语音信号的表征。

总结

本文介绍了三篇论文,都是很好的研究方向,也有很多坑可以继续去填。第一篇论文可以作为一个很好的新手入门教材,第二篇文章则给大家带来一个新视角——稀疏矩阵有时也会有自己的优势,不同的矩阵特征可能在不同的任务中有奇效。最后一篇论文则展示了目前信号处理上对于表征的较新进展,个人感觉坑还是很多的,但是要对信号处理和人工智能两个领域都有一定了解才可以有较为不错的发现,所以挑战也很大。表征本身很容易被人忽视,很多人都去重视如何提升网络的性能,其实找到一个更为通用的表征,说不定才是下一个飞跃。

分析师介绍:

本文作者为王子嘉,目前在帝国理工学院人工智能硕士在读。主要研究方向为 NLP 的推荐等,喜欢前沿技术,热爱稀奇古怪的想法,是立志做一个不走寻常路的研究者的男人!

机器之心技术分析师专栏
机器之心技术分析师专栏

由来自世界各地的专业分析师为你解读前沿进展,技术热点和经典论文。我们的分析师团队由来自于各大名校的硕士和博士,以及一线研究机构的研究员组成。

入门ICLR 2020新型表征方式
暂无评论
暂无评论~