赞
踩
在Transformer(三)自注意力机制一节中介绍了位置编码 ( Position Embedding ) (\text{Position Embedding}) (Position Embedding),本系列针对位置编码再回首,从公式角度重新认识位置编码。本节作为铺垫,介绍一下词向量模型—— Word2vec \text{Word2vec} Word2vec。
在循环神经网络简单示例中,我们简单介绍了基于 One-hot \text{One-hot} One-hot向量的文本表征。
其中
j
j
j表示词语在
V
\mathcal V
V中的下标;
ω
j
(
i
)
\omega_j^{(i)}
ωj(i)则是某词语
ω
j
\omega_j
ωj的特征表示过程中,第
i
i
i个特征分量的结果。
但这种表达明显违背了语言自身的‘性质’。在对应的语境下,某些词之间存在关联关系。
我们已知的训练信息就是语料库
(
Corpus
)
(\text{Corpus})
(Corpus)。这个语料库没有标签,只有一段一段地文本。我们将这些文本整合在一起,表示成一个长度为
T
\mathcal T
T的超长序列:
其中这里的
w
t
(
t
=
1
,
2
,
⋯
,
T
)
w_t(t=1,2,\cdots,\mathcal T)
wt(t=1,2,⋯,T)表示基于词的随机变量。
D
=
{
w
1
,
w
2
,
⋯
,
w
t
−
1
,
w
t
,
w
t
+
1
,
⋯
,
w
T
}
\mathcal D = \{w_1,w_2,\cdots,w_{t-1},w_t,w_{t+1},\cdots,w_{\mathcal T}\}
D={w1,w2,⋯,wt−1,wt,wt+1,⋯,wT}
而目标是求解基于语料库 D \mathcal D D内产生的词汇表 V \mathcal V V中每个词的分布式向量 ( Distributed Vector ) (\text{Distributed Vector}) (Distributed Vector)表示。而这个向量需要满足如下要求:
从语言自身的角度观察,两个词语之间存在相似度关系的依据是:描述各词语对应的上下文 ( Context ) (\text{Context}) (Context)进行对比,如果对应上下文之间存在相似性,我们推断这两个词之间存在相似性关系。相反,如果已知两个词语之间存在相似性,那么它们所在文本序列的上下文之间同样存在相似性关系。
如何使用概率分布描述上下文信息
?
?
?关于语料库
D
\mathcal D
D的联合概率分布表示如下:
P
(
w
1
:
T
)
=
P
(
w
1
,
w
2
,
⋯
,
w
T
)
\mathcal P(w_{1:\mathcal T}) = \mathcal P(w_1,w_2,\cdots,w_{\mathcal T})
P(w1:T)=P(w1,w2,⋯,wT)
如果我们在上下文未知的条件下,想要知道这个长为
T
\mathcal T
T的序列中,第
t
(
t
∈
{
1
,
2
,
⋯
,
T
}
)
t(t \in \{1,2,\cdots,\mathcal T\})
t(t∈{1,2,⋯,T})个位置的随机变量
w
t
w_t
wt选择某个具体词的概率
P
(
w
t
)
\mathcal P(w_t)
P(wt)。由于没有任何额外信息,这等价于:从词汇表
V
\mathcal V
V中均匀采样出一个样本,而该采样概率是我们想要的具体词的概率,即
P
(
w
t
)
=
1
∣
V
∣
P(wt)=1|V|
在该条件下,
P
(
w
t
)
\mathcal P(w_t)
P(wt)的结果是恒定不变的
(
Constant
)
(\text{Constant})
(Constant)。
在
P
(
w
t
)
\mathcal P(w_t)
P(wt)已知的条件下,联合概率分布
P
(
w
1
:
T
)
\mathcal P(w_{1:\mathcal T})
P(w1:T)可表示为:
其中这里的
Context
(
w
t
)
\text{Context}(w_t)
Context(wt)没有进行约束,即表示
w
t
w_t
wt的上下文。即
w
1
,
⋯
,
w
t
−
1
,
w
t
+
1
,
⋯
,
w
T
w_1,\cdots,w_{t-1},w_{t+1},\cdots,w_{\mathcal T}
w1,⋯,wt−1,wt+1,⋯,wT。
P
(
w
1
:
T
)
=
P
(
w
t
)
⋅
P
[
Context
(
w
t
)
∣
w
t
]
\mathcal P(w_{1:\mathcal T}) = \mathcal P(w_t) \cdot \mathcal P[\text{Context}(w_t) \mid w_t]
P(w1:T)=P(wt)⋅P[Context(wt)∣wt]
如果不对
Context
(
w
t
)
\text{Context}(w_t)
Context(wt)范围进行约束,那么它的计算量是非常复杂的。为了简化运算,我们引入假设
(
1
)
(1)
(1):给
Context
\text{Context}
Context范围设置成有限的窗口大小。我们假设窗口大小为
2
C
2\mathcal C
2C。也就是说:我们仅考虑
w
t
w_t
wt之前与之后的
C
\mathcal C
C个随机变量对
w
t
w_t
wt产生的影响。因而上述公式可改写成如下形式:
很明显,这只是一个‘近似相等’,因假设
(
1
)
(1)
(1)的约束将原始的联合概率分布
P
(
w
1
:
T
)
\mathcal P(w_{1:\mathcal T})
P(w1:T)限制成了
P
(
w
t
−
C
:
t
+
C
)
\mathcal P(w_{t-\mathcal C \text{ : } t+\mathcal C})
P(wt−C : t+C)。
P
(
w
1
:
T
)
=
(
1
)
P
(
w
t
)
⋅
P
(
w
t
−
C
:
t
−
1
,
w
t
+
1
:
t
+
C
∣
w
t
)
\mathcal P(w_{1:\mathcal T}) \overset{(1)}{=} \mathcal P(w_t) \cdot \mathcal P(w_{t-\mathcal C \text{ : } t-1},w_{t+1 \text{ : } t+\mathcal C} \mid w_t)
P(w1:T)=(1)P(wt)⋅P(wt−C : t−1,wt+1 : t+C∣wt)
由于
P
(
w
t
)
\mathcal P(w_{t})
P(wt)是一个定值,因而我们关注的对象在条件概率分布
P
(
w
t
−
C
:
t
−
1
,
w
t
+
1
:
t
+
C
∣
w
t
)
\mathcal P(w_{t-\mathcal C \text{ : } t-1},w_{t+1 \text{ : } t+\mathcal C} \mid w_t)
P(wt−C : t−1,wt+1 : t+C∣wt)上面。最终关于
w
t
w_t
wt的条件似然
(
Conditional Likelihood
)
(\text{Conditional Likelihood})
(Conditional Likelihood)表示如下:
由于
P
(
w
t
)
\mathcal P(w_t)
P(wt)是定值,不会发生变化;因而
P
(
w
t
)
\mathcal P(w_t)
P(wt)的‘似然’不在考虑范围内。
P
(
w
t
−
C
:
t
−
1
,
w
t
+
1
:
t
+
C
∣
w
t
)
\mathcal P(w_{t-\mathcal C \text{ : } t-1},w_{t+1 \text{ : } t+\mathcal C} \mid w_t)
P(wt−C : t−1,wt+1 : t+C∣wt)
由于
w
t
w_t
wt是我们任意指定位置的随机变量,从而得到一个关于
w
t
w_t
wt的条件似然;实际上,我们可以取到
w
1
,
w
2
,
⋯
,
w
T
w_1,w_2,\cdots,w_{\mathcal T}
w1,w2,⋯,wT内的任意一个位置,每一个位置均对应一个条件似然:
共存在
T
\mathcal T
T个条件似然。
P
(
w
t
−
C
:
t
−
1
,
w
t
+
1
:
t
+
C
∣
w
t
)
t
=
1
,
2
,
⋯
T
\mathcal P(w_{t-\mathcal C \text{ : } t-1},w_{t+1 \text{ : } t+\mathcal C} \mid w_t) \quad t=1,2,\cdots \mathcal T
P(wt−C : t−1,wt+1 : t+C∣wt)t=1,2,⋯T
引入假设
(
2
)
(2)
(2):如果给定对应
w
t
(
t
∈
{
1
,
2
,
⋯
,
T
}
)
w_t(t \in\{1,2,\cdots,\mathcal T\})
wt(t∈{1,2,⋯,T})的条件下,任意两个条件似然分布之间相互独立,那么完整的条件似然可以表示为上述
T
\mathcal T
T个条件似然的乘积结果:
∏
t
=
1
T
P
(
w
t
−
C
:
t
−
1
,
w
t
+
1
:
t
+
C
∣
w
t
)
\prod_{t=1}^{\mathcal T} \mathcal P(w_{t-\mathcal C \text{ : } t-1},w_{t+1 \text{ : } t+\mathcal C} \mid w_t)
t=1∏TP(wt−C : t−1,wt+1 : t+C∣wt)
为了简化上述的连乘形式,在此基础上,增加均值和
log
\text{log}
log函数,得到均值化的条件对数似然
(
Average Conditional Log Likelihood
)
(\text{Average Conditional Log Likelihood})
(Average Conditional Log Likelihood):
均值和
log
\log
log函数并不影响‘完整条件似然’的单调性。
1
T
∑
t
=
1
T
log
P
(
w
t
−
C
:
t
−
1
,
w
t
+
1
:
t
+
C
∣
w
t
)
\frac{1}{\mathcal T} \sum_{t=1}^{\mathcal T} \log \mathcal P(w_{t-\mathcal C \text{ : } t-1},w_{t+1 \text{ : } t+\mathcal C} \mid w_t)
T1t=1∑TlogP(wt−C : t−1,wt+1 : t+C∣wt)
继续观察
P
(
w
t
−
C
:
t
−
1
,
w
t
+
1
:
t
+
C
∣
w
t
)
\mathcal P(w_{t-\mathcal C \text{ : } t-1},w_{t+1 \text{ : } t+\mathcal C} \mid w_t)
P(wt−C : t−1,wt+1 : t+C∣wt),它可看作是
w
t
w_t
wt条件下,窗口内
2
C
−
1
2\mathcal C - 1
2C−1个词的联合概率分布,继续对其进行分解。引入假设
(
3
)
(3)
(3):在给定
w
t
w_t
wt的条件下,
w
t
−
C
,
⋯
,
w
t
−
1
,
w
t
+
1
,
⋯
,
w
t
+
C
w_{t-\mathcal C},\cdots,w_{t-1},w_{t+1},\cdots,w_{t+\mathcal C}
wt−C,⋯,wt−1,wt+1,⋯,wt+C之间独立同分布。基于该假设:可以将
P
(
w
t
−
C
:
t
−
1
,
w
t
+
1
:
t
+
C
∣
w
t
)
\mathcal P(w_{t-\mathcal C \text{ : } t-1},w_{t+1 \text{ : } t+\mathcal C} \mid w_t)
P(wt−C : t−1,wt+1 : t+C∣wt)分解成更细致地连乘形式:
该部分需要注意:这里说的是
w
t
−
C
∣
w
t
,
⋯
,
w
t
−
1
∣
w
t
,
w
t
+
1
∣
w
t
,
⋯
,
w
t
+
C
∣
w
t
w_{t-\mathcal C} \mid w_t,\cdots,w_{t-1} \mid w_t,w_{t+1} \mid w_t,\cdots,w_{t+\mathcal C} \mid w_t
wt−C∣wt,⋯,wt−1∣wt,wt+1∣wt,⋯,wt+C∣wt它们之间独立同分布,而不仅仅是
w
t
−
C
,
⋯
,
w
t
−
1
,
w
t
+
1
,
⋯
,
w
t
+
C
w_{t-\mathcal C},\cdots,w_{t-1},w_{t+1},\cdots,w_{t+\mathcal C}
wt−C,⋯,wt−1,wt+1,⋯,wt+C独立同分布。如果是第二种情况,下面公式不成立。
I
=
1
T
∑
t
=
1
T
log
∏
i
∈
[
−
C
,
C
]
;
i
≠
0
P
(
w
t
+
i
∣
w
t
)
=
1
T
∑
t
=
1
T
∑
i
=
−
C
(
≠
0
)
C
log
P
(
w
t
+
i
∣
w
t
)
I=1TT∑t=1log∏i∈[−C,C];i≠0P(wt+i∣wt)=1TT∑t=1C∑i=−C(≠0)logP(wt+i∣wt)
至此,通过
3
3
3个假设,将完整似然
∏
t
=
1
T
P
[
Context
(
w
t
)
∣
w
t
]
T∏t=1P[Context(wt)∣wt]
重点:由于假设窗口内的其他词
w
t
−
C
,
⋯
,
w
t
−
1
,
w
t
+
1
,
⋯
,
w
t
+
C
w_{t-\mathcal C},\cdots,w_{t-1},w_{t+1},\cdots,w_{t+\mathcal C}
wt−C,⋯,wt−1,wt+1,⋯,wt+C在给定
w
t
w_t
wt情况下是‘独立同分布’的,因此这些词之间已经
失去了顺序关系。
从极大似然估计的角度也能看出来,它将整个似然函数
∏
t
=
1
T
P
[
Context
(
w
t
)
∣
w
t
]
T∏t=1P[Context(wt)∣wt]
最终,将极大似然估计转换成常见的优化问题:
其中
θ
\theta
θ表示模型参数,并转换成最小化问题。
J
(
θ
)
=
−
1
T
∑
t
=
1
T
∑
i
=
−
C
(
≠
0
)
C
log
P
(
w
t
+
i
∣
w
t
)
\mathcal J(\theta) = - \frac{1}{\mathcal T} \sum_{t=1}^{\mathcal T} \sum_{i = -\mathcal C(\neq 0)}^{\mathcal C} \log \mathcal P(w_{t+i} \mid w_t)
J(θ)=−T1t=1∑Ti=−C(=0)∑ClogP(wt+i∣wt)
基于上述描述,我们将对
P
(
w
t
+
i
∣
w
t
)
\mathcal P(w_{t+i} \mid w_t)
P(wt+i∣wt)进行建模。由于
P
(
w
t
+
i
∣
w
t
)
\mathcal P(w_{t+i} \mid w_t)
P(wt+i∣wt)内已经不包含窗口内词语的序列信息,因此将
P
(
w
t
+
i
∣
w
t
)
\mathcal P(w_{t+i} \mid w_t)
P(wt+i∣wt)简化成如下形式:
其中
w
i
w_i
wi表示输入的词语信息;
w
o
w_o
wo表示基于
w
i
w_i
wi的,模型输出的词语分布。
P
(
w
t
+
i
∣
w
t
)
=
P
(
w
o
∣
w
i
)
\mathcal P(w_{t+i} \mid w_t) = \mathcal P(w_o \mid w_i)
P(wt+i∣wt)=P(wo∣wi)
假设我们的
w
i
w_i
wi取的是词汇表中的第
k
k
k个词语
ω
k
\omega_k
ωk,对应的输入就是
ω
k
\omega_k
ωk的
One-hot
\text{One-hot}
One-hot编码:
当然,
One-hot
\text{One-hot}
One-hot编码自身就是一个很‘极端’的离散型分布。
w
i
=
ω
k
=
(
0
,
0
,
⋯
,
1
⏟
位置
k
,
0
,
⋯
,
0
)
T
w_i = \omega_k = (0,0,\cdots,\underbrace{1}_{位置k},0,\cdots,0)^T
wi=ωk=(0,0,⋯,位置k
1,0,⋯,0)T
关于
w
o
w_o
wo可能取值的后验结果见下表:
w o ∣ w i = ω k w_o \mid w_i = \omega_k wo∣wi=ωk | ω 1 \omega_1 ω1 | ω 2 \omega_2 ω2 | ⋯ \cdots ⋯ | ω j \omega_j ωj | ⋯ \cdots ⋯ | ω ∣ V ∣ \omega_{\mid\mathcal V\mid} ω∣V∣ |
---|---|---|---|---|---|---|
P ( w o ∣ w i = ω k ) \mathcal P(w_o \mid w_i = \omega_k) P(wo∣wi=ωk) | p 1 p_1 p1 | p 2 p_2 p2 | ⋯ \cdots ⋯ | p j p_j pj | ⋯ \cdots ⋯ | p ∣ V ∣ p_{\mid\mathcal V \mid} p∣V∣ |
既然是概率值,自然满足:
∑
j
=
1
∣
V
∣
p
j
=
1
{
p
j
=
P
(
w
o
=
ω
j
∣
w
i
=
ω
k
)
p
j
∈
(
0
,
1
]
\sum_{j=1}^{|\mathcal V|} p_j = 1 \quad {pj=P(wo=ωj∣wi=ωk)pj∈(0,1]
对于这样一个离散的后验分布,通常会想到多分类任务。因而可以使用
Softmax
\text{Softmax}
Softmax函数对各离散概率进行表示:
公式中的
x
j
x_j
xj表示模型学习特征信息中的第
j
j
j个分量,也就是下面所说的隐藏层的第
j
j
j个输出;对应的
Softmax
\text{Softmax}
Softmax结果就是关于概率
p
j
p_j
pj的预测结果。
p
j
=
P
(
w
o
=
ω
j
∣
w
i
=
ω
k
)
=
Softmax
(
x
j
)
pj=P(wo=ωj∣wi=ωk)=Softmax(xj)
由于
P
(
w
o
=
ω
j
∣
w
i
=
ω
i
)
\mathcal P(w_o = \omega_j \mid w_i = \omega_i)
P(wo=ωj∣wi=ωi)本质上依然是一个以
w
o
w_o
wo作为输入,输出是各词对应概率分布的复杂函数,因此可以利用神经网络的通用逼近定理进行描述:
其中模型的输入就是
w
i
=
ω
k
w_i = \omega_k
wi=ωk对应的
One-hot
\text{One-hot}
One-hot编码,长度为
∣
V
∣
|\mathcal V|
∣V∣;并且第
k
k
k个位置的元素是
1
1
1;对应输出是随机变量
w
o
w_o
wo对应各词的概率分布结果,长度同样是
∣
V
∣
|\mathcal V|
∣V∣。其中
Softmax
\text{Softmax}
Softmax的函数表示式为
Softmax
(
x
i
)
=
exp
(
x
i
)
∑
j
=
1
∣
V
∣
exp
(
x
j
)
Softmax(xi)=exp(xi)∑|V|j=1exp(xj),其中
x
i
(
i
∈
{
1
,
2
,
⋯
,
∣
V
∣
}
)
x_i(i\in\{1,2,\cdots,|\mathcal V|\})
xi(i∈{1,2,⋯,∣V∣})表示隐藏层的输出结果。该函数的输出结果保证了
∑
j
=
1
∣
V
∣
p
j
=
1
;
p
j
∈
(
0
,
1
]
|V|∑j=1pj=1;pj∈(0,1]的条件约束。
关于 Word2vec \text{Word2vec} Word2vec模型,它的隐藏层并没有设置激活函数,或者说它的激活函数就是一个恒等映射。其目的依然是为了计算过程简便。如果加入了激活函数,由于输入和输出都是 ∣ V ∣ |\mathcal V| ∣V∣个神经元,对应隐藏层的计算量是非常恐怖的。因而只有在输出层保留一个 Softmax \text{Softmax} Softmax激活函数,其余层均只有线性计算操作。
由于隐藏层部分没有激活函数,仅包含线性运算操作,因而可以将其视作矩阵之间的乘法运算.下面剖析该神经网络隐藏层的执行过程:
观察第一次矩阵乘法操作,由于
ω
i
\omega_i
ωi是一个
One-hot
\text{One-hot}
One-hot编码向量(第
i
i
i分量为
1
1
1),那么
[
ω
i
]
T
⋅
W
[\omega_i]^T \cdot \mathcal W
[ωi]T⋅W操作就是将
W
\mathcal W
W内的第
i
i
i行元素
∈
R
1
×
d
\in \mathbb R^{1 \times d}
∈R1×d取出而已。记
W
\mathcal W
W为如下形式:
其中
w
1
,
w
2
,
⋯
,
w
∣
V
∣
w_1,w_2,\cdots,w_{|\mathcal V|}
w1,w2,⋯,w∣V∣表示
W
\mathcal W
W每行元素组成的列向量。
W
=
[
(
w
1
)
T
(
w
2
)
T
⋮
(
w
∣
V
∣
)
T
]
\mathcal W = [(w1)T(w2)T⋮(w|V|)T]
同理,对应
U
\mathcal U
U表示为如下形式:
其中
u
1
,
u
2
,
⋯
,
u
∣
V
∣
u_1,u_2,\cdots,u_{|\mathcal V|}
u1,u2,⋯,u∣V∣表示
U
\mathcal U
U每一列的列向量。
U
=
(
u
1
,
u
2
,
⋯
,
u
j
⋯
,
u
∣
V
∣
)
\mathcal U = (u_1,u_2,\cdots,u_j\cdots,u_{|\mathcal V|})
U=(u1,u2,⋯,uj⋯,u∣V∣)
至此,上面的矩阵乘法操作可以描述成如下形式:
{
[
ω
i
]
T
⋅
W
=
(
w
i
)
T
(
w
i
)
T
⋅
U
⇒
(
w
i
)
T
⋅
(
u
1
,
u
2
,
⋯
,
u
∣
V
∣
)
=
[
(
w
i
)
T
u
1
,
(
w
i
)
T
u
2
,
⋯
,
(
w
i
)
T
u
∣
V
∣
]
{[ωi]T⋅W=(wi)T(wi)T⋅U⇒(wi)T⋅(u1,u2,⋯,u|V|)=[(wi)Tu1,(wi)Tu2,⋯,(wi)Tu|V|]
因而关于输出层(执行
Softmax
\text{Softmax}
Softmax前一层)中第
j
(
j
∈
{
1
,
2
,
⋯
,
∣
V
∣
}
)
j(j \in \{1,2,\cdots,|\mathcal V|\})
j(j∈{1,2,⋯,∣V∣})个神经元的输出
x
j
x_j
xj可直接表示为如下形式:
它就是一个标量。
x
j
=
(
w
i
)
T
u
j
x_j = (w_i)^T u_j
xj=(wi)Tuj
最终经过
Softmax
\text{Softmax}
Softmax函数,求出第
j
j
j个位置的概率分布
p
j
p_j
pj。 同理,通过这种操作可以求解其他概率分布
p
1
,
p
2
,
⋯
,
p
∣
V
∣
p_1,p_2,\cdots,p_{|\mathcal V|}
p1,p2,⋯,p∣V∣。
而最后的优化函数中的参数
θ
\theta
θ指的就是
Word2vec
\text{Word2vec}
Word2vec中的权重信息
W
,
U
\mathcal W,\mathcal U
W,U。
本质上
Word2vec
\text{Word2vec}
Word2vec本身是一个特殊的神经网络,因为这个网络中没有激活函数。并且该模型遵循的优化策略是负均值化的对数似然:
J
(
θ
)
=
−
1
T
∑
t
=
1
T
∑
i
=
−
C
(
≠
0
)
C
log
P
(
w
t
+
i
∣
w
t
)
\mathcal J(\theta) = - \frac{1}{\mathcal T} \sum_{t=1}^{\mathcal T} \sum_{i = -\mathcal C(\neq 0)}^{\mathcal C} \log \mathcal P(w_{t+i} \mid w_t)
J(θ)=−T1t=1∑Ti=−C(=0)∑ClogP(wt+i∣wt)
该似然函数中的
3
3
3个假设使得该优化过程中丢失了序列信息。它的底层逻辑就是描述输出词与输入词之间的相似性关系。
相关参考:
词向量(Word Vector)【白板推导系列】
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。