赞
踩
目前的NLP任务大都是基于transfomer的预训练语言模型(PLM,pretrained langue models)构造的,预训练大模型可以从无标注的数据中进行学习,随后根据具体的任务进行fine-tuning,得到最终的任务模型。
所谓语言模型,指的是如下的生成模型:
首先对大模型基础的transfomer要了解,这里放一张结构图:
预训练模型根据是否保留transformer的encoder和decoder,分为3类模型:
此外还有一个prefix LM,把encode如何decoder混合在一起,如下:
LLAMA与Transformer架构不同的地方包括采用了前置层归一化(Pre-normalization)并使用RMSNorm 归一化函数(Normalizing Function)、激活函数更换为SwiGLU,并使用了旋转位置嵌入(RoP),整体Transformer架构与GPT-2 类似。
这里补充一下,困惑度(Perplexity, PPL)是一种用来评价语言模型好坏的指标。
在模型层面用到的技术罗列入下:
此外,传统的PLM是把embedding的输出作为下游的输入,对不同的下游任务是不会修改PLM的参数的。而大模型使用fine-tuning的方法,不同的下游任务直接修改PLM的参数(transfer的方法)。
2018年面世,第一个基于Transformer的大模型。
12层的transformer decoder,自回归的无监督训练。
2019年提出GPT-2,使用了40G文本,并增大参数量。这时已经可以在LM(语言模型)中使用prompt来统一诸多NLP任务了:
2020年提出了GPT3:
in-context learning的能力更强了:
2019年诞生,NLP的里程碑。
使用mask,来解决GPT只能单向生成的问题:
输入有一些微小变化,比如token embedding采用word piece,加入segment embedding
另外还有基于Bert的改进:
1)RoBERTa:在Bert后立即发布,训练的跟好
2)ELECTRA: 2020年提出,对Bert的结构作出了改变。核心是其中加入了一个小的预训练模型,然后判断是否发生了替换,从而变成了一个预测问题。
2020年发布,将所有NLP任务变成Text-to-text的任务:
模型越来越大,优化上会出很多问题,使用MoE方法:分块去训练参数(FFN),每个这样的模块我们认为是一个expert。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。