為什么AI數(shù)不清Strawberry里有幾個(gè) r?Karpathy:我用表情包給你解釋一下
還記得這些天大模型被揪出來的低級(jí)錯(cuò)誤嗎?
不知道 9.11 和 9.9 哪個(gè)大,數(shù)不清 Strawberry 單詞里面有多少個(gè) r…… 每每被發(fā)現(xiàn)一個(gè)弱點(diǎn),大模型都只能接受人們的無情嘲笑。
嘲笑之后,大家也冷靜了下來,開始思考:低級(jí)錯(cuò)誤背后的本質(zhì)是什么?
大家普遍認(rèn)為,是 Token 化(Tokenization)的鍋。
在國(guó)內(nèi),Tokenization 經(jīng)常被翻譯成「分詞」。這個(gè)翻譯有一定的誤導(dǎo)性,因?yàn)?Tokenization 里的 token 指的未必是詞,也可以是標(biāo)點(diǎn)符號(hào)、數(shù)字或者某個(gè)單詞的一部分。比如,在 OpenAI 提供的一個(gè)工具中,我們可以看到,Strawberry 這個(gè)單詞就被分為了 Str-aw-berry 三個(gè) token。在這種情況下,你讓 AI 大模型數(shù)單詞里有幾個(gè) r,屬實(shí)是為難它。
除了草莓 (Strawberry) 之外,還有一個(gè)很好的例子就是「Schoolbooks」這個(gè)詞,AI 模型會(huì)把它分為 school 和 books 兩個(gè) token。
這個(gè)問題也吸引了剛剛投身 AI + 教育行業(yè)的 Karpathy 的注意。為了讓大家直觀地看到大模型眼里的文字世界,他特地寫了一個(gè)小程序,用表情符號(hào)(emoji)來表示 token。
按照小程序被設(shè)計(jì)的表示方法,「How many letters 'r' in the word'strawberry'?」在 LLM 看來是這樣的:
一段文本在 LLM 看來會(huì)是這樣:
但這種解釋也引起了另一種疑問:如果你讓大模型把 Strawberry 這個(gè)詞的每個(gè)字母都列出來,然后刪掉 r 以外的字母,大模型就能數(shù)對(duì)了,那大模型為什么自己不這么做呢?它好像不太會(huì)利用自己的能力。
對(duì)此,Karpathy 給出的回復(fù)是「因?yàn)闆]有人教它這么做」。
其實(shí),如果你在 Prompt 里加上「think step by step」等思維鏈相關(guān)「咒語(yǔ)」,大模型是可以分步驟解決問題的,而且很有可能數(shù)對(duì)「r」的數(shù)量。那它之前不假思索就給出答案,是不是因?yàn)檫^度自信?
對(duì)此,有人猜測(cè)說,大模型公司給 LLM 的設(shè)定可能就是讓它在一個(gè)問題上花費(fèi)盡可能少的時(shí)間,因此,除非你明確要求,不然它不會(huì)主動(dòng)去深入思考。
對(duì)于這種說法,我們也測(cè)試了一下。結(jié)果發(fā)現(xiàn),如果明確要求深入思考,模型確實(shí)立馬就會(huì)數(shù)了:
這就類似于它有兩套系統(tǒng):快速、依靠直覺的系統(tǒng) 1 和較慢、較具計(jì)劃性且更仰賴邏輯的系統(tǒng) 2,平時(shí)默認(rèn)使用系統(tǒng) 1。
當(dāng)然,這些只是猜測(cè)。
綜合最近的新聞來看,我們會(huì)發(fā)現(xiàn)一個(gè)有意思的現(xiàn)象:一方面,大模型都能在人類奧數(shù)中拿銀牌了;而另一方面,它們又在數(shù)數(shù)、比大小方面集體翻車。類似的例子還有不會(huì)玩幾歲小孩都會(huì)玩的井字棋,不會(huì)判斷兩個(gè)圓是否重疊等。
Karpathy 給這種現(xiàn)象取了個(gè)名字 ——Jagged Intelligence(Jagged 的意思是參差不齊的)。這種參差不齊的智能表現(xiàn)和人類是不一樣的,人類的知識(shí)體系和解決問題的能力在成長(zhǎng)過程中是高度相關(guān)的,并且是同步線性發(fā)展的,而不是在某些領(lǐng)域突然大幅度提升,而在其他領(lǐng)域卻停滯不前。
Karpathy 認(rèn)為,這一問題的核心在于目前的大模型缺乏「認(rèn)知自我知識(shí)(cognitive self-knowledge)」( 模型自身對(duì)其知識(shí)和能力的自我認(rèn)知 )。如果模型具備這種能力,它可能會(huì)在面對(duì)「數(shù)字母」這樣的問題時(shí)回答說,「我不太擅長(zhǎng)數(shù)字母,讓我使用代碼解釋器來解決這個(gè)問題」。
這一問題的解決方案可能包括但不限于擴(kuò)大規(guī)模,可能需要在整個(gè)技術(shù)棧的各個(gè)方面都做一些工作,比如在后訓(xùn)練階段采用更復(fù)雜的方法。
對(duì)此,Karpathy 推薦閱讀 Llama 3 論文的 4.3.6 章節(jié)。在此章節(jié)中,Meta 的研究者提出了一些方法來讓模型「只回答它知道的問題」。
該章節(jié)寫到:
我們遵循的原則是,后訓(xùn)練應(yīng)使模型「知道它知道什么」,而不是增加知識(shí)。我們的主要方法是生成數(shù)據(jù),使模型生成與預(yù)訓(xùn)練數(shù)據(jù)中的事實(shí)數(shù)據(jù)子集保持一致。為此,我們開發(fā)了一種知識(shí)探測(cè)技術(shù),利用 Llama 3 的 in-context 能力。數(shù)據(jù)生成過程包括以下步驟:
1、從預(yù)訓(xùn)練數(shù)據(jù)中提取數(shù)據(jù)片段。
2、通過提示 Llama 3 生成一個(gè)關(guān)于這些片段(上下文)的事實(shí)問題。
3、采樣 Llama 3 關(guān)于該問題的回答。
4、以原始上下文為參照,以 Llama 3 為裁判,評(píng)估生成的回答的正確性。
5、以 Llama 3 為裁判,評(píng)估生成回答的信息量。
6、對(duì)于 Llama 3 模型在多個(gè)生成過程中提供的信息雖多但內(nèi)容不正確的回答,使用 Llama 3 生成拒絕回答的內(nèi)容。
我們使用知識(shí)探測(cè)生成的數(shù)據(jù)來鼓勵(lì)模型只回答它知道的問題,而拒絕回答它不確定的問題。此外,預(yù)訓(xùn)練數(shù)據(jù)并不總是與事實(shí)一致或正確。因此,我們還收集了一組有限的標(biāo)注事實(shí)性數(shù)據(jù),這些數(shù)據(jù)涉及與事實(shí)相矛盾或不正確的陳述。
最后,Karpathy 表示,這種參差不齊的智能問題值得注意,尤其是在生產(chǎn)環(huán)境中。我們應(yīng)該致力于讓模型只完成他們擅長(zhǎng)的任務(wù),不擅長(zhǎng)的任務(wù)由人類及時(shí)接手。