位置编码-APE

news2025/1/4 0:39:18

Transformer 中的绝对位置编码
(以下由gpt 生成)
Transformer 的绝对位置编码(Absolute Position Encoding, APE)是用于对序列数据中的位置信息进行建模的一种方法。在 Transformer 的架构中,输入数据(如句子中的单词或字符)通过词嵌入层转化为连续的向量表示。这些向量本身并不包含任何位置信息,而 Transformer 是一种无序模型(对输入的顺序敏感性取决于位置信息的建模方式)。因此,需要加入位置信息使模型能够感知输入序列中每个元素的位置。

绝对位置编码通过为每个序列位置生成固定的编码向量,将这些向量添加到输入的词嵌入中,从而将位置信息显式地融入模型。

  1. 绝对位置编码的公式
    在这里插入图片描述

解释:
正弦和余弦函数的使用使得不同位置的编码之间具有周期性。
1/10000^(2i/d)控制了不同维度的频率,使得高维特征的变化比低维特征更快。

2. 绝对位置编码的性质
固定性:绝对位置编码是固定的,不需要通过训练学习。这减少了模型的参数量。
平滑性:相邻位置的编码向量之间具有平滑的变化,便于模型捕捉到序列中的局部连续性。
维度分布:不同维度的频率不同,能够捕捉到不同尺度的位置信息

3. 绝对位置编码的使用
在 Transformer 中,绝对位置编码通常与词嵌入相加后输入到模型中:

# 假设 word_embeddings 是嵌入向量 (seq_len, d_model)
word_embeddings = torch.randn(seq_len, d_model)
input_with_pos = word_embeddings + pos_encoding  # 加入位置编码

这种加法操作将词嵌入与位置编码结合在一起,使得模型既能够感知词语的语义信息,也能感知其在序列中的位置信息。

4. 实现代码

import torch
import math


def generate_position_encoding(seq_len, d_model):
    """
    生成绝对位置编码的函数。
    :param seq_len: 序列的长度
    :param d_model: 嵌入向量的维度
    :return: 位置编码矩阵 (seq_len, d_model)
    """
    # 初始化位置编码矩阵
    position_encoding = torch.zeros(seq_len, d_model)
    # 生成位置索引和维度索引
    position = torch.arange(0, seq_len).unsqueeze(1)  # (seq_len, 1)
    div_term = torch.exp(torch.arange(0, d_model, 2) * (-math.log(10000.0) / d_model))  # (d_model // 2,)

    # 应用正弦和余弦函数
    position_encoding[:, 0::2] = torch.sin(position * div_term)  # 偶数维度
    position_encoding[:, 1::2] = torch.cos(position * div_term)  # 奇数维度

    return position_encoding


# 示例
seq_len = 32 #10  # 序列长度
d_model = 128 #16  # 嵌入维度
pos_encoding = generate_position_encoding(seq_len, d_model)
print(pos_encoding)

# 可视化位置编码
import matplotlib.pyplot as plt
import seaborn as sns

plt.figure(figsize=(10, 6))
ax = sns.heatmap(pos_encoding.numpy(), cmap='coolwarm', annot=False, cbar=True)

# 将横轴放置在顶部
ax.xaxis.set_ticks_position('top')  # 将x轴移至顶部
plt.title('Absolute Position Encoding')
plt.xlabel('Embedding Dimension')
plt.ylabel('Position in Sequence')

# 调整布局以避免标签重叠
plt.subplots_adjust(top=0.85)
plt.show()

print()

在这里插入图片描述
5. 绝对位置编码的优缺点
优点:
无参数化:绝对位置编码是固定的,不会增加模型的参数。
周期性和可扩展性:正弦和余弦函数的周期性使得编码具有平滑的性质,且理论上可以扩展到更长的序列。
简单易用:只需将固定的编码添加到词嵌入中即可。
缺点:
不灵活:固定的位置编码对任务或数据不具备适应性,可能限制模型的表现。
长序列表示问题:对于非常长的序列,编码的分辨率可能不足(由于正弦和余弦函数的周期性)。
相对位置信息不足:绝对位置编码只关注位置本身,无法直接捕捉相对位置关系

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2269384.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

2025跨年倒计时

<!DOCTYPE html> <html lang"zh"> <head><meta charset"UTF-8"><meta name"viewport" content"widthdevice-width, initial-scale1.0"><title>2025年跨年倒计时</title><style>/* 页…

C#-使用StbSharp库读写图片

一.StbSharp StbSharp是基于C/Stb图形处理库封装的C#接口,支持多种格式PNG/JPG等图片的处理. GitHub链接: GitHub - StbSharp/StbTrueTypeSharp: C# port of stb_truetype.hhttps://github.com/StbSharp/StbTrueTypeSharp二.使用StbSharp创建高度图 创建一张500*500的高度图PN…

MF248:复制工作表形状到Word并调整多形状位置

我给VBA的定义&#xff1a;VBA是个人小型自动化处理的有效工具。利用好了&#xff0c;可以大大提高自己的工作效率&#xff0c;而且可以提高数据的准确度。“VBA语言専攻”提供的教程一共九套&#xff0c;分为初级、中级、高级三大部分&#xff0c;教程是对VBA的系统讲解&#…

【从零开始入门unity游戏开发之——C#篇43】C#补充知识——值类型和引用类型汇总补充、变量的生命周期与性能优化、值类型和引用类型组合使用

文章目录 一、值类型和引用类型汇总补充1、值类型和引用类型汇总2、值类型和引用类型的区别3、简单的判断值类型和引用类型 二、变量的生命周期与性能优化1、**栈和堆的区别**2、**变量生命周期**3、**垃圾回收&#xff08;GC&#xff09;机制**4、**代码示例与优化**4.1. 临时…

Dockerfile运行指令

1.RUN 在build构建时执行命令。 举例&#xff1a;安装vim Shell命令格式 RUN yum install -y vim Exec命令格式 RUN ["yum","install","-y","vim"] 2.CMD 用于设置容器启动时默认执行的命令或参数。 如果Dockerfile中有多个CMD&a…

无穿戴动作捕捉系统技术解密及多元化运用

在当今科技飞速发展的时代&#xff0c;动作捕捉技术不断革新&#xff0c;无穿戴动作捕捉系统崭露头角。与传统粘贴标记点的动作捕捉技术相比&#xff0c;无标记点动作捕捉技术具有显著优势。它能够在确保高精度捕捉的前提下&#xff0c;以非接触的方式极大地提升被捕捉对象的表…

计算机网络 (10)网络层

前言 计算机网络中的网络层&#xff08;Network Layer&#xff09;是OSI&#xff08;开放系统互连&#xff09;模型中的第三层&#xff0c;也是TCP/IP模型中的第二层&#xff0c;它位于数据链路层和传输层之间。网络层的主要任务是负责数据包从源主机到目的主机的路径选择和数据…

基于Mosquito源码理解MQTT5.0的属性概念

MQTT 5.0协议相比之前的版本(如MQTT 3.1.1)增加了很多属性,这些属性分布于报文的可变头部(Variable Header)和有效载荷(Payload)中。这些属性大大增强了协议的可扩展性和灵活性,使其能够更好地适应现代物联网应用的复杂需求。 属性的定义在源码包mosquitto-2.0.18/inc…

rk3568之mpp开发笔记记录之摄像头实时码流获取的神秘面纱

前言&#xff1a; 大家好&#xff0c;在上一篇文章里面&#xff0c;我给大家解读了怎么获取imx415-sensor的实时码流的细节&#xff0c;今天开始会解析里面到底是怎么实现的&#xff1f; 提前透露一点&#xff0c;整个摄像头驱动框架和上层调用&#xff0c;都会涉及到v4l2的开发…

Mac电脑python多版本环境安装与切换

我当前是python3.9.6环境&#xff0c;需要使用3.9.8环境&#xff0c;通过brew安装3.9.8版本&#xff0c;然后通过pyenv切换环境 步骤 1: 安装 pyenv brew install pyenv brew install pyenv-virtualenv 步骤 2: 安装 Python 3.9.8&#xff08;使用 pyenv 安装指定版本的 Pyth…

小程序配置文件 —— 14 全局配置 - tabbar配置

全局配置 - tabBar配置 tabBar 字段&#xff1a;定义小程序顶部、底部 tab 栏&#xff0c;用以实现页面之间的快速切换&#xff1b;可以通过 tabBar 配置项指定 tab 栏的表现&#xff0c;以及 tab 切换时显示的对应页面&#xff1b; 在上面图中&#xff0c;标注了一些 tabBar …

Jupyter在运行上出现错误:ModuleNotFoundError: No module named ‘wordcloud‘

问题分析&#xff1a;显示Jupyter未安装这个模板 解决办法&#xff1a;在单元格内输入&#xff1a;!pip install wordcloud

github提交不上去,网络超时问题解决

问题出现的原因&#xff1a; DNS服务器数据不同步&#xff0c;github的服务器发送迁移&#xff0c;在本地缓存的ip地址现在无效了。 解决方案&#xff1a; 1&#xff09;点击这里&#xff0c;查询github.com最新的ip地址 2.0&#xff09;编辑linux系统地址缓存文件&#x…

Windows Subsystem for Linux (WSL)

目录 定义与功能 版本与特点 应用场景 启用 WSL 功能 更新WSL及其内核 下载Linux发行版本 WSL&#xff08;Windows Subsystem for Linux&#xff09;是微软在Windows 10和Windows 11中引入的一项功能&#xff0c;使用户能够在Windows上原生运行Linux的命令行工具和应用程…

图像处理-Ch5-图像复原与重建

Ch5 图像复原 文章目录 Ch5 图像复原图像退化与复原(Image Degradation and Restoration)噪声模型(Noise Models)i.i.d.空间随机噪声(Generating Spatial Random Noise with a Specified Distribution)周期噪声(Periodic Noise)估计噪声参数(Estimating Noise Parameters) 在仅…

Mac 环境 VVenC 编译与编码命令行工具使用教程

VVenC VVenC 是一个开源的高效视频编码器&#xff0c;专门用于支持 H.266/VVC (Versatile Video Coding) 标准的编码。H.266/VVC 是继 HEVC (H.265) 之后的新一代视频编码标准&#xff0c;主要目的是提供比 HEVC 更高的压缩效率&#xff0c;同时保持或提高视频质量。H.266/VVC…

HTML——41有序列表

<!DOCTYPE html> <html><head><meta charset"UTF-8"><title>有序列表</title></head><body><!--有序列表&#xff1a;--><!--1.列表中各个元素在逻辑上有先后顺序&#xff0c;但不存在一定的级别关系-->…

详细教程:SQL2008数据库备份与还原全流程!

数据的安全性至关重要&#xff0c;无论是操作系统、重要文件、磁盘存储&#xff0c;还是企业数据库&#xff0c;备份都是保障其安全和完整性的关键手段。拥有备份意味着即使发生误删、系统崩溃或病毒攻击等问题&#xff0c;也能迅速通过恢复功能解决&#xff0c;避免数据丢失带…

IDEA工具使用介绍、IDEA常用设置以及如何集成Git版本控制工具

文章目录 一、IDEA二、建立第一个 Java 程序三、IDEA 常用设置四、IDEA 集成版本控制工具&#xff08;Git、GitHub&#xff09;4.1 IDEA 拉 GitHub/Git 项目4.2 IDEA 上传 项目到 Git4.3 更新提交命令 一、IDEA 1、什么是IDEA&#xff1f; IDEA&#xff0c;全称为 IntelliJ ID…

STM32 I2C通信协议

单片机学习&#xff01; 文章目录 目录 文章目录 前言 一、I2C通信 1.1 I2C总线 1.2 I2C通信线 1.3 同步半双工且数据应答 1.4 一主多从 二、硬件电路 2.1 I2C电路模型 2.2 I2C接线要求 2.3 I2C上拉电阻作用 三、I2C时序基本单元 3.1 起始终止条件 3.1.1 起始条件 3.1.2 终止条…