今天小編分享的科學經驗: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^WU gbT
顯然是回答錯誤的。
對于這一意外發現,Karpathy 表示,原則上模型可以通過「變體選擇器」variation selectors 中找到隐藏的信息并按照説明進行操作。但由于這種編碼界面方法可能過于具體,需要用提示來解釋它。
他提到了一個方法,那就是将其收錄到預訓練中。這些知識注入到模型參數,模型就能夠在沒有提示的情況下解碼這種特定的編碼。