为什么position都要编码?

dbforms中为什么position都要编码,出于安全?

原本觉得没有必要

### 位置编码的作用 位置编码的主要作用在于解决 Transformer 架构中 Self-Attention 层无法区分输入序列顺序的问题。由于 Self-Attention 是排列不变的机制,即无论词序如何变化,其计算结果都相同,这使得模型失去了对输入序列中单词位置信息的理解能力[^1]。为了克服这一缺陷,位置编码被引入以赋予模型关于单词在序列中具体位置的信息。 #### 绝对位置编码 绝对位置编码通过为每个单词分配特定的位置表示来增强模型的能力。这些位置编码通常与单词嵌入相结合后再传递给后续网络层。这种结合可以通过简单的加法操作完成,即将位置编码向量直接叠加到原始单词嵌入之上[^1]。这种方式确保了即使在不改变原有架构的情况下也能有效注入位置信息。 ##### 实现方式 - **固定式**: 使用固定的数学函数生成位置编码值,最典型的例子就是原版 Transformer 中提出的基于正弦和余弦波的形式化方法[^1]。 - **可学习式**: 初始化一组随机参数作为初始位置编码,并允许它们随着训练过程逐步调整优化至最佳状态。这种方法常见于 BERT 和 GPT 这样的预训练语言模型之中。 ### 应用场景 #### 自然语言处理 (NLP) 在 NLP 领域,无论是机器翻译还是情感分析等任务都需要依赖精确的时间步长关系来进行预测或分类工作。因此,在这类应用里加入适当形式的位置编码显得尤为重要。例如谷歌推出的 Codey 工具也内置支持多种程序设计语言的功能特性解析器,其中必然涉及复杂的语法结构理解需求,而这背后离不开高效的位置敏感型表达学习框架的支持[^2]。 #### 图像识别与其他模态转换任务 虽然传统卷积神经网络(CNNs)天然具备局部感受野从而能较好捕捉空间布局特征;但对于某些特殊类型的跨领域迁移问题比如视频帧间动作检测或者医学影像分割,则可能更倾向于利用一维时间维度上的连续采样点形成序列后送入带有显式位置指示符标记过的 transformer 结构去进一步挖掘潜在规律模式[^3]。 ```python import numpy as np def get_positional_encoding(max_len, d_model): pe = np.zeros((max_len, d_model)) position = np.arange(0, max_len).reshape(-1, 1) div_term = np.exp(np.arange(0, d_model, 2) * -(np.log(10000.0) / d_model)) pe[:, 0::2] = np.sin(position * div_term) pe[:, 1::2] = np.cos(position * div_term) return pe ``` 上面展示了一个用于创建标准 sin-cos 形式的绝对位置编码矩阵的小片段代码示例。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值