梯度爆炸、梯度消失和解决方法

1.梯度

设二元函数$z=f(x,y)$ 在平面区域$D$上具有一阶连续偏导数,则对于每一个点$P(x,y)$的梯度为

2.BP算法图示

3.梯度消失和梯度爆炸

梯度爆炸和梯度消失问题都是因为网络太深网络权值更新不稳定造成的,本质上是因为梯度反向传播中的连乘效应。

举个例子,现有如上链式连接的网络$(x\rightarrow z \rightarrow y)$

假设$g$为sigmoid,那么$g^{‘}(z)$最大值为$\frac{1}{4}$,而我们初始化的网络权值通常都小于1,所以$g^{‘}(z)w \le \frac{1}{4}$,因此对于上面的链式求导,层数越多,求导结果$\frac{\partial C }{\partial b_1}$越小,因而导致梯度消失的情况出现。

这样,梯度爆炸问题的出现原因就显而易见了,当$w$比较大的时候或者激活函数的梯度较大,即$g^{‘}(z)w > 1$,层数越多,求导结果$\frac{\partial C }{\partial b_1}$越大,直到爆炸。

4.梯度消失和梯度爆炸解决方法

4.1 解决梯度消失

1.用ReLU、Leaky-ReLU、P-ReLU、R-ReLU、Maxout等替代sigmoid函数。

2.用Batch Normalization。

3.LSTM的结构设计也可以改善RNN中的梯度消失问题。

4.残差网络

5.合适的初始化权重

4.2解决梯度爆炸

1.梯度剪切:对梯度设定阈值

2.权重正则化(L1 和 L2 )

3.合适的初始化权重

参考

https://www.analyticsvidhya.com/blog/2021/06/the-challenge-of-vanishing-exploding-gradients-in-deep-neural-networks/

https://zhuanlan.zhihu.com/p/25631496

https://aijishu.com/a/1060000000100195

推荐系统

一般推荐系统的结构拆分为:召回-》粗排-》精排-》重排

大佬总结的干货: https://xieyangyi.blog.csdn.net/article/details/123095982

0 召回

缩小规模,减小候选集,不需要十分准确,但不可遗漏

必须轻量快速低延迟

1 粗排

兼顾精准性和低延迟

一般模型也不能过于复杂

2 精排

要求准

多特征,复杂模型

3 重排

业务相关

规则比较多

参考

https://xieyangyi.blog.csdn.net/article/details/123095982

https://www.cnblogs.com/gczr/p/12564617.html

极大似然估计

1.定义

就是利用已知的样本结果信息,反推最具有可能导致这些样本结果出现的模型参数值。换句话说,即:“模型已定,结果已知,反推参数”。

2.极大似然构造损失函数

大多数常见的损失函数就是基于极大似然推导的。例子参考 https://www.cnblogs.com/hello-ai/p/11000899.html

判别模型下的极大似然估计

最大似然估计很容易扩展到估计条件概率$P\left (y|x;\theta \right)$,从而给定$x$预测$y$。实际上这是最常见的情况,因为这构成了大多数监督学习的基础。如果$X$表示所有的输入,$Y$表示我们观测到的目标,那么条件最大似然估计是:

如果假设样本是独立同分布的,那么这可以分解成

生成模型下的极大似然估计

考虑一组含有m个样本的数据集$X = \left \{ x^{(1)}, …, x^{(m)} \right \}$,由$p_{data}(x)$生成,独立同分布

对独立同分布的样本,生成样本集$X$的概率如下:

对$\theta$的最大似然估计被定义为:

多个概率的乘积公式会因很多原因不便于计算。例如,计算中很可能会因为多个过小的数值相乘而出现数值下溢。为了得到一个便于计算的等价优化问题,两边取对数:

可以发现,使用极大似然估计时,每个样本$x^{(i)}$都希望拉高它所对应的模型概率值$p_{model}(x^{(i)};\theta)$,如上图所示,但是由于所有样本的密度函数$p_{model}(x^{(i)};\theta)$的总和必须是1,所以不可能将所有样本点都拉高到最大的概率,一个样本点的概率密度函数值被拉高将不可避免的使其他点的函数值被拉低,最终的达到一个平衡态。我们也可以将上式除以$m$,便可以看到极大似然法最大化的目标是在经验分布$\widehat{p}_{data}$下样本概率对数的期望值,即

参考

https://zhuanlan.zhihu.com/p/26614750

https://www.cnblogs.com/hello-ai/p/11000899.html

https://blog.csdn.net/hustqb/article/details/77168436

https://zhuanlan.zhihu.com/p/273246971

XLNet Generalized Autoregressive Pretraining for Language Understanding

1 主要改动

relying on corrupting the input with masks, BERT neglects dependency between the masked positions and suffers from a pretrain-finetune discrepancy.

propose XLNet, a generalized autoregressive pretraining method that (1) enables learning bidirectional contexts by maximizing the expected likelihood over all permutations of the factorization order and (2) overcomes the limitations of BERT thanks to its autoregressive formulation. (3) , XLNet integrates ideas from Transformer-XL

example:[New, York, is, a, city] . select the two tokens [New, York] as the prediction targets and maximize log p (New York | is a city)

In this case, BERT and XLNet respectively reduce to the following objectives:

2 现有PTM的问题

1 AR language modeling

对于给定的句子$\textbf{x}=[x_1,…,x_T]$,AR language modeling performs pretraining by maximizing the likelihood under the forward autoregressive factorization

其中$h_{\theta}(\textbf{x}_{1:t-1})$是考虑上下文的文本表示,$e(x_t)$为$x_t$的词向量

2 AE anguage modeling

对于BERT这种AE模型,首先利用$\textbf{x}$构造遮盖的tokens$\overline{\textbf{x}}$和未遮盖的tokens$\hat{\textbf{x}}$,然后the training objective is to reconstruct $\overline{\textbf{x}}$ from $\hat{\textbf{x}}$:

其中$m_t=1$表示$x_t$被遮盖了,AR语言模型$t$时刻只能看到之前的时刻,因此记号是$h_{\theta}(\textbf{x}_{1:t-1})$;而AE模型可以同时看到整个句子的所有Token,因此记号是$H_{\theta}(\hat{\textbf{x}})_t$

这两个模型的优缺点分别为:

3 对比

1.AE因为遮盖词只是假设相互独立不是严格相互独立,因此为$\approx$。

2.AE在预训练时会出现特殊的token为[MASK],但是它在下游的fine-tuning中不会出现,这就出现了预训练 — finetune的不一致问题。而AR语言模型不会有这个问题。

3.AR语言模型只能参考一个方向的上下文,而AE可以参考双向的上下文。

3 改动

3.1 排列语言模型

we propose the permutation language modeling objective that not only retains the benefits of AR models but also allows models to capture bidirectional context

给定长度为$T$的序列,总共有$T!$种排列方法。注意输入顺序是不会变的,因为模型在微调期间只会遇到具有自然顺序的文本序列。作者就是通Attention Mask,把其它没有被选到的单词Mask掉,不让它们在预测单词$x_i$的时候发生作用,看着就类似于把这些被选中的单词放到了上文。

举个例子,如下图,输入序列为$\{x_1,x_2,x_3,x_4\}$,总共有4!,24种情况,作者取了其中4个。假如预测$x_3$,第一个排列为$x_3 \rightarrow x_2 \rightarrow x_4 \rightarrow x_1 $,没有排在$x_3$前面对象,所以只连接了mem,对于真实情况就是输入还是$x_1 \rightarrow x_2 \rightarrow x_3 \rightarrow x_4 $,然后mask掉全部输入,即只利用mem预测$ x_3 $;第二个排列为$x_2 \rightarrow x_4 \rightarrow x_3 \rightarrow x_1 $,$x_2,x_4$排在$x_3$前面,所以连接了$x_2,x_4$对应的向量表示,对于真实情况就是输入还是$x_1 \rightarrow x_2 \rightarrow x_3 \rightarrow x_4 $,然后mask掉$x_1,x_3$,剩余$x_2,x_4$,即利用mem,$x_2,x_4$预测$ x_3 $。

排列语言模型的目标是调整模型参数使得下面的似然概率最大

其中$\textbf{z}$为随机变量,表示某个位置排列,$\mathcal{Z}_T$表示全部的排列,$z_t$,$\textbf{z}_{<t}$分别表示某个位置排列的第$t$个元素和与其挨着的前面$t-1$个元素。

3.2 Two-Stream Self-Attention

Target-Aware Representations

采用AE原来的表达形式来描述下一个token的分布$p_{\theta}(X_{z_t}|\textbf{x}_{\textbf{z}_{<t}})$如下

这样表达有一个问题就是没有考虑预测目标词的位置,即没有考虑$ z_t$,这会导致ambiguity in target prediction。证明如下:假设有两个不同的排列$\textbf{z}^{(1)}$和$\textbf{z}^{(2)}$,并且满足如下关系:

可以推导出

但是$p_{\theta}(X_{z_t^{(1)}}=x|\textbf{x}_{\textbf{z}_{<t}^{(1)}}),p_{\theta}(X_{z_t^{(2)}}=x|\textbf{x}_{\textbf{z}_{<t}^{(2)}})$应该不一样,因为目标词的位置不同

为了解决这个问题,提出了Target-Aware Representations,其实就是考虑了目标词的位置

Two-Stream Self-Attention

contradiction

To resolve such a contradiction,we propose to use two sets of hidden representations instead of one:

假设有self-attention的层号为$m=1,2,…,M$,$g_i^{(0)}=w$,$h_i^{(0)}=e(x_i)$,Two-Stream Self-Attention可以表示为

举个例子,如下图

预训练最终使用$g_{z_t}^{(M)}$计算公式(4),during finetuning, we can simply drop the query stream and use the content stream

during pretrain, we can use the last-layer query representation $g_{z_t}^{(M)}$ to compute Eq. (4).

during finetuning, we can simply drop the query stream and use the content stream as a normal Transformer(-XL).

3.3 Partial Prediction

因为排序很多,计算量很大,所以需要采样。将$z$分隔成$z_{t_\le c}$和 $z_{t_>c}$,$c$为分隔点,我们选择预测后面的词语,因为后面的词语包含的信息更加丰富。引入超参数$K$调整$c$,使得需要预测$\frac{1}{K}$的词($\frac{|z|-c}{|z|}\approx\frac{1}{K}$),优化目标为:

3.4 融合Transformer-XL的思想

We integrate two important techniques in Transformer-XL, namely the relative positional encoding scheme and the segment recurrence mechanism

Relative Segment Encodings

recurrence mechanism

3.5 Modeling Multiple Segments

the input to our model is the same as BERT: [CLS, A, SEP, B, SEP], where “SEP” and “CLS” are two special symbols and “A” and “B” are the two segments. Although we follow the two-segment data format, XLNet-Large does not use the objective of next sentence prediction

BERT that adds an absolute segment embedding,这里采用Relative Segment Encodings

There are two benefits of using relative segment encodings. First, the inductive bias of relative encodings improves generalization [9]. Second, it opens the possibility of finetuning on tasks that have more than two input segments, which is not possible using absolute segment encodings.

这里有个疑问,对于多于两个seg的情况,比如3个seg,输入格式是否变成[CLS, A, SEP, B, SEP,C,SEP]

参考

https://zhuanlan.zhihu.com/p/107350079

https://blog.csdn.net/weixin_37947156/article/details/93035607

https://www.cnblogs.com/nsw0419/p/12892241.html

https://www.cnblogs.com/mantch/archive/2019/09/30/11611554.html

https://cloud.tencent.com/developer/article/1492776

https://zhuanlan.zhihu.com/p/96023284

https://arxiv.org/pdf/1906.08237.pdf

 NLP PTM
  

ConSERT A Contrastive Framework for Self-Supervised Sentence Representation Transfer

https://arxiv.org/abs/2105.11741

https://tech.meituan.com/2021/06/03/acl-2021-consert-bert.html

1.背景

首先,BERT其自身导出的句向量(不经过Fine-tune,对所有词向量求平均)会出现“坍缩(Collapse)”现象,即所有的句子都倾向于编码到一个较小的空间区域内,如图。为了解决这个问题,将对比学习结合到finetune过程,借助无标签数据来提升模型的能力。

2.原理

给定一个类似BERT的预训练语言模型$\textbf{M}$,以及从目标领域数据分布中收集的无标签文本语料库$\mathcal{D}$,我们希望通过构建自监督任务在$\mathcal{D}$上对$\textbf{M}$进行Fine-tune,使得Fine-tune后的模型能够在目标任务(文本语义匹配)上表现最好。

2.1 整体框架

模型整体结构如上图所示,主要由三个部分组成

A data augmentation module that generates different views for input samples at the token embedding layer.

A shared BERT encoder that computes sentence representations for each input text. During training, we use the average pooling of the token embeddings at the last layer to obtain sentence representations.

A contrastive loss layer on top of the BERT encoder. It maximizes the agreement between one representation and its corresponding version that is augmented from the same sentence while keeping it distant from other sentence representations in the same batch.

对于任意一个句子输入$x$,得到其对应的两个增强向量$e_i=T_1(x),e_j=T_2(x),e_i,e_j\in \mathbb{R}^{L\times d}$,然后经过shared BERT encoder编码为$r_i,r_j$,其中$T_1,T_2$为不同的数据增强方式,$L$为句子$x$的长度,$d$为隐藏单元的数量。对于每个train step,从$\mathcal{D}$随机选取$N$个样本作为mini-batch,然后得到$2N$个增强样本,使用NT-Xent构造loss为

其中$sim(.)$为余弦相似度计算,$\tau$表示temperature,是一个超参数,实验中取0.1,$\mathbb{1}$是指示器,当$k=i$时,值为0。上式分子为正样本,分母为全部(但是基本为负样本,所以可以看成负样本),所以loss变小就是让分子变大,分母变小,也就是让正样本相似度变大,负样本相似度变小

2.2 数据增强策略

显式生成增强样本的方法包括:回译、同义词替换、意译等,然而这些方法一方面不一定能保证语义一致。所以考虑了在Embedding层隐式生成增强样本的方法。

  • 对抗攻击(Adversarial Attack):这一方法通过梯度反传生成对抗扰动,将该扰动加到原本的Embedding矩阵上,就能得到增强后的样本。由于生成对抗扰动需要梯度反传,因此这一数据增强方法仅适用于有监督训练的场景。

  • 打乱词序(Token Shuffling):这一方法扰乱输入样本的词序。由于Transformer结构没有“位置”的概念,模型对Token位置的感知全靠Embedding中的Position Ids得到。因此在实现上,我们只需要将Position Ids进行Shuffle即可。

  • 裁剪(Cutoff)

    :又可以进一步分为两种:

    • Token Cutoff:随机选取Token,将对应Token的Embedding整行置为零。
    • Feature Cutoff:随机选取Embedding的Feature,将选取的Feature维度整列置为零。
  • Dropout:Embedding中的每一个元素都以一定概率置为零,与Cutoff不同的是,该方法并没有按行或者按列的约束。

2.3 融合监督信号

除了无监督训练以外,作者给出3种进一步融合监督信号的策略,以NLI任务为例:

Joint training (joint):

Supervised training then unsupervised transfer (sup-unsup):

first train the model with $\mathcal{L}_{ce}$on NLI dataset, then use $\mathcal{L}_{con}$to finetune it on the target dataset.

Joint training then unsupervised transfer (joint-unsup):

first train the model with the $\mathcal{L}_{joint}$on NLI dataset, then use $\mathcal{L}_{con }$to fine-tune it on the target dataset.

3.定性分析

后又发现BERT句向量表示的坍缩和句子中的高频词有关。具体来说,当通过平均词向量的方式计算句向量时,那些高频词的词向量将会主导句向量,使之难以体现其原本的语义。当计算句向量时去除若干高频词时,坍缩现象可以在一定程度上得到缓解(如图2蓝色曲线所示)。

4 实验结果

4.1 Unsupervised Results

4.2 Supervised Results

gpt

GPT三部曲宣告NLP的“预训练+微调”时代的崛起和走向辉煌。

原文分别为:

《Improving Language Understanding by Generative Pre-Training》

《Language Models are Unsupervised Multitask Learners》

《Language Models are Few-Shot Learners》

1.GPT1

img

模型的整体结构如上图所示。使用过程过程分为两步:第一步预训练,利用大量语料学习得到high-capacity的语言模型;第二步是fine_tuning,利用标签数据使其拟合到特定任务。

1.1 Unsupervised pre-training

作者将transformer decoder中Encoder-Decoder Attention层去掉后作为基本单元,然后多层堆叠作为语言模型的主体,然后将输出经过一个softmax层,来得到目标词的输出分布:

其中$U=\{u_{-k},…,u_{-1}\}$ 是预测词$u $前$k$个token的独热编码序列,$n$是模型的层数,$W_e$是token embedding matrix,$W_p$是position embedding matrix。

给定一个无监督的语料库$\mathcal{U}$,use a standard language modeling objective to maximize the following likelihood

其中$k$ 是上下文窗口大小。

1.2 Supervised fine-tuning

对于数据集$\mathcal{C}$,有数据$(x^1,x^2,…,x^m,y)$

其中$W_y$为全连接层的参数

作者发现,使用语言模型来辅助监督学习进行微调,有两个好处:

  1. 提高监督模型的泛化能力;
  2. 加速收敛。

所以,最终下游使用的监督模型损失函数为:

1.3 Task-specific input transformations

所有的输入文本都会加上开始和结合token$(s),(e)$

分类

分类过程可如上1.2,输入表示为$[(s);Context;(e)]$

文本蕴含

将输入拼接成$[(s); premise; ($) ; hypothesis ; (e)]$

相似度

由于文本相似度与两个比较文本的前后顺序没有关系,因此将两种文本顺序都考虑进来,如上图所示

问答与常识推理

假设文档为$z$,问题为$q$,一系列答案为$\{a_k\}$,将其输入表示为$[(s); z; q; ($); a_k;(e)]$,然后多个回答组合的形式,如上图。

2.GPT2

总结就是:多任务预训练+超大数据集+超大规模模型。通过一个超大数据集涵盖NLP的大多任务,然后使用一个超大规模模型进行多任务预训练,使其无需任何下游任务的finetune就可以做到多个NLP任务的SOTA。举个例子,拿高考为例,人的智力和脑容量可以理解为参数大小,由于个体差异,可以将不同的学生理解为不同参数量的模型,卷子可以理解为数据集,不同的学科可以理解为不同任务。GPT2有点类似学霸,就是有超高的智力和脑容量,然后刷大量不同学科的题目,因此对高考这个多任务的下游任务就可以取得好成绩。

GPT2相对于GPT1有哪些不同呢?

  1. GPT2去掉了fine-tuning:不再针对不同任务分别进行微调建模,模型会自动识别出来需要做什么任务。这就好比一个人博览群书,你问他什么类型的问题,他都可以顺手拈来,GPT2就是这样一个博览群书的模型。

  2. 超大数据集:WebText,该数据集做了一些简单的数据清理,并且实验结果表明目前模型仍然处于一个欠拟合的情况。

  3. 增加网络参数:GPT2将Transformer堆叠的层数增加到48层,隐层的维度为1600,参数量更是达到了15亿。15亿什么概念呢,Bert的参数量也才只有3亿哦~当然,这样的参数量也不是说谁都能达到的,这也得取决于money的多少啊~

  4. 调整transformer:将layer normalization放到每个sub-block之前,并在最后一个transformer后再增加一个layer normalization,如下图。

  5. 输入表示:GPT2采用了BPE这种subword的结构作为输入

  6. 其他:GPT2将词汇表数量增加到50257个;最大的上下文大小 (context size) 从GPT的512提升到了1024 tokens;batchsize增加到512。

GPT2的输入是完全的文本,什么提示都不加吗?

当然不是,它也会加入提示词,比如:$TL;DR:$,GPT2模型就会知道是做摘要工作了,输入的格式就是 $文本+TL;DR:$,然后就等待输出就行了~

3.GPT3

GPT3,这是一种具有1750亿个参数的超大规模模型,比GPT2大100倍,感觉真是进入算力时代了。距离个人用户太远了,就不深挖了。

参考

https://zhuanlan.zhihu.com/p/146719974

https://zhuanlan.zhihu.com/p/125139937

https://www.cnblogs.com/yifanrensheng/p/13167796.html#_label1_0

https://www.jianshu.com/p/96c5d5d5c468

https://blog.csdn.net/qq_35128926/article/details/111399679

https://zhuanlan.zhihu.com/p/96791725

https://terrifyzhao.github.io/2019/02/18/GPT2.0%E8%AE%BA%E6%96%87%E8%A7%A3%E8%AF%BB.html

https://zhuanlan.zhihu.com/p/56865533

 NLP PTM
  
 PTM

TextCNN TextRNN TextRCNN

1.TextCNN (Convolutional Neural Networks for Sentence Classification)

原文 https://arxiv.org/abs/1408.5882

调参论文 https://arxiv.org/abs/1510.03820

模型的整体结构如上所示。Feature Map是输入图像经过神经网络卷积产生的结果,filter是卷积核。

输入表示:

假设输入文本的长度为$n$,对于长度不够的需要做padding,任意一个单词可以用一个$k$维的向量表示,即$X_i \in \mathbb{R}^{k}$,那么一个句子可以表示为

其中$\oplus$是向量拼接操作,$X_{1:n} \in \mathbb{R}^{nk\times 1}$。

卷积

对于某个滑窗$X_{i,i+h-1}=\{X_i,X_{i+1},…,X_{i+h-1}\}$经过某个卷积核$W_j$可得

其中$f=tanh(\cdot)$,$W_j\in \mathbb{R}^{ 1\times hk},c_{i,j} $是标量

假设卷积通道数为$m$,在NLP中,卷积滑动步伐$k=1$,那么经过卷积层后得到的完整的特征矩阵为

其中$C \in \mathbb{R}^{(n-h+1)\times m}$

maxpooling

全连接

然后将$\hat{C}$接个全连接,就可以做分类或者回归任务了。

2.TextRNN (Recurrent Neural Network for Text Classification with Multi-Task Learning)

原文 https://www.ijcai.org/Proceedings/16/Papers/408.pdf

该文的场景为Recurrent Neural Network for Text Classification with Multi-Task Learning,就是论文的题目。文中给出了三种结构,如上图所示,图中的RNN单元为LSTM。

Model-I: Uniform-Layer Architecture

对于任务$m$,输入$\hat X_t$包含两个部分

其中$X_{t}^{(m)}$表示特定任务的词向量,$X_{t}^{(s)}$表示共享的词向量,$\oplus$表示向量拼接的操作。

Model-II: Coupled-Layer Architecture

Model-III: Shared-Layer Architecture

3.TextRCNN(Recurrent Convolutional Neural Networks for Text Classification)

原文 https://www.deeplearningitalia.com/wp-content/uploads/2018/03/Recurrent-Convolutional-Neural-Networks-for-Text-Classification.pdf

整体结构如上图所示,解释一下为啥叫RCNN,一般的 CNN 网络,都是卷积层 + 池化层,这里是将卷积层换成了双向 RNN,所以结果是,双向 RNN + 池化层。作者原话为:From the perspective of convolutional neural networks, the recurrent structure we previously mentioned is the convolutional layer.

词语表示

对于一个词语$w_i$,可以用一个三元组表示为

其中$e(w_i)$表示$w_i$的词向量,$c_l(w_i)$表示$w_i$句子左边的内容的向量表示,$c_r(w_i)$表示$w_i$句子右边的内容的向量表示,用式子表示如下

然后将$x_i$经过全连接得到$y_i^{(2)}$,$y_i^{(2)}$is a latent semantic vector

语句表示

获取众多的词语表示后,通过max-pooling得到句子表示

然后接全连接和softmax

参考

https://www.cnblogs.com/wangduo/p/6773601.html

美团排序

https://tech.meituan.com/2022/08/11/coarse-ranking-exploration-practice.html

https://tech.meituan.com/2021/07/08/multi-business-modeling.html

https://tech.meituan.com/2021/11/19/exploration-and-practice-of-multi-business-commodities-ranking-in-meituan-search.html

https://tech.meituan.com/2020/07/09/bert-in-meituan-search.html

BERT在美团搜索核心排序的探索和实践

模型层面

整体结构如下

1 BERT预训练

2 多任务学习

​ 场景层:根据业务场景进行划分,每个业务场景单独设计网络结构

3 联合训练

两个任务分别为:

​ 1 相关性任务:相关性+NER(多任务增强相关性)

​ 2 排序任务

怎么联合没看出来

之前是两阶段finetune: 1. 先相关性任务 2 然后排序任务

ELMo(Deep contextualized word representations)

引入了新的深度考虑上下文的词语表示,模型考虑了两个方面:(1)词语的复杂特性,包括语法和语义,(2)在语境中的不同含义。模型使用了深度双向语言模型,并且在大预料库上做了预训练。这个模型可以很方便地和现有的模型结合,并且在NLP的6个任务上取得了SOTA。作者还揭露了预训练网络的深层构件是关键,这使得下游模型能够混合不同类型的半监督信号。

3 ELMo: Embeddings from Language Models

模型的整体机构如上所示,由左右两个单向的多层LSTM网络构成,左边为正向,右边为反向。

3.1 Bidirectional language models(预训练)

假定一个句子有$N$个token,分别为$(t_1,t_2,…,t_N)$,正向的语言模型的句子概率为:

反向的语言模型的句子概率为:

得到正向和反向的语言后,将其结合可以得到双向的语言模型,这里取对数表示为:

其中$\Theta_x$为token表示的参数,$\Theta_s$为softmax层的参数,$\overrightarrow{\Theta}_{LSTM}$表示前向语言模型的参数,$\overleftarrow{\Theta}_{LSTM}$表示反向语言模型的参数。

3.2 ELMo(如何表示词向量)

得到$L$层的预训练双向深度语言模型后,对于token $t_k$,一共包含了$2L+1$个相关的表示,集合如下

注意$h_{k,0}^{LM}=x_{k}^{LM},h_{k,j}^{LM}=[\overrightarrow{h^{LM}_{k,j}};\overleftarrow{h^{LM}_{k,j}}]$,其中$x_{k}^{LM}$为token表示,$\overrightarrow{h^{LM}_{k,j}},\overleftarrow{h^{LM}_{k,j}}$分别为正反向语言模型的表示

对于下游任务,需要将$2L+1$个表示压缩到一个向量$ELmo_k^{task}$,最简单的做法是只取顶层的表示,即

更加通用的做法为线形组合输出,如下图,公式表达为

其中$\gamma^{task}$用于缩放向量,$s_{j}^{task}$表示权重,通过下游任务学习。

3.3 Using biLMs for supervised NLP tasks(fine tune)

对于下游任务模型,可以得到不考虑上下文的静态词向量$x_k$和考虑上下文的向量表示$h_k$

对于一部分任务,将$x_k$和$ ELMo_k^{task}$ 拼接作为下游任务的特征:$[x_k;ELMo_k^{task}]$

对于一部分任务,将 $h_k$和 $ ELMo_k^{task}$ 拼接可提升效果:$[h_k;ELMo_k^{task}]$

参考

https://blog.csdn.net/linchuhai/article/details/97170541

https://zhuanlan.zhihu.com/p/63115885

https://zhuanlan.zhihu.com/p/88993965

https://arxiv.org/abs/1802.05365

 NLP PTM
  

:D 一言句子获取中...