中科院计算所王永庆详解IJCAI 17录用论文:如何用注意力机制RNN进行信息传播建模?|IJCAI 2017

雷锋网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

本文作者:奕欣

本文转自雷锋网禁止二次转载,原文链接

时间: 2024-07-31 12:01:51

中科院计算所王永庆详解IJCAI 17录用论文:如何用注意力机制RNN进行信息传播建模?|IJCAI 2017的相关文章

Jquery Easyui分割按钮组件SplitButton使用详解(17)_jquery

SpliButton组件依赖于Menu(菜单)组件和 LinkButton(按钮)组件 加载方式 Class加载 <a href="javascript:void(0)" id="edit" class="easyui-splitbutton" data-options="menu:'#box',iconCls:'icon-edit'">编辑</a> <div id="box"

详解K-DB RAC集群下的锁机制管理(一) ——K-DB与锁技术的演进

集群功能是数据库产品高可用性的重要一环,集群架构是保障业务连续性的核心架构,体现着数据产品的高可用性和技术水准.但在业界集群架构有多种方案和技术,其中最具稳定性.最能够保障业务连续性的架构当属于RAC集群,即Real Application Cluster.RAC集群特点是多个数据库节点共享存储,节点多活,可同时处理业务请求,具有负载均衡和故障转移两大特性,以此为系统提供业务连续性和高性能保障,经过多年电信.金融等关键行业的核心业务检验,RAC集群技术已经成为业界数据库集群的首选方案. 目前,甲

详解K-DB RAC集群下的锁机制管理(二) ——K-DB集群基本架构

数据库锁专门协调不同进程间的资源冲突,系统资源冲突的类型.频率.复杂度等决定了锁技术的发展,而资源冲突的情况又与数据库系统的基本架构高度相关.例如,在standby架构下,虽然以多节点集群运行,但是实际各个节点轮换对资源进行操作,资源冲突更多的体现为节点内进程或者是线程之间的冲突,相对简单,与之相应的锁机制也就简单.而K-RAC同时支持多个节点共同操作,由此带来的资源冲突问题远比其他架构更为复杂.因而,本文将先介绍K-DB的基本架构,由此引出K-DB锁的存储管理.构成以及锁同数据库映射关系的建立

详解K-DB RAC集群下的锁机制管理(三) ——K-DB锁包含的信息以及运行机制

这是关于K-DB锁技术的最后一部分,此前,陆续介绍了K-DB的演进.基本架构.锁目录的存储以及同数据块映射关系的建立等.本文将介绍K-DB锁包含的信息和运行机制,也就是每条锁到底包含哪些信息,以及每一条锁是如何建立.执行和取消的. K-DB锁包含的信息 不同数据库产品的锁记录的信息差异不大,通用数据库在集群架构下通常需要的锁信息如下.锁信息的复杂性更多与技术架构相关.集群架构的数据库锁,需要记录的信息远远超过了Active-Standby架构的数据库产品,K-DB锁纪录的信息主要包含以下几点:

详解K-DB RAC集群下的锁机制管理(四) ——K-DB锁的典型使用场景以及相关测试数据

在前三篇文章中,已经完成了对K-DB所技术的完整概述,包括K-DB基本架构.锁技术的存储.构成.运行机制等,读者至此应该对K-DB锁相关技术已经有了完整的了解.锁技术的最终的目的是协调冲突资源的使用,本文将列举几个典型的锁技术的使用场景,帮助读者更好的理解K-DB的具体运行机制,最后本文也会用测试数据来证明K-DB锁的高效性和稳定性. K-DB锁的典型使用场景 不同级别和条件,不同的insane,锁的申请和使用都有所区别,下面我们以一个3节点K-DB集群为例,来看具体的使用场景. 测试场景一:A

hadoop详解(十) 序列化与Writable接口

简介 序列化和反序列化就是结构化对象和字节流之间的转换,主要用在内部进程的通讯和持久化存储方 面. 通讯格式需求 hadoop在节点间的内部通讯使用的是RPC,RPC协议把消息翻译成二进制字节流发 送到远程节点,远程节点再通过反序列化把二进制流转成原始的信息.RPC的序列化需要实现以下几点: 1. 压缩,可以起到压缩的效果,占用的宽带资源要小. 2.快速,内部进程为分布式系统构建了高速链路,因 此在序列化和反序列化间必须是快速的,不能让传输速度成为瓶颈. 3.可扩展的,新的服务端为新的客户 端增

PHP Session的生存周期与用法详解

PHP Session的生存周期与用法详解 session 是一种服务器端用于存储有关用户会话信息的机制,服务器使用一种类似于散列表的结构(也可能就是使用散列表)来保存信息. 当程序需要为某个客户端的请求创建一个 session 的时候,服务器首先会检查这个客户端是否已经包含了一个 session 标识,这个我们称为 session id(获取方法为 session_id() ),如果已包含一个 session id 则说明此客户端之前已经创建过 session,服务器则按照 session i

《Android游戏开发详解》一2.17 对象是独立的

2.17 对象是独立的 Android游戏开发详解让我们来看一下实例和对象独立性的概念.使用一个类,我们可以创建想要的任意多个对象.例如,可以创建一个Spaceship类并且使用它来实例化(创建实例)50个Spaceship对象.这些Spaceship对象中的每一个,都叫作Spaceship类的实例.实例是更为"泛化"的类的"具体的"表示,这就好像乐高组合是其各个说明手册的具体化的表示.如图2-23所示. 就像现实生活中的对象一样,同一个类的不同实例是彼此独立的.还

《Android游戏开发详解》——第2章,第2.17节对象是独立的

2.17 对象是独立的Android游戏开发详解让我们来看一下实例和对象独立性的概念.使用一个类,我们可以创建想要的任意多个对象.例如,可以创建一个Spaceship类并且使用它来实例化(创建实例)50个Spaceship对象.这些Spaceship对象中的每一个,都叫作Spaceship类的实例.实例是更为"泛化"的类的"具体的"表示,这就好像乐高组合是其各个说明手册的具体化的表示.如图2-23所示. 就像现实生活中的对象一样,同一个类的不同实例是彼此独立的.还是