Word2vec、Bert、Transformer

Word2vec

  • 模型分类
  1. 跳字模型

    在跳字模型中,我们用一个词来预测它在样本序列周围的词。例如,给定文本序列 the、man、hit、this和son,跳字模型所关心的是,给定它的邻近词the、man、this 和 son 的概率。在这个例子中,hit叫中心词,the、man、his、son叫做背景词。

    假设词典大小为TT,使用独热向量表示词典中的每个词,当窗口大小为m时,跳字模型需要最大化给定任意中心词生成背景词的概率:
    t=1Tmjmm0P(w(t+j)w(t))\prod_{t=1}^T\prod_{-m\leq j \leq m m\neq 0} P\big( w^{(t+j)}|w^{(t)}\big)

    上式的最大似然估计与最小化以下损失函数等价:
    1Tt=1Tmjmm0logP(w(t+j)w(t))-\frac{1}{T}\sum_{t=1}^{T}\sum_{-m\leq j \leq m m\neq 0}logP\big( w^{(t+j)}|w^{(t)}\big)

    估计概率的方法:
    P(wowc)=exp(uoTvc)exp(uiTvc)P(w_o|w_c)=\frac{exp(u_o^Tv_c)}{\sum exp(u_i^Tv_c)}
    其中 uiu_i代表代表第i个词的词向量表示,uou_o表示wow_o的词向量表示

  2. 连续词袋模型

    连续词袋模型与跳字模型类似,不同的是,连续词袋模型使用背景词生成中心词,其表达式如下:
    t=1TP(w(t)wtm, ,w(t+m))\prod_{t=1}^TP(w^{(t)}|w^{t-m},\cdots,w^{(t+m)})
    上式的最大似然估计与最小化以下损失函数等价:
    t=1TlogP(w(t)wtm, ,w(t+m))-\sum_{t=1}^TlogP(w^{(t)}|w^{t-m},\cdots,w^{(t+m)})

    估计概率的方法:
    P(wcwo1, ,w2m)=exp[ucT(vo1, ,vom)/2m]exp[uiT(vo1, ,vom)/2m]P(w_c|w_{o1},\cdots,w_{2m})=\frac{exp[u_c^T(v_{o1},\cdots,v_{om})/2m]}{\sum exp [u_i^T(v_{o1},\cdots,v_{om})/2m]}

  • 处理方法

    上述模型训练过程中,计算量与词典的大小成正相关关系,造成计算开销非常大,因此出现了层序Softmax与负例采样算法:

  1. 层序Softmax算法

    实例


    Word2vec、Bert、Transformer

    正例:
    δ(xwTθ)=11+exwTθ \delta(x_w^T \theta)= \frac{1}{1+e^{-x_w^T\theta}}
    负例:
    1δ(xwTθ)1-\delta(x_w^T\theta)
    计算过程:
    第一次:p(d2wxw,θ1w)=θ(xwTθ1w)p(d_2^w|x_w,\theta_1^w)=\theta(x_w^T\theta_1^w)
    第二次:p(d3wxw,θ2w)=1θ(xwTθ2w)p(d_3^w|x_w,\theta_2^w)=1-\theta(x_w^T\theta_2^w)
    第三次:p(d4wxw,θ3w)=1θ(xwTθ3w)p(d_4^w|x_w,\theta_3^w)=1-\theta(x_w^T\theta_3^w)
    第二次:p(d5wxw,θ4w)=θ(xwTθ4w)p(d_5^w|x_w,\theta_4^w)=\theta(x_w^T\theta_4^w)

    P(context())=j=25p(djwxw,θj1w)P(足球|context(足球))=\prod_{j=2}^5p(d_j^w|x_w,\theta_{j-1}^w)

  2. 负例采样

    p(ucontext(w))={δ(xuTθw)1δ(xwTθu)p(u|context(w))=\begin{cases} \delta(x_u^T\theta^w)\\ 1-\delta(x_w^T\theta^u)\end{cases}
    g(w)=w{w}NEGwp(uContext(w))=δ(xwTθw)uNEG{w}[1δ(xwTθu)]g(w)=\prod_{w \in \{w\} \cup NEG{w}} p(u|Context(w))=\delta(x_w^T\theta^w)\prod_{u\in NEG\{w\}}[1-\delta(x_w^T\theta^u)]
    δ(xwTθw)\delta(x_w^T\theta^w)表示当上下文为Context(w)时预测中心词为w的概率
    δ(xwTθu),uNEG(w)\delta(x_w^T\theta^u),u \in NEG(w)表示当上下文为Context(w)时预测中心词为u的概率
    给合适的语料库C,则目标函数为:
    G=wCg(w)G = \prod_{w \in C} g(w)

    任何采样算法都应该保证频次越高的样本容易被采样出来。基本的思路式对于长度为1的线段,根据词频将其平均第分配给每个词语:
    len(w)=counter(w)uDcounter(u)len(w)=\frac{counter(w)}{\sum_{u \in D}counter(u)}
    于是我们将该线段公平地分配了,接下来我们随机生成0-1间的随机数,看落到那个区域内,就能采样到该区对应的单词了,很公平

Bert

  • 解决的问题

Transformer

降维算法 TNSE详解