注意力机制和transformer

@[toc]

非参注意力池化层

  • 给定数据(x_i,y_i),i = 1,……,n

  • 平均池化是最简单的方案:f(x) = \frac{1}{n}\sum_i y_i

  • 更好的方案是60年代提出来的Nadaraya-Watson核回归
    f(x) = \sum_{i=1}^n \frac{K(x-x_i)}{\sum_{j=1}^n K(x-x_j)}y_i\\

  • 使用高斯核 K(u) = \frac{1}{\sqrt{2\pi}}exp(-\frac{u^2}{2})

  • f(x) = \sum_{i=1}^n \frac{exp(-\frac{1}{2}(x-x_i)^2)}{\sum_{j=1}^n exp(-\frac{1}{2}(x-x_j)^2)}y_i\\ \sum_{i=1}^n softmax(-\frac{1}{2}(x-x_i)^2)y_i

参数化的注意力机制

  • 心理学认为人通过随意线索和不随意线索选择注意点
  • 注意力机制中,通过query(随意线索)和key(不随意线索)来有偏向性的选择输入
    • 可以一般的写作f(x) = \sum_i \alpha (x,x_i)y_i,这里\alpha (x,x_i)是注意力权重
    • 早在60年代就有非参数的注意力机制

注意力分数

拓展到高维度
  • 假设query q \in R^q, m对key-value (k_1,v_1),…,这里
Additive Attention
  • 可学参数:W_k \in R^{h\times k}, W_q \in R^{h \times q}, v \in R^h

    a(k,q) = v^T tanh(W_k k + W_q q)

  • 等价于将key和value合并起来后放入到一个隐藏大小为h输出大小为1的单隐藏层MLP

Scaled Dot-Product Attention
  • 如果query和key都是同样的长度q,k_i \in R^d,那么可以
    a(q,k_i) = <q,k_i>/\sqrt{d}

  • 向量化版本

    • Q\in R^{n\times d},K\in R^{m\times d},V \in R^{m\times v}
    • 注意力分数:a(Q,K) = QK^T/\sqrt{d} \in R^{n \times m}
    • 注意力池化:f = softmax(a(Q,K)) V \in R^{n\times v}
总结
  • 注意力分数是query和key的相似度,注意力权重是分数的softmax结果
  • 两种常见的分数计算:
    • 将query和key合并起来进入一个单输出单隐藏层的MLP
    • 直接将query和key做内积

使用注意力机制的seq2seq

动机

  • 机器翻译中,每个生成的词可能相关于源句子中不同的词
  • seq2seq模型中不能对此直接建模
加入注意力 Encoder
  • 编码器对每次词的输出作为key和value
  • 解码器RNN对上一个词的输出是query
  • 注意力的输出和下一个词的词嵌入合并进入
总结
  • seq2seq中通过隐状态在编码器和解码器中传递信息
  • 注意力机制可以根据解码器RNN的输出来匹配到合适的解码器RNN的输出来更有效的传递信息

自注意力机制

自注意力
  • 给定序列x_1,……,x_n, x_i \in R^d

  • 自注意力池化层将xi当做key,value,query来对序列抽取特征得到y_1,…,y_n,这里
    y_i = f(x_i,(x_1,x_1),…,(x_n,x_n))\in R^d

跟CNN,RNN对比
CNN RNN 自注意力
计算复杂度 O(knd^2) O(nd^2) O(n^2d)
并行度 O(n) O(1) O(n)
最常路径 O(n/k) O(n) O(1)
位置编码
  • 跟CNN/RNN不同,自注意力并没有记录位置信息

  • 位置编码将位置信息注入到输入里

    • 假设长度为n的序列是X\in R^{n\times d},那么使用位置编码矩阵P \in R^{n \times d}来输出X+ P作为自编码输入

    • P的元素如下计算:
      p_{i,2j} = sin(\frac{i}{10000^{2j/d}}),p_{i,2j+1} = cos(\frac{i}{10000^{2j/d}})

位置编码矩阵
相对位置信息
  • 位置于i+\delta处的位置编码可以线性投影位置i处的位置编码来表示
  • w = 1/10000^{2jld},那么

[cos(\delta w_j) \quad sin(\delta w_j)\\ -sin(\delta w_j) \quad cos(\delta w_j)][p_{i,2j}, p_{i+\delta,2j+1}]\\ 投影矩阵,跟i无关

总结
  • 自注意力池化层将xi当做key,value,query来对序列抽取特征
  • 完全并行,最长序列为1,但对长序列计算复杂度高
  • 位置编码在输入中加入位置信息,使得自注意力能够记忆位置信息

transformer

Transformer架构
  • 基于编码器-解码器架构来处理序列对
  • 跟使用注意力的seq2seq不同,transformer是纯基于注意力
多头注意力
  • 对同一key,value,query,希望抽取不同的信息

    例如短距离关系和长距离关系

  • 多头注意力使用h个独立的注意力池化

    • 合并各个头(head)输出得到最终输出
有掩码的多头注意力
  • 解码器对序列中一个元素输出时,不应该考虑该元素之后的元素
  • 可以通过掩码来实现
    • 也就是计算xi输出时,假装当前序列长度为i
基于位置的前馈网络
  • 将输入形状由(b,n,d)变换成(bn,d)
  • 作用两个全连接层
  • 输出形状由(bn,d)变化为(b,n,d)
  • 等价于两层核窗口为1的一维卷积层
层归一化
  • 批量归一化对每个特征/通道里元素进行归一化
    • 不适合序列长度会变的NLP应用
  • 层归一化对每个样本里的元素进行归一化
信息传递
  • 编码器中的输出y_1,…,y_n
  • 将其作为解码中的第i个transformer块中多头注意力的key和value
    • 它的query来自目标序列
  • 意味着编码器和解码器中块的个数和输出维度都是一样的
预测
  • 预测第t+1个输出时
  • 解码器中输入前t个预测值
    • 在自注意力中,前t个预测值作为key和value,第t个预测值还作为query
总结
  • transformer是一个纯使用注意力的编码-解码器
  • 编码器和解码器都有n个transformer块
  • 每个块里使用多头(自)注意力,基于位置的前馈网络,和层归一化
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 214,377评论 6 496
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 91,390评论 3 389
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 159,967评论 0 349
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 57,344评论 1 288
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 66,441评论 6 386
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 50,492评论 1 292
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,497评论 3 412
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,274评论 0 269
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,732评论 1 307
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,008评论 2 328
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,184评论 1 342
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,837评论 4 337
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,520评论 3 322
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,156评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,407评论 1 268
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,056评论 2 365
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,074评论 2 352

推荐阅读更多精彩内容