transform与位置编码

参考:https://blog.csdn.net/xian0710830114/article/details/133377460

一、为什么需要位置编码
在Transformer出现以前,NLP任务大多是以RNN、LSTM为代表的循环处理方式,即一个token一个token的输入到模型当中。模型本身是一种顺序结构,天生就包含了token在序列中的位置信息。但是这种模型有很多天生的缺陷,比如:
1.会出现“遗忘”的现象,无法支持长时间序列,虽然LSTM在一定程度上缓解了这种现象,但是这种缺陷仍然存在;
2.句子越靠后的token对结果的影响越大;
3.只能利用上文信息,不能获取下文信息;
4.计算的时间复杂度比较高,循环网络是一个token一个token的输入的,也就是句子有多长就要循环多少遍;
为了解决上述问题,Transformer出现了,Transformer将token序列一次性输入到模型,不使用循环的形式。因为是一次性接收所有token作为输入进行并行处理,“遗忘”的问题没有了、所有的token都一视同仁了、上下文的信息能同时获取到、时间复杂度也降下来了。但是这又出现了新的问题,因为所有token一视同仁了,模型就没有办法知道每个token在句子中的相对和绝对的位置信息,而位置关系对于NLP任务来说是有着决定性影响的。比如下面的两句话token完全一样,但含义截然相反:
1.我把小姐姐按在地上摩擦
2.小姐姐把我按在地上摩擦
二、位置编码分类
位置编码用来标记token的前后顺序,总的来说,位置编码分为两个类型:绝对位置编码和相对位置编码。

Transform编码器是Transformer模型的核心组成部分,它是由维克托·奥尔瓦多·贡萨尔韦斯(Victor O. Goroshin)等在2017年提出的Self-Attention机制的基础上发展而来的。其基本结构包含以下几个关键部分: 1. **自注意力层(Self-Attention Layer)**:这是Transform编码器的核心,它通过计算每个位置的输入序列与其他所有位置之间的相似度,然后按照这个相似度权重对输入进行加权求和。这允许模型捕捉到序列中的全局上下文信息。 2. **位置编码(Positional Encoding)**:为了给Transformer提供序列顺序的信息,因为原始Self-Attention只关注内容,忽略了顺序,所以通常会添加位置编码,如Sinusoidal Positional Encoding,将位置信息嵌入到输入的向量中。 3. **残差连接(Residual Connections)**:这种结构有助于缓解梯度消失问题,并使得网络更容易训练。它让信息可以直接从输入流经到输出,减少了每一层都需要学习复杂的函数映射的需求。 4. **Layer Normalization(LN)**:每层前后都进行了层归一化,帮助稳定梯度并加速收敛。 5. **多头注意力(Multi-Head Attention)**:将注意力分成几个独立的“头”(heads),每个头专注于输入的不同方面,最后将结果合并,增加了模型的表达能力。 每个编码器层由多个这样的自注意力块组成,加上前馈神经网络(Feedforward Networks)用于进一步处理和整合信息。这些层交替执行,逐渐提取出输入序列的深层表示。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值