【花師小哲】當(dāng)代煉金術(shù)(神經(jīng)網(wǎng)絡(luò))前沿(13)——語言模型自學(xué)使用工具?
近期在谷歌和OpenAI圍繞ChatGPT愛恨情仇的時候,前不久因為元宇宙引發(fā)爭議的Meta發(fā)布了這個看標(biāo)題就有點恐怖的論文:

某種程度上來說,這篇文章挺重要的。畢竟,模型能夠自學(xué)使用工具,仔細想想挺毛骨悚然的。

1.工具
對話系統(tǒng)接外部接口并不是什么新鮮事,特別是小模型經(jīng)常做這些事情,畢竟“世界知識”這種高階技能小模型是點不出來的,而借助于外部數(shù)據(jù)庫能很快得到相對較好的回答,然后只需要根據(jù)反饋生成一句看起來像人話的回答就可以了。大模型不太一樣,它有“世界知識”這項技能,就可以繞過外部數(shù)據(jù)庫直接生成答案。
當(dāng)然大模型有它自己的問題,在我很早的ChatGPT的專欄中也說過,我們當(dāng)時驚訝ChatGPT的性能的重要原因是因為大模型做到了如此精細的事情,就好像有個人抱著一塊一噸重的大石頭在小米粒上雕刻出一副非常還原的蒙娜麗莎一樣。但是,俗話說“殺雞焉用牛刀”,大模型終究在很多細節(jié)上容易犯錯,在很多場合下大模型的作用確實不及一些特定領(lǐng)域的小模型。
那么,答案就很明顯了:讓大模型去使用小模型,或者說,讓大模型去使用工具。

2.使用工具
大家也都知道最近ChatGPT整合入Bing已經(jīng)在內(nèi)測了,上一篇專欄我也講了這其實不是第一次OpenAI和ChatGPT進行交互,WebGPT已經(jīng)做過了:
【花師小哲】當(dāng)代煉金術(shù)(神經(jīng)網(wǎng)絡(luò))前沿(12)——WebGPT:GPT并不是首次結(jié)合Bing?
這里再鞭尸一下谷歌的lamda,lamda非常夸張,用了大量的措施、大量的衡量指標(biāo)來確保生成的回答盡可能更安全:

然后lamda就被ChatGPT這個端到端的網(wǎng)紅制裁了,這似乎告訴了大家一個簡單粗暴的道理:人類設(shè)定的指標(biāo)不一定是模型需要的指標(biāo),或者說不是對于模型來說更好的指標(biāo)。這也是業(yè)界對神經(jīng)網(wǎng)絡(luò)一種常見的看法,即神經(jīng)網(wǎng)絡(luò)學(xué)習(xí)到了一些目前人類還無法理解的更本質(zhì)的高階特征。
然后Meta抓住了這一點,即我們?yōu)槭裁捶堑眉右欢淹獠颗浼ハ拗普Z言模型(事實上,目前ChatGPT這個量級的大模型,還沒有“同時具有各方面的能力”的技能,很多技能是需要花力氣激發(fā)出來的,而學(xué)習(xí)新技能就會損失一些舊性能[這很寶可夢],所以之前一些語言模型+外部接口的方式是會損傷到大模型本身的答案生成能力的),直接讓語言模型自己學(xué)習(xí)工具不就好了嗎?

3.Toolformer是怎么自學(xué)工具使用的
如圖是幾個例子:

Toolformer的結(jié)構(gòu)其實非常簡單,我們給Toolformer一些外部工具的API(例如日歷、計算器、維基百科、翻譯軟件等),這些工具相對于語言模型(文中主要用的是GPT-J,也是GPT族的一員)來說是很小的模型,很多都沒有生成語言的能力,但是很多工具都是在某些方面非常精確的。
然后我們并不會去限制Toolformer在何種情況下該使用哪一個,而是讓它自學(xué)使用工具,包括①讓它根據(jù)問題自己選擇合適的API來獲取答案;②自行決定是否要使用這個反饋結(jié)果(畢竟像翻譯軟件這樣的工具給出的結(jié)果也不一定是準(zhǔn)確的);③自行學(xué)會將反饋結(jié)果整合進答案中
雖然看上去這非常神奇,但相似的事情其實很早就在神經(jīng)網(wǎng)絡(luò)上使用了。前面也提到過,神經(jīng)網(wǎng)絡(luò)可能是學(xué)到了目前人類還無法理解的高階特征。舉個例子(現(xiàn)實中應(yīng)該不會這樣做,但我覺得這個例子應(yīng)該可以說的形象一些),我們有一些化石樣本,這些樣本有很多屬性(某塊骨頭的尺寸、形狀等),我們想分清楚這些化石所屬生物的親緣關(guān)系,一種可能的做法是,我們用一個函數(shù)y=k1x1+k2x2...來計算每個化石的數(shù)值,數(shù)值接近的親緣關(guān)系就更近。x就是樣本屬性值,但k是不知道的,這時候我們就可以用神經(jīng)網(wǎng)絡(luò)來學(xué)習(xí)k值,或者直接學(xué)y的函數(shù)。
而且只要損失函數(shù)設(shè)計的好,理論上神經(jīng)網(wǎng)絡(luò)學(xué)會調(diào)用這些接口也是有可能的。事實上,Toolformer自學(xué)工具的性能提升還挺明顯的,也不會明顯損害原有的生成答案的性能。
當(dāng)然,這篇研究還存在一些不足,例如現(xiàn)在的語言模型只會使用單API,不能套娃使用API(例如我想問“10年后是幾幾年”,Toolformer就不會先用日歷獲取當(dāng)前日期,再借由日歷去使用計算器,就有可能回答錯誤)等,但應(yīng)該都不是什么大事。

4.大模型才能自學(xué)使用工具嗎?
這個答案很可能的回答是:是的。
論文中研究了不同參數(shù)量的模型自學(xué)工具的能力,發(fā)現(xiàn)只有參數(shù)量在(大約)775M以上的模型才有自學(xué)工具的能力,小模型使用工具并不能明顯地提升性能。
這似乎再次印證了隨著模型量的增大,語言模型才有了一定的元學(xué)習(xí)能力。
那么更大的模型會如何呢?GPT-4出來后,你跟我說它能自己寫一套工具再自己調(diào)用這個工具我都是相信的。