赞
踩
最近在学BERT模型,发现主要用到了Transformer这一架构。Transformer采用了多头自注意力机制,不能像之前RNN那样按顺序逐字逐句来解析句子,一定程度上并没有包含各个单词的位置信息,因此在Transformer中需要加入了位置编码来引入这一信息。
其中一种位置编码的思想是正弦位置编码(Attention is what you need里提出的),正弦位置编码是通过sin和cos函数来进行处理的,那么这是如何想到的呢?能不能根据这种想法再思考有没有更好的位置编码方式呢?基于以上的想法,我觉得有必要去理解这种位置编码的思想。
本文参考了以下资料:
理想情况下,位置编码应满足以下标准:
(这部分主要参考资料3,这位答主解释得太好了,醍醐灌顶,感兴趣的直接去看原回答。)
从以上位置编码的第2、3点标准来看,我们既需要位置编码有界又需要两个时间步长之间的距离与句子长度无关。为了满足这两点标准,一种思路是使用有界的周期性函数,而简单的有界周期性函数很容易想到sin和cos函数。
简单的构造如下: P E ( p o s ) = s i n ( p o s α ) PE(pos)=sin(\frac{pos}{\alpha}) PE(pos)=sin(αpos),其中 α \alpha α是一个给定的数,主要用来调节相邻位置之间的差异, α \alpha α越大,差异越小。但是这样做有两个问题:1、若 α \alpha
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。