彻底搞懂Transformer位置编码:从菜鸟到专家的终极指南

一、位置编码为什么重要?(小白必看)

1.1 现实世界的启示

想象你在听音乐会时:

  • 第一排观众能清晰看到乐手表情(位置近)
  • 后排观众主要感受整体氛围(位置远)
  • 这种位置差异直接影响听觉体验

1.2 计算机的困境

当处理句子"猫追老鼠"时:

  • 原始Transformer无法区分以下差异:
    "猫[第1位] 追[第2位] 老鼠[第3位]"
    vs
    "老鼠[第1位] 追[第2位] 猫[第3位]"
    

1.3 解决方案演化史

方法 发明时间 代表模型 特点
循环神经网络 1997 LSTM 自带顺序处理
卷积网络 2014 CNN 局部位置感知
位置编码 2017 Transformer 显式位置标记

二、手把手实现基础位置编码(含可运行代码)

2.1 正弦位置编码(原版Transformer)

import torch
import math

def positional_encoding(max_len, d_model):
    position = torch.arange(max_len).unsqueeze(1)
    div_term = torch.exp(torch.arange(0, d_model, 2) * (-math.log(10000.0)/d_model))
    pe = torch.zeros(max_len, d_model)
    pe[:, 0::2] = torch.sin(position * div_term)  # 偶数位用sin
    pe[:, 1::2] = torch.cos(position * div_term)  # 奇数位用cos
    return pe

# 生成示例:序列长度50,维度128
pe = positional_encoding
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值