面试篇 - 位置编码

位置编码介绍

  1. RNN与Transformer的对比

    • RNN(循环神经网络)的结构包含了序列的时序信息,这意味着它能够利用序列中元素的顺序来理解句子的含义。

    • Transformer模型在设计时完全去掉了序列的时序信息,这可能导致模型无法区分不同顺序的句子。例如,"他欠我100万"和"我欠他100万"在没有时序信息的情况下,意思完全相反。

  2. 位置编码的作用

    • 为了解决时序信息丢失的问题,Transformer的作者引入了位置编码(Positional Encoding)。

    • 位置编码为每个token提供了位置信息,使得模型能够区分不同位置的token。

  3. 位置信息的类型

    • 绝对位置信息:直接表示token在序列中的位置,如a1是第一个token,a2是第二个token等。

    • 相对位置信息:表示token之间的相对位置,如a2在a1的后面一位,a4在a2的后面两位等。

    • 不同位置间的距离:表示不同位置token之间的距离,如a1和a3差两个位置,a1和a4差三个位置等。

  4. 位置编码的要求

    • 提供位置信息:位置编码为模型提供了每个token在序列中的位置信息,这对于理解序列的顺序至关重要。

    • 保持一致性:在不同序列长度的情况下,位置编码能够保持不同序列中token的相对位置/距离一致。

    • 处理长序列:位置编码可以表示模型在训练过程中从未见过的句子长度,即长度外推问题。

位置编码的实现

这种编码方式能够为每个位置生成一个唯一的向量,并且这些向量在不同位置之间是可区分的,从而为模型提供了必要的位置信息。

位置编码的数学原理

  1. 需要一个有界且连续的函数

    • 位置编码需要一个函数,该函数对于不同的时间步(或位置)t 能够生成不同的值,同时这些值需要是有界的(即在某个范围内)。

    • 正弦函数(sin)是一个满足这些条件的简单函数。

  2. 频率设置

    • 为了确保不同位置的编码尽可能不重复,频率 wi​ 被设置得非常低。

    • 这样设计可以减少不同位置编码重合的可能性。

  3. 位置编码公式

代码实现

在实际的代码实现中,位置编码通常如下所示:

复制代码
import torch
import torch.nn as nn
import math

class PositionalEncoding(nn.Module):
    def __init__(self, d_model, max_len=5000):
        super(PositionalEncoding, self).__init__()
        pe = torch.zeros(max_len, d_model)
        position = torch.arange(0, max_len, dtype=torch.float).unsqueeze(1)
        div_term = torch.exp(torch.arange(0, d_model, 2).float() * (-math.log(10000.0) / d_model))
        pe[:, 0::2] = torch.sin(position * div_term)
        pe[:, 1::2] = torch.cos(position * div_term)
        pe = pe.unsqueeze(0).transpose(0, 1)
        self.register_buffer('pe', pe)

    def forward(self, x):
        x = x + self.pe[:x.size(0), :]
        return x
相关推荐
MYZR131 分钟前
瑞萨电子:嵌入式计算与芯片技术的创新引领者
人工智能·核心板·ssd2351
胡耀超37 分钟前
大模型架构演进全景:从Transformer到下一代智能系统的技术路径(MoE、Mamba/SSM、混合架构)
人工智能·深度学习·ai·架构·大模型·transformer·技术趋势分析
小杨勇敢飞2 小时前
UNBIASED WATERMARK:大语言模型的无偏差水印
人工智能·语言模型·自然语言处理
m0_603888712 小时前
Delta Activations A Representation for Finetuned Large Language Models
人工智能·ai·语言模型·自然语言处理·论文速览
金融小师妹2 小时前
基于哈塞特独立性表态的AI量化研究:美联储政策独立性的多维验证
大数据·人工智能·算法
qinyia3 小时前
Wisdom SSH 是一款创新性工具,通过集成 AI 助手,为服务器性能优化带来极大便利。
服务器·人工智能·ssh
昨日之日20065 小时前
Wan2.2-S2V - 音频驱动图像生成电影级质量的数字人视频 ComfyUI工作流 支持50系显卡 一键整合包下载
人工智能·音视频
SEO_juper8 小时前
大型语言模型SEO(LLM SEO)完全手册:驾驭搜索新范式
人工智能·语言模型·自然语言处理·chatgpt·llm·seo·数字营销
攻城狮7号8 小时前
腾讯混元翻译模型Hunyuan-MT-7B开源,先前拿了30个冠军
人工智能·hunyuan-mt-7b·腾讯混元翻译模型·30个冠军
zezexihaha8 小时前
从“帮写文案”到“管生活”:个人AI工具的边界在哪?
人工智能