天天看点

李宏毅机器学习(七)Bert and its family技术前瞻Pre-train Model

技术前瞻

李宏毅机器学习(七)Bert and its family技术前瞻Pre-train Model

在预训练模型上训练Bert,并在我们的数据上fine-tune所需要的模型!

就像学习英文一样! 应该是通读英文文章后再去做题,而不是先做题再读懂文章!

Pre-train Model

Embedding

刚开始是 Word2Vertor,但是不能所有的单词都这样的! 太多了

要不,用字母和偏旁?

但是你这样下去,是有词义歧义的!

所以才有了Contextualized Word Embedding! 这里中间的Model可以选择是LSTM、Self-attention layers或者是Tree-based model(语法树)! 下面的链接是关于Tree-based model的!

李宏毅机器学习(七)Bert and its family技术前瞻Pre-train Model

BERT要不做大,要不做小! 大公司都是越来越大,但是穷人就是使得Bert越来越小!

李宏毅机器学习(七)Bert and its family技术前瞻Pre-train Model

其中最有名的是ALBERT,它神奇的地方在于基本都和BERT一样,不同的方法在于原来的BERT12层、24层都是不同的参数,但是ALBERT12层、24层都是一样的参数,但是效果比BERT还要好。

究竟怎么让模型变小呢? 这里有很多的方法可以自己去了解一下:

李宏毅机器学习(七)Bert and its family技术前瞻Pre-train Model

Network Architecture

如果我们处理更多的句子,而不是仅仅的sequence的tokens,而是segment-level的! 而是成段的,整个文章放入网络!

李宏毅机器学习(七)Bert and its family技术前瞻Pre-train Model

how to fine-tune

具体的NLP任务来进行fine-tune!

李宏毅机器学习(七)Bert and its family技术前瞻Pre-train Model

NLP的任务:

李宏毅机器学习(七)Bert and its family技术前瞻Pre-train Model

如果输入多个句子时:

李宏毅机器学习(七)Bert and its family技术前瞻Pre-train Model

输入两个句子,中间有【SEP】作为隔绝! 两个句子可以是查询和文件的差距,也可以是前提和假设的差异!

如果是输出时:

李宏毅机器学习(七)Bert and its family技术前瞻Pre-train Model

one class:

我们可以使用CLS,使得其输出一个类!

或者我们取几个向量的平均!

李宏毅机器学习(七)Bert and its family技术前瞻Pre-train Model

class for each token:

每个token输出一个类

李宏毅机器学习(七)Bert and its family技术前瞻Pre-train Model

copy from input:

文件D和答案query一起作为输入放到QA model里,最终输出两个整型变量s和e,分别是在文中的答案!

李宏毅机器学习(七)Bert and its family技术前瞻Pre-train Model

在BERT中如果操作的呢? 我们只需要两个vector(没有懂怎么获得的,可能是预定义的),其中一个vector用来和document中的输出vector做dot product来,根据相似度来定是不是是不是起点; 而另一个vector是作为结尾的!

李宏毅机器学习(七)Bert and its family技术前瞻Pre-train Model

General Sequence(v1):

Bert很适合Seq2Seq中的Encoder,然后经过Decoder来得到输出的句子! 但是问题在于,现在的Task Specific需要的labeled data不应该多,而且Decoder最好是预训练的! 但是现实是没有训练,那就会受到影响!

李宏毅机器学习(七)Bert and its family技术前瞻Pre-train Model

General Sequence(v2):

我们可以以预测下一个token的方法来训练seq2seq!

李宏毅机器学习(七)Bert and its family技术前瞻Pre-train Model

how to fine-tune:

李宏毅机器学习(七)Bert and its family技术前瞻Pre-train Model

第一种是将Pre-trained model固定住,第二种是一块训练! 但是结果表明,往往一块训练效果会更好!

Adaptor:

如果一块训练的话,参数实在是太多了!

那么我们可不可以选择其中一部分层进行训练呢? 将这些层称为Adaptor层!其它地方固定!

李宏毅机器学习(七)Bert and its family技术前瞻Pre-train Model

Adaptor的方法很多,而且插入到哪里都是需要研究的! 我们以Transformer为例,我们在Feed-forward layer后加入Adaptor; 同时在训练之前我们不训练Adaptor,加入具体任务之后,我们才会训练Adaptor! 右边的是Adaptor层的具体,确保参数不会太多!

李宏毅机器学习(七)Bert and its family技术前瞻Pre-train Model

左侧0代表的是如果我们fine-tune整个model得到的结果,下图中蓝色的线表示的是训练倒数层,第一个点是倒数第一层,第二个点加入了倒数第二层,第三个点是加入了倒数第三层,以此类推! 而橙色的线就表示的是只训练其中的Adaptor!

Weighted Features:

其中 W 1 W_1 W1​和 W 2 W_2 W2​是可以被学出的! 比如我们用最终的特征放入具体的任务中,那么这个参数就是可以被学习的!其中 W 1 W_1 W1​和 W 2 W_2 W2​对应于不同层产出的特征! 不同层产出的特征是有不同的侧重点的,谁重要谁不重要是需要自己学的!

李宏毅机器学习(七)Bert and its family技术前瞻Pre-train Model

WHY Pre-train Models?:

为什么使用Pre-train Models? 因为这些Model真的带给了我们不错的效果!

Why FIne-tune?:

实现代表该模型Fine-tune过,虚线代表没有Fine-tune过! 可以看出所有的实线loss下降的都很快!

李宏毅机器学习(七)Bert and its family技术前瞻Pre-train Model

如何生成下面的图像? 可以看右上角的链接!

怎么看出这个模型是不是有泛化能力? end Point是峡谷的话泛化能力差,如果是盆地,那么泛化能力就很好!

李宏毅机器学习(七)Bert and its family技术前瞻Pre-train Model

继续阅读