GPT:使用通用的预训练提升自然语言的理解能力
使用没有标号的文本来预训练模型,最后在子任务上微调模型。
GPT使用的目标函数1是通过前k个词来预测第k+1个词,任务难度要比BERT的完形填空(根据上下文信息来预测中间被mask的词)要难很多,当然如果能够训练起来,能力也要强大很多。由于是通过前k个词来预测,因此GPT使用的是transformer的解码器(只在当前及之前的特征上做自注意力,之后的都被mask)而非编码器(可以看到全局的特征)。
微调:类似BERT,针对不同下游任务采用特殊符号如开始和分隔、抓取等,用prompt提示来分辨任务类型,最后用抓取这一个向量的输出训练一个全连接层解决问题(进行分类)。整个过程只微调模型参数,不改变模型结构。
GPT2:
更大的数据集和更大的模型(15亿个参数),用于zero-shot(不作任何训练直接用于下游任务)效果还不错:在某些任务上和当前的模型效果差不多,但是某些任务上效果很一般。
GPT3:
GPT3整个模型的参数量达到了1750亿个,且做few-shot时不改变模型,而是在输入指定任务后,再输入一些针对任务的样例,如要求英语翻法语,就在translate English to French:后面加上一些翻译的样例,最后再输入你的问题如cheese => 其中=>也是提示词,示意模型进行输出。这是基于transformer架构的自注意力机制实现的。但是每一次都要给样本,因为模型没法存下样本的影响。
局限性:1.难以生成长文本,序列太长效果就会差。
2.由于采用的是解码器,不能从后往前看
3.在gpt里每个词都是同样重要的,没有重点,同时没见过video和物理交互。
4.样本有效性不足
5.难以解释究竟是模型记住了样例还是模型学到了具体意义
6.训练非常昂贵
7.难以解释每个权重是做什么的,可解释性差
更深层面的影响:
1.可能用于做坏事:伪造各种东西
2.涵盖了数据集中的偏见
3.能耗大