GPT-4o (OpenAI)
Transformer 模型中的 Position Embedding(位置编码)是用于在不使用循环神经网络的情况下捕捉序列数据的位置信息的一种方法。它允许模型获取输入序列中单词的位置信息,以便更好地理解其顺序。
下面是一个简单的基于正弦和余弦函数的 Position Embedding 实现的例子,这种方法在原始的 Transformer 论文 "Attention is All You Need" 中进行了描述。
正弦和余弦位置编码
import numpy as np
import torch
def get_position_encoding(seq_len, model_dim):
"""
获取位置编码矩阵
Args:
seq_len: 序列长度
model_dim: 模型的隐藏层维度
Returns:
position_encoding: 序列长度 x 模型隐藏层维度 的矩阵
"""
position_encoding = np.array([
[pos / np.power(10000, 2 * i / model_dim) for i in range(model_dim)]
for pos in range(seq_len)
])
# 对偶数索引使用 sine 函数
position_encodin