深度学习笔记之Transformer——Position Embedding铺垫:Word2vec
引言
在Transformer(三)自注意力机制一节中介绍了位置编码 ( Position Embedding ) (\text{Position Embedding}) (Position Embedding),本系列针对位置编码再回首,从公式角度重新认识位置编码。本节作为铺垫,介绍一下词向量模型—— Word2vec \text{Word2vec} Word2vec。
回顾:关于词特征表示的 One-hot \text{One-hot} One-hot编码
在循环神经网络简单示例中,我们简单介绍了基于 One-hot \text{One-hot} One-hot向量的文本表征。
- 关于某种语言的词汇表 V \mathcal V V内包含 ∣ V ∣ |\mathcal V| ∣V∣个具体词语:
V = { ω 1 , ω 2 , ⋯ , ω ∣ V ∣ } \mathcal V = \{\omega_1,\omega_2,\cdots,\omega_{|\mathcal V|}\} V={ω1,ω2,⋯,ω∣V∣}
而 One-hot \text{One-hot} One-hot编码将 ∣ V ∣ |\mathcal V| ∣V∣均使用长度为 ∣ V ∣ |\mathcal V| ∣V∣的向量进行文本表征。并满足:
其中
j j j表示词语在
V \mathcal V V中的下标;
ω j ( i ) \omega_j^{(i)} ωj(i)则是某词语
ω j \omega_j ωj的特征表示过程中,第
i i i个特征分量的结果。
{ ∑ j = 1 ∣ V ∣ ω j ( i ) = 1 ω j ( i ) ∈ { 0 , 1 } \begin{cases} \begin{aligned} & \sum_{j=1}^{|\mathcal V|} \omega_j^{(i)} = 1 \\ & \omega_j^{(i)} \in \{0,1\} \end{aligned} \end{cases} ⎩ ⎨ ⎧j=1∑∣V∣ωj(i)=1ωj(i)∈{0,1} - 这种词向量的表示方法优点在于:每一个 One-hot \text{One-hot} One-hot编码必然与 V \mathcal V V中的某个词之间存在恒等映射关系,并且将文本信息转换为 One-hot \text{One-hot} One-hot编码过程中,不存在特征信息丢失的情况。
- 相应地,该编码方式的缺陷也很明显:首先,每个 One-hot \text{One-hot} One-hot编码仅有 1 1 1位存在有效信息,其余位均为 0 0 0(稀疏编码);其次,无法表达词语之间的相关性信息。因为各向量之间内积结果必然是 0 0 0,从而使得它们之间线性无关。
但这种表达明显违背了语言自身的‘性质’。在对应的语境下,某些词之间存在关联关系。
目标函数构建
关于语料库与任务目标
我们已知的训练信息就是语料库 ( 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 ∣ \begin{aligned}\mathcal P(w_t) = \frac{1}{|\mathcal V|}\end{aligned} P(wt)=∣V∣1。
在该条件下,
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)分解成更细致地连乘形式:
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 ) \begin{aligned} \mathcal I & = \frac{1}{\mathcal T} \sum_{t=1}^{\mathcal T} \log \prod_{ i \in [-\mathcal C,\mathcal C] ;i \neq 0} \mathcal P(w_{t+i} \mid w_t) \\ & = \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) \end{aligned} I=T1t=1∑Tlogi∈[−C,C];i=0∏P(wt+i∣wt)=T1t=1∑Ti=−C(=0)∑ClogP(wt+i∣wt)
至此,通过 3 3 3个假设,将完整似然 ∏ t = 1 T P [ Context ( w t ) ∣ w t ] \begin{aligned}\prod_{t=1}^\mathcal T \mathcal P[\text{Context}(w_t) \mid w_t]\end{aligned} t=1∏TP[Context(wt)∣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 t w_t wt,基于该词所在窗口内的某个词 w t + i ( i ≤ C ) w_{t+i}(i \leq \mathcal C) wt+i(i≤C)的后验概率。
重点:由于假设窗口内的其他词
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 ] \begin{aligned}\prod_{t=1}^\mathcal T \mathcal P[\text{Context}(w_t) \mid w_t]\end{aligned} t=1∏TP[Context(wt)∣wt]分解成若干个 log P ( w t + i ∣ w t ) \log \mathcal P(w_{t+i} \mid w_t) logP(wt+i∣wt)并各自独立地求解最大值。因此基于这种策略求解的 Vector \text{Vector} Vector结果并不包含序列信息。
最终,将极大似然估计转换成常见的优化问题:
其中
θ \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)
Word2vec \text{Word2vec} Word2vec模型结构
基于上述描述,我们将对 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可能取值的后验结果见下表:
既然是概率值,自然满足:
∑ 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 \begin{cases} p_j = \mathcal P(w_o = \omega_j \mid w_i = \omega_k) \\ p_j \in (0,1] \end{cases} j=1∑∣V∣pj=1{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 ) \begin{aligned} p_j & = \mathcal P(w_o = \omega_j \mid w_i = \omega_k) \\ & = \text{Softmax}(x_j) \end{aligned} 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 ) \begin{aligned} \text{Softmax}(x_i) = \frac{\exp(x_i)}{\sum_{j=1}^{|\mathcal V|} \exp(x_j)} \end{aligned} Softmax(xi)=∑j=1∣V∣exp(xj)exp(xi),其中
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 ] \begin{aligned}\sum_{j=1}^{|\mathcal V|} p_j = 1 ; p_j \in (0,1]\end{aligned} j=1∑∣V∣pj=1;pj∈(0,1]的条件约束。
关于 Word2vec \text{Word2vec} Word2vec模型,它的隐藏层并没有设置激活函数,或者说它的激活函数就是一个恒等映射。其目的依然是为了计算过程简便。如果加入了激活函数,由于输入和输出都是 ∣ V ∣ |\mathcal V| ∣V∣个神经元,对应隐藏层的计算量是非常恐怖的。因而只有在输出层保留一个 Softmax \text{Softmax} Softmax激活函数,其余层均只有线性计算操作。
由于隐藏层部分没有激活函数,仅包含线性运算操作,因而可以将其视作矩阵之间的乘法运算.下面剖析该神经网络隐藏层的执行过程:
- 关于输入 ω i ∈ R ∣ V ∣ × 1 \omega_i \in \mathbb R^{|\mathcal V| \times 1} ωi∈R∣V∣×1对应隐藏层的权重信息使用矩阵进行表示。分别记作 W ∈ R ∣ V ∣ × d , U ∈ R d × ∣ V ∣ \mathcal W \in \mathbb R^{|\mathcal V| \times d},\mathcal U \in \mathbb R^{d \times |\mathcal V|} W∈R∣V∣×d,U∈Rd×∣V∣:
- 基于上述定义,输入层 ⇒ \Rightarrow ⇒ 隐藏层,隐藏层 ⇒ \Rightarrow ⇒ 输出层的矩阵乘法操作分别表示为:
{ [ ω i ] 1 × ∣ V ∣ T ⋅ W ∣ V ∣ × d ∈ R 1 × d { [ ω i ] T ⋅ W } 1 × d ⋅ U d × ∣ V ∣ ∈ R 1 × ∣ V ∣ \begin{cases} [\omega_i]_{1 \times |\mathcal V|}^T \cdot \mathcal W_{|\mathcal V| \times d} \in \mathbb R^{1 \times d} \\ \left\{[\omega_i]^T \cdot \mathcal W \right\}_{1 \times d} \cdot \mathcal U_{d \times |\mathcal V|} \in \mathbb R^{1 \times |\mathcal V|} \end{cases} {[ωi]1×∣V∣T⋅W∣V∣×d∈R1×d{[ωi]T⋅W}1×d⋅Ud×∣V∣∈R1×∣V∣
观察第一次矩阵乘法操作,由于 ω 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 = \begin{bmatrix} (w_1)^T \\ (w_2)^T \\ \vdots \\ (w_{|\mathcal V|})^T \end{bmatrix} 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 ∣ ] \begin{cases} [\omega_i]^T \cdot \mathcal W = (w_i)^T \\ \begin{aligned} (w_i)^T \cdot \mathcal U & \Rightarrow (w_i)^T \cdot (u_1,u_2,\cdots,u_{|\mathcal V|}) \\ & = \left[(w_i)^T u_1,(w_i)^T u_2,\cdots,(w_i)^T u_{|\mathcal V|}\right] \end{aligned} \end{cases} ⎩ ⎨ ⎧[ω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)【白板推导系列】