赞
踩
参考:
①Word2vec知其然知其所以然或者花书实战篇
②知乎-word2vec
③B站视频-word2vec
④Efficient Estimation of Word Representations in Vector Space
⑤Distributed Representations of Words and Phrases and their Compositionality
⑥word2vec Parameter Learning Explained
Word2vec是一个将语料库中输入文本信息转换为向量格式的包,又名词嵌入。Word2vec由谷歌在2013年推出,其可以将每个词(Word)转换为向量(Vector)。
Note:
Note:
语言模型是计算一个句子是句子的概率的模型。
Note:
如何描述呢?—通过条件概率将句子分解到词的层面。
比如一个句子
s
s
s由
n
n
n个词
w
1
,
w
2
,
⋯
,
w
n
w_1,w_2,\cdots, w_n
w1,w2,⋯,wn组成
s
=
{
w
1
,
w
2
,
⋯
,
w
n
}
s=\{w_1,w_2, \cdots,w_n\}
s={w1,w2,⋯,wn},则语言模型可以描述为:
P
(
s
)
=
P
(
w
1
,
w
2
,
⋯
,
w
n
)
=
P
(
w
1
)
⋅
P
(
w
2
∣
w
1
)
⋅
P
(
w
3
∣
w
1
w
2
)
⋯
P
(
w
n
∣
w
1
w
2
⋯
w
n
−
1
)
.
(1)
P(s)= P(w_1,w_2, \cdots, w_n) = P(w_1)\cdot P(w_2|w_1)\cdot P(w_3|w_1w_2)\cdots P(w_n|w_1w_2\cdots w_{n-1}).\tag{1}
P(s)=P(w1,w2,⋯,wn)=P(w1)⋅P(w2∣w1)⋅P(w3∣w1w2)⋯P(wn∣w1w2⋯wn−1).(1)
Note:
But 这样是有问题的!
因为语料再大也不可能包罗万象,因此某个词可能不在语料中,但却是可观存在的,那么计算过程中,就会有
p
=
0
p=0
p=0,这样的话就会导致式(1)为0,这样显然是不对的。
那要如何解决呢?
添加平滑操作,就是给那些没有出现过的词或者词组一个比较小的概率。
拉普拉斯平滑(加1平滑):每个词在原来的次数基础上加1次。
But 这样还是有问题的!
因为假设语料库的词一共有
V
=
1
k
V=1k
V=1k个,那么上述语言模型中每个条件概率
p
p
p都是需要训练的参数,即一句话的参数可能到达
V
+
V
2
+
V
3
+
V
n
V+V^2+V^3+V^n
V+V2+V3+Vn个。
那要如何解决呢?
使用K阶层马尔科夫假设(RL是是使用一阶马尔科夫假设,即2-gram)。
K
K
K越大,则模型精度越高,但是参数空间也就越大。
K具体有以下几种取法:
举个例子:
语言模型评价指标:困惑度
:
给定一个真实的句子
s
s
s:
P
e
r
p
l
e
x
i
t
y
(
P
P
(
s
)
)
=
P
(
w
1
,
w
2
,
⋯
,
w
n
)
−
1
n
=
1
P
(
w
1
,
w
2
,
⋯
,
w
n
)
N
.
Perplexity(PP(s))=P(w_1,w_2,\cdots,w_n)^{-\frac{1}{n}}=\sqrt[N]{\frac{1}{P(w_1,w_2,\cdots,w_n)}}.
Perplexity(PP(s))=P(w1,w2,⋯,wn)−n1=NP(w1,w2,⋯,wn)1
.
如今比较著名的Word2vec模型就是CBOW和Skip-Gram模型,为了篇幅,我将此这篇Word2vec的论文笔记放在下面:CBOW&Skip-Gram。Word2vec的2个模型由于计算复杂度较高,在后续的发展中,出现了层次Softmax以及负采样的方式进行优化,为了篇幅,我将此文章的论文笔记放在下面:Word2Vec进阶。
Seq2Seq,又称Encoder-Decoder结构,一般是一种基于RNN结构的将不定长的输入系列转换为不定长的输出序列的模型。
具体请看我的另一篇NLP之Seq2Seq。
Transformer模型是目前GPT、BERT这种大规模预训练模型的基础,他抛弃了传统CNN和RNN结构的神经网络,采用将注意力模块堆积的方式形成的一种模型。
具体请看我的另一篇Transformer。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。