深度学习-自然语言处理中的近似训练

自然语言处理中的近似训练

跳字模型的核心在于使用softmax运算得到给定中心词 w c w_c wc来生成背景词 w o w_o wo的条件概率

P ( w o ∣ w c ) = exp ( u o ⊤ v c ) ∑ i ∈ V exp ( u i ⊤ v c ) . P(w_o \mid w_c) = \frac{\text{exp}(\boldsymbol{u}_o^\top \boldsymbol{v}_c)}{ \sum_{i \in \mathcal{V}} \text{exp}(\boldsymbol{u}_i^\top \boldsymbol{v}_c)}. P(wowc)=iVexp(uivc)exp(uovc).

该条件概率相应的对数损失

− log ⁡ P ( w o ∣ w c ) = − u o ⊤ v c + log ⁡ ( ∑ i ∈ V exp ( u i ⊤ v c ) ) . -\log P(w_o \mid w_c) = -\boldsymbol{u}_o^\top \boldsymbol{v}_c + \log\left(\sum_{i \in \mathcal{V}} \text{exp}(\boldsymbol{u}_i^\top \boldsymbol{v}_c)\right). logP(wowc)=uovc+log(iVexp(uivc)).

由于softmax运算考虑了背景词可能是词典 V \mathcal{V} V中的任一词,以上损失包含了词典大小数目的项的累加。不论是跳字模型还是连续词袋模型,由于条件概率使用了softmax运算,每一步的梯度计算都包含词典大小数目的项的累加

对于含几十万或上百万词的较大词典,每次的梯度计算开销可能过大。为了降低该计算复杂度,我们可以使用两种近似训练方法,即负采样(negative sampling)或层序softmax(hierarchical softmax)。由于跳字模型和连续词袋模型类似,本节仅以跳字模型为例介绍这两种方法。

负采样(negative sampling)

负采样修改了原来的目标函数。给定中心词 w c w_c wc的一个背景窗口,我们把背景词 w o w_o wo出现在该背景窗口看作一个事件,并将该事件的概率计算为

P ( D = 1 ∣ w c , w o ) = σ ( u o ⊤ v c ) P(D=1\mid w_c, w_o) = \sigma(\boldsymbol{u}_o^\top \boldsymbol{v}_c) P(D=1wc,wo)=σ(uovc)

其中的 σ \sigma σ函数与sigmoid激活函数的定义相同:

σ ( x ) = 1 1 + exp ⁡ ( − x ) . \sigma(x) = \frac{1}{1+\exp(-x)}. σ(x)=1+exp(x)1.

我们先考虑最大化文本序列中所有该事件的联合概率来训练词向量。具体来说,给定一个长度为 T T T的文本序列,设时间步 t t t的词为 w ( t ) w^{(t)} w(t)且背景窗口大小为 m m m考虑最大化联合概率

∏ t = 1 T ∏ − m ≤ j ≤ m ,   j ≠ 0 P ( D = 1 ∣ w ( t ) , w ( t + j ) ) . \prod_{t=1}^{T} \prod_{-m \leq j \leq m,\ j \neq 0} P(D=1\mid w^{(t)}, w^{(t+j)}). t=1Tmjm, j=0P(D=1w(t),w(t+j)).

然而,以上模型中包含的事件仅考虑了正类样本。这导致当所有词向量相等且值为无穷大时,以上的联合概率才被最大化为1。很明显,这样的词向量毫无意义。

负采样通过采样并添加负类样本使目标函数更有意义。设背景词 w o w_o wo出现在中心词 w c w_c wc的一个背景窗口为事件 P P P,我们根据分布 P ( w ) P(w) P(w)采样 K K K个未出现在该背景窗口中的词,即噪声词。设噪声词 w k w_k wk k = 1 , … , K k=1, \ldots, K k=1,,K)不出现在中心词 w c w_c wc的该背景窗口为事件 N k N_k Nk。假设同时含有正类样本和负类样本的事件 P , N 1 , … , N K P, N_1, \ldots, N_K P,N1,,NK相互独立,负采样将以上需要最大化的仅考虑正类样本的联合概率改写为

∏ t = 1 T ∏ − m ≤ j ≤ m ,   j ≠ 0 P ( w ( t + j ) ∣ w ( t ) ) , \prod_{t=1}^{T} \prod_{-m \leq j \leq m,\ j \neq 0} P(w^{(t+j)} \mid w^{(t)}), t=1Tmjm, j=0P(w(t+j)w(t)),

其中条件概率被近似表示为 P ( w ( t + j ) ∣ w ( t ) ) = P ( D = 1 ∣ w ( t ) , w ( t + j ) ) ∏ k = 1 ,   w k ∼ P ( w ) K P ( D = 0 ∣ w ( t ) , w k ) . P(w^{(t+j)} \mid w^{(t)}) =P(D=1\mid w^{(t)}, w^{(t+j)})\prod_{k=1,\ w_k \sim P(w)}^K P(D=0\mid w^{(t)}, w_k). P(w(t+j)w(t))=P(D=1w(t),w(t+j))k=1, wkP(w)KP(D=0w(t),wk).

设文本序列中时间步 t t t的词 w ( t ) w^{(t)} w(t)在词典中的索引为 i t i_t it,噪声词 w k w_k wk在词典中的索引为 h k h_k hk。有关以上条件概率的对数损失为

− log ⁡ P ( w ( t + j ) ∣ w ( t ) ) = − log ⁡ P ( D = 1 ∣ w ( t ) , w ( t + j ) ) − ∑ k = 1 ,   w k ∼ P ( w ) K log ⁡ P ( D = 0 ∣ w ( t ) , w k )   = − log ⁡ σ ( u i t + j ⊤ v i t ) − ∑ k = 1 ,   w k ∼ P ( w ) K log ⁡ ( 1 − σ ( u h k ⊤ v i t ) )   = − log ⁡ σ ( u i t + j ⊤ v i t ) − ∑ k = 1 ,   w k ∼ P ( w ) K log ⁡ σ ( − u h k ⊤ v i t ) . \begin{aligned} -\log P(w^{(t+j)} \mid w^{(t)}) =& -\log P(D=1\mid w^{(t)}, w^{(t+j)}) - \sum_{k=1,\ w_k \sim P(w)}^K \log P(D=0\mid w^{(t)}, w_k)\ \\ =&- \log \sigma\left(\boldsymbol{u}_{i_{t+j}}^\top \boldsymbol{v}_{i_t}\right) - \sum{k=1,\ w_k \sim P(w)}^K \log\left(1-\sigma\left(\boldsymbol{u}_{h_k}^\top \boldsymbol{v}_{i_t}\right)\right)\\\ =&- \log \sigma\left(\boldsymbol{u}_{i_{t+j}}^\top \boldsymbol{v}_{i_t}\right) - \sum{k=1,\ w_k \sim P(w)}^K \log\sigma\left(-\boldsymbol{u}_{h_k}^\top \boldsymbol{v}_{i_t}\right). \end{aligned} logP(w(t+j)w(t))== =logP(D=1w(t),w(t+j))k=1, wkP(w)KlogP(D=0w(t),wk) logσ(uit+jvit)k=1, wkP(w)Klog(1σ(uhkvit))logσ(uit+jvit)k=1, wkP(w)Klogσ(uhkvit).

现在,训练中每一步的梯度计算开销不再与词典大小相关,而与 K K K线性相关。当 K K K取较小的常数时,负采样在每一步的梯度计算开销较小。

  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值