深度学习利用篇-自然语言解决[10]:N-Gram、SimCSE介绍,更多技术:数据加强、智能标注、多分类算法、文本信息抽取、多模态信息抽取、模型压缩算法等

1.N-Gram

N-Gram是一种基于统计语言模型的算法。它的根本思维是将文本外面的内容依照字节进行大小为N的滑动窗口操作,造成了长度是N的字节片段序列。每一个字节片段称为gram,对所有gram的呈现频度进行统计,并且依照当时设定好的阈值进行过滤,造成要害gram列表,也就是这个文本的向量特色空间,列表中的每一种gram就是一个特征向量维度。

该模型基于这样一种假如,第N个词的呈现只与后面N-1个词相干,而与其它任何词都不相干,整句的概率就是各个词呈现概率的乘积。这些概率能够通过间接从语料中统计N个词同时呈现的次数失去。罕用的是二元的Bi-Gram和三元的Tri-Gram。

N-gram的用处很广,比方搜索引擎或者输入法提醒,词性标注,垃圾短信分类,分词,机器翻译,语音辨认能等等等。

  • 概率计算

假如咱们有一个由n nn个词组成的句子$S=(w_{1},w_{2},...,w_{n})$,如何掂量它的概率呢?让咱们假如,每一个单词$w_{i}$都要依赖于从第一个单词$w_{1}$到到它之前一个单词$w_{i-1}$的影响:

$$p(S)=p(w_{1}w_{2}...w_{n})=p(w_{1})p(w_{2}|w_{1})...p(w_{n}|w_{n-1}...w_{2}w_{1})$$

这个掂量办法有两个缺点:

  1. 参数空间大: 概率$p(w_{n}|w_{n-1}...w_{2}w_{1})$的参数有O(n)个。
  2. 数据稠密,词同时呈现的状况可能没有,组合阶数高时尤其显著。

为了解决第一个问题,引入马尔科夫假如(Markov Assumption):一个词的呈现仅与它之前的若干个词无关。

$$p(w_{1}...w_{n})=\prod{p(w_{i}|w_{i-1}...w_{1})} \approx \prod{p(w_{i}|w_{i-1}...w_{i-N+1})} $$

如果一个词的呈现仅依赖于它后面呈现的一个词,那么咱们就称之为 Bi-gram:

$$p(S)=p(w_{1}w_{2}...w_{n})=p(w_{1})p(w_{2}|w_{1})...p(w_{n}|w_{n-1})$$

如果一个词的呈现仅依赖于它后面呈现的两个词,那么咱们就称之为 Tri-gram:

$$p(S)=p(w_{1}w_{2}...w_{n})=p(w_{1})p(w_{2}|w_{1})...p(w_{n}|w_{n-1}w_{n-2})$$
N-gram的 N NN 能够取很高,然而事实中个别 bi-gram 和 tri-gram 就够用了.

用极大似然预计来计算每一项的条件概率,即频数:

$$p(w_{n}|w_{n-1})=\frac{C(w_{n-1}w_{n})}{C(w_{n-1})}$$

$$p(w_{n}|w_{n-1}w_{n-2})=\frac{C(w_{n-2}w_{n-1}w_{n})}{C(w_{n-2}w_{n-1})}$$

$$p(w_{n}|w_{n-1}...w_{2}w_{1})=\frac{C(w_{1}w_{2}...w_{n})}{C(w_{1}w_{2}...w_{n-1})}$$

具体地,以Bi-gram为例,咱们有这样一个由三句话组成的语料库:

I am SamSam I amI do not like apple

容易统计,“I”呈现了3次,“I am”呈现了2次,因而能计算概率:

$$p(am|I)=\frac{2}{3}$$

同理,还能计算出如下概率:

$$p(Sam|am)=0.5$$

$$p(do|I)=0.33$$
等等

2.SimCSE

句向量表征技术始终都是NLP畛域的热门话题,在BERT前时代,个别都采纳word2vec训练出的word-embedding联合pooling策略进行句向量表征,或者在有训练数据状况下,采纳TextCNN/BiLSTM联合Siamese network策略进行句向量表征。在BERT时代,人们借助预训练语言模型的固有劣势,个别采纳BERT模型的[CLS]向量(即句子的起始字符向量)作为句向量表征;SimCSE采纳比照学习的办法,进行句向量表征,在BERT模型上获取更好的句向量表征,具体介绍如下:

2.1.介绍

SimCSE(simple contrastive
sentence embedding framework),即简略的比照句向量表征框架。SimCSE共蕴含了无监督和有监督的两种办法。无监督办法,采纳dropout技术,对原始文本进行数据加强,从而结构出正样本,用于后续比照学习训练;监督学习办法,借助于文本蕴含(自然语言推理)数据集,将蕴涵-pair作为正例,矛盾-pair作为难负例,用于后续比照学习训练。并且通过比照学习解决了预训练Embedding的各向异性问题,使其空间散布更平均,当有监督数据可用时,能够使正样本间接更严密。模型构造如下图所示:

其中,图a为无监督SimCSE,图b为有监督SimCSE,具体模型介绍见第3节和第4节。
上面将从比照学习背景、无监督SimCSE、有监督SimCSE、各向异性问题、试验细节五个方面进行具体介绍。

2.2.比照学习背景

2.2.1定义

比照学习就是以拉近类似数据,推开不类似数据为指标,无效地学习数据表征。给定一个pair对样本汇合$D=\{(x_{i}, x_{i}^{+})\}^{m}_{i=1}$,其中$x_{i}$和$x_{i}^{+}$为类似样本,优化指标个别采纳通过批内负样本(in-batch negatives)穿插熵损失函数,如下,
$l_{i}=-\log\frac{e^{sim(h_{i},h_{i}^{+})/\tau}}{\sum_{j=1}^{N} e^{sim(h_{i},h_{j}^{+})/\tau}}$
其中,$h_{i}$和$h_{i}^{+}$为$x_{i}$和$x_{i}^{+}$的句向量示意,$N$为训练过程中batch的大小,$sim(h_{i},h_{i}^{+})$为向量$h_{i}$和$h_{i}^{+}$余弦类似度,$\tau$为温度超参。

在SimCSE论文中,采纳BERT模型对句子进行句向量表征,即$h=f_{\theta}(x)$,其中,$f_{\theta}$为BERT模型参数,并通过比照学习损失优化网络全副参数。

2.2.2结构正样本

比照学习中的一个关键问题是如何构建$(x_{i}, x_{i}^{+})$数据对。在计算机视觉中,通过对一张图片进行简略地裁剪,翻转,扭曲和旋转就能够获取品质很高的$x_{i}^{+}$;而在自然语言解决中,结构$x_{i}^{+}$的办法与图像相似,个别对原始句子进行转译、重排,或对局部词语删除、插入、替换等;然而因为离散性,导致NLP中的数据裁减往往会引入大量的负面噪声,使得$x_{i}^{+}$的品质难以保障。

在SimCSE论文中,提出应用规范dropout操作结构高质量$x_{i}^{+}$,并达到比上述数据裁减更好的成果。

2.2.3对齐性和平均性

在比照学习中,通常应用对齐性(alignment)和平均性(uniformity)来掂量表征品质的好坏。

alignment是计算$(x_{i}, x_{i}^{+})$数据对向量表征之间的间隔,示意数据之前的严密水平,
$l_{align} \triangleq \mathop{E}\limits_{(x_{i}, x_{i}^{+})~p_{pos}} ||f(x)-f(x^+)||^2$
uniformity是计算$x_{i}$向量表征在整体特色散布上的平均水平,
$l_{uniform} \triangleq log \mathop{E}\limits_{x,y \mathop{\sim}\limits^{i.i.d.} p_{data}} e^{-2||f(x)-f(y)||^2}$
其中,$p_{data}$示意数据分布。

这两个指标与比照学习的指标是统一的:正例之间应该放弃严密,而任意向量的语义特色应该尽可能地扩散在超球体上。

2.3.无监督SimCSE

无监督SimCSE的思维非常简单,给定一个句子汇合$\{x_i\}_{i=1}^{m}$,将$x_{i}$别离输出到编码器中两次,别离失去向量$z_{i}$的正例和$z_{i}^{’}$;因为随机dropout masks机制存在于模型的fully-connected layers和attention probabilities上,因而雷同的输出,通过模型后会失去不同的后果;将$z_{i}^{’}$向量作为$z_{i}$的正例,其余向量作为负例,SimCSE的训练指标变成:
$l_{i}=-\log\frac{e^{sim(h_{i}^{z_i},h_{i}^{^{z_i^{’}}})/\tau}}{\sum_{j=1}^{N} e^{sim(h_{i}^{z_i},h_{j}^{z_j^{’}})/\tau}}$
留神:$z$为Transformers中的规范dropout mask,在无监督SimCSE没有额定减少任何dropout。

2.3.1Dropout数据加强与其余的比拟

通过dropout masks机制进行数据加强结构正例的办法,能够视为一种最小模式的数据裁减,正例与原始样本之间采纳完全相同的句子,只有在向量表征过程中的dropout mask有所不同。

在STS-B的开发集上,比拟该办法与其余数据加强办法的差别。在英文维基上随机抽取$10^6$个句子进行训练,学习速率=3e-5,批次大小为64。并训练过程中没有应用STS训练集。

  • 裁剪,删除和替换等数据加强办法,成果均不如dropout masks机制,即便删除一个词也会侵害性能,具体如下表所示,

  • 应用下一句作为指标训练,或者采纳两个独立的编码器进行编码的成果,不如采纳一个编码器的dropout masks机制,具体如下表所示,

3.2为什么该办法能够work?

  • 为了进一步了解dropout噪声在无监督SimCSE中的作用,论文尝试了不同的dropout率,如下表所示,

能够发现仅在默认dropout概率p=0.1时成果最优,并且当dropout概率p=0,或者雷同输出有同样的dropout mask时,效果显著降落。

  • 在训练过程中,每隔10步查看一次模型,并可视化alignment和uniformity在训练过程中的变动,如下图所示,

能够发现,在训练过程中,所有模型的平均性都在进步,然而对于no-dropout和fixed-0.1模型来说对齐性急剧下降,而无监督SimCSE和delete-one-word模型进本持平。尽管delete-one-word模型的对齐性好于无监督SimCSE,然而平均性相差较多,因而在整体成果上,无监督SimCSE更胜一筹。

2.4.有监督SimCSE

比照学习的要害是如何构建$(x_{i}, x_{i}^{+})$数据对,在无监督SimCSE中,借助dropout mask机制,结构高质量$x_{i}^{+}$数据,曾经取得了较好的句向量表征;在有监督SimCSE中,如何通过监督数据,进一步提高句向量表征,具体如下:

2.4.1监督数据的抉择

共存在四种数据集,适宜结构比照学习$(x_{i}, x_{i}^{+})$数据对,别离是:

  • QQP:Quora问题对;

类似的问题对为正样本,如下:

正样本How can I improve my communication and verbal skills? What should we do to improve communication skills?

不类似的问题对为负样本,如下:

负样本Why are you so sexy? How sexy are you?
  • Flickr30k:每个图像都有5集体进行形容,能够认为同一图像的任意两个形容为一对$(x_{i}, x_{i}^{+})$数据对;
    以下图为例:

对图片中的人物的5段形容,如下:

人物形容Gray haired man in black suit and yellow tie working in a financial environment.A graying man in a suit is perplexed at a business meeting.A businessman in a yellow tie gives a frustrated look.A man in a yellow tie is rubbing the back of his neck.A man with a yellow tie looks concerned.
  • ParaNMT:大规模的回译数据集;

针对原数据进行机器翻译,取得回译数据,如下:

原数据:so, what’s half an hour?回译数据:half an hour won’t kill you.
  • NLI datasets:自然语言推理数据集,包含:SNLI和MNLI。

自然语言推理数据集,蕴含蕴含、矛盾和中立;蕴含示意第二句话能够推理出第一句话;矛盾示意第二句话不能推理出第一句话;中立示意两句话无关;举例如下:

蕴含样本well you see that on television also You can see that on television, as well.
矛盾样本but that takes too much planning It doesn't take much planning.
中立样本Conceptually cream skimming has two basic dimensions - product and geography. Product and geography are what make cream skimming work.

在四种数据集上,间接应用$(x_{i}, x_{i}^{+})$数据对进行训练的后果如下表所示,

能够发现,NLI数据集上,采纳语义蕴含对作为$(x_{i}, x_{i}^{+})$数据对的成果最好;并且统计发现,语义蕴含对(SNLI + MNLI)的词汇重叠仅占比39%,而QQP和ParaNMT数据集占比60%和55%。最终,抉择NLI数据集进行监督学习。

2.4.2难负例的应用

NLI数据集中,一个前提假如文本,具备对应的蕴含文本和矛盾文本,将矛盾文本作为难负例;即,$(x_{i}, x_{i}^{+})$数据对变成$(x_{i}, x_{i}^{+}, x_{i}^{-})$数据组,其中,$x_{i}^{+}$为蕴含文本,$x_{i}^{-}$为矛盾文本;监督学习SimCSE的训练指标变成:
$l_{i}=-\log\frac{e^{sim(h_{i},h_{i}^{+})/\tau}}{\sum_{j=1}^{N} (e^{sim(h_{i},h_{j}^{+})/\tau} +e^{sim(h_{i},h_{j}^{-})/\tau})}$
通过上表能够发现,减少矛盾文本作为难负例后,成果有所提高。
直观上,辨别难负例(矛盾文本)和Batch内其余负例可能是无益的,将监督学习SimCSE的训练指标变成:
$l_{i}=-\log\frac{e^{sim(h_{i},h_{i}^{+})/\tau}}{\sum_{j=1}^{N} (e^{sim(h_{i},h_{j}^{+})/\tau} + \alpha^{1_{i}^{j}} e^{sim(h_{i},h_{j}^{-})/\tau})}$
用不同的值训练SimCSE模型,并在STS-B开发集上对训练的模型进行评估,发现当为1时成果最优,并且中性数据不会带来更多的收益,如下表所示,

2.5.各向异性问题

最近的钻研发现了语言表征中的各向异性问题,即训练后的embeddings仅占据在向量空间中狭隘的局部,重大限度了向量的表现力。
缓解这个问题的一个简略办法是后处理,能够打消次要的主成分或将embeddings映射到各向同性散布。另一种常见的解决方案是在训练过程中增加正则项。
而比照学习的优化指标能够改善缓解各向异性问题,当负例数趋近于无穷大时,比照学习指标的渐近示意为:
$- \frac{1}{\tau}\mathop{E}\limits_{(x_{i}, x_{i}^{+}) \sim p_{pos}}[f(x)^{T}f(x^+)] + \mathop{E}\limits_{x \sim p_{data}}[\log \mathop{E}\limits_{x^- \sim p_{data}}[e^{f(x)^{T}f(x^-)/ \tau}]]$
其中,第一项使正例之间更类似,第二项使将负例之间离开。而第二项在优化过程中,会压平向量空间的奇怪谱,因而比照学习无望缓解表征进化问题,进步句向量表征的平均性。并通过下图,能够发现,

  • 尽管预训练embeddings具备良好的对齐性,但其平均性较差;
  • 后处理办法,大大改善平均性,但也使其对齐性变差;
  • 无监督SimCSE无效地进步了预训练embeddings的平均性,同时放弃了良好的对齐性;
  • 有监督SimCSE,能够进一步提高对齐性。

2.6.试验细节

对7个语义文本类似度(STS)工作进行了试验,将无监督和有监督的SimCSE与STS工作中的最先进的句子嵌入办法进行了比拟,能够发现,无监督和有监督的SimCSE均获得了sota的成果,具体如下表所示,

2.6.1训练参数

对于有监督的SimCSE,对模型进行3个轮的训练,在STS-B的开发集上每训练250步进行一次模型验证,并保留测试集上最优成果的节点。对于无监督的SimCSE与有监督的SimCSE操作统一,但仅训练一个epoch。并对批次大小和学习率进行网格搜寻,找寻最优参数,如下图所示,

试验发现,只有相应地调整学习速率,SimCSE对批量大小并不敏感,这与比照学习须要大批次的发现相矛盾。可能起因为所有SimCSE模型都是在原有预训练模型根底上持续训练的,曾经提供了较好的初始化参数。

2.6.2MLP Layer

对于无监督和有监督的SimCSE,训练过程均采纳在带有一个MLP层的[CLS]向量作为句向量表征。但,对于无监督的SimCSE,在测试中抛弃了MLP层,仅应用[CLS]向量作为句向量表征,具体试验如下表所示,

2.6.3MLM

在训练过程中引入masked language modeling变量,能够提到模型的迁徙成果,如下表所示,

但值得注意的是,迁移性的进步,会造成原始工作上的成果降落。

2.6.4温度

温度次要用于调整softmax函数的平滑水平,在训练过程中,温度为0.05时,成果最佳。

SimCSE论文,在无监督句向量表征上,通过简略的dropout形式,结构了比照学习的正例,达到堪比监督学习效果,堪称大道至简。并且在监督学习上,比照学习框架成果也获得了SOTA。

  • 参考文献
  • SimCSE: Simple Contrastive Learning of Sentence Embeddings

更多文章请关注公重号:汀丶人工智能

3.NLP更多具体介绍:数据加强、智能标注、用意辨认算法|多分类算法、文本信息抽取、多模态信息抽取、可解释性剖析、性能调优、模型压缩算法等

前人栽树后人乘凉,本专栏提供材料:数据加强、智能标注、用意辨认算法|多分类算法、文本信息抽取、多模态信息抽取、可解释性剖析、性能调优、模型压缩算法等我的项目代码整合,省去你大把工夫,效率晋升。 帮忙你疾速实现工作落地,以及科研baseline。

NLP专栏简介:数据加强、智能标注、用意辨认算法|多分类算法、文本信息抽取、多模态信息抽取、可解释性剖析、性能调优、模型压缩算法等