费曼说:学习一件事情最好的方式是做它的老师,这也是写这篇博文的目的,写这篇博文,即便有其他原因,但更多的还是写给自己,话不多说,让我们开始进入大模型吧!
本次任务(task2)的内容是对大模型的评测,总的来说可以分为两类:一类是语言模型的基本测试(它的老本行),而另一类是一些任务测试,任务被定义为从输⼊映射到输出,就是用通俗的话来说,任务测试就是测试训练过的chatgpt等语言模型根据问题做出回答的能力。
2.1 语言模型到任务模型的转化
2.1.1 目标
通过对语言模型进行处理,使得给定语言模型一个输入,映射一个可信的输出
2.1.2 疑问
在这里,我们通常都会引发一个疑问,语言模型如GPT它的训练任务仅仅是给定一串语言序列,输出下一个词,吃掉大量数据,而并未对这些语言任务进行特别的训练,chatGPT能完成这些人做起来都有些艰难的任务吗?
这其实是人工智能,尤其是神经网络领域一个更为广泛的问题,那就是机器学习的可解释性问题(Explainable AI ),由于本次的主题及篇幅原因,这里就不再赘述了。
答案是可以的,仅仅通过简单的举例(Few-shot Learning)或是不需要举例(zero-shot Learning),GPT就可以轻松地完成这些有些并不是很轻松的任务,并取得良好的成绩
这是为什么呢,现在学术界并没有给这种奇怪的现象一个确切的解释,只要给定大模型足够的输入,即便不需要特定训练,也能完成特定的任务,这也正是大模型的魅力吧
2.1.3 对于语言任务的一种可能的解释
对大模型能胜任大多数翻译任务的一种可能的解释:那就是自然语言之间的词义是相通的,所表现的现象在于不同语言之间存在着相近的词向量,大型语言模型在海量的数据集中学习到了大量的语言及先验知识(Prior Knowledge),而对于这些语言知识有足够的空间储存在大模型的参数(GPT3有1750亿个参数)中,这些参数的量级足够巨大,大模型的能力实现了从完成单一任务到完成各项陌生任务的跨越式提升。
对于词向量之间的相似度,这里引用李宏毅的PPT以供参考,链接:Self-supervised Learning (ntu.edu.tw)
令人感到愉悦的是,对于自然语言不同于机器语言所带有的二义性甚至多义性的问题,从而带来的翻译困难的问题,大语言模型也成功的在这一方面展露出众的能力,以下是举例说明,继续引用自李宏毅的课程:
2.1.4 模型适应的两种方式
2.1.4.1 重新训练:我们都知道,模型的架构基本都是一眼=样的,重新训练也仅仅是对参数的改变,这里其实可以分为两类:随机化参数和使用BERT的原始参数进行微调(fine-tune),在实验上,证明了BERT的参数在模型训练上带有优越性,下面是举例:
同时,对于参数初始化,我们还有待进一步的了解,从图中我们可以得来对于scratch和fune-tune之间的区别,在于BERT模型内的参数初始化问题,而绿色的Linear model,其实都是随机初始化得来的,另外,由于完整版BERT模型过大,我们可以采用蒸馏的方法缩小模型大小:
2.1.4.2 prompt learning
其实它就是提示词工程,主要结构是题目描述加从多个到零个例子之间的举例不一而足,这里也不再赘述,甚至衍生出了一门小学科
2.1.5 模型指标
2.1.5.1困惑度:
用通俗的话来讲就是把大模型对于一串预测序列中难以确定性输出的部分进行数学化的衡量
注意到它的数学操作,几何平均更多的将注意力放在了预测概率较小的个体身上(而不是算数平均),这其实也是数学意义上的一种attention机制,同时取对数的操作使得我们不至于面临除数爆炸的问题,从图像上看更容易理解,1/x容易面临类似指数爆炸的问题(它过于极端也不易于衡量困惑成都),而取对数后,显得平和很多,也更容易衡量了:
2.1.5.2关于困惑度的两种情况
召回错误,举例来说很容易理解:
精确度错误:错误序列的精确度过大,我们采用罚函数来进行解决
2.1.6 各种下游任务
分别为:给出文本提示计算混合度、预测最后词、推理任务、回答问题、无监督翻译、生成题目、使用新词、语法纠偏
这证明,大量数据到举一反三这种质的飞跃,在大模型上也是成立的。