【花师小哲】当代炼金术(神经网络)前沿(13)——语言模型自学使用工具?
近期在谷歌和OpenAI围绕ChatGPT爱恨情仇的时候,前不久因为元宇宙引发争议的Meta发布了这个看标题就有点恐怖的论文:

某种程度上来说,这篇文章挺重要的。毕竟,模型能够自学使用工具,仔细想想挺毛骨悚然的。

1.工具
对话系统接外部接口并不是什么新鲜事,特别是小模型经常做这些事情,毕竟“世界知识”这种高阶技能小模型是点不出来的,而借助于外部数据库能很快得到相对较好的回答,然后只需要根据反馈生成一句看起来像人话的回答就可以了。大模型不太一样,它有“世界知识”这项技能,就可以绕过外部数据库直接生成答案。
当然大模型有它自己的问题,在我很早的ChatGPT的专栏中也说过,我们当时惊讶ChatGPT的性能的重要原因是因为大模型做到了如此精细的事情,就好像有个人抱着一块一吨重的大石头在小米粒上雕刻出一副非常还原的蒙娜丽莎一样。但是,俗话说“杀鸡焉用牛刀”,大模型终究在很多细节上容易犯错,在很多场合下大模型的作用确实不及一些特定领域的小模型。
那么,答案就很明显了:让大模型去使用小模型,或者说,让大模型去使用工具。

2.使用工具
大家也都知道最近ChatGPT整合入Bing已经在内测了,上一篇专栏我也讲了这其实不是第一次OpenAI和ChatGPT进行交互,WebGPT已经做过了:
【花师小哲】当代炼金术(神经网络)前沿(12)——WebGPT:GPT并不是首次结合Bing?
这里再鞭尸一下谷歌的lamda,lamda非常夸张,用了大量的措施、大量的衡量指标来确保生成的回答尽可能更安全:

然后lamda就被ChatGPT这个端到端的网红制裁了,这似乎告诉了大家一个简单粗暴的道理:人类设定的指标不一定是模型需要的指标,或者说不是对于模型来说更好的指标。这也是业界对神经网络一种常见的看法,即神经网络学习到了一些目前人类还无法理解的更本质的高阶特征。
然后Meta抓住了这一点,即我们为什么非得加一堆外部配件去限制语言模型(事实上,目前ChatGPT这个量级的大模型,还没有“同时具有各方面的能力”的技能,很多技能是需要花力气激发出来的,而学习新技能就会损失一些旧性能[这很宝可梦],所以之前一些语言模型+外部接口的方式是会损伤到大模型本身的答案生成能力的),直接让语言模型自己学习工具不就好了吗?

3.Toolformer是怎么自学工具使用的
如图是几个例子:

Toolformer的结构其实非常简单,我们给Toolformer一些外部工具的API(例如日历、计算器、维基百科、翻译软件等),这些工具相对于语言模型(文中主要用的是GPT-J,也是GPT族的一员)来说是很小的模型,很多都没有生成语言的能力,但是很多工具都是在某些方面非常精确的。
然后我们并不会去限制Toolformer在何种情况下该使用哪一个,而是让它自学使用工具,包括①让它根据问题自己选择合适的API来获取答案;②自行决定是否要使用这个反馈结果(毕竟像翻译软件这样的工具给出的结果也不一定是准确的);③自行学会将反馈结果整合进答案中
虽然看上去这非常神奇,但相似的事情其实很早就在神经网络上使用了。前面也提到过,神经网络可能是学到了目前人类还无法理解的高阶特征。举个例子(现实中应该不会这样做,但我觉得这个例子应该可以说的形象一些),我们有一些化石样本,这些样本有很多属性(某块骨头的尺寸、形状等),我们想分清楚这些化石所属生物的亲缘关系,一种可能的做法是,我们用一个函数y=k1x1+k2x2...来计算每个化石的数值,数值接近的亲缘关系就更近。x就是样本属性值,但k是不知道的,这时候我们就可以用神经网络来学习k值,或者直接学y的函数。
而且只要损失函数设计的好,理论上神经网络学会调用这些接口也是有可能的。事实上,Toolformer自学工具的性能提升还挺明显的,也不会明显损害原有的生成答案的性能。
当然,这篇研究还存在一些不足,例如现在的语言模型只会使用单API,不能套娃使用API(例如我想问“10年后是几几年”,Toolformer就不会先用日历获取当前日期,再借由日历去使用计算器,就有可能回答错误)等,但应该都不是什么大事。

4.大模型才能自学使用工具吗?
这个答案很可能的回答是:是的。
论文中研究了不同参数量的模型自学工具的能力,发现只有参数量在(大约)775M以上的模型才有自学工具的能力,小模型使用工具并不能明显地提升性能。
这似乎再次印证了随着模型量的增大,语言模型才有了一定的元学习能力。
那么更大的模型会如何呢?GPT-4出来后,你跟我说它能自己写一套工具再自己调用这个工具我都是相信的。