transformer | transformer的输入部分input coding

transformer的输入部分input coding

transformer的输入部分input coding=BPE+PE

BPE

在这里插入图片描述
BPE是指一种词分类算法。
起初,会将每个单词都拆分成一个个字母扔进词表中。
然后统计byte gram,选出出现次数最多的byte gram,将其塞入到词表中,若组成的byte gram使得原本单独的部分无其他非组成该byte gram的情况,则该部分需要从原先的词表进行删除。
比如es形成esesnewestwidest均有出现,且出现的次数最多,所以可将es整合成es塞入到词表中,且s只在es中出现,所以在整合的过程中要在原先词表中删去s,让s作为es整体的部分进行出现。

BPE所解决的问题——OOV

OOVout of vocabulary的简称.
OOV是指代一个问题,即目前出现的单词超出已有的知识范围。
而BPE能够处理OOV问题。
比如说BPE会通过学习将smartest拆分成smartest,当他遇到并不认识的lowest时,会将其拆分成lowest,而可通过之前学习到的smartest来进行泛化/推理,如果说词表中是含有low这个词项的话,那么是可以推理得到大概lowest的意思
在这里插入图片描述

PE(Position Encoding)位置编码

作用:用于弥补transformer无法处理各输入部分的位置信息。(位置信息是很重要的,词的意思可通过上下文进一步明确,上文放在下文,可能就有不同的意思存在)
如“我吃鱼”和“鱼吃我”是两个不同的概念。

在这里插入图片描述
pos是指位置,比如说“我爱你”中的“爱”的位置为第二。
i是词在转为词向量后所得到的索引。比如embedding后的维度为512维,那么i对应其中一个维度。
在这里插入图片描述
PE算法会对应一个三角函数。
当索引为偶数时, P E ( p o s + k , 2 i ) = s i n ( ( p o s + k ) / 1000 0 2 i d m o d e l ) = s i n ( ( p o s ) / 1000 0 2 i d m o d e l × c o s ( ( k ) / 1000 0 2 i d m o d e l + s i n ( ( k ) / 1000 0 2 i d m o d e l × c o s ( ( p o s ) / 1000 0 2 i d m o d e l = P E ( p o s , 2 i ) P E ( k , 2 i + 1 ) + P E ( k , 2 i ) P E ( p o s , 2 i + 1 ) PE(pos+k,2i) = sin((pos+k)/10000^{\frac{2i}{d_{model}}})=sin((pos)/10000^{\frac{2i}{d_{model}}}\times cos((k)/10000^{\frac{2i}{d_{model}}}+sin((k)/10000^{\frac{2i}{d_{model}}}\times cos((pos)/10000^{\frac{2i}{d_{model}}}=PE(pos,2i)PE(k,2i+1)+PE(k,2i)PE(pos,2i+1) PE(pos+k,2i)=sin((pos+k)/10000dmodel2i)=sin((pos)/10000dmodel2i×cos((k)/10000dmodel2i+sin((k)/10000dmodel2i×cos((pos)/10000dmodel2i=PE(pos,2i)PE(k,2i+1)+PE(k,2i)PE(pos,2i+1)
同理,当索引为奇数时,也会得到对应的处理。
也就是说pos为6的位置编码为可以由1和5,2和4,3和3三对位置编码得到。
进而,位置编码可以认为是一种向量。然后向量是具有空间的,通过和积化差可以得到这个向量是由于某些向量线性组合而成,而线性组合也有对应的空间表示,从而通过线性组合区分位置关系。
在这里插入图片描述

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值