大语言模型怎样颠覆范式

2023-09-09 09:17:42 浏览数 (2)

很多媒体报道大语言模型(LLM),都喜欢说有多少多少B参数,比过去翻了多少多少倍。搞错方向了,模型“大”本身没什么了不起,无非是说我有钱氪得起,吊打你们这些非RMB玩家没问题。

那为什么现在强调LLM呢?因为大了以后,模型可能会出现颠覆此前认知的情况。

首先就是能力涌现。以前一般认为,模型的能力和规模呈正比,虽然规模越大能力越强,但大模型有的小模型也会有,只是差一些,也就是能力基本等比例缩放。模型能力提升变成机械堆面板属性,久了没啥看头。

现在发现LLM具有能力涌现现象,简单来说,就是大模型会出现一些小模型所不具备的能力。这就有意思了,只要突破规模门槛,就有可能要发现一些意想不到新的特性。门槛的边界在哪里,这本身就是一个值得研究的话题。

那么,会涌现什么能力呢?目前说的多的是ICL和CoT。从形式上看,这两点都可归属于Prompt工程,这里放一起讲。

简单来说,过去我们提升模型任务表现水平,通常采用的是有监督训练,在大模型这里,就是熟知的预训练 微调模式。

这从技术原理层面很好理解,我们通过训练,调整模型参数,当然可以提升在某些任务上的表现水平。

但是,大模型神奇的地方来了:不用改变模型参数,改变什么呢?改变输入文本,就能提升大模型的任务表现水平。这里的输入文本,就是Prompt。

譬如说,我要提升大模型在情感分类任务的表现,我要怎么做?情感分类任务是很经典的NLP任务,过去常规做法都是先请人标注数据集,也就是给出文本然后标注是正面还是负面,标多大要看模型有多大,然后做监督学习。

我挺烦标注的,标注是制约研究的隐形门槛。自己标太累,请人标太贵,但不标不行,有时候即使方法路线没问题,数据集跟不上,最终效果也不行。

过去很多人包括我都认为,由于模型越大消耗的标注数据越多,标注也会成为制约模型规模的一大要素。没曾想,现在变了。

Prompt是怎么做的呢?不用改变模型参数,也就是不用训练了,你只要把测试样本直接输入模型,就能得到不错的结果,这叫zero-shot。

zero-shot有两个好处,首先就是不用标数据了,其次就是类别输出更为灵活。

监督学习的一个限制是标注了多少类别,就只能输出多少类别,譬如你做商品评论情绪分类,标注的类别是正面、负面,标完发现有些评论说不上是正面还是负面,就是纯粹的客观描述或者水贴。你想模型多输出一个“其它”类别,对不起做不到,除非重标整个数据集。

zero-shot则要灵活得多,是二选一还是三选一,还是心血来潮多加一个“划水”类别,都只需要在Prompt里面顺便告诉模型就行。

不过zero-shot也有个问题,大问题,就是相比监督学习效果不太好。有没有办法?有办法,还是走监督学习的老路,先给模型喂一点标注数据,不同的地方在于,是在Prompt里面喂,也不用多,几条就行,有点编程题里的样例的意思。

虽然只是简单添加几条样例,但模型表现能大幅提升,有的论文甚至超过监督学习,这种方法称为few-shot。

大模型还有很多有趣的玩法,很多颠覆了过往的认知和做法,这就是大家所说的“范式改变”。

0 人点赞