回顾
注意力机制
看一个物体的时候,我们倾向于一些重点,把我们的焦点放到更重要的信息上
所以,现在要求我们的深度学习模型也要能够为其学习的信息提供不同的注意力分配,从而让模型能够学习到更高价值的信息并且释放更多的算力资源
机制流程
1、QK 相乘:求爱好偏向和具体内容块的相似度
2、Scale变化:未来做 softmax 的时候避免出现极端情况,公式如下图
3、softmax求注意力概率分配:利用softmax函数让相似度转化为注意力的分配值(在0-1之间,总和为1)
4、MatMul生成新的查询对象:将原查询对象V乘上注意力分配值得到新的查询对象V’,此时新查询对象就带上了注意力的信息
问题思考
注意力机制能够正常执行关键的点在于给模型提供爱好偏向。如果爱好偏向是人为外部提供的,那么对于每一个模型、每一种应用情况,我们都必须要提供不同的爱好偏向。所以,注意力机制这个模型的泛化性是很差的,这也导致这个模型并不完全智能。
所以Q必须能够让模型通过训练自我学习,调整。
于是,我们必须要思考Q学习初始值的来源,这个Q的来源也将决定不同的注意力机制模型
总之,思考流程为:
注意力机制对外界信息依赖度过高——》要让模型自我学习爱好偏向Q——》Q初始值来源确定
我们的设想:
给注意力机制模型一个信息(待查询对象),模型能够自己学习待查询对象哪里重要,然后分配注意力并给出带有注意力信息的全新查询对象
自-注意力机制 (Self-Attention)
概述
自注意力机制最关键的点在于:K、Q、V来源于同一个X,这三者是同源的
现在外界只提供一个待查询对象X,我们需要从这个对象中提炼出板块分配K, 爱好信息Q,以及实际查询对象V
提炼的方式:
1、分配三个参数 给Q、K、V
2、通过监督学习提供的大量数据,来学习 的值
3、实现通过内部数据学习得到三个信息
详细流程
一、Q、K、V的获取
假如,通过随机梯度等模型参数训练方法以及监督学习模型提供的参数,我们已经训练好了一个模型,有了模型的参数
此时提供Thinking、Machine两个词,让模型学习单词内部的信息。首先,通过word2dev我们先将两个词变为向量的形式X1,X2。然后再分别乘上三个参数便可以得到对应的q、k、v
二、计算各单词注意力
关键点:
1、 每一个单词都有:自己的被查询对象(v),关键判断(k),在本模型中对该单词的爱好偏向特征
2、爱好偏向特征指的是:对单词特征抽象化提取后的喜欢程度。也就是说Thinking的爱好偏向特征,在其他单词中也可能存在(高维度特征,不是具象化表明的特征)。所以q1*k2也要考虑,因为Machine单词也可能有和Thinking一样被爱好的特征
3、每一个单词最后得到的注意力得分值的含义是:该单词(内部特征)在全体数据中(句子)所应该分配的注意力值
4、一个单词将融入其他单词的信息,增加了语言处理中对上下文关联信息提取的能力
三、缩放、Softmax处理
关键点:
1、这里的处理和注意力机制是完全相同的
2、 指的是第k个单词转为词向量后的词向量维度
四、计算最终待查询量
关键点:
1、sum=softmax*value
2、本质就是:原本的信息*注意力分配值=最终融入注意力的待查询信息
举例
不做注意力,its 的词向量就是单纯的 its,没有任何附加信息。但是显然从英语语法的角度来看,its后面的那个单词远远比its本身重要,并且its本身就是为了后面的名词做准备的,所以其提供的作用本身就是上下文关联
不加入注意力机制的模型对这个上下文关联的信息无法提取,这会导致模型没有办法很好的对文本进行学习
而通过自注意力机制得到新的 its 的词向量,则会包含一定的 laws 和 application 的信息,成功联系了文本的上下文信息
一些图解
下图的内容在上文均有涉及,仅仅为加深大家的印象,所以在此不再赘述