Task 07- 进阶优化算法-Word2Vec-词嵌入进阶

Task 07- 进阶优化算法-Word2Vec-词嵌入进阶

1 进阶优化算法

1.1 Momentum

A example for steepest descent: f ( x 1 , x 2 ) = 0.1 x 1 2 + 2 x 2 2 , learning rate  α = 0.4 \text{A example for steepest descent:} \\ f(x_1,x_2)=0.1x_1^2+2x_2^2,\text{learning rate }{\alpha=0.4} A example for steepest descent:f(x1,x2)=0.1x12+2x22,learning rate α=0.4

在这里插入图片描述

同⼀位置上,目标函数在竖直方向( x 2 x_2 x2轴方向)比在水平方向( x 1 x_1 x1轴方向)的斜率的绝对值更大,因此,给定学习率,梯度下降迭代⾃变量时会使⾃变量在竖直⽅向⽐在⽔平⽅向移动幅度更⼤。那么,我们需要⼀个较小的学习率从而避免⾃变量在竖直⽅向上越过⽬标函数最优解。然而,这会造成⾃变量在⽔平⽅向上朝最优解移动变慢。

  • 在时间步 0 0 0,动量法创建速度变量 v 0 = 0 v_0=0 v0=0

  • 在时间步 t > 0 t>0 t>0,动量法做如下迭代:
    v t ← γ v t − 1 + η t g t   ( 0 < γ < 1 ) ⇒ Exponentially Weighted Moving Average x t ← x t − 1 − v t The same example with  γ = 0.5 : v_t \leftarrow \gamma v_{t-1} + \eta_t g_t \ (0<\gamma<1) \Rightarrow \text{Exponentially Weighted Moving Average} \\ x_t \leftarrow x_{t-1} - v_t \\ \text{The same example with } {\gamma = 0.5}: vtγvt1+ηtgt (0<γ<1)Exponentially Weighted Moving Averagextxt1vtThe same example with γ=0.5:

在这里插入图片描述

1.2 AdaGrad

AdaGrad根据自变量在每个维度 ( x 1 , x 2 , ⋯   , x n ) (x_1,x_2,\cdots,x_n) (x1,x2,,xn)的梯度值的⼤小来调整各个维度上的学习率,从而避免统一的学习率难以适应所有维度的问题

s t ← s t − 1 + g t ⊙ g t x t ← x t − 1 + η s t + ϵ ⊙ g t ⊙ : element-wise tensor multiplication s_t \leftarrow s_{t-1} + g_t \odot g_t \\ x_t \leftarrow x_{t-1} + \frac{\eta}{\sqrt{s_t+\epsilon}} \odot g_t \\ {\odot}\text{: element-wise tensor multiplication} stst1+gtgtxtxt1+st+ϵ ηgt: element-wise tensor multiplication

  • 问题:由于 s t s_t st累加了元素平方的梯度,故学习率在一直降低/不变,在迭代后期可能会由于学习率国小而收敛过慢

1.3 RMSProp (AdaGrad + Exponentially WMA)

s t ← γ s t − 1 + ( 1 − γ ) g t ⊙ g t x t ← x t − 1 + η s t + ϵ ⊙ g t s_t \leftarrow \gamma s_{t-1} + (1-\gamma)g_t \odot g_t \\ x_t \leftarrow x_{t-1} + \frac{\eta}{\sqrt{s_t+\epsilon}} \odot g_t stγst1+(1γ)gtgtxtxt1+st+ϵ ηgt

1.4 AdaDelta (RMSProp replace η \eta η with Δ x t − 1 \sqrt{\Delta x_{t-1}} Δxt1 )

s t ← γ s t − 1 + ( 1 − γ ) g t ⊙ g t x t ← x t − 1 + Δ x t − 1 + ϵ s t + ϵ ⊙ g t Δ x t ← ρ Δ x t − 1 + ( 1 − ρ ) g t ′ ⊙ g t s_t \leftarrow \gamma s_{t-1} + (1-\gamma)g_t \odot g_t \\ x_t \leftarrow x_{t-1} + \sqrt{\frac{\Delta x_{t-1}+\epsilon}{s_t+\epsilon}} \odot g_t \\ \Delta x_{t} \leftarrow \rho\Delta x_{t-1}+(1-\rho)g_t^\prime\odot g_t stγst1+(1γ)gtgtxtxt1+st+ϵΔxt1+ϵ gtΔxtρΔxt1+(1ρ)gtgt

1.5 Adam (RMSProp + Momentum)

v t ← β 1 v t − 1 + ( 1 − β 1 ) g t s t ← β 2 s t − 1 + ( 1 − β 2 ) g t ⊙ g t v ^ t ← v t 1 − β 1 t , s ^ t ← s t 1 − β 2 t  (偏差修正) x t ← x t − 1 + η v ^ t s ^ t + ϵ ⊙ g t v_t \leftarrow \beta_1v_{t-1} + (1-\beta_1)g_t \\ s_t \leftarrow \beta_2 s_{t-1} + (1-\beta_2)g_t \odot g_t \\ \hat{v}_t \leftarrow \frac{v_t}{1-\beta_1^t},\hat{s}_t \leftarrow \frac{s_t}{1-\beta_2^t} \text{ (偏差修正)} \\ x_t \leftarrow x_{t-1} + \frac{\eta\hat{v}_t}{\sqrt{\hat{s}_t}+\epsilon} \odot g_t vtβ1vt1+(1β1)gtstβ2st1+(1β2)gtgtv^t1β1tvt,s^t1β2tst (偏差修正)xtxt1+s^t +ϵηv^tgt

2 word2vec

  • 词向量:词的特征向量或表征,把词映射为实数域向量的技术叫词嵌入(word embedding)

2.0 Why not One-Hot?

  • One-Hot:每个向量长度等于词典大小 N N N,词的索引为 i i i,向量第 i i i位为1

  • 缺陷:词向量无法准确表达不同词之间的相似度(e.g., 任意两个词向量的余弦相似度为0)

2.1 word2vec

2.1.1 跳字模型(skip-gram)

在这里插入图片描述

  • 基于某个词(中心词)生成文本序列周围的词(背景词),参数为每个词所对应的中心词向量和背景词向量
  • 每个词表示为两个 d d d 维向量,中心词向量 v i ∈ R d v_i \in \mathbb{R}^d viRd,背景词向量 u i ∈ R d u_i \in \mathbb{R}^d uiRd
  • 中心词 w c w_c wc,背景词 w o w_o wo

P ( w o ∣ w c ) = e x p ( u o ⊤ v c ) ∑ i ∈ V e x p ( u i ⊤ v c ) P(w_o|w_c) = \frac{exp(u_o^{\top}v_c)}{\sum_{i\in \mathcal{V}}exp(u_i^{\top}v_c)} P(wowc)=iVexp(uivc)exp(uovc)

  • 给定长度为 T T T的文本序列,窗口大小为 m m m,则给定任一中心词生成所有背景词的概率为:

∏ 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\ne0}P(w^{(t+j)}|w^{(t)}) t=1Tmjm,j=0P(w(t+j)w(t))

  • 训练:通过梯度下降训练需要计算 V \mathcal{V} V中所有词作为 w c w_{c} wc背景词的条件概率对参数进行更新

min ⁡ v , u L = − ∏ t = 1 T ∏ − m ≤ j ≤ m , j ≠ 0 log ⁡ P ( w ( t + j ) ∣ w ( t ) ) log ⁡ P ( w o ∣ w c ) = u o ⊤ v c − log ⁡ ∑ i ∈ V exp ⁡ ( u i ⊤ v c ) ∂ log ⁡ P ( w o ∣ w c ) ∂ v c = u o − ∑ j ∈ V P ( w j ∣ w c ) u j \min_{\bold{v},\bold{u}}{L=-\prod_{t=1}^{T}\prod_{-m\leq{j}\leq{m},j\ne0}\log{P(w^{(t+j)}|w^{(t)})}} \\ \log{P(w_o|w_c)} = u_o^{\top}v_c-\log{\sum_{i \in \mathcal{V}}\exp(u_i^{\top}v_c)} \\ \frac{\partial \log P(w_o|w_c)}{\partial v_c} = u_o-\sum_{j \in \mathcal{V}}P(w_j|w_c)u_j v,uminL=t=1Tmjm,j=0logP(w(t+j)w(t))logP(wowc)=uovclogiVexp(uivc)vclogP(wowc)=uojVP(wjwc)uj

  • 使用skip-gram的中心词向量作为词的表征向量
2.1.2 连续词袋模型(continuous bag of words, CBOW)

在这里插入图片描述

  • 与skip-gram类似,区别在于CBOW基于背景词生成中心词

  • 使用CBOW的背景词向量作为词的表征向量

2.1.3 二次采样
  • 文本数据中一般会出现一些高频词,如英文中的“the”“a”和“in”。通常来说,在一个背景窗口中,一个词(如“chip”)和较低频词(如“microprocessor”)同时出现比和较高频词(如“the”)同时出现对训练词嵌入模型更有益。因此,训练词嵌入模型时可以对词进行二次采样;
  • 丢弃概率(越高频的词被丢弃的概率越大):

P ( w i ) = max ⁡ ( 1 − t f ( w i ) , 0 ) P(w_i)=\max(1-\sqrt{\frac{t}{f(w_i)}},0) P(wi)=max(1f(wi)t ,0)

  • 代码
def discard(idx):
    '''
    @params:
        idx: 单词的下标
    @return: True/False 表示是否丢弃该单词
    '''
    return random.uniform(0, 1) < 1 - math.sqrt(
        1e-4 / counter[idx_to_token[idx]] * num_tokens)
2.1.4 负采样近似训练(negative sampling)
  • 近似训练:输出概率之和本应为1,但计算开销太高(通过梯度下降训练需要计算 V \mathcal{V} V中所有词作为 w c w_{c} wc背景词的条件概率对参数进行更新),故通过采样的方法降低计算开销,但概率之和不严格等于1
  • 负采样:对于一个中心词,背景词往往占总词典比例较小,而负样本(噪声词)的比例较大,故对负样本进行采样(噪声词采样概率 P ( w ) P(w) P(w)设为词频与总词频之比的 0.75 0.75 0.75次方)

3 词嵌入进阶

3.1 子词嵌入

英语单词通常有其内部结构和形成⽅式。例如,我们可以从“dog”“dogs”和“dogcatcher”的
字⾯上推测它们的关系。这些词都有同⼀个词根“dog”,但使⽤不同的后缀来改变词的含义。

  • FastText:以固定大小的 n-gram 形式将单词更细致地表示为了子词的集合
  • BPE (Byte Pair Encoding):根据语料库的统计信息,自动且动态地生成高频子词的集合

3.2 GloVe全局向量词嵌入

  1. 使用非概率分布的变量 p i j ′ = x i j p_{ij}^{\prime}=x_{ij} pij=xij q i j ′ = exp ⁡ ⁡ ( u j ⊤ v i ) q_{ij}^{\prime}=\exp⁡(u_j^{\top}v_i) qij=exp(ujvi),并对它们取对数;

  2. 为每个词 w i w_i wi 增加两个标量模型参数:中心词偏差项 b i b_i bi 和背景词偏差项 c i c_i ci,松弛了概率定义中的规范性;

  3. 将每个损失项的权重 x i x_i xi 替换成函数 h ( x i j ) h(x_{ij}) h(xij),权重函数 h ( x ) h(x) h(x) 是值域在 [ 0 , 1 ] [0,1] [0,1] 上的单调递增函数,松弛了中心词重要性与 x i x_i xi 线性相关的隐含假设;

  4. 用平方损失函数替代了交叉熵损失函数:
    L = ∑ i ∈ V ∑ j ∈ V h ( x i j ) ( u j ⊤ v i + b i + c j − log ⁡ x i j ) 2 L=\sum_{i\in\mathcal{V}}\sum_{j\in\mathcal{V}} h(x_{ij}) (\boldsymbol{u}^\top_j\boldsymbol{v}_i+b_i+c_j-\log x_{ij})^2 L=iVjVh(xij)(ujvi+bi+cjlogxij)2

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值