NLP复习总结
1. 词嵌入
word2vec
word2vec核心要点:
1.两个重要模型:CBOW(continuous Bag-of-words Model)、skip-gram模型。
投影层不使用激活函数
2.两个高效优化技巧:Hierarchical softmax、Negativa sampling。
负采样顾名思义就是对负样本就行采样,需要一个概率分布,使用词频的(3/4)此幂。
3.其他技巧:二次采样、短语学习
二次采样:滑动窗口生成样本时,减少对高频词的采样(如:的,得)。
p
(
w
i
)
=
m
a
x
(
1
−
t
f
(
w
i
)
,
0
)
p(w_i)=max(1-\sqrt{\frac{t}{f(w_i)}},0)
p(wi)=max(1−f(wi)t
,0)
有两个作用:(1)加速收敛,减少对无意义词的采样。(2)缓解类别不均衡问题(相当于欠采样)。
短语学习:。
A
i
r
Air
Air和
C
a
n
a
d
a
Canada
Canada的词向量相加不能表示
A
i
r
C
a
n
a
d
a
Air\ Canada
Air Canada加拿大航空的含义。短语学习的目的是将常用的短语组成一个token放入词表。使用点互信息合并短语:
s
c
o
r
e
(
w
i
,
w
j
)
=
c
o
u
n
t
(
w
i
w
j
)
−
δ
c
o
u
n
t
(
w
i
)
×
c
o
u
n
t
(
w
j
)
score(w_i,w_j)=\frac{count(w_iw_j)-\delta}{count(w_i)\times count(w_j)}
score(wi,wj)=count(wi)×count(wj)count(wiwj)−δ
ELMO
ELMO词向量表示:
E
L
M
O
k
t
a
s
k
=
γ
t
a
s
k
∑
j
=
0
L
s
j
t
a
s
k
h
k
j
L
M
ELMO_k^{task}=\gamma^{task}\sum_{j=0}^Ls_j^{task}h_{kj}^{LM}
ELMOktask=γtaskj=0∑LsjtaskhkjLM
γ
\gamma
γ用来控制ELMO模型在不同任务生成的向量大小,因为LSTM的表示和下游任务的词向量表示存在差异。
s
j
s_j
sj是softmax-normalized weights。
如何用于下游任务:
先冻结BI-LSTM的参数,将elmo的词向量表示 E L M O k t a s k ELMO_k^{task} ELMOktask和 x k x_k xk拼接起来,得到增强表示 [ x k , E L M O k t a s k ] [x_k,ELMO_k^{task}] [xk,ELMOktask]。 γ t a s k , s j t a s k \gamma^{task},s_j^{task} γtask,sjtask是需要和下游任务一起学习的参数。
FastText字词嵌入
思想:
在word2vec的基础上引入构词学:
(1)相似单词映射为同一token,如dog和dogs,cat和cats。
(2)组合单词,boyfriend等
fasttext中每个中心词被表示为字词的集合。以单词where为例,将单词当成一个有字符组成的序列来提取n元语法。并在单词的首尾分别添加 < 和 > 以区分作为前后缀的子词。当n=3时,所有的字词为 < w h > , w h e , h e r , e r e , < r e > <wh>,whe,her,ere,<re> <wh>,whe,her,ere,<re>以及特出子词 < w h e r e > <where> <where>。
词向量表示:
对于一个词,将它所有长度在3~6的子词和特殊子词的并集记为
g
w
\textbf{g}_w
gw,词典是所有词的子词集合的并集。假设词典中子词g的词向量为
z
g
z_g
zg。那么跳字模型中词w作为中心词的向量
v
w
v_w
vw表示为:
v
w
=
∑
g
∈
g
w
z
g
v_w=\sum_{g\in\textbf{g}_w}z_g
vw=g∈gw∑zg
优缺点:
与跳字模型相比,fasttext的词典规模更大,参数更多。同时一个词的向量要对所有子词向量求和。导致计算复杂度更高。但是,对于复杂的生僻词,未登录词,可能会从与它同结构的其他词那么获得更好的词向量表示。