探秘Transformer系列之(17)--- RoPE
探秘Transformer系列之(17)--- RoPE目录
[*]探秘Transformer系列之(17)--- RoPE
[*]文章总表
[*]0x00 概述
[*]0x01 总体思路
[*]1.1 注意力机制回顾
[*]1.2 思路分析
[*]1.3 结果展示
[*]1.4 问题
[*]0x02 原理推导
[*]2.1 f()函数
[*]2.2 目标
[*]2.3 推导
[*]调整视角
[*]从二维向量到复数
[*]从复数到极坐标
[*]下一步思路
[*]引入绝对位置信息
[*]旋转矩阵
[*]绝对位置编码
[*]找到相对位置信息
[*]找到交互
[*]找到内积
[*]把位置信息融入内积
[*]小结
[*]2.4 正式定义
[*]f()引入绝对信息
[*]g()函数验证相对信息
[*]右面等式
[*]左边等式
[*]高维度
[*]2.5 总结
[*]0x03 性质
[*]3.1 相关性
[*]3.2 周期性
[*]3.3 \(\beta\)进制
[*]3.4 对称性
[*]3.5 频域
[*]3.6 高频低频
[*]3.7 远程衰减
[*]表现
[*]论证
[*]基数
[*]平滑性
[*]3.8 外推
[*]0x04 实现
[*]4.1 基础Torch知识
[*]4.2 在Transformer中的位置
[*]4.3 llama3
[*]总体
[*]准备旋转矩阵
[*]实现
[*]调用
[*]4.4 rotate_half
[*]GPT-J sytle
[*]GPT-NeoX style
[*]0xFF 参考
文章总表
全部文章列表在这里 探秘Transformer系列之文章列表,后续每发一篇文章,会修改这里。
0x00 概述
RoPE编码来自苏神的工作Roformer, 它是目前LLM中广受欢迎使用的PE编码方式之一。
Transformer论文使用了Sinusoidal位置编码,其是加性编码,即词嵌入与编码位置相加。每个位置的嵌入向量是固定的,不考虑其与其他位置的关系。Sinusoidal位置编码希望引入相对位置关系(任意位置的位置编码都可以表达为一个已知位置的位置编码的关于距离的线性组合),但不是很成功,模型只能在一定程度上感知相对位置。位置编码常见的改进思路是以三角式位置编码公式为基础,调整自注意力计算偏置。而RoPE抛弃了位置编码常见的改进思路,即以三角式位置编码公式为基础,通过旋转矩阵、复数乘法、欧拉公式等技巧,既能以自注意力矩阵偏置的形式,反映两个token的相对位置信息,又能拆解到特征序列上,通过直接编码token的绝对位置实现,兼顾绝对位置编码和相对位置编码的优势。
RoPE没有修改Attention的结构,反而像绝对位置编码一样在输入层做文章,对输入向量直接进行改造,即对两个输入token形成的Query和Key向量做一个旋转变换,使得变换后的Query和Key带有位置信息,进一步使得Attention的内积操作不需要做任何更改就能自动感知到相对位置信息。换句话说,RoPR的出发点和策略是相对位置编码思想,但是实现方式却用的是绝对位置编码。
0x01 总体思路
我们首先看看对于三角函数编码的修改思路或者痛点,具有两点。
<ul>
在前面章节的分析中,我们已经知道attention层的计算( \(
来源:程序园用户自行投稿发布,如果侵权,请联系站长删除
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!
页:
[1]