transformer | transformer的输入部分input coding

文章目录

  • transformer的输入部分input coding
    • BPE
      • BPE所解决的问题——OOV
    • PE(Position Encoding)位置编码

transformer的输入部分input coding

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

BPE

在这里插入图片描述

BPE是指一种词分类算法。

起初,会将每个单词都拆分成一个个字母扔进词表中。

然后统计byte gram,选出出现次数最多的byte gram,将其塞入到词表中,若组成的byte gram使得原本单独的部分无其他非组成该byte gram的情况,则该部分需要从原先的词表进行删除。

比如e和s形成es,es在newest和widest均有出现,且出现的次数最多,所以可将e和s整合成es塞入到词表中,且s只在es中出现,所以在整合的过程中要在原先词表中删去s,让s作为es整体的部分进行出现。

BPE所解决的问题——OOV

OOV是out of vocabulary的简称.

OOV是指代一个问题,即目前出现的单词超出已有的知识范围。

而BPE能够处理OOV问题。

比如说BPE会通过学习将smartest拆分成smart和est,当他遇到并不认识的lowest时,会将其拆分成low和est,而可通过之前学习到的smart和est来进行泛化/推理,如果说词表中是含有low这个词项的话,那么是可以推理得到大概lowest的意思

在这里插入图片描述

PE(Position Encoding)位置编码

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

如“我吃鱼”和“鱼吃我”是两个不同的概念。

transformer | transformer的输入部分input coding

在这里插入图片描述

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)/10000dmodel​2i​)=sin((pos)/10000dmodel​2i​×cos((k)/10000dmodel​2i​+sin((k)/10000dmodel​2i​×cos((pos)/10000dmodel​2i​=PE(pos,2i)PE(k,2i+1)+PE(k,2i)PE(pos,2i+1)

同理,当索引为奇数时,也会得到对应的处理。

也就是说pos为6的位置编码为可以由1和5,2和4,3和3三对位置编码得到。

进而,位置编码可以认为是一种向量。然后向量是具有空间的,通过和积化差可以得到这个向量是由于某些向量线性组合而成,而线性组合也有对应的空间表示,从而通过线性组合区分位置关系。

在这里插入图片描述

本文来自网络,不代表协通编程立场,如若转载,请注明出处:https://net2asp.com/cc23a9efe7.html