注意力机制的一般框架

信息科学的研究本质就在于对已知事物的抽象,抽象,再抽象

让我们从最基础浅显易懂的一个模型来逐步理解“智慧”是什么。古希腊时期,苏格拉底学派认为人类的智慧起源于逻辑,而通过问答式的引导学习,任何人都可以获得智慧。那么什么是问答?这里我们就要给问答建立一个最简单的模型:

假设我们把宇宙中所有的知识全部列在一张表中,表的每一行都是一个键值对(K,V),其中V就是知识,而K可以认为是对这个知识的摘要,用来检索这个知识。那么这个时候,当我们有一个问题Q的时候,最直接的做法就是去一个个的看K值,看看那个是和我这个问题最相关的。最后再把V返回出来,这就完成了一次知识的检索。这就是一个问答的最简单的模型,由于这个模型包含宇宙中所有的知识,所以它可以回答一切问题,换句话说, 这个表本身它就是智慧!

接下来,我们需要把这一过程进一步的抽象化。我们把KVQ全部都向量化,那这个过程就是

Find(V;Sim(K,Q))

如何去定义Find呢?最简单的我们选V_i, i=argmax_i{Sim(K_i,Q)}. 但是这样做不利于机器学习,所以很直觉的,我们就想用softmax来替换max。因为KVQ全部都是向量,我们不妨直接取softmax(Sim(K,Q)), 这样如果直接取max则和之前无异,或者我们也可以sample,但是这些都是无法机器学习的。那该怎么做?回想早期搞人脸模式识别的时候,都会算一个“平均脸”,或者CNN,也是计算了某种特征的加权平均。那这里我们也可以算一个平均的V出来:

V_m = Sum_i V_i*softmax(Sim(K_i,Q))

这其实和CNN就很像了(其实CNN也就是一种特殊的注意力机制),我们可以进一步的再把这个平均V送到另一个模型里,比如一个MLP,然后直接去预测目标值。或者这个平均V自己就是一个很好的feature representation,我们可以用它干别的都可以。说到这,我们其实已经有了一个注意力机制的一般框架,所有一切注意力机制都是万变不离其宗。

比如说,早期的一种用的很多的注意力机制,Bahdanau 注意力机制。它其实是基于encoder- decoder RNN的,用这个框架,那其实就是每个encoder RNN 的h就是K当前decoder的h就是Q,所以这个对应的问题直白的说就是“如果给定当前的decoder的h,那么这个h和所有的encoder的h的关系是什么?“,这个问题的答案将有助于decoder生成下一个token。

再到后来,Vinyals把这个过程给简化了,直接取argmax_i{softmax(Sim(K_i,Q))},然后从input sequence里面找下一个token。这就像一个指针一样,所以又叫指针网络pointer network。这个对应的问题也简化成了“如果给定当前的decoder的h,那么这个h和哪个encoder的h的关系最强?“

最后,说说人类21世纪最伟大的发明,transformer,其实也是一个道理。这个其实是被逼疯的研究人员的不得已之作。RNN固然好,但是RNN无法被并行一直是一个大瓶颈。所以transformer的想法很简单,我能不能不用RNN?为了回答这个问题,我们首先要问之前为什么要用RNN?很简单,RNN可以用来学习序列!所谓序列,就是一组具有前后顺序关系的数据。RNN可以somehow把这种顺序关系给捕捉到并学习理解。但是我们如果回去看注意力机制,它所干的不正也是在捕捉每个输入数据之间的相互关系吗,那这样RNN岂不就是多余的了?所以Vaswani作出了一个大胆的假设:如果显式的把数据的序列关系通过某种方式标注出来,仅仅只通过注意力机制依然可以达到之前RNN+注意力机制的效果。这就是attention is all you need!

事实上,这种摆脱RNN的注意力机制还有一个惊人的优势,那就是数据本身的输入顺序不再受到序列限制,意味着我们可以batch learning,我们可以并行化!而且我们也不再受困于数据的长度限制,想学多长都可以(但是毕竟这里我们依然在某种程度上把attention network当成是RNN在用,所以记忆力依然是有限的,早期的GPT是无法处理数量超过某个限制的token的)

回到transformer算法本身,可以看到KQV正好就是我们用的这个框架里的KQV。只不过KQV都是来自于同一来源的输入数据,所以这种的又叫做自注意力机制self-attention。

到此,总算是把注意力机制做了一个总结,也算是对自己近几年研究的一点感悟。

  • 7
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值