0:00 今天 给 大家 分享 RotaryPositionEmbedding, ROTPE, 也.
0:03 就是 旋转 位置 嵌入 方法。 该 方法 是 由 苏健林 等 人 在 论文 Reformer 中 提出 的 一种 能 兼顾 绝对 位置 和 相对 位置.
0:11 的 位置 嵌入 改进 方法。
0:13 该 嵌入 方法 提升 了 Transformer 架构.
0:15 的 性能, 目前 LAMA、.
0:17 GROM 等 模型 均 采用 了 这种 位置 嵌入 方法。 先看 一下 传统 的 绝对 位置 嵌入 有 这么 一句 话 在 这句 话.
0:26 里 都 处于 位置 二 计算 时会 提取 到 这个 token 的 词 嵌入.
0:30 编码 再 加上 一个 位置 为 二.
0:32 的 嵌入 编码 这样 就 得到 了.
0:35 一个 带有 位置 信息 的 词 嵌入 一般来说, 位置 嵌入 可以 从 数据 中 学习 得到, 也 可以 用 三角函数, sine.
0:43 Cosine 函数 的 组合 来 获取。 这 两种 方法 效果 差不多。
0:47 如果 采用 这些 传统 的 位置 嵌入.
0:50 方法, 会 发现 每个 位置 安排 定.
0:52 编码 是 相互 独立 的。
0:54 那么 当 一个 单词 位于 位置 1、 位置 2 或者 是 位置 50, 它们.
0:59 之间 没有 任何 关联。
1:01 但 事实上, 我们 会 更 倾向 于 将 位置 1 和 位置 2, 也.
1:04 就是 句子 开始 的 词 关联 起来。
1:07 作者 提出 基于 旋转 的 嵌入 构造方法。
1:09 假设 位置 编码 是 一个二维 向量, 当 dog 这个 词 出现 在 位置 2, 将 最初 的 token 旋转 θ 角, 如果 dog 位置 出现 在 5, 将.
1:18 原始 向量 旋转 4 个 θ 角度。
1:21 这么 做 的 好处 在于, 当 两个 词 pick 和 dog 相差 两个 位置 经过 旋转 后, 它们 的 相对 位置.
1:27 不 改变, 意味着 计算 到 product 结果 也 不会 变。
1:31 所以 这种 算法 在 transformer 架构 中.
1:33 既 能 表示 绝对 位置 又 能.
1:35 很 好 的 处理 相对 位置 看.
1:37 一下 论文 中 二维 版 的 实现 左边 是 一个 旋转 矩阵 它 的.
1:42 作用 是 将 向量 旋转 按个 θ 角 其中 m 是 句子 中 标记.
1:46 的 绝对 位置 最 右边 X 是 需要 旋转 的 向量 需要 注意 的.
1:51 是 在 计算 旋转 矩阵 之前 需要 对 query 和 T 向量 做 线性.
1:55 变化 这样 就 做到 了 旋转 不变性.
1:58 但 自 注意力 中 的 value 向量.
2:00 是 不 需要 旋转 的 推广 至.
2:02 高维 版本 的 旋转 矩阵 长 这个 样 简单 说 就是 将 旋转 向量.
2:06 分割 成安格 二维 块 实际上, 代码 实现.
2:10 会 对 矩阵 进行 分解, 分解 为.
2:12 二组 向量 乘积 的 和, 这样 效率 提升 不少。
2:16 在 PyTorch 里 的 实现 就是 这么.
2:18 几行, 在 旋转 位置 嵌入 编码方法 里, 如果 两个 词 很 接近, 那么 它们 会 有 比较 大 的 DotProduct, 如果 相距 很 远, 通常 它们 的 DotProduct.
2:28 较 小, 也就是说 距离 越近 越 相似。
2:31 最后 看 一下 实验 结果 采用 旋转 位置 嵌入 编码 训练 速度 要 比 普通 的 绝对 位置 嵌入 编码 收敛.
2:38 快 一些 模型 也 更加 稳健 好.
2:41 了 今天 的 分享 就 到 这里.