Tensorflow学习——Attention

tf.contrib.seq2seq.LuongAttention

init(
num_units,
memory,
memory_sequence_length=None,
scale=False,
probability_fn=None,
score_mask_value=float('-inf'),
name='LuongAttention'
)

参数 含义
num_units 在encoder阶段产生了多个特征向量,每个特征向量的大小
memory 一个batch里,encoder阶段产生的所有的特征向量,在RNNencoder中,维数为[batch_size, max_time, num_units],即encoder阶段产生了max_time个大小为num_units的特征向量
memory_sequence_length 记录memory中 的特征向量的长度,维数是[batch_size,],令memory中超过memory_sequence_length的值为0
scale 是否进行scale
probability_fn 将打分函数直接转成概率,默认的是softmax
score_mask_value 在将分数传到probability_fn函数之前的掩码值,在有Probability_fn函数的情况下才用

原理

论文为Effective Approaches to Attention-based Neural Machine Translation.

论文中提出了两种模式:Global Attention和Local Attention,Global Attention在encoder产生的所有信息中进行Attention操作,Local Attention在部分信息中进行Attention操作。

Global Attention

针对encoder产生的时序特征向量hs,有一个与其长度相同的对齐向量at,at 相当于在t时刻对hs 的权重向量,作用就是在t时刻找到hs中对deocder有影响的部分, at 由decoder当前隐藏状态和hs 得到:

文中使用了三种打分函数:


屏幕快照 2017-12-28 下午5.00.57.png

最后一种将decoder当前隐藏状态hths直接相连进行打分,通过分数算出权重与hs想乘得到上下文向量ct,通过ctht得到Attention隐藏状态h ̃t


利用隐藏状态求出概览分布:

整体的过程为:ht →at →ct →h ̃t

Local Attention

gloabl attention有一个缺点是在每一个target word生成时都需要考虑所有encdoer产生的特征信息,代价较高且对于长序列可能会有影响。于是用local attention来解决这个问题,local attention选取特征信息中的一部分,相比于global更容易训练。
大致步骤为在每个时刻t先产生一个对其位置ptct通过[pt−D,pt+D]中的信息求得。
文中尝试了两种方法:local-p和local-m。

local-m:

对齐方法为pt = t,对齐函数于global中的相同

local-p:

pt为中心生成一个高斯分布,对齐函数为:

tf.contrib.seq2seq.BahdanauAttention

init(
num_units,
memory,
memory_sequence_length=None,
normalize=False,
probability_fn=None,
score_mask_value=float('-inf'),
name='BahdanauAttention'
)

参数 含义
normalize 是否进行weight normalization

原理

参照论文Neural Machine Translation by Jointly Learning to Align and Translate.
Luong在论文中提到了BahdanauAttention的流程为 ht−1 → at → ct → ht。

BahdanauAttention

具体的公式如下:
条件概率为:p(yi|y1, . . . , yi−1, x) = g(yi−1, si, ci)
其中si代表i时刻rnn的隐藏状态,ci为上下文向量。
ci是根据encoder的输出特征向量(h1 , · · · , hTx )加权得来的,每个时刻的ci都不一样,ci为:


每个αij由下面的公式计算得出:

其中:eij =a(si−1,hj),a就相当于对齐函数,在文中作者用一个前馈神经网络实现的。

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

推荐阅读更多精彩内容