在NLP中,词向量是最基础的一部分,所谓词向量就是词在空间的一个映射向量表示。实现词向量的方式有word2vec, BERT,K-BERT等,还有一部分是用CNN实现.
- word2vec
word2vec有两种不同的词向量生成模式,一种是CBOW(character box of word)另一种是Skip-gram模型,CBOW是利用前后词判断当前词,Skip是利用当前词判断前后词。 CBOW可以理解为,输入的
w
w
w,求其前后相关的最大概率,即
P
(
w
)
=
P
(
C
o
n
t
e
x
t
(
w
)
∣
w
)
P(w)=P(Context(w)|w)
P(w)=P(Context(w)∣w);其模型结构如图1所示(这个图以后再补,毕竟是大论文中的)。Skip可以理解为,输入
w
w
w前后的词,预测能退出
w
w
w的最大概率,即
P
(
w
)
=
P
(
w
∣
C
o
n
t
e
x
t
(
w
)
)
P(w) = P(w|Context(w))
P(w)=P(w∣Context(w))。 - BERT、ALBERT和XLNERT等BERT变形
BERT的词向量编码由三部分组成,分别是token embedding、segment embedding和position embedding组成,其中token代表当前词的向量,segment用来对句子进行划分,分为[A]or[B], position为位置信息,有了这个三个向量,将其进行相加,便得到了BERT的embedding。 在BERT的embedding中,word-level 和sentence-level使用了相同的embedding space,因此表现出来的性质在空间上是一致的,这也限制了bert-embedding中的性能; - K-BERT
K-BERT是在BERT的基础上融入了知识图谱,由此把句子原来的结构填充了起来,导致出现了很多新的内容,但不可避免的这些新的内容会与原来句子中的内容有所冲突,尤其是在position上面。因此在K-BERT中使用了soft-position作为位置嵌入,将原来的position进行保留,将新加入的内容使用soft-postion进行保存,由此解决了相同词不同空间位置的问题,同时也解决了BERT空间编码不一致的问题。在计算self-attenrion的时候,使用一
M
M
M
s
e
e
i
n
g
m
a
r
t
i
x
seeing martix
seeingmartix将soft-position和position进行了区分,避免了无关词得到的注意力分数相关。 - CNN
CNN在计算机视觉方面用的比较多,在文本向量中,先要构建一个
M
a
t
r
i
x
Matrix
Matrix,然后用一个卷积核
k
e
r
n
e
l
kernel
kernel在当中移动,获取到
f
e
a
t
u
r
e
m
a
p
feature map
featuremap,后面再使用激活函数做非线性处理,最后使用
M
a
x
p
o
o
l
i
n
g
Maxpooling
Maxpooling层进行最大特征获取。
|