1.通用语言理解评估GLUE

GLUE是一个用于评估通用 NLP 模型的基准,基于在多种不同语言理解任务集上的评估。

 

下面选自《BERT: Pre-training of Deep Bidirectional Transformers for Language Understanding》:

The General Language Understanding Evaluation(GLUE) benchmark (Wang et al., 2018a) is a collection of diverse natural language understanding tasks. Detailed descriptions of GLUE datasets are included in Appendix B.1.

通用语言理解评估GLUE基准,是一个 多种自然语言理解任务 的集合。GLUE的详细数据集描述见附录B.1.

2.文本蕴含Textual Entailment

Textual Entailment (TE) models take a pair of sentences and predict whether the facts in the first necessarily imply the facts in the second one. 

文本蕴含任务(text entailment),它的任务形式是:给定一个前提文本(premise),根据这个前提去推断假说文本(hypothesis)与premise的关系,一般分为蕴含关系(entailment)和矛盾关系(contradiction),蕴含关系(entailment)表示从premise中可以推断出hypothesis;矛盾关系(contradiction)即hypothesis与premise矛盾。文本蕴含的结果就是这几个概率值。

参考:

https://blog.csdn.net/u010960155/java/article/details/81335067

https://blog.csdn.net/sparkexpert/java/article/details/79890972

3.序列标注sequence tagging

序列标注是BERT进行Fine-Tuning的情况之一,输入是一个单句,输出是序列标签。

序列标注可以用于:词性标注POS、命名实体识别NER、关系抽取RE

 

基于序列标注的中文依存句法分析方法

4.情感分析sentiment analysis

NLP的任务之一。

5.SWAG(Situations With Adversarial Generations)

给出一个陈述句子和4个备选句子, 判断前者与后者中的哪一个最有逻辑的连续性, 相当于阅读理解问题.

 

 6.预训练Pre-training

预训练也叫做Pre-training, 是迁移学习中很重要的一项技术。在自然语言处理中主要以词向量为主。单词我们一般可以用两种不同的方式来表示,一种方式为"one-hot encoding",另外一种方式为分布式表示(通常也叫作词向量/Word2Vec)。 由于单词是所有文本的基础,所以如何去更好地表示单词变得尤其重要。

那如何去理解预训练呢? 举个例子,比如我们用BERT训练了一套模型,而且已经得到了每个单词的词向量, 那这时候我们可以直接把这些词向量用在我们自己的任务上,不用自己重新训练,这就类似于迁移学习的概念。 或者通过BERT已经训练好的模型去动态地去得出上下文中的词向量。

7. 词向量技术

(1)

通过词向量技术我们可以把一个单词表示为向量的形式,然后接着应用在后续的模型当中。我们可以认为词向量表示的是单词的语义(semantic)。 我们可以按照不同的类别区分词向量技术。

(2)常用的词向量模型

不考虑上下文的词向量技术SkipGram, CBOW, Glove。也就是一个单词有个固定(Fixed)的向量,不依赖于上下文的改变而改变。

然而“I back my car"和 "I hurt my back"里,单词"back"在不同的语境下的含义是不一样的 。因此需要考虑上下文。

考虑上下文的词向量技术:ELMo,BERT, XLNet,ALBERT。利用这些模型,可以动态地去学出一个单词在不同上下文的词向量。当然,这些向量在不同的语境下的表示肯定是不一样的。

8.BERT

BERT是一种基于Transformer Encoder来构建的一种模型,它整个的架构其实是基于DAE(Denoising Autoencoder)的,这部分在BERT文章里叫作Masked Lanauge Model(MLM)。MLM并不是严格意义上的语言模型,因为整个训练过程并不是利用语言模型方式来训练的。

BERT随机把一些单词通过MASK标签来代替,并接着去预测被MASK的这个单词,过程其实就是DAE的过程。

BERT有两种主要训练好的模型,分别是BERT-BASE和BERT-LARGE, 其中BERT-BASE使用了12层的Encoder结构。 整个的模型具有非常多的参数。

BERT在2018年提出,当时引起了爆炸式的反应,因为从效果上来讲刷新了非常多的记录,之后基本上开启了这个领域的飞速的发展。

9. 什么是XLNet

BERT之后的一个爆发节点发生在XLNet发布的时候,因为它刷新了BERT保留的很多记录。除了效果之外,那为什么要提出XLNet呢?这就需要从BERT的缺点说起。

(1)训练数据和测试数据之间的不一致性,也叫Discrephancy

当我们训练BERT的时候,会随机的Mask掉一些单词的,但实际上在使用的过程当中,我们却没有MASK这类的标签,所以这个问题就导致训练的过程和使用(测试)的过程其实不太一样,这是一个主要的问题。

(2)并不能用来生成数据

由于BERT本身是依赖于DAE的结构来训练的,所以不像那些基于语言模型训练出来的模型具备很好地生成能力。

NNLM,ELMo是基于语言模型生成的,所以用训练好的模型可以生成出一些句子、文本等。但基于这类生成模型的方法论本身也存在一些问题,因为理解一个单词在上下文里的意思的时候,语言模型只考虑了它的上文,而没有考虑下文!

(3)XLNet如何解决?

基于这些BERT的缺点,学者们提出了XLNet, 而且也借鉴了语言模型,还有BERT的优缺点。最后设计出来的模型既可以很好地用来执行生成工作,也可以学习出上下文的向量表示。那如何做的呢?

首先,生成模型是单向的,即便我们使用Bidirectional LSTM类模型,其实本质是使用了两套单向的模型。那又如何去解决呢?答案是他们使用了permutation language model, 也就是把所有可能的permutation全部考虑进来。这个想法源自于hugo之前的工作叫作NADE,感兴趣的读者可以去看一下。

另外,为了迎合这种改变,他们在原来的Transformer Encoder架构上做了改进,这部分叫作Two-stream attention,而且为了更好地处理较长的文本,进而使用的是Transformer-XL。 这就是XLNet的几大核心!

 

参考:

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

 

posted on 2020-06-14 20:46  西伯尔  阅读(1069)  评论(0编辑  收藏  举报