BERT
2020年8月9日
17:10
目录 |
- - 概述 - ELMO - BERT - 如何训练 - MARK - CLS - How to use? - Extraction-based Question Answering - GPT - 如何训练
|
概述
word token不同,word type相同,大概意思就是,每个词可能在不同上下文下会有不同的含义,但是在Word2Vec中没有考虑到这一点,每个word type都只能对应一个词向量。
ELMO, BERT, GPT2,都改进了这一点,而且GPT2已经变成一个非常恐怖的模型。本文只做简单介绍。
ELMO
ELMO非常简单,就是利用DEEP Bi-RNN来训练词向量。
其中多层RNN会带来多层latent,ELMO的做法是类似Attention,加权求出vect。
BERT
BERT是一种基于新结构Transformer的词向量。
如何训练
主要是结合了两种方法,MARK和CLS两种无监督学习方法。
MARK
MARK方法很好理解,看图就懂。其中BERT中的Transformer结构可能非常多层。然后把训练出来的latent交给一个非常简单的线性模型做分类,预测MARK的词是什么——由于线性模型非常简单,这要求Latent抽取得极其好。
CLS
这是让BERT判断两个句子是否是同一句,句子之间加入[SEP],句首加入[CLS]专门用于输出判断结果。
值得一提的是,通常MASK和CLS要一起训练,这样BERT会训练得很好。
How to use?
BERT的使用不像W2V,它要求具体任务具体训练(No Free Lunch),要求BERT层应该和不同NLP任务做不同的嵌套,然后做整体的fine-tuning。
其中QA任务我特别提一下,因为我觉得有趣。
Extraction-based Question Answering
任务描述:
它要求从document中取出单词或短句来回答问题,即输入doc,输入query,输出回答。其中的短语要求输出s,e,分别代表起始位置和结束位置。
它的解法如下,要求从latent中训练出两个新的latent,分别代表开始和结束(没有意义就给定意义:))。然后就和doc的latent做内积,找到内积大的两个词。
GPT
最近1500m参数版的GPT也开源出来了……真暴力出奇迹。它的训练方法简单了解一下。
如何训练
它使得每个词生成三个向量,q,k,v,表示查询,关键词,值。然后要预测“潮水退了”后面的词的时候,就使用“退了”这个词的“q”向量,利用它和前面的词的“k”向量计算出attention,然后就利用attention和所有词的“v”向量,计算出latent,然后经过多个层预测出下个词。
可以看到,这实际上是基于动态attention的训练方案。但这东西极强,最强的那个GPT版本,可以完成很多不可思议的任务。