Attention机制详解以及在图神经网络中的应用

本文基于Advanced Deep Learning的第三次作业,内容如下:

1.  理解论文Attention is all you need,介绍attention计算方式和transformer框架

2. 理解论文Graph Attention Networks,介绍图神经中attention计算方式和模型框架

3. 用DGL实现图注意力网络的模型部分,和baseline对比观察模型提升效果

1 注意力机制和transformer框架

1.1 注意力机制的来源和引入原因

注意力机制借鉴了人类的选择性注意力机制。例如,人类视觉快速扫描全局图像,获得认为应该重点注意的目标区域,并对目标区域信息投入更多注意力获取细节,减少对图片其他无用信息的关注。如下图,我们会把更多注意力放到婴儿的脸部,文章的标题和文本的首句等位置。

人类视觉注意力机制

现流行的注意力模型一般依附在encoder-decoder框架上,可以处理包括NLP、图像处理等任务,下面以NLP中常用的encoder-decoder框架为例子做讲解。

encoder处理输入单词序列source(x1, x2,...,xm),经过非线性变化生成中间语义C=f(x1, x2, ..., xm),decoder根据中间语义C和已经生成的历史信息(y1, y2, ..., yi-1) 来生成i时刻的单词yi。

一般的NLPencoder-decoder框架

没有使用注意力机制的模型在处理长文本时会出现问题,因为decoder使用的是同样的中间语义,也就是在生成每一个单词时原输入的每一单词贡献是相等的,这显然是不合理的,特别是针对长句子来说,相同的中间语义意味着原单词和细节信息的丢失,这也是引入attention的重要原因。

引入attention机制之后,中间语义Ci = ai1 * f(x1) + ai2 * f(x2) + … + ain * f(xn),其中f表示encoder层对输入单词序列的非线性处理,a表示decoder生成第i个单词时对source输入第j个单词的注意力分配系数。

如何得到单词概率分布?我们可以将输出层隐藏节点Hi-1的状态和输入层隐层节点状态hj = f(xj) 进行一一对比,也就是通过函数F(hj,Hi-1) 获得目标单词yi和每个输入单词对应的对齐可能性。

引入注意力机制的encoder-decoder框架

1.2 注意力系数的计算

现在从上面模型中抽离出来,我们从更抽象的层面理解注意力系数。

阶段1: 计算query和source的相似度,similarity可以采取点乘,cosine相似度,MLP网络等

阶段2: 用softmax对similarity进行归一化处理

阶段3: ai * value的加权求和得到最终的注意力系数

论文Attention is all you need中多头注意力机制模型的框架和详细计算方式如下:

多头注意力框架和详细计算来源:NLP老师PPT

多头注意力机制将每个注意力结果拼接并且进行线性转换使得输入和输出结构对标,多头的提出能够有效稳定模型的训练,并且由于每个注意力机制关注的特征层减少,多头的计算代价和单头相似。

多头注意力

1.3 Transformer框架

Transformer框架延续了encoder-decoder的框架体系,具体可以分成5个步骤。

Transformer

步骤1: Embedding Layer

由于我们没有使用RNN捕捉序列位置信息,所以用position embeddings就显得非常重要。图中右边公式表示position embeddings的计算,pos表示单词位置index,i表示特征维度index。又因为cos和sin的计算可加性,位置p+k的向量可以表示成位置p的向量的线性变换,这提供了表达相对位置信息的可能性。

步骤2: Enceoder Layer

Encoder Layer包括两个sublayers,第一个sublayer是多头注意力层,用来计算输入的attention,第二个sublayers是全连接层。论文作者也提到模拟残差网络能让模型在深度模型中取得更好的准确率。

步骤3:  Decoder Self-attention Layer

这一层计算生成结果的self-attention,但是由于是生成过程,也就是在生成时刻i的结果时,只能看到时刻i-1以前的生成结果,所以需要做mask,也就是遮挡住i时刻之后的结果。

步骤4:  Decoder-Encoder Attention

将encoder的结果作为Key和Value,将decoder的结果作为Query,计算Attention。

步骤5:  Output Layer

经过线性变化和softmax层输出单词概率进行预测,与target的sentence进行对比计算loss

2 图注意力网络(GAT)和attention计算

GAT的关键在于Graph Attentional Layer,层的输入输出为:

2.1 输入输出

2.2 共享线性变化

在计算attention之前,对于所有节点做共享线性变换以获得特征增强,也就是将输入特征转换为高维特征。

2.3 self-attention机制


a是一个单层前馈神经网络,结合LeakyReLU可以得到

为了稳定学习过程,采取多头注意力机制,采取多个独立的注意力机制得到

在最后一层平均后非线性化得到

Graph Attentional Layer的图示如下:

3 DGL实现图注意力网络和实验结果

DGL是亚马逊推出的图神经深度学习框架,个人觉得document和tutorial写得相当不错。

DGL Tutorials and Documentation: https://docs.dgl.ai/index.html

DGL Github: https://github.com/dmlc/dgl

用DGL实现图注意力网络非常简便,具体代码可以见我的gitee仓库:

https://gitee.com/echochen1997/gat_ppi/tree/master

具体模型的框架图如下,包括三层多头注意力层。

GAT_ppi 模型图

经过100个epoch之后,和baseline对比效果如下:

Reference:

1. 深度学习中的注意力模型(2017版)知乎:张俊林 https://zhuanlan.zhihu.com/p/37601161 非常详细且好理解的attention机制讲解,极力建议看原文

2. 细讲 | Attention Is All You Need 

https://mp.weixin.qq.com/s/RLxWevVWHXgX-UcoxDS70w

Transformer 讲解详细,后附有生动例子,建议读原文

3. Attention is all you need 论文

4. 全面理解Graph Attention Networks 知乎:老和山下小菜狗 

https://zhuanlan.zhihu.com/p/296587158 

5. Graph Attention Networks 论文

6. NLP老师PPT 作者Hady Elsahar

7. ADL HW3 助教的instruction和baseline代码

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 216,470评论 6 501
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 92,393评论 3 392
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 162,577评论 0 353
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 58,176评论 1 292
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 67,189评论 6 388
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,155评论 1 299
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,041评论 3 418
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,903评论 0 274
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,319评论 1 310
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,539评论 2 332
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,703评论 1 348
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,417评论 5 343
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 41,013评论 3 325
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,664评论 0 22
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,818评论 1 269
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,711评论 2 368
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,601评论 2 353

推荐阅读更多精彩内容