|
|
@ -256,6 +256,14 @@ tensor(-0.1923, grad_fn=<AddBackward0>)
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
### 为什么是简单相加
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
聪明的你会注意到,位置编码跟向量是相加的,既然相加是不是意味着最终模型也分辨不出里面的位置信息呢?为什么不是用concat进行拼接,单独的数值来表示位置。
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
首先,拼接会让维度再度翻倍,其次,多头注意力里的QKV矩阵是线形变换,本质上也是将位置编码和向量进行类型的加工,作者把这个称为隐式拼接(concat)。但我觉得,最大的可能性就是模型效果好。这也可能是为什么GPT-2不使用正弦和余弦生成位置编码,而是直接用模型训练。
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
### 总结
|
|
|
|
### 总结
|
|
|
|
|
|
|
|
|
|
|
|
位置编码使得模型能够理解单词在句子中的位置,从而更好地处理自然语言。无论是通过正弦和余弦函数的固定公式,还是通过可学习的参数,位置编码都为模型提供了理解文本所必需的结构信息。
|
|
|
|
位置编码使得模型能够理解单词在句子中的位置,从而更好地处理自然语言。无论是通过正弦和余弦函数的固定公式,还是通过可学习的参数,位置编码都为模型提供了理解文本所必需的结构信息。
|
|
|
|