什么是Attention机制
Attention机制通俗的讲就是把注意力集中放在重要的点上,而忽略其他不重要的因素。其中重要程度的判断取决于应用场景,拿个现实生活中的例子,比如1000个人眼中有1000个哈姆雷特。根据应用场景的不同,Attention分为空间注意力和时间注意力,前者用于图像处理,后者用于自然语言处理。本文主要介绍Attention机制在Seq2seq中的应用。
为什么要用Attention机制
我们知道在Seq2seq模型中,原始编解码模型的encode过程会生成一个中间向量C,用于保存原序列的语义信息。但是这个向量长度是固定的,当输入原序列的长度比较长时,向量C无法保存全部的语义信息,上下文语义信息受到了限制,这也限制了模型的理解能力。所以使用Attention机制来打破这种原始编解码模型对固定向量的限制。
Attention原理
Attention的原理就是计算当前输入序列与输出向量的匹配程度,匹配度高也就是注意力集中点其相对的得分越高,其中Attention计算得到的匹配度权重,只限于当前序列对,不是像网络模型权重这样的整体权重。
算法过程:
1)encode对输入序列编码得到最后一个时间步的状态c,和每个时间步的输出h,其中c又作为decode的初始状态z0。
2)对于每个时间步的输出h与z0做匹配也就是match操作,得到每个时间步的匹配向量α01,如图1。
图1
3)对所有时间步的输出h与z0的匹配度α0,使用softmax做归一化处理,得到各个时间步对于z0的匹配分数。