- 文献阅读:Large Language Models are Null-Shot Learners
- 1. 文章简介
- 2. 方法介绍
- 3. 实验考察 & 结论
- 1. 基础实验
- 1. 实验设计
- 2. 实验结果
- 2. 消融实验
- 1. 小模型上的有效性
- 2. ∅CoT Prompting
- 3. 位置影响
- 4. 组成内容
- 1. 基础实验
- 4. 总结 & 思考
- 文献链接:https://arxiv.org/abs/2401.08273
1. 文章简介
这篇文章是立命馆大学在今年1月发表的一篇工作,依然是一个prompt tuning的一个工作,不过蛮有意思的。
这篇文章提出的一个核心方法叫做 ∅ \varnothing ∅shot prompt,简单来说就是假装告诉模型给了一些example,然后实际不给,然后让模型进行生成,在这种情况下,发现模型获得了较之普通情况下更好的效果表达,也是挺神奇的。
本质上来说,这篇文章就是注意到了当前LLM无法绕开的幻觉问题,然后反其道而用之,利用模型自身的“幻觉”来辅助生成,获得更好的生成效果。
下面,我们来具体对文章内容进行一下展开。
2. 方法介绍
首先,我们来看一下 ∅ \varnothing ∅shot prompt的具体方法实现。
这部分其实真的很签单,前面说的基本就是全部了,即提示模型prompt中包含一些实际并不存在的example,然后让模型根据这些不存在的example来生成对应的结果。
文中给出了一个具体的实现的示例如下:
3. 实验考察 & 结论
然后,我们来看一下文中给出的一些关于 ∅ \varnothing ∅shot prompt的具体实验。
1. 基础实验
首先,我们来看一下文中关于 ∅ \varnothing ∅shot prompt的一些基础实验。
其实主要也就是在不同的模型上使用 ∅ \varnothing ∅shot prompt在不同的数据集下进行一下考察。
因此,我们先看一下文中使用了哪些模型以及数据集,然后看一下得到的实验结果以及对应可以得到的结论。
1. 实验设计
我们首先来看一下文献中使用的任务,对应的数据集以及使用的模型:
- Arithmetic Reasoning
- AQuA-RAT
- GSM8K
- Commonsense Reasoning
- StrategyQA
- WinoGrande
- Reading Comprehension
- RACE
- Natural Language Inference and Closed-Book Question Answering
- ANLI
- TriviaQA
而模型方面,则是主要使用以下几个模型:
- PaLM 2
- PaLM 2 for Chat
- GPT-3.5 Turbo
- GPT-4 Turbo
2. 实验结果
文中得到的实验结果如下:
可以看到:
- ∅ \varnothing ∅shot prompt在PaLM2的两个模型上可以普遍地提升模型效果,几乎在所有任务上均有提升效果;
- ∅ \varnothing ∅shot prompt在PaLM2模型上的效果是明显优于Chat模型的,原因可能由于Chat模型在SFT当中进行了对齐,消除了更多的幻觉;
- 而在GPT3.5 Turbo模型当中, ∅ \varnothing ∅shot prompt带来了最大的效果提升;
- 在GPT4 Turbo模型当中, ∅ \varnothing ∅shot prompt基本没有效果。
对于上述现象,文中给出的一个基础解释就是:
- ∅ \varnothing ∅shot prompt本质上是利用的模型自身的幻觉来进行辅助生成,因此,模型训练的越好,幻觉越弱, ∅ \varnothing ∅shot prompt能够带来的效果增益就越弱,反之,模型越容易生成幻觉, ∅ \varnothing ∅shot prompt能够带来的效果增益就越大。
基于此,文中甚至提出可以使用这个现象来通过 ∅ \varnothing ∅shot prompt对模型本身的幻觉程度进行一个评估。
2. 消融实验
除了上述基础实验当中的实验效果之外,文中还给出了一些消融实验来对 ∅ \varnothing ∅shot prompt进行更细节的考察,具体来说,包括:
- 小模型上 ∅ \varnothing ∅shot prompt的有效性
- 是否与其他prompt tuning策略兼容
- ∅ \varnothing ∅shot prompt的位置是否对效果有影响
- ∅ \varnothing ∅shot prompt的组成本身对效果的影响
下面,我们来对这些内容逐一进行一下整理。
1. 小模型上的有效性
首先,关于 ∅ \varnothing ∅shot prompt在小模型上的有效性,文中在LLama 2 7B模型上进行了一下考察,得到结果如下:
可以看到:
- ∅ \varnothing ∅shot prompt在LLama 2 7B上有较好的效果表达,但是在LLama 2 7B Chat上面的效果并不好,这不仅证明了 ∅ \varnothing ∅shot prompt在小模型上的有效性,且同样复现了前述 ∅ \varnothing ∅shot prompt在Chat模型上效果更差的现象,说明对齐消除幻觉确实会减弱 ∅ \varnothing ∅shot prompt的效果。
2. ∅CoT Prompting
然后,文中还考察了一下 ∅ \varnothing ∅shot prompt能否与其他的prompt tuning策略兼容,具体来说,文中主要考查了一下 ∅ \varnothing ∅shot prompt与CoT的联合使用效果,即文中提到的 ∅ \varnothing ∅CoT prompt。
给出文中的一个 ∅ \varnothing ∅CoT prompt的具体示例如下:
对应文中得到的实验结果如下:
可以看到:
- ∅ \varnothing ∅CoT prompt的效果并不如CoT本身。
这个其实也好理解,因为本质上 ∅ \varnothing ∅shot prompt利用的就是模型本身的幻觉来进行的生成优化,而CoT策略则本身就是为了减少模型的幻觉,因此两者在实现机理上本就是相悖的,因此 ∅ \varnothing ∅CoT prompt效果变差反而验证了文中的结论。
3. 位置影响
除此之外,文中还考察了一下 ∅ \varnothing ∅shot prompt的位置对于结果的影响,具体就是这个虚拟的example应该出现在头部还是在prompt的尾部。
文中得到的实验结果如下:
可以看到:
- ∅ \varnothing ∅shot出现在prompt的头部能够带来更好的效果。
这个现象和其它的文章中的结论也是一致的,即prompt头部的内容会较之其他部分更加重要一些。
4. 组成内容
最后,文中还考察了一下不同写法的 ∅ \varnothing ∅shot prompt的效果。
文中给出了4种不同的 ∅ \varnothing ∅shot prompt的实现如下:
对比上述4中prompt,文中得到实验结果如下:
可以看到:
- 文中的最终版本的 ∅ \varnothing ∅shot prompt有着最好的整体效果。
不过这部分的实验有点偏弱了,或许再魔改魔改prompt能够获得更好的prompt也说不好。
4. 总结 & 思考
综上,这篇文章感觉还是非常非常有意思的,因为它和其他的文章思路上是截然不同的。
众所周知,LLM的一大问题就是生成的幻觉问题,或者说事实性错误问题。而往往大家的思路都是考虑怎么去优化这个问题,有从模型角度的RLHF和SFT,也有从prompt工程角度的CoT,few shot learning或者Take a Step Back等等等等。
而这篇文章完全是另辟蹊径,选择的路线是打不过就加入,既然无法绕开幻觉,那就利用模型本身的幻觉现象来增强模型的生成质量。
但是这种另辟蹊径同时也就令这篇工作多少有些鸡肋了,因为本质上来说他并没有去解决模型本身的幻觉问题,反而会放大模型的幻觉,因此输出结果可能也会更不可控。
另一方面,模型发展的整体大方向一定还是要去消除模型固有的幻觉的,因此这种强依赖于模型本身幻觉的方法在未来的有效性一定也是越来越差的,文中在GPT4上的效果事实上就已经证明了这个情况了,因此很难说这个工作实际在应用中是否真的能够有用。
因此,结论而言,这个工作有趣是真的有趣的,但是无用也是真的无用,至少我是看不出这个工作有什么真正被利用起来的可能了……
当然,纯粹一家之言,大家看看就行了,莫当真,莫当真。