1. 什么是注意力机制?
我们在日常的生活中对许多事物都有我们自己的注意力重点,通过注意力我们可以更加关注于我们注意的东西,从而过滤不太关注的信息。
- 看到一张人像图时,我们会更关注人的脸部,其次根据脸部再细分我们个人的关注点,比如我更关注眼睛,你可以更关注鼻子、嘴巴等。然后为这些关注点内容赋予不同的权重,这个权重代表注意力的分配。
注意力机制就是模仿人的注意力的一种识别机制,可以帮助机器像人一样筛选重要注意力特征。
2. 如何实现注意力机制?
- 计算公式:
其中,计算相似值,通过softmax
函数转化为概率权重,然后✖️V得到注意力值。
例子:淘宝搜索
查询:在淘宝搜索“笔记本“,查询
Q
网页中出现的最前面的笔记本推荐是淘宝推荐系统最希望我们注意的一些笔记本,这就是注意力机制实现的一种,那么其内部的机制是怎样的呢?我们接着往下进行分析。
计算相似性
K
:淘宝系统在拿到查询Q
之后,将Q
与后台现有的商品的关键字K
进行对比,计算他们和查询之间的相似性得到一个暂且可以理解为权重的东西。这一步的主要作用就是搜索到是笔记本的商品。
价值
V
:每个商品都对应了一个价值V
,这个价值的计算方式可能是淘宝内部的一个价值打分机制,可以根据商品的广告费、评价、销量等因素来综合得出。而这一步的作用就是得到是笔记本的商品之后,每个商品都是对应的价值
V
,V
越高就说明该商品的价值越高。根据相似性计算商品的综合价值(给商品价值加上权重):权重✖️价值,得到商品的综合价值。然后系统根据综合评分进行排序,将排序后的笔记本呈现给用户。
这个综合价值是相对于客户的搜索
Q
而言的。
3. 自注意力机制
自注意力机制是注意力机制的变体,其减少了对外部信息的依赖,更擅长捕捉数据或特征的内部相关性。
自注意力机制在文本中的应用,主要是通过计算单词间的互相影响,来解决长距离依赖问题。
自注意力机制的计算过程,如上图所示:
1.将输入单词转化成嵌入向量;
2.根据嵌入向量得到q
,k
,v
三个向量;
3.为每个向量计算一个score:score =q . k
;
4.为了梯度的稳定,Transformer使用了score
归一化,即除以 ;
5.对score
施以softmax
激活函数;
6.softmax
点乘Value
值v
,得到加权的每个输入向量的评分v
;
7.相加之后得到最终的输出结果。
例子:
The animal didn't cross the street because it was too tired
这里的it
到底代表的是animal
还是street
呢,对于我们来说能很简单的判断出来,但是对于机器来说,是很难判断的,self-attention
就能够让机器把it
和animal
联系起来。利用了自注意力机制之后,可以得到下图所示的关联:说明注意力机制可以很好学习上下文的信息,得到不同词汇之间的注意力关系。