DALL·E 2,這個AI竟然自己搞了一套秘密語言。
例如這兩個非常奇怪的詞組:
(翻譯軟體都會崩潰,可以去試試)
但到了DALL·E 2這裡,畫風卻截然不同。
在它看來,A就是「鳥類」的意思,而C則是「害蟲」之意。
於是乎,如果給DALL·E 2餵上一句:A eat C,那麼它的打開方式就會這樣:
清一色產出的圖片,都是鳥吃害蟲相關。
而且你要是跟DALL·E 2說,生成“兩隻鯨魚討論食物,帶字幕”,結果會是這樣:
圖裡的“Wa ch zod rea”,在DALL·E 2的詞庫裡竟然是“食物”的意思!
此事一曝光,瞬間引發了眾多網友的熱議。
甚至還有人提出,有了這些秘密語言,可以繞過DALL·E 2的“違禁詞過濾器”,從而生成一些有爭議的圖像了。
(搞事情!)
所以,關於DALL·E 2的秘密咒語,到底是怎麼一回事?
發現這個問題的是國外一名電腦專業的博士生。
他注意到DALL-E 2模型在遇到需要給出帶有文字的圖像時,總是會出現一些奇怪的單字。
例如輸入這句話:“兩個農民談論蔬菜,帶字幕(Two farmers talking about vegetables, with subtitles)”,就出來這樣一張圖像:
#像是挺像的,不過這字幕寫的啥啊,不是英語又不是法語的,太奇怪了。
「你給我翻譯翻譯什麼這是?」
靈機一動的小哥把其中一個「單字」「Vicootes」當作描述丟給模型,沒想到,出來這樣一堆圖:
有蘿蔔、有南瓜、有小柿子…難道「Vicootes」就代表蔬菜?
有意思。
接著他又把氣泡中的那一串「Apoploe vesrreaitais」丟給DALL-E 2,一堆鳥圖出現了:
「哦我明白了,這個詞代表'鳥',所以農民們似乎在談論影響他們蔬菜的鳥類?」
看來DALL-E 2沒有糊弄人…
“我發現DALL-E 2的秘密語言了!」小哥驚呼,繼而打算再驗證一下這是不是偶然。
還是剛才提到的鯨魚討論食物的例子中,小哥把那串「Wa ch zod rea」再輸回去。
結果還真出來一堆吃的,而且還全是海鮮,符合鯨魚們的「食性」。
DALL-E 2,真·誠不我欺。
更進一步,他用這些「咒語」搭配形容圖像風格的詞,看看DALL-E 2是否能正常解析。
結果也都沒問題。看看這些「手繪鳥「、「卡通鳥」、「3D鳥」以及「線稿鳥」:
emmmm,最後一張怎麼混進來個蚊子?
先不管它了(一會兒再說)。
所以這個模型為什麼要用這種秘密語言來表示呢?
「DALL-E 2秘密咒語」話題之熱,也引來了眾多「解析俠」們的關注。
例如一位叫k1uge的網友便提出,問題出在了BPE(Byte Pair Encoding)身上。
BPE是自然語言語言處理中較為重要的編碼方式之一,也是常見的token壓縮方法,在許多大語言模型中都會涉及。
它的核心想法是:
每一步都將最常見的一對相鄰資料單位,替換為該資料中沒有出現過的一個新單位,反覆迭代直到滿足停止條件。
舉例。
如果要壓縮「aaabdaaabac」這個單字,BPE就會先找出最常見的相鄰位元組對,也就是「aa」。
找到它之後,就可以用新的位元組Z去代替,那麼這個單字就變成了「ZabdZabac」。
同理,下一個最常見相鄰位元組對是“ab”,用Y來代替,單字會進一步被壓縮成“ZYdZYac”。
再下一個最常見相鄰位元組對是“ZY”,用X來替代,最後單字就變成了“XdXac”。
……
於是,基於這樣的原理,網友查了下DALL-E 2針對「鳥類」所用的BPE。
它是這樣的:
apo<span style="color: rgb(89, 89, 89); margin: 0px; padding: 0px; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0);">,</span> plo<span style="color: rgb(89, 89, 89); margin: 0px; padding: 0px; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0);">,</span> e<span style="color: rgb(89, 89, 89); margin: 0px; padding: 0px; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0);">,</span> <span style="color: rgb(89, 89, 89); margin: 0px; padding: 0px; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0);">,</span>ve<span style="color: rgb(89, 89, 89); margin: 0px; padding: 0px; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0);">,</span> sr<span style="color: rgb(89, 89, 89); margin: 0px; padding: 0px; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0);">,</span> re<span style="color: rgb(89, 89, 89); margin: 0px; padding: 0px; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0);">,</span> ait<span style="color: rgb(89, 89, 89); margin: 0px; padding: 0px; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0);">,</span> ais
而現實中許多鳥類的拉丁文學名,就有「apo」和「plo」的前綴。
例如Apodidae(雨燕)和Ploceidae(織布鳥),這兩個單字屬於鳥類的2種鳥科,每個科都有100餘種。
像Apodiformes(雨燕目)是鳥類中最大的目,共有400餘種。
於是這位網友便認為,DALL-E 2是從標有這些「學術用語」標籤的圖片中,獲取到了關於鳥類的大部分資訊。
或許這就是造成DALL-E 2秘密咒語的原因了。
激動的博士小哥還專門寫了一篇小論文講述這個事情,還把這些發現都發在了推特上,引來數千網友圍觀,令大家直呼「Incredible」。
不過很快就會有人親自去試了一下,發現好像事情並沒有那麼簡單。
例如代表“蟲子”的那一串“Contarra ccetnxniams luryca tanniounons”,除了蟲子,也會產生一些青蛙、牛或鴿子的圖像。
如果給這個描述再加上“cartoon”一詞作為限定,生成的是一些“奶奶”,跟蟲子完全不搭邊? ?
「Apoploe vesrreaitais」倒是沒問題,出來的還是一些鳥。
不過同樣,一旦給它加上「cartoon」「3D render」這類詞,又不對了,出來的是一些蟲子。
(這和小哥最後那個例子裡出現的蚊子也對應上了。)
代表蔬菜的「Vicootes」也是這樣,單輸沒問題,一加上風格限定,出現的物種就變了;且基本上可以說只符合“油畫”“卡通”這些風格設定,跟前面的名詞限定毫無關聯,比如“Vicootes” “painting”就是一堆純風景繪畫。
接著他還用同樣的「兩隻鯨魚談論食物,帶字幕」生成了一些圖片,結果大部分文字都看不清,也沒法轉錄。
最後找到一張這樣的:
他用上面的」Evve waeles」再輸入後,雖然得到了一張甜點照片,但出現了很多運動員、動物甚至水壺的照片。
真的有點摸不著頭腦了。
於是這位實驗者就表示:
在我看來,這更像是一些隨機的噪音,而不是DALL-E 2的秘密語言。
他艾特了博士小哥,希望他可以再給出相反的證據。
目前小哥還沒有答覆。
不過這確實是一個值得關注和討論的話題,鑑於一些「咒語」和圖像可以對上,如果真的是BPE碼的話,那麼真可能博士小哥所說:
有人用“白盒”方法解開這種規則,拿到一些違禁詞的“咒語”,就可以繞過模型的過濾器了。
參考連結:
[1]https://twitter.com/giannis_daras/status/1531693093040230402
[2]https ://twitter.com/BarneyFlames/status/1531736708903051265
[3]https://twitter.com/benjamin_hilton/status/1531780892972175361
#Bgisannias# .io/publications/Discovering_the_Secret_Language_of_Dalle.pdf[5]https://zhuanlan.zhihu.com/p/424631681以上是博士意外發現秘密:DALL-E 2自創語言,人看不懂但會產生特定影像,可能會被用來搞事!的詳細內容。更多資訊請關注PHP中文網其他相關文章!