读书人工智能

基于树结构递归神经网络的推特谣言检测

2021-10-16  本文已影响0人  酷酷的群

论文标题:Rumor Detection on Twitter with Tree-structured Recursive Neural Networks
论文链接:https://aclanthology.org/P18-1184/
论文来源:ACL 2018

一、概述

在谣言检测研究方面,目前很少有基于谣言传播结构的方法。一些基于核的方法用来建模传播树的结构,通过对比树的相似性可以区分谣言和非谣言,但是不能直接分类一棵树,而是需要与其他树两两对比。

在本文中提出使用递归神经网络(Recursive Neural networks,RvNN)来建模和学习谣言的传播结构。RvNN本身用来学习段落或句子的语法和语义表示,与文本解析不同的是,我们模型的输入是一棵源自源推文的传播树,而不是单个句子的解析树,树的节点是一个响应的帖子而非单个词。通过沿着树形结构的递归特征学习过程,可以共同捕获帖子的内容语义及其之间的响应关系。

那么,为什么这种神经模型能更好地完成谣言检测任务呢?分析发现,推特可以通过用户分享观点、猜测和证据来“自我纠正”一些不准确的信息。举例来说,下图展示了一个假谣言和真谣言的传播树:

example

结构不敏感的方法基本上依赖于文本中不同立场的相对比例,在这样的线索不清晰的情况下,就不能很好地发挥作用。然而,可以看到,当一个帖子否认了虚假谣言时,往往会得到支持或肯定的回复,证实了谣言的否认;相反,对真实谣言的否认往往会引发质疑或否认。这一观察结果可能暗示了一个更普遍的假设,即回复者倾向于不同意(或质疑)那些支持虚假谣言或否认真实谣言的人,同时也倾向于同意那些否认虚假谣言或支持真实谣言的人。同时,一个回复,通常是响应其直接祖先(也就是所回复的帖子)而不是直接响应源推文(即传播树的根节点)。递归网络自然地对这些结构进行建模,以学习捕获谣言指示信号,并通过递归聚合来自不同分支的信号来增强其表示。

本文采用的RvNN模型分为两种,bottom-up(BN)模型和top-down(TD)模型,通过不同方式来表示传播树结构。这种架构的重要优点是,在给定传播树的所有路径的连接和方向的情况下,可以通过递归有选择地优化节点特征。

二、方法

  1. 问题陈述

一个谣言检测数据集定义为集合C=\left \{C_{1},C_{2},\cdots ,C_{|C|}\right \},每个C_{i}包含源推文r_{i}以及所有按时间顺序排列的相关响应推文x_{i*},也就是说C_{i}=\left \{r_{i},x_{i1},x_{i2},\cdots ,x_{im}\right \}。需要注意的是,尽管推文是按时间顺序标注的,但它们之间基于回复或转发关系存在联系,可以形成传播树结构,并以r_i为根节点。谣言检测问题被定义为分类任务,也就是学习一个分类器f:C_{i}\rightarrow Y_{i}Y_{i}属于四个细粒度的类:non-rumor,false rumor, true rumor和unverified rumor。

根据方向考虑的树结构分为两种:
①Bottom-up树的回复节点永远指向被回复的节点,叶子节点没有任何回复,用T_{i}=\left \langle V_{i},E_{i}\right \rangle表示,其中V_{i}=C_{i},对于节点u,v\in V_{i}u\leftarrow v存在表示v回复u
②Top-down树符合信息传播的方向,u\rightarrow v表示信息从u流向vv看到了u并给u留下了一个回复。

  1. 标准递归神经网络

RvNN的原始版本针对句子解析二叉树,每个节点表示的计算与其直接子节点关联在一起。举例来说,下图展示了RvNN的结构,对应图左边的解析树:

RvNN

叶子节点是输入句子中词的word embedding。用p表示一个父亲节点,它的两个子节点为c_1c_2,那么父亲节点的表示的计算过程为p=f(W\cdot [c_{1},c_{2}]+b)f(\cdot )是激活函数,W,b是参数,这个过程被在所有节点上递归地执行,学习到的节点表示可以被用来进行各种分类任务。

  1. Bottom-up RvNN

自下而上模型的核心思想是通过递归访问每个节点,从底部的叶子到顶部的根,为每个子树生成特征向量,最终聚合得到顶部根节点的表示作为树的全局表示。一棵传播树及其对应的RvNN计算过程如下图(a),(b)所示:

example

每个节点的表示是对应回复的tf-idf向量。在这里每个节点都有一个输入向量,并且节点的子节点数量不一定是相同的。在本文中选用拓展GRU作为隐层单元。使用S(j)表示节点j的直接子节点集合,节点j的隐状态计算过程为:

\tilde{x}_{j}=x_{j}E\\ h_{S}=\sum _{s\in S(j)}h_{s}\\ r_{j}=\sigma (W_{r}\tilde{x}_{j}+U_{r}h_{S})\\ z_{j}=\sigma (W_{z}\tilde{x}_{j}+U_{z}h_{S})\\ \tilde{h}_{j}=tanh(W_{h}\tilde{x}_{j}+U_{h}(h_{S}\odot r_{j}))\\ h_{j}=(1-z_{j})\odot h_{S}+z_{j}\odot \tilde{h}_{j}

x_j是原始输入向量,E用来对x_j进行仿射变换,[W_{*},U_{*}]是GRU的参数,\odot代表哈达玛积。不了解GRU可以参考:人人都能看懂的GRU

最终使用根节点隐状态进行分类:

\hat{y}=Softmax(Vh_{0}+b)

  1. Top-down RvNN

Top-down RvNN旨在利用自顶向下树的结构来捕获用于对谣言进行分类的复杂传播模式,其计算过程如上图(c)所示。每个节点的表示是通过组合它自己的输入和它的父节点而不是子节点来计算的,这与Bottom-up模型不同。

使用P(j)代表节点j的父亲节点,节点的隐状态计算过程如下:

\tilde{x}_{j}=x_{j}E\\ r_{j}=\sigma (W_{r}\tilde{x}_{j}+U_{r}h_{P(j)})\\ z_{j}=\sigma (W_{z}\tilde{x}_{j}+U_{z}h_{P(j)})\\ \tilde{h}_{j}=tanh(W_{h}\tilde{x}_{j}+U_{h}(h_{P(j)}\odot r_{j}))\\ h_{j}=(1-z_{j})\odot h_{P(j)}+z_{j}\odot \tilde{h}_{j}

然后对叶子节点的表示进行max-pooling得到h_{\infty }进行分类,这可以帮助从所有传播路径中捕获最有效的指示性特性:

\hat{y}=Softmax(Vh_{\infty }+b)

我们可以推测,Top-down模型会更好。在Bottom-up的情况下最终的输出依赖于根节点的表示,并且它的信息损失比Top-down模型要大。因为在Top-down的情况下,通过不同传播路径嵌入到叶子节点的表示可以通过pooling进行整体地合并。

  1. 模型训练

采用平方损失来训练并进行L2正则化:

L(y,\hat{y})=\sum_{n=1}^{N}\sum_{c=1}^{C}(y_{c}-\hat{y}_{c})^{2}+\lambda ||\theta ||_{2}^{2}

C是类别的数目。使用Adagrad进行训练,使用均匀分布初始化模型参数,词典大小为5000,隐层状态与embedding大小为100。

三、实验

对比了多个baseline的效果:

对比baseline

谣言的早期检测测试:

早期检测

下面是一个被Bottom-up和Top-down模型都检测到的一个假谣言的例子:

example
上一篇下一篇

猜你喜欢

热点阅读