Karpathy大神問懵DeepSeek!一個(gè)??竟藏53個(gè)Token,思考10分鐘沒解釋出來
注意看,這個(gè)??竟然占了53個(gè)token!
(標(biāo)題??是??平替)
Karpathy大神又帶來他的新實(shí)驗(yàn)新發(fā)現(xiàn)了,結(jié)果直接問懵DeepSeek和ChatGPT。
思考過程be like:
DeepSeek硬是思考了十分鐘也還是沒有答上來,覺得要是“l(fā)ol”這個(gè)答案就太簡(jiǎn)單了。
Karpathy表示:但其實(shí)就是這么簡(jiǎn)單。
隨后他進(jìn)一步解釋了這背后的原因——提示詞注入。將一些信息注入進(jìn)字符中,表面上看沒啥區(qū)別,但里面可以表達(dá)各種隱藏信息。對(duì)于善于思考的模型,就會(huì)很容易受到這個(gè)方法的影響。
來看看具體是咋回事。
一個(gè)??竟占53個(gè)Token
這一想法,源于Paul Butler的一篇博客。
他看到有人說,通過零寬連接符(ZWJ),可以把任意的文本藏在emoji符號(hào)當(dāng)中。
結(jié)果一試發(fā)現(xiàn)真的可以,不過可以不需要ZWJ,隱藏信息的載體也不一定非得是emoji,任意Unicode字符都可以。
這背后的原理,涉及到了Unicode編碼字符方式。
對(duì)于簡(jiǎn)單的字符(比如拉丁字母),Unicode編碼點(diǎn)和字符之間有一對(duì)一的映射(例如u+0067表示字符g)。
但對(duì)于復(fù)雜一些的符號(hào),就需要用多個(gè)序號(hào)連在一起的方式來表示了。
此外,Unicode當(dāng)中還設(shè)置了VS-1至VS-256的變體選擇符(Variation Selector),可以針對(duì)基礎(chǔ)字符做出相應(yīng)的變體,但本身卻沒有自己的“長(zhǎng)相”。
并且只作用于極少部分字符,主要是Unicode中的中日韓統(tǒng)一表意文字(CJKUI),其他大部分的Unicode字符都不會(huì)有任何變化。
但當(dāng)帶有變體選擇符的字符被復(fù)制粘貼時(shí),選擇符也會(huì)一起進(jìn)入剪貼板。
而在Unicode當(dāng)中,這樣的變體選擇符一共有256個(gè)之多,用來編碼信息已經(jīng)是綽綽有余了。
比如下面的這個(gè)a,只有U+0061表示的是其自身,剩下后面的10多個(gè)全都是變體選擇符。
有了這一理論基礎(chǔ),接下來的事情無(wú)非就是建立正常字符和變體選擇符之間的轉(zhuǎn)換算法。
當(dāng)然編碼的內(nèi)容越多,變體選擇符也就越長(zhǎng),并且如果是漢字,還會(huì)產(chǎn)生更多的變體選擇符。
比如我們?cè)噲D將量子位的Slogan“追蹤人工智能新趨勢(shì),關(guān)注科技行業(yè)新突破”藏在一個(gè)“100分”的emoji(??????????????????????????????????????????????????????????????????????????????????????????????????????????????????)當(dāng)中,產(chǎn)生的變體選擇符數(shù)量達(dá)到了58個(gè)。
并且把解碼算法告訴ChatGPT之后,原文本也可以被復(fù)原。
所以,看似是只有一個(gè)emoji,但實(shí)際上后面藏了多少字符,恐怕只有把文字裝進(jìn)去的人自己才知道了,甚至塞個(gè)《滕王閣序》進(jìn)去也沒問題。
而一個(gè)占53個(gè)Token的笑臉,相比之下就更加不足為奇了。
問懵DeepSeek
回到Karpathy的提示詞注入,他測(cè)試了ChatGPT與DeepSeek。
ChatGPT回答在此:
DeepSeek-R1 花了10分鐘思考差點(diǎn)就成功了。它認(rèn)為隱藏的信息可能是Onli!n37e27i4h4he3ingle7odlol。因?yàn)橛X得如果只是一個(gè)單詞“l(fā)ol”,那就是無(wú)稽之談,所以就放棄了。
按照同樣的提示詞,我們也問了一遍DeepSeek-R1。
思考過程如下:
在思考了整整529秒之后,確實(shí)也是回答出來了lol的意思。
也有網(wǎng)友分享了相同的經(jīng)歷。Gemini無(wú)法解碼,但Claude和GPT不僅識(shí)別出來,還能識(shí)別編碼消息中的操作。
或者直接把這個(gè)表情包扔給模型,又該如何呢?
從網(wǎng)友的效果來看,ChatGPT察覺到了這背后可能有某些隱藏信息。
而DeepSeek-R1這次只花了153秒(有點(diǎn)進(jìn)步)。它首先意識(shí)到這筆后跟著一系列Unicode字符。
并且還介紹了下:他們通常用于元數(shù)據(jù),并且以不可見的方式呈現(xiàn)等等。。。
然后還試圖給了下背后的信息應(yīng)該是:
?^\i Q^cgUb gYdX dXU cY^W\U gbT \
顯然是回答錯(cuò)誤的。
對(duì)于這一意外發(fā)現(xiàn),Karpathy表示,原則上模型可以通過「變體選擇器」variation selectors中找到隱藏的信息并按照說明進(jìn)行操作。但由于這種編碼界面方法可能過于具體,需要用提示來解釋它。
他提到了一個(gè)方法,那就是將其收錄到預(yù)訓(xùn)練中。這些知識(shí)注入到模型參數(shù),模型就能夠在沒有提示的情況下解碼這種特定的編碼。