提到生成模型,每个人首先要考虑的问题应该都是这两个——生成什么,如何生成。本文介绍的三篇论文就包含了三种生成模型(GNN、RL、VAE,即怎么生成),同时也介绍了这些生成模型各自当前的应用场景(场景图生成、序列生成、任务型对话生成,即生成什么)。
机器学习模型的一种分类方式就是将模型分为分类模型和生成模型,GAN 的出现使得生成模型一度大火,GAN 也开始被应用于各个领域,但是生成模型并不只是 GAN。除了 GAN 相关的模型,其他的生成模型也是很多人在研究的方向,AAAI 中收录的 1500 多篇文章中就有 100 多篇直接以「生成」命名的文章。本文对其中一些重要论文进行了解读。
论文列表:
- Probabilistic Graph Neural Network(PGNN):Deep Generative Probabilistic Graph Neural Networks for Scene Graph Generation
- Reinforcement Learning(RL): Sequence Generation with Optimal-Transport-Enhanced Reinforcement Learning
- Action Learning: MALA: Cross-Domain Dialogue Generation with Action Learning
1. Probabilistic Graph Neural Network(PGNN)
论文链接:https://grlearning.github.io/papers/135.pdf
1.1 任务描述
视觉理解是计算机视觉中一个很重要的任务,而过去的几年中,很多专家将这个问题归结成图像分类、对象检测等任务。然而,理解一个场景并不仅仅是识别场景中的物体,物体之间的相互关系也是很重要的信息。为了表征这种语义,最近一些论文引入了场景图(scene graph)的概念,其中的节点表示对象,边则表示对象之间的关系。这个概念其实源于游戏,具体的介绍可以自己查一下 Wiki(wiki 对应链接:https://en.wikipedia.org/wiki/Scene_graph,很不幸这个介绍的中文版是空的),本身说的是游戏开发者们在画面编程的时候需要关注的东西,在做 Computer Graph(如 WebGL, OpenGL 等)时,这种关系就是程序员需要编程的东西之一,比如一个很简单的只有两个球的场景,哪个球在另一个球的左边,再或者一个游戏中如果定义一个骑士和一匹马之间有逻辑关系,那么这个骑士就可以被认为是与马一体的,这些东西都是需要在程序中进行编程的。本文的聚焦点就是这种场景图的生成,在本文中(如图 1 所示),这种场景图就也需要包含各个对象之间的关系,比如图 1 左边图中的橘子和苹果都在碗中,右边图中的小女孩是坐在马上的。
场景图(Scene Graph)示例(图源自论文)
1.2 算法概述
为了生成场景图,过去的方法先是学习了这些边和节点的表达(嵌入),如 [1] 中通过在 Fixed Complete Graph 中间传递信息以生成场景图,[2] 则把各个对象看做一个序列,利用双向 LSTM 获取各个对象之间的信息。然后再用这些嵌入来获取各个节点和边的类型。但是这些方法并不能利用图像中丰富的结构信息,这些信息在输入时就包含在了这些图像输入中。本文作者基于 [3] 中提出的 Graph Network,进而提出了适合表征 Scene Graph 的 Probabilistic Graph Network(PGN)。在 PGN 中,边和节点都被表示成了用于 CNN 的特征向量,边和节点的种类则被表示成概率质量函数(probability mass function,PMF)。
如图 2 所示,本文作者在建立 PGN 的过程中也使用了 Reinforcement Learning,因为整个 PGN 添加节点的过程是序列化的,而对于这种过程,Markov 是一个很好的决策工具。具体来说,作者首先利用 Deep Q-Learning 框架学习最优排序,从而依次在当前的 partial PGN 上增加新节点,这里 RL 的动作就是选择一个新节点,RL 的奖励 reward 则根据输入图像的 ground-truth 场景图进行定义。添加节点后,通过消息(上下文关系信息、对象共现信息和图片解释中的先验知识)传递来更新当前 PGN 的特征向量。然后使用更新的特性对 PMFs 进行微调。
PGN 建立过程(图源自论文)
1.3 算法细节
如前文所述,Scene Graph 是由 PGN 生成的。因此本节首先介绍了什么是 PGN,然后对其生成方法 Deep Generative Probabilistic Graph Neural Networks (DG-PGNN) 进行详细介绍。
Probabilistic Graph Networks:PGN 是基于一个图(文中为场景图)G = (V, E) 建成的。其中 V 为节点的集合,E 为边的集合。假设边的种类有 K 种,那么就有 K 个 E_k(k ∈ {1, . . . , K}) 矩阵,每个矩阵中包含了某条边属于某个类别的可能性,如 E_k(u, v) 就表示从节点 u 到节点 v 的边可以表示为 k 的可能性。因此,对于某一条边 (u, v),其概率质量函数(probability mass function,PMF)e_{u, v} = [E_1(u, v), . . . , E_K(u, v)]^T。正常来讲,PMF 的和应该是为 1,但是本文为了让边的可能性更多(不属于任何一类,也就是不存在;或是有很多种可能),取消了这一限制。同样的,每个节点也有自己的 PMF 以表征其类别,即 n_v ∈ R^M,其中 v 表示某个节点,M 表示节点种类数。同时,每条边和节点都由向量表示,节点向量在目标检测时获得(文中使用的 faster_rcnn_nas),边的向量则由边连接的两个节点合并得到。
Q-Learning:在整个流程开始之前,要先建立一个 Complete PGN(如图 2 所示),这个 Complete PGN 包含了所有的节点和所有的边,可以为 Q-Learning 过程提供原始的特征向量和 PMF(用于更新),具体的建立方法在论文的附录中,有兴趣可以自己研究一下。总之,假设当前状态(某个 Partial PGN)的状态为 s,那么 Q-Learning 的输入是这样的:
这里的 g 是整个图像的特征向量(Complete PGN 建立过程中 152 层 ResNet 的最后一层输出),置信度矩阵 p = [p(1), ..., p(N)],p(j) 代表第 j 个框的置信度(目标检测过程中),d 表示了当前节点的状态,如 d(v) = 1 则表示节点 v 已经被选择过,0 则表示其还没被选择过。o^n 和 o^e 都是目前 PGN 的特征向量(初始化为 0 向量),h 和 n 则分别为边向量和节点向量。这里的\Phi 就记录了选择的过程,因此可以发现一些共现现象。如当现在的图中有了「街道」这个词,那么下一步添加的节点就很可能是跟「车」相关的东西。每一步的动作则是在没有被选择过的节点中选择一个添加到图中,如果图已经建立完毕了,可以选择停止。如上文所述,这里的 reward 根据输入图像的 ground-truth 场景图定义。因此,假设一个动作-状态对为 (φ, ˆ s, ˆ a, ˆ r, ˆ φˆ0 , sˆ 0 ),则其目标函数为:
其中 r 为当前 reward,A 表示可以选择的动作,\Phi(ˆ s + v)表示加入节点 v 后的\Phi。因此,参数的更新过程为:
更新:在 Q-Learning 选择了新的节点加入 PGN 后,首先这个节点与所有其他节点的边向量、PMF 以及其自己的节点向量都是从原始的 Complete PGN 中获取,然后通过后续的方法(见原论文附录)对 PMF、边向量、节点向量进行更新。
1.4 实验结果
本文实验基于 Visual Genome (VG) 数据集,使用 Top-K recall(R@K)作为评价标准,与当前的 SOTA 方法进行了比较,同时也对其本身模型进行了 ablation study,记录了在不使用 RL(DG-PGNN^o)、不使用图片注释(DG-PGNN^-)、使用 VGG(完整模型使用的 ResNet)提取 feature(DG-PGNN^+)下的实验结果。实验结果如表 1 所示。由表中可见,论文中完整 DG-PGNN 的结果几乎在各个任务中的表现都是最好的。
表 1:实验结果对比(表源自原论文)
1.5 小结
本篇论文使用了 PGN 来生成 scene graph,其重点主要有两个,一个是利用了 PGN 生成 scene graph,第二个则是利用 Deep Generative Probabilistic Graph Neural Networks (DG-PGNN) 学习 PGN 的过程。除此之外,这种 DG-PGNN 还可以用在其他需要学习结构的任务中(如知识图谱的建立等)。
2. Reinforcement Learning
论文链接:https://pdfs.semanticscholar.org/826d/b2e5f340a90fc9672279f9e921b596aba4b7.pdf
第一篇文章在 PGN 的学习过程中利用了 RL,但是如果在语言生成(序列生成)任务中使用 RL,就会基于最大似然来确定奖励函数,这时就会出现高差异梯度(high-variance gradients)、 奖励信息不明(uninformative rewards)和训练困难(brittle training)等问题,本文的提出就是为了解决了这一问题。
2.1 任务描述
序列生成是 NLP 研究中极其重要的组成部分,序列生成任务包含了很多应用——机器翻译(Sutskever, Vinyals, and Le, 2014; Cho et al., 2014; Bahdanau, Cho, and Bengio, 2015)、文本摘要(Rush, Chopra, and Weston, 2015; Chopra, Auli, and Rush, 2016)、图像注释(Vinyals et al., 2015; Xu et al., 2015)以及风格迁移(Shen et al., 2017; Prabhumoye et al., 2018)等。
2.2 算法概述
在序列生成模型中,常见的方法之一就是使用 Maximum Likelihood Estimation(MLE)。这里的 MLE 主要是基于自回归的形式,即最大化已知背景知识(对前面文本进行的编码)后当前单词的条件概率,这种做法导致了暴露偏差(exposure bias)问题,即在训练阶段模型对生成序列的暴露不足,从而导致测试时长序列的语义一致性快速降低。因此,很多为了解决这个问题的正则化方法相继被提出来,RL 就是其中一种,而决定 RL 能否成功的最重要一环就是是否有合适的奖励函数,这个奖励函数不管是动态的还是静态的都有其对应的问题。
为了解决这个问题,本文对 RL 和 OT(Optimal Transport,最优运输)学习的不同状态进行分析,从而发现了一种融合了 RL 和 OT 正则化的退火调度学习策略——最优运输 RL (OTRL),让 OT 损失自适应地调节 RL 探索时的策略空间,从而让训练过程更加稳定。
2.3 算法细节
如前文所述,本文的算法结合了 RL 和 OT 的优势,从而提出了 OTRL(Optimal-Transport-Enhanced Reinforcement Learning),因此本节先介绍 RL 如何生成序列,再介绍 OT 如何实现语义匹配,最后介绍其融合结果。
RL 如何进行序列生成
前文提到的自回归式的序列生成模型(如 LSTM,Transformer 等)就是这个任务中的 agent,可以采取的动作则是生成的单词,策略即是模型的参数,在整个序列生成结束后,系统会给 agent 一个奖励 r(),这个奖励函数就是讲生成的序列和目标序列(ground-truth)进行对比(使用 BLEU(Papineni et al. (2002))等方法),此时 RL 算法的损失函数即为:
这里的 y 是从生成的序列中采样的,y^*则是 ground-truth,\theta 是指一个特定的策略(一组参数)。为了获取上述损失函数(不可微时)的梯度,文中利用下式对其梯度进行估计:
为了降低梯度的差异,文中还在上式中加入了基线方程 b(),此时梯度变成了:
OT 如何进行语义匹配
简而言之,OT 就是在最优运输计划下计算了两个分布的移动距离,这里的最优运输计划是可以学习的。本文中,OT 就是要利用嵌入来计算两个生成序列的距离,从而利用 OT 来扩展 RL 的探索空间。具体来说,作者使用 Gumbel-softmax(为了使模型可微)来将模型的输出变成对应的序列嵌入,然后就能得到最终的 OT Loss(一个序列):
这里的 n 是指生成序列中单词的数量,m 指 ground-truth 序列中单词的数量,C_{ij} 指用来计算生成序列中第 i 个单词和 ground-truth 中第 j 个单词的嵌入相似度的 Cosine Similarity,T_{ij} 是转移矩阵,d_i 的定义如下所示:
上述 Loss 可以用 IPOT(Xie et al. (2018),)算法求出最优解,算法流程如下图所示,具体细节可以去看一下 Xie 提出这个算法的论文。
图 3:IPOT 算法流程
Optimal-Transport-Enhanced RL(OTRL)
上文提到的两种方法都有各自的缺点,只使用 RL 的方法虽然可以获取长序列的信息,但是会有很大的梯度差异;而只使用 OT 的方法虽然解决了梯度问题,目前又只是适配与 1-gram,这样很多信息都会流失,而如果简单的将其扩展到 k-gram,那么复杂度会变得极其巨大。因此作者将两者合并,通过在 RL 中加入 OT 来获得稳定、全面的模型。此时模型的损失变成了:
这里的 L_{MLE} 就是最基本的 MLE 的损失函数,三个\lambda 则是超参数。作者首先只使用最严格的损失函数 L_{MLE} 来训练模型,从而获得一个较好的起始点,然后开始加入 L_{OT} 使得模型有更大的搜索空间,最后再加入 L_{RL} 对模型进行 fine tune。
2.4 实验结果
作者在三个任务上测试了其提出的模型——机器翻译(数据集为 IWSLT 2014)、文本摘要(数据集为 English gigawords 和 CNN/Dailymail)和图像注释(数据集为 COCO),具体实验结果如下面几张表所示:
由上面这些表格可见,作者提出的方法在这些任务上的表现基本都比其他算法好
2.5 小结
本文主要是结合了两种不同的方法的优点,从而互补了对方的缺点,将一些简单的算法应用到深度学习算法中去,也可以获得一些很好的效果。
3. Cross-Domain Dialogue Generation
论文链接:https://arxiv.org/pdf/1912.08442.pdf
前面两篇论文说的都是使用 RL(或部分利用 RL)进行目标生成的,这篇文章的算法对于只熟悉 GAN 的研究者来说可能就会感觉更亲切一些,因为终于回归到典型的生成模型——VAE 了。
3.1 任务描述
任务导向的对话系统的主要工作就是在多轮对话中提取出用户的需求,并完成其需求。过去的方法将整个任务看做一个整体来解决,使用生成模型(Encoder-Decoder)直接将对话映射到对应的回答上,但实际上,这个任务是由两部分组成的——对话规划(Dialogue planning)和外部实现(surface realization)。对话规划是指找到完成用户的需求的动作(如找到用户喜欢的食谱或是向用户推荐餐厅),而外部实现则是指将这些动作变成对话内容,这两个任务是会互相影响的,在优化动作选择时会影响到生成的对话的质量,所以直接将这两步合并成一步是不可行的。
为了解决这个问题,有些论文提出了为每个回答匹配一个动作表征,这样这个任务就被分成了两步,从而减轻了上述影响。但是目前这些论文主要使用的方式是使用 VAE(Variational AutoEncoder)来获取低维度的隐变量,从而获取这种隐动作表征(Latent action),但是如图 4 所示,(a) 和 (c) 对应的需求是不同的,但是却获得了完全一样的 Latent action。这是因为这种方法只能获取这些语料的相似性,并不能深入理解这些语料的含义,因此本文作者希望获取语义隐动作表征(Semantic latent action),这种表征的主要依据是相同的需求对应的对话走向也应该是相似的,因此也可以获得相似的表征。
图 4:VAE 与 Semantic Latent Action 对比(图源自原论文)
3.2 算法概述
为了完成上述任务,本文提出了一种三段式方法。首先,为了将潜在意图编码为语义隐动作,作者将一个损失定义为 VAE 重建的对话是否会像输入话语一样引起相似的状态转换。为了更有效地区分话语之间的潜在意图,作者还引入了一种比较两个系统话语之间结果状态转换相似性的正则化。
学习语义潜动作需要对对话状态进行标注。在许多领域,根本不存在这样的注释,因为它们需要大量的人工工作,并且获取它们的成本很高。作者希望从从状态注释丰富的领域域(源域)迁移到到那些没有状态注释的目标域。本文以渐进的方式实现知识转移,从源域和目标域同时存在的行为开始,如酒店域和景点域都有对价格的询问,文中将此类操作称为共享操作,而仅在目标域中存在的操作则称为特定于域的操作(domain-specific actions)。作者观察到,具有共享动作的系统话语虽然属于不同的域,但会导致相似的状态转移,因此本文通过将从上述共享动作中收集到的动作话语对对齐,训练了一个网络,通过仅将系统话语的文本作为输入来预测结果对话状态转换的相似性。然后利用相似性预测作为监督,更好地学习具有领域特异性动作的所有话语的语义潜动作。
因此本文主要提出了三步分别是对应有标注数据、无标注数据但可以迁移、专有领域三种情况下的模型训练方法。
3.3 算法细节
a. VQ-VAE: 本文的模型是基于 VQ-VAE 提出的,隐动作表征就是希望将每句话 x 表征成 z_d(x),其中 d 表示第 d 个对话。这个表征可以是 one-hot、multi-way categorical 的形式,也可以是连续的。本文中采用了 one-hot 的形式。这种表征是通过 VQ-VAE 获得的,其基本结构可见图 5,由一个编码器 p_E、一个解码器 p_G 和一个嵌入查询表 e 组成。首先编码器 p_E 输入了一句话 x,从而编码成 z_e(x),然后通过下式获取 z_q(x)(找到嵌入表中跟 z_e(x) 最相近的嵌入),最后通过解码器将 z_q(x) 重建成原来的输入。而这个 z_q(x) 就是我们需要的隐动作表征。
这个整体是一起训练的,其损失函数为:
b. Stage I - Semantic Latent Action Learning:
这一步主要是训练了一个对话状态跟踪模型以确定两句话是否会导致相同的对话走向。因此首先要获得对话的状态,一个有状态标注的对话 d_i 就可以表示为:
这里的 c_t 是第 t 轮之前的聊天记录,b_t 则记录了第 t 轮对话的状态,N_b 表示 state 对的数量,x_t 表示第 t 轮系统回答。本文训练了一个模型来获取当前的状态:
此时损失函数即为(这里的 h() 为打分函数,这个打分可以由很多种方式或者直接用一个 encoder-decoder 实现):
获取了对话的状态后,作者就利用了两种方式来衡量提取的语义隐动作表征,一种是系统的回答与 VAE 重建的对话作比较(point-wise,对应的损失为 L_{PT}),另一种是系统与系统之间的比较(pair-wise,对应的损失为 L_{PR})。整个第一步的流程如图 5 所示,p_B 就是前面说的状态跟踪模型,p_B^{inv} 则是作者为了获取更完整地信息而训练的反向跟踪模型,对应的损失函数只要反过来即可,对两种衡量方式具体计算细节感兴趣的可以参考原论文。
图 5:Stage I 框架图(图源自原论文)
因此在第一阶段(Stage I)中的总损失为:
\alpha 和\beta 都是超参数,L_{a-e} 就是一开始定义的 VAE 的损失。
c. Stage-II: Action Alignment across Domains
这一步主要是为了在那些没有状态标注的领域里实现上述算法,因此本文提出了一种迁移的方法(如图 6 所示),其中的模型 P_B、P_G、P_B^{inv}、P_E 使用的都是第一步训练的模型,一开始只使用需求相同的对话进行训练,对模型进行更新。
图 6:Stage II 框架图(图源自原论文)
在上一步中,作者定义 pair-wise 衡量方式为:
在这一步中源域(X^S)和目标域(X^T)的状态相似度衡量方式变成了(这里的 s_{fwd} 和 s_{inv} 用的都是一开始在有标注的领域训练的模型):
而且为了进行源与目标的对齐,这一步的 VAE 的损失也变成了:
最终这一步的总损失为:
d. Stage-III: Domain-specific Actions Learning
第二阶段解决了那些没有标注但是却可以迁移的领域的语义潜动作表征的学习,但是对于那些专有领域的动作,第二阶段的模型还是不能解决其问题,因此第三阶段的模型(如图 7 所示)被提出来了。
图 7:Stage III 框架图(图源自原论文)
这一步中,由于无法再进行迁移,因此作者没有再使用前面的状态追踪模型,而是从新训练了一个 Similarity Prediction Network(SPN)来判断两句话是否会导致相同的走向,并使用了新的损失函数(原理差别不大,详见原论文)。
3.4 实验结果
本文选取了两种实验来体现其算法的先进性——多领域联合训练与跨领域生成,并与 (1) KVRN (Eric and Manning 2017); (2) Mem2seq (Madotto, Wu, and Fung 2018); (3) Sequicity (Lei et al. 2018); and two baselines that adopt conditioned generation: (4) LIDM (Wen et al. 2017a); (5) LaRL (Zhao, Xie, and Eskenazi 2019) 等基线进行了比较,同时也对自己的三个阶段进行了实验(MALA-(S1/S2/S3)),实验结果如下表所示:
从表中可以看出,完整模型(MALA-S3)的效果在两个实验中表现都是最好的。
3.5 小结
本文主要贡献是通过将问题分解的更加精细,更加全面的模型(三段式模型)来对问题进行解决,这应该给各位在研究复杂问题领域的研究者们一种启示——对问题进行更深层次的剖析,然后分成小问题一步一步进行解决,说不定可以得到更好的结果。
总结
本文的三篇文章主要介绍了三种不同的生成模型,同时也代表了当下很常见的集中创新方式。同时,这些文章中,有些核心概念(如场景图)是来自于非常规机器学习领域的,这也再一次证明了万物皆可机器学习的理念。毕竟机器学习是想模仿人类的学习能力,而现在各个领域的知识则是人类学习能力的具象化,多了解一门其他知识,也就多了一个创新的可能。
参考文献(除四篇主论文)[1] Danfei Xu, Yuke Zhu, Christopher B Choy, and Li Fei-Fei. Scene graph generation by iterative message passing. In Proceedings of the IEEE Conference on Computer Vision and Pattern Recognition, volume 2, 2017.[2] Rowan Zellers, Mark Yatskar, Sam Thomson, and Yejin Choi. Neural motifs: Scene graph parsing with global context. In Proceedings of the IEEE Conference on Computer Vision and Pattern Recognition, pages 5831–5840, 2018.[3] Peter W Battaglia, Jessica B Hamrick, Victor Bapst, Alvaro Sanchez-Gonzalez, Vinicius Zambaldi, Mateusz Malinowski, Andrea Tacchetti, David Raposo, Adam Santoro, Ryan Faulkner, et al. Relational inductive biases, deep learning, and graph networks. arXiv preprint arXiv:1806.01261, 2018.