莒县做网站和微信,网站上传视频怎么做,邢台交友吧,怎么做网站超市一、背景
为什么是multi-head self attention? 并行的处理多种注意力模式#xff1a; 每个注意力头使用不同的线性变换#xff0c;这意味着它们可以从输入序列的不同子空间中学习不同的特征关联。这样一来#xff0c;模型可以通过多个注意力头同时关注输入序列的不同方面 每个注意力头使用不同的线性变换这意味着它们可以从输入序列的不同子空间中学习不同的特征关联。这样一来模型可以通过多个注意力头同时关注输入序列的不同方面如一句话的语法结构、语义角色、主题转移等。 增加模型的学习能力和表达能力 通过多个注意力头由于每个头关注的特征不同模型可以学习到更丰富的上下文信息这样综合起来可以更加全面的理解和处理序列。
二、多头自注意力机制的原理
2.1 自注意力机制
在介绍多头自注意力机制之前先来简单的回顾一下自注意力机制
自注意力机制Self-Attention Mechanism是Transformer架构中的核心组件它允许模型在处理序列数据时 考虑序列中不同位置元素之间的相互关系。在自注意力机制中查询Query, Q、键Key, K和值Value, V是三个重要的概念它们都是从输入序列经过线性变换得到的向量。 对于QKV分别代表的含义我想用一个例子来说明一下 我们有一段文本“小明喜欢在晴朗的日子里去公园散步。” 如果我们想要了解 “小明” 这个词在句子中的上下文含义我们可以看看句子中其他词与 “小明” 之间的关系。
查询Query, Q可以把它想象成我们要寻找信息的问题或者焦点。在上面的例子中 小明”就是我们的查询 “我们想要知道“小明”这个词在句子中的具体含义。
键Key, K可以把它看作是其他单词或者说是输入序列中的其他部分提供的线索帮助我们判断它们与查询的相关程度。在我们的例子中句子中的每一个词都可以产生一个键用来表示它是否与“小明”相关以及相关的程度。
值Value, V可以理解为当一个键与查询匹配时它能提供的额外信息。在句子中如果一个词与“小明”相关联那么它的值向量就会被用来增强我们对“小明”的理解。比如“喜欢”、“晴朗的日子”和“公园散步”都与“小明”有关系它们的值向量将被用来丰富“小明”的语境。
自注意力机制通过计算查询向量Q和所有键向量K之间的相似度通常是点积得到一个注意力权重矩阵然后使用这些权重对所有值向量V进行加权求和从而得到一个综合了上下文信息的新表示。总结来说Q是询问者K是回答者提供的线索V是等待线索的答案自注意力机制就是通过这些线索和答案来构建输入序列的上下文关系进而优化模型的性能。
2.2 多头自注意力机制
多头自注意力机制顾名思义最自注意力机制最大的不同就是使用多个QKV来构建序列的上下文关系。
在实现过程中 q i , 1 , q i , 2 q^{i,1}, q^{i,2} qi,1,qi,2 k i , 1 , k i , 2 k^{i,1}, k^{i,2} ki,1,ki,2, v i , 1 , v i , 2 v^{i,1}, v^{i,2} vi,1,vi,2与自注意力机制的获取方式一样以q的计算为例 q i , 1 , q j , 1 W q , 1 q i q j q^{i,1}, q^{j,1}W^{q,1}q^iq^j qi,1,qj,1Wq,1qiqj q i , 2 , q j , 2 W q , 2 q i q j q^{i,2}, q^{j,2}W^{q,2}q^iq^j qi,2,qj,2Wq,2qiqj 可以看到其计算方式和自注意力机制计算q时一样。 multi-head 在计算self-attention时和单个头的self-attention类似只不过每一个输入 a i a^i ai会得到和头个数相同的输出 b i , 1 , b i , 2 b^{i,1},b^{i,2} bi,1,bi,2。需要注意的是头与头对应即 q i , 1 q^{i,1} qi,1只需要与 k i , 1 , v i , 1 k^{i,1}, v^{i,1} ki,1,vi,1做运算。
2.3 Positional Encoding位置编码
当前对于一个序列而言每一个单词出现的位置以及单词之间的距离并未被考虑进去即第一个单词与最后一个单词的位置是等价的。但是无论是对于一段文字序列还是一段声音信号词语的位置不同所表达的意思可能会发生较大的改变不如“你不能不吃饭”和“不你不能吃饭”。
为了解决该问题就需要用到ositional Encoding技术。对于每一个词语只需要给输入信号加上一个位置向量 e i e^i ei. 位置向量的编码方式有很多种如下图所示 接下来的内容与multi-head知识无关了我只是顺着课程一块记录下来了。
2.4 self-attention for image
将一张图片看作是一个vector set, 比如下面这张图像被划分成510的一组向量集每一个vector是一个13大小的向量。 应用的实例
三、Self-attention v.s CNN
先说结论CNN是简化版的self-attention。 self-attention处理数据的方式: self-attention是考虑整张图像的信息即receptive filed的范围是自己决定的自己觉得q与谁相关。 CNN处理数据的方式: CNN仅仅考虑定义范围内的receptive filed里面的信息
四、Self-attention v.s RNN
RNN 简单介绍RNN的核心机制是其隐层状态它可以保存先前输入的信息从而在后续时间步骤中使用这相当于给网络赋予了一定的“记忆”能力使其能够处理具有长期依赖关系的数据。 RNN与Self-attention 的不同 如果一段序列较长如果需要最右边黄色的输入与最开始蓝色输入信息的关联需要将蓝色输入一直存储在memory中这需要较大的内存。受内存的限制在RNN中后面的输入很难与最开始的输入关联。 但是在Self-attention中只要使用黄色输入的Q与蓝色输入的K进行矩阵乘法计算就能完成这个操作。 RNN是noparallel, 除了最开始的输入外RNN中每一个输入都需要考虑前一个的输出来得到当前状态的输出无法平行处理所有输入。 但是在self-attention中如下图所示它可以很轻松的平行处理所有输入。
参考资料
台大李宏毅自注意力机制和Transformer详解 【NLP】多头注意力Multi-Head Attention的概念解析