雷锋网AI科技评论:IJCAI 2017即将举行,为此,雷锋网特邀请了部分录用论文作者对自己的作品进行详细解读,以供有兴趣的老师同学们了解作者的研究思路。本文原载于王永庆个人公众号“KingsGarden”,授权雷锋网转载,雷锋网(公众号:雷锋网)AI科技评论做了不改变原意的编辑。
另外,雷锋网即将在 8 月 12 日下午举行“GAIR大讲堂CVPR 上海交大专场”分享会,感兴趣的同学赶紧点击此链接了解活动详情。
王永庆,2017年中国科学院计算技术研究所工学博士毕业,现就职中国科学院计算技术研究所,任助理研究员。研究方向: 信息传播,社会计算,数据挖掘和机器学习。
论文题目:Cascade Dynamics Modeling with Attention-based Recurrent Neural Network
作者: Yongqing Wang, Huawei Shen, Shenghua Liu, Jinhua Gao and Xueqi Cheng
背景介绍
这篇文章是我们今年投稿于IJCAI并录用的文章,文章的背景是信息传播建模(Cascade Dynamics Modeling),切入点是如何将结构信息融合到序列建模(Sequence Modeling)中。
简单介绍下序列建模,这是一种挖掘序列内关联模式的技术手段,这种关联模式又可按序列内前后两元素间间距是否等长对应到两类具体的问题中:离散序列和时序序列建模。例如离散马尔科夫模型,连续时间马尔科夫模型等都是经典的序列建模模型。当然,这几年来受到神经网络的冲击,利用循环神经网络(RNN)处理序列建模问题也逐渐成为了这一领域的标杆。
为了能够产生迭代,提高序列建模的效率,一般认为,序列内部各元素的间的关系是顺序传递的。大家可以细想一下基于这种假设下序列建模所存在的问题:无法处理序列内各元素的结构信息。图1展示了传统序列建模中的这种假设与真实情况的矛盾。考虑结构信息后图1(a)中的事件(u3,t3)、(u4,t4)节点均不再顺序依赖于其前一个节点,如果继续采用传统序列建模的方式,那么建模势必会存在一定的偏差。在这里,我们将其称为序列建模中的跳跃依赖(Cross-dependence)问题。那么如何有效解决这一问题呢?
(a) 传统序列建模的传递依赖关系
(b) 考虑元素间结构信息后与传统序列建模假设的矛盾
图 1 传统序列建模假设与真实情况的矛盾
动机
让我们先来思考一下解决跳跃依赖问题的关键:如何在序列建模过程中加入对结构信息的考虑。但这种尝试至今没有真正成功过。例如,让我们来考虑下图1(a)中u4节点的可能依赖结构,一共存在∅, {u1}, {u2}, {u3}, {u1, u2}, {u1, u2}, {u1, u3}, {u2, u3}, {u1, u2, u3}这9种可能情况。假设目标节点的可能依赖节点数为K,那么这种可能的依赖结构一共是2K+1种。考虑结构信息后,会使得序列建模的计算复杂度呈几何级提升,而过大的计算开销又不会给最终的计算结果带来可观的效果提升。
那么是否存在一种既不会带来过多的计算开销,又能同时解决跳跃依赖问题的方法呢?有!我们提出了一种在循环神经网络框架下考虑序列中结构信息的建模方式—CYAN-RNN(Cascade dYnamics modeling with AttentioN based RNN)。简单介绍下循环神经网络:在循环神经网络中,序列元素顺序输入,通过激活函数变换成为对应输入的表示,并用于生成序列。一般地,我们认为所得的表示信息是对序列中对应输入的一种合理抽象。例如,在语言模型中,以单词作为输入,所得的即为单词语义的一种抽象。在信息传播中,以用户行为作为输入,所得的即为用户行为的一种合理抽象。那么如果我们将这些表示进行综合,共同作用于同一任务,所谓的结构,是否可以理解为当前任务对这些抽象表示的利用程度呢?
模型
基于上述的讨论,我们基本确定了一条解题思路:将当前所有可用的表示进行综合,通过对当前任务的理解,删选出合适的信息,并推理出可能的依赖结构。
图2给出了在RNN框架下综合所有可用表示进行序列建模的示意图。在考虑计算效率和有效性的前提下,我们决定采用注意力机制(Attention Mechanism)来实现这一架构。
-
一方面因为注意力机制的实现及计算效率很高;
-
另一方面,注意力机制也是目前在多个不同应用上被证明为能够较好地学习结构信息的一种机制。
图3给出了文中所实现的带注意力机制的循环神经网络结构图。注意力机制的关键是学习获得了注意力向量α。我们约束了向量中的所有元素之和∑i αi=1,这样所学得的注意力可用于表示对应表示的权重信息,进而反应可能的依赖结构。图3中的具体实现里还给出了一种基于覆盖机制(Coverage Mechanism)的架构图。这是考虑到在对序列顺序建模的过程中,可能会有部分的表示信息会被重复使用多次,进而忽略了序列中的其他表示信息。而覆盖机制在原有的注意力机制上额外添加了记忆信息,增加信息被重复使用的代价,进而在建模过程中提升所有表示信息的使用覆盖度。
图 2 在RNN框架下综合所有可用表示来做序列产生过程建模
图 3 CYAN-RNN的具体实现架构
实验结果
在实验部分我们列举三组实验用以表示CYAN-RNN框架的有效性。
-
实验一:传播预测(预测下一激活用户和激活时间)
这组是标准的序列生成效果实验。输入为观测信息的传播记录,要求序列建模模型能够准确的还原观测信息。从图4的实验结果上来看,可以发现:CYAN-RNN在传播预测的实验效果上显著优于其他所有的对比方法。值得注意的是,在图4所示左部预测下一激活用户的任务上,传统的RNN模型(RMTPP)并不比一些简单的模型(不采用神经网络方式建模)效果要好(对比CT Bern和CT Jac),而引入结构信息的CYAN-RNN则对比传统方法在实验效果存在显著提升。
图 4 传播预测结果
-
实验二:注意力机制和覆盖机制中的权值分配对比
这一部分实验主要用来验证覆盖机制中所添加的记忆信息是否能够有效提升所有表示信息的使用覆盖度。根据图5的实验结果对比可以发现,由于记忆信息的引入,在覆盖机制中(图5右)中的权值分配相较于注意力机制中(图5左)的权值分配更倾向于新出现的表示信息,因而所计算的权值也能够更为清晰的表示结构信息。
图 5 注意力机制和覆盖机制中的权值分配对比
-
实验三:网络推断
这组实验主要用来验证我们从解题之初就存在的一个疑问:是否引入注意力和覆盖机制的循环神经网络架构就是对依赖结构的一种刻画呢?由于观测信息的产生过程限制我们很难精确到刻画具体的依赖关系,但我们可以利用推断所得的依赖结构去反推物理的关系网络结构,进而回答这一问题。
我们把从注意力机制和覆盖机制中学习所得的权重信息进行综合、删选,用于网络推断,并将错误的推断结果以红线标注于图6中。可以发现,无论是采用注意力机制的CYAN-RNN还是采用覆盖机制的CYAN-RNN(cov),其对关系网络的推断均存在一定的有效性,如此回答了我们这一疑问:注意力机制和覆盖机制能够刻画序列产生过程中的依赖结构。
图 6 网络推断结果
总结:这篇文章虽是以信息传播为背景的序列建模,但所提的跳跃依赖问题却普遍存在于序列建模的众多场景之中。在诸如语言模型的相关文中,我也有过一些尝试,发现这种采用注意力机制和覆盖机制的方式也同样有效。因此,读者若是有兴趣,可以到我的github上下载源码并在相关领域进行尝试:https://github.com/Allen517/cyanrnn_project。
另外,本工作的演示代码(IPython)详见: http://yongqwang.com/public/res_dat/UAI_demo.tar.gz
雷锋网版权文章,未经授权禁止转载。详情见。
原创文章,作者:奋斗,如若转载,请注明出处:https://blog.ytso.com/128280.html