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