赞
踩
参考自李宏毅课程-人类语言处理
这里所说的pre-train model是输入一串tokens,能够输出一串vectors,且每个vector可以表示对应的语义的模型,这些vectors也被称作为embeddings。以前常用的模型有word2vec,Glove等,这里并没有详细介绍,之后需要单独去看,由于英文单词太多了,只要来一个新单词,整个embedding的模型就需要重新train,为了解决这个问题,有了fasttext。fasttext是针对英文的,针对中文的则是输入图片,让模型通过图片中文字的偏旁部首去预测出训练时没见过的文字的embedding。这种训练embedding的方式,根据语言的不同会有不同的方法。
但是有一个问题,如果输入的token是一样的,那么每次出来的vector也一样,所以希望模型可以在输入某个token的embedding的时候,考虑上下文信息,这叫做contextualized word embedding。这样的模型基本就是基于LSTM或者self-attention layer去搭建的一个seq2seq的模型(如Bert,Megatron,Turing NLG等),可以理解为encoder。
为了让模型效果变好,所用的模型越来越大,参数量越来越多,有一些模型压缩方面的技术,比如Distill BERT,Tiny BERT,ALBERT等,这里没有细说。
将pre-train model应用到各种任务中,这里将任务按照输入和输出分类
由于pre-trained model往往很大,不同层得到的feature代表的意义也不同,所以可以把各层的feature抽出来加权后输入到head,加权的weights可以是模型自己去学的。
那为什么需要fine-tune,一方面是trainning loss可以更快的收敛,下图对比随机初始化训练和预训练之后训练的training loss随epoch的变化过程。
另一方面是fine-tune得到的模型有更好的泛化能力,在同样去找极小值点的时候,预训练的模型找到的极小值点附近的区域更加平缓,意味着泛化能力更好。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。