in-context learning的learning和
machine learning、deep learning、supervise learning、unsupervise learning不一样,这些learning是用梯度更新模型参数的。
context就是上下文的意思,就是你输入的上下文。in-context就是从你输入的上下文里学习到了信息和知识。
(1)in-context learning的learning是不更新参数的,就是通过理解你的输入文本,从输入文本里获取知识。
可以理解为单纯理解了你输入文本里的东西。对你输入文本里面的信息加以利用,在接下来的对话里把这些知识和信息都用上。
(2)对于预训练里没有见过的知识,模型可以通过你给它的上下文,学到信息。没有更新参数,单单纯纯从对话里学习到知识。
in-context learning这个能力不是语言模型刻意学会的,是语言模型达到一定规模之后从量变到质变而具备的。(一般超过7B参数才具备这个质变)
从GPT3开始,语言模型不是只会接着你说话(理解能力差,逻辑能力差的接话棒),而是能理解你说话的意思。这个能力为prompt诞生打下基础。
in-context learning之前的神经网络是机械拟合数据分布,机械学习,死记硬背。
自从in-context learning能力出现之后,神经网络改去学习理解instruct的含义,不再是机械地拟合了。
openai的InstructGPT第一步为什么叫SFT(监督式微调)而不叫微调呢?SFT这一步与之前微调的区别在于:
现在SFT可以通过in-context learning能力去理解instruct,而不是过去微调机械地模仿、机械地拟合。
题外话,InstructGPT最重要的一张图,chatGPT训练三步:先SFT,再RLHF。
现在大模型研究,大部份工作都到SFT就结束了,80%以上功能通过SFT就可以解决了。LLaMA就是只经过SFT,而没有RLHF。LLaMA + RLHF就是羊驼,LLaMA和羊驼不是一个东西了。
大部分国产预训练语言模型都是三步都走完的,流程走的挺齐,但是效果都不咋地。国外很多模型只走SFT这一步,效果就很好。