机器学习笔记:李宏毅ChatGPT Finetune VS Prompt

1 两种大语言模型:GPT VS BERT

2 对于大语言模型的两种不同期待

2.1 "专才"

2.1.1 成为专才的好处

Is ChatGPT A Good Translator? A Preliminary Study 2023 Arxiv

箭头方向指的是从哪个方向往哪个方向翻译
表格里面的数值越大表示翻译的越好
可以发现专门做翻译的工作会比ChatGPT好一些
How Good Are GPT Models at Machine Translation? A Comprehensive Evaluation

同样地,专项翻译任务上,ChatGPT不如一些专门做翻译的模型

2.1.2 使用方式

对于训练模型进行改造

bert的先天劣势就是,他是句子填空,而不是句子接龙,所以希望他进行某一项任务,需要对他进行额外的处理,以及额外的参数微调(finetune)

2.1.2.1 加head

额外地对BERT进行一定的添加,使其能够输出希望的结果

2.1.2.2 微调 Finetune

2.1.2.3 对训练模型做改造------加入Adapter

在语言模型里插入额外的模组,语言模型的参数不动,只更新adapter的参数

2.1.2.3.1 为什么需要Adapter?

如果没有Adapter的话,100个任务就需要存放100个大模型(的参数)


有了Adapter之后,同样的100个任务,我们只需要存一个大模型的参数,和100个任务对应Adapter的参数即可。而一般Adapter的参数量比大模型少多了

2.2 "通才"

通过人类给模型下的指令(prompt)实现,

2.2.1 成为通才的好处

2.2.2 In-context Learning

给大语言模型一个句子,让他分析句子是正面的还是负面的

我们需要告诉模型我们要进行情感分析。怎么告诉呢?

  • 我们给大模型一些例子,(前面那些句子+情感分析结果)
  • 把那些例子串起来,加上我们想要分析的句子,一股脑喂给大模型,让大模型输出是正面还是负面

2.2.2.1 大模型真的能从这些例子中学到信息?

2.2.2.1.1 Rethinking the Role of Demonstrations: What Makes In-Context Learning Work? 2022 ARXIV

故意给模型输入一些错误的情感分析标注,看模型的分析结果

  • No demo是没有范例
  • 橙色是给了正确的范例
  • 红色是给了一些错误的范例

------>可以发现正确率并没有下降很多

并没有从范例里学到很多有用的信息?

那么,故意给一些不在这个domain里面的,无关的输入呢?

这种将无关domain的信息加入的结果就是紫色部分,可以看到如果是来自不同的domain的话,效果会下降

所以这篇论文中,in-context learning作用的猜测是:"唤醒"模型

换句话说,大语言模型本身就会情感分析,in-context learning的作用是"唤醒"他,让语言模型知道接下来做的任务是情感分析
这篇论文的另一个例子也佐证了这个观点,我们提供的句子-情感结果对增加,精度涨的不多(如果是finetune的话,精度会提升的很快)

------>说明并不是靠in-context learning提供的这几个输入来学习情感分析。大语言模型本身就已经具备了情感分析的功能了

2.2.2.1.2 Larger language models do in-context learning differently 2023 arxiv

  • 每一个图像中,颜色越深的表示模型越大
  • 横轴表示in-context learning阶段提供给大模型的有多少比例的是错误的信息
  • 可以看到大模型受到错误范例的影响是很大的,而小模型(GPT3,这里的小是相对的小)受到错误范例的影响是不大
    • 上一篇paper考虑的是较小的模型,所以可能会觉得给了错误的范例影响不大
  • 同时我们可以看到,在大模型中,当in-context learning的错误率为100%(全是相反的结果)的时候,大模型的正确率都是低于50%的,说明他们确实从错误的资料中学到了一些知识
    与此同时,我们直接让大模型进行分类任务

我们在in-context learning阶段将input和output全部作为输入提供给大模型,让大模型来进行分类任务

可以看到大模型确实学到了in-context learning中的信息

2.2.2.2 让模型学习 in-context learning

[2110.15943] MetaICL: Learning to Learn In Context (arxiv.org)

前面的in-context learning都是没有finetune过程了,这里相当于finetune了一下

用别的任务的in-context learning的范例、输入、输出进行微调

2.2.3 instruction tuninging

大语言模型还是需要进行一定的微调,才能效果比较好,这个微调的过程就是instruction-tuning

训练(finetune)的时候, 给模型一些指令和对应的答案。测试的时候,给finetune指令之外的其他指令。让模型自己给出合理的回应。

早期模型如Multitask Prompted Training Enables Zero-Shot Task Generalization就提出了一个T0模型,来达成instruction-tuning的效果

[2109.01652] Finetuned Language Models Are Zero-Shot Learners (arxiv.org)

FLAN也是一个早期做instruction tuning的work

首先收集大量的NLP任务和数据集

而由于instruction tuning是希望模型理解人类下的指令,所以FLAN每一个NLP的任务想了十种不同的描述方式(template)

  • 当测试任务是natrual language inference的时候,finetune训练的时候就没有这个任务
  • zero shot 是只有指令,没有in-context learning
  • few-shot就是in-context learning
  • FLAN就是进行instruction learning的结果

2.2.4 Chain of Thought

[2201.11903] Chain-of-Thought Prompting Elicits Reasoning in Large Language Models (arxiv.org)

另一种更详细地给机器prompting的方法

  • 如果是数学这种需要推理的问题,直接给 in-context learning 往往效果若不好
  • 而如果我们给范例的时候,同时给推导过程+答案。期望模型输出答案的时候,也先输出推导,再输出答案
    • 这就叫Chain of Thought Prompting
  • 从效果上来看,加了CoT之后的效果更好

2.2.5 加一些prompting,让CoT效果更好

[2205.11916] Large Language Models are Zero-Shot Reasoners (arxiv.org)

在进行CoT的时候,范例输完了,需要模型回答的问题说完了,加一行'Let's think step by step',可以获得更好的效果

Large Language Models Are Human-Level Prompt Engineers ICLR 2023

加的那一行文字不一样,效果也不一样

2.2.6 CoT+Self=consistency

[2203.11171] Self-Consistency Improves Chain of Thought Reasoning in Language Models (arxiv.org)

  • 使用CoT让模型先输出推导过程,再输出推导结果,可能每次推导过程不一样 答案也不一样
    • 这里让语言模型产生好几次推导和对应的结果,出现最多次的答案就是正确答案
    • 当然也可以每个答案 用语言模型算一个几率(信心分数)权重
      • 但这个权重论文中说没有什么帮助,所以直接根据数量投票就好

2.2.7 强化学习找Prompt

[2206.03931] Learning to Generate Prompts for Dialogue Generation through Reinforcement Learning (arxiv.org)

2.2.8 直接用LLM来找Prompt

[2211.01910] Large Language Models Are Human-Level Prompt Engineers (arxiv.org)

相关推荐
lucy1530275107912 分钟前
【青牛科技】GC5931:工业风扇驱动芯片的卓越替代者
人工智能·科技·单片机·嵌入式硬件·算法·机器学习
幻风_huanfeng39 分钟前
线性代数中的核心数学知识
人工智能·机器学习
粤海科技君1 小时前
如何使用腾讯云GPU云服务器自建一个简单的类似ChatGPT、Kimi的会话机器人
服务器·chatgpt·机器人·腾讯云
weyson1 小时前
CSharp OpenAI
人工智能·语言模型·chatgpt·openai
IT古董2 小时前
【机器学习】决定系数(R²:Coefficient of Determination)
人工智能·python·机器学习
武子康3 小时前
大数据-213 数据挖掘 机器学习理论 - KMeans Python 实现 距离计算函数 质心函数 聚类函数
大数据·人工智能·python·机器学习·数据挖掘·scikit-learn·kmeans
武子康3 小时前
大数据-214 数据挖掘 机器学习理论 - KMeans Python 实现 算法验证 sklearn n_clusters labels
大数据·人工智能·python·深度学习·算法·机器学习·数据挖掘
weixin_518285053 小时前
深度学习笔记11-神经网络
笔记·深度学习·神经网络
封步宇AIGC4 小时前
量化交易系统开发-实时行情自动化交易-Okex K线数据
人工智能·python·机器学习·数据挖掘
封步宇AIGC4 小时前
量化交易系统开发-实时行情自动化交易-Okex交易数据
人工智能·python·机器学习·数据挖掘