NLP - 预训练模型

2020-08-05  本文已影响0人  nlpming

1. 早期NLP预训练模型

1.1 神经网络语言模型(NNLM)

y_{w_t} = b+Wx+U tanh(d +Hx)
P(w_t|w_{t-n+1}, ..., w_{t-2}, w_{t-1}) = \frac{ e^{ y_{w_t}} }{ \sum_i {e^{ y_i}} }
L(\theta) = \sum_{t} logP(w_t|w_{t-n+1}, ..., w_{t-2}, w_{t-1})

神经网络语言模型.png

1.2 Word2vec模型

1.2.1 CBow和Skip-Gram模型

word2vec模型.png

1.2.2 层次softmax

  • 输入层:包含Context(w)2c个词的词向量;假设每个词向量维度为m
  • 投影层:将输入的2c个词的向量做求和累加,即x_w = \sum_{i=1}^{2c} v(Context(w)_i) \in \mathbb{R}^m
  • 输出层:输出层对应一棵二叉树,它是以语料中出现过的词当叶子结点,以各词在语料中出现的次数当权值构造出来的Huffman树;在这棵Huffman树中,叶子结点共N个,分别对应词典D中的词;非叶子结点N-1个;
  • 符号定义如下:
    (1)p^w表示从根结点出发到达w对应叶子结点路径;
    (2)l^w表示路径p^w中包含结点的个数;
    (3)p^w_1, p^w_2, ..., p^w_{l_w}表示路径p^w中的l^w个结点;其中p^w_1表示根结点,p^w_{l_w}表示词w对应的结点;
    (4)d^w_1, d^w_2, ..., d^w_{l_w} \in (0,1),表示词w的Huffman编码,它由l^w-1位编码构成;
    (5)\theta^w_1, \theta^w_2, ..., \theta^w_{l_w-1} \in \mathbb{R}^m,路径p^w中非叶子结点对应的向量;
层次softmax实现CBow模型.png

第1次:p(d^w_2|x_w, \theta^w_1) = 1 - \sigma(x^T_w \theta^w_1)
第2次:p(d^w_3|x_w, \theta^w_2) = \sigma(x^T_w \theta^w_2)
第3次:p(d^w_4|x_w, \theta^w_3) = \sigma(x^T_w \theta^w_3)
第4次:p(d^w_5|x_w, \theta^w_4) = 1 - \sigma(x^T_w \theta^w_4)

1.2.3 负采样方法

(1)假设词典\mathcal{D }中的每一个词w对应一个线段l(w),长度为:len(w) = \frac{counter(w) }{\sum_{u \in \mathcal{D}} counter( u)}counter(w)表示w在语料中出现的次数;现在将语料中所有词的长度进行拼接得到长度为1的单位线段;
(2)随机采样的策略就是每次生成一个[0, 1]之间的随机数,当随机数命中某个线段的范围,将这个线段对应的单词作为负样本;

负采样算法实现.png

1.3 Glove模型

w_i^T \tilde{w_j} + b_i + \tilde{b_j} = log(X_{ij}) \\ J(\theta) = \sum_{i,j=1}^{V} f(X_{ij}) (w_i^T \tilde{w_j} + b_i + \tilde{b_j} - log(X_{ij}))^2

  1. 早期的预训练模型,训练出的词向量是 静态固定不变 的。即相同的单词,在不同的上下文情况下,其词向量是一样的。
  2. 对于一词多意的问题很难解决。比如下面的例子,bank在不同的上下文下对应不同的意思:银行,河堤;
  3. 因此考虑如何解决,在不同的上下文情况下,单词得到不同的词向量?即获取 动态词向量
一词多意问题.png

2. 动态词向量模型

2.1 ELMo模型

前向语言模型:p(t_1, t_2, ..., t_N) = \prod_{k=1}^{N} p(t_k|t_1, t_2, ..., t_{k-1}) \\ 后向语言模型:p(t_1, t_2, ..., t_N) = \prod_{k=1}^{N} p(t_k|t_{k+1}, t_{k+2}, ..., t_N) \\ 目标函数:L(\theta) = \sum_{k=1}^N \left( logp(t_k|t_1, t_2, ..., t_{k-1}, \theta_x, \overrightarrow{\theta}_{LSTM}, \theta_S) + logp(t_k|t_{k+1}, t_{k+2}, ..., t_N, \theta_x, \overleftarrow{\theta}_{LSTM}, \theta_S) \right)

ELMo模型.png

\begin{align} R_k & = \{ x_k^{LM}, \overrightarrow{h_{k,j}^{LM}}, \overleftarrow{h_{k,j}^{LM} } | j = 1, 2, ..., L \} \\ & = \{ h_{k,j}^{LM} | j=0,1,2, ..., L \} \end{align}

2.2 BERT模型

BERT模型.png

2.2.1 Masked LM任务

Masked LM.png

2.2.2 NSP任务

NSP.png

2.2.3 BERT模型输入

2.2.4 如何使用BERT?

1) 单文档分类任务
单文档分类.png
2) 序列标注任务
序列标注任务.png
3) 多文档分类任务
多文档分类任务.png
4) 问答系统
问答系统.png 计算start.png 计算end.png

2.3 GPT模型

Transformer Decoder self Attention.png image.png

参考论文

参考资料

上一篇下一篇

猜你喜欢

热点阅读