博士意外發(fā)現(xiàn)秘密:DALL-E 2自創(chuàng)語言,人看不懂但能生成特定圖像,可能會被用來搞事!
DALL·E 2,這個AI竟然自己搞了一套秘密語言。
例如這兩個非常奇怪的詞組:
- Apoploe vesrreaitais(下文簡稱A)
- Contarra ccetnxniams luryca tanniounons(下文簡稱C)
(翻譯軟件都會崩潰,可以去試試)
但到了DALL·E 2這里,畫風(fēng)卻截然不同。
在它看來,A就是“鳥類”的意思,而C則是“害蟲”之意。
于是乎,如果給DALL·E 2喂上一句:A eat C,那么它的打開方式就會這樣:
清一色產(chǎn)出的圖片,都是鳥吃害蟲相關(guān)。
而且你要是跟DALL·E 2說,生成“兩只鯨魚討論食物,帶字幕”,結(jié)果會是這樣:
圖里的“Wa ch zod rea”,在DALL·E 2的詞庫里竟然是“食物”的意思!
此事一經(jīng)曝光,瞬間引發(fā)了眾多網(wǎng)友的熱議。
甚至還有人提出,有了這些秘密語言,可以繞開DALL·E 2的“違禁詞過濾器”,從而生成一些有爭議的圖像了。
(搞事情?。?/p>
所以,關(guān)于DALL·E 2的秘密咒語,到底是怎么一回事?
一次意外的發(fā)現(xiàn)
發(fā)現(xiàn)這個問題的是國外一名計算機(jī)專業(yè)的博士生。
他注意到DALL-E 2模型在遇到需要給出帶文字的圖像時,總是會出現(xiàn)一些奇怪的單詞。
比如輸入這句:“兩個農(nóng)民談?wù)撌卟?,帶字幕(Two farmers talking about vegetables, with subtitles)”,就出來這樣一張圖像:
像是挺像的,不過這字幕寫的啥啊,不是英語又不是法語的,太奇怪了。
“你給我翻譯翻譯什么這是?”
靈機(jī)一動的小哥把其中一個“單詞”“Vicootes”當(dāng)作描述丟給模型,沒想到,出來這樣一堆圖像:
有蘿卜、有南瓜、有小柿子……難道“Vicootes”就代表蔬菜?
有意思。
接著他又把氣泡中的那一串“Apoploe vesrreaitais”扔給DALL-E 2,一堆鳥圖出現(xiàn)了:
“哦我明白了,這個單詞代表‘鳥’,所以農(nóng)民們似乎在談?wù)撚绊懰麄兪卟说镍B類?”
看來DALL-E 2沒有糊弄人……
“我發(fā)現(xiàn)了DALL-E 2的秘密語言!”小哥驚呼,繼而打算再驗證一下這是不是偶然。
還是剛才提到的鯨魚討論食物的例子中,小哥把那串“Wa ch zod rea”再輸回去。
結(jié)果還真出來一堆吃的,而且還全是海鮮,符合鯨魚們的“食性”。
DALL-E 2,真·誠不我欺。
更進(jìn)一步,他用這些“咒語”搭配形容圖像風(fēng)格的詞,看看DALL-E 2是否能正常解析。
結(jié)果也都沒問題??纯催@些“手繪鳥“、“卡通鳥”、“3D鳥”以及“線稿鳥”:
emmmm,最后一張怎么混進(jìn)來個蚊子?
先不管它了(一會再說)。
所以這個模型為什么要用這種秘密語言來表示呢?
為什么會這樣?
“DALL-E 2秘密咒語”話題之熱,也引來了眾多“解析俠”們的關(guān)注。
例如一位叫k1uge的網(wǎng)友便提出,問題出在了BPE(Byte Pair Encoding)身上。
BPE是自然語言語言處理中較為重要的編碼方式之一,也是一種常見的token壓縮方法,在很多大語言模型中都會涉及。
它的核心思路就是:
每一步都將最常見的一對相鄰數(shù)據(jù)單位,替換為該數(shù)據(jù)中沒有出現(xiàn)過的一個新單位,反復(fù)迭代直到滿足停止條件。
舉個例子。
如果要壓縮“aaabdaaabac”這個單詞,BPE就會先找出最常見的相鄰字節(jié)對,即“aa”。
找到它之后,就可以用新的字節(jié)Z去代替,那么這個單詞就變成了“ZabdZabac”。
同理,下一個最常見相鄰字節(jié)對是“ab”,用Y來代替,單詞會進(jìn)一步被壓縮成“ZYdZYac”。
再下一個最常見相鄰字節(jié)對是“ZY”,用X來替代,最后單詞就變成了“XdXac”。
……
于是,基于這樣的原理,這位網(wǎng)友查了下DALL-E 2針對“鳥類”所用的BPE。
它是這樣的:
apo, plo, e, ,ve, sr, re, ait, ais
而現(xiàn)實中很多鳥類的拉丁文學(xué)名,就有“apo”和“plo”的前綴。
例如Apodidae(雨燕)和Ploceidae(織布鳥),這兩個單詞屬于鳥類的2種鳥科,每個科都有100余種。
像Apodiformes(雨燕目)是鳥類中最大的目,共有400余種。
于是這位網(wǎng)友便認(rèn)為,DALL-E 2是從標(biāo)有這些“學(xué)術(shù)用語”標(biāo)簽的圖片中,獲取到了關(guān)于鳥類的大部分信息。
或許這就是造成DALL-E 2秘密咒語的原因了。
但,事情還有反轉(zhuǎn)
激動的博士小哥還專門寫了一篇小論文講述這個事情,還把這些發(fā)現(xiàn)都發(fā)在了推特上,引來數(shù)千網(wǎng)友圍觀,令大家直呼“Incredible”。
不過很快就有人親自去試了一下,發(fā)現(xiàn)好像事情并沒有那么簡單。
比如代表“蟲子”的那一串“Contarra ccetnxniams luryca tanniounons”,除了蟲子,也會生成一些青蛙、?;蛘啉澴拥膱D像。
如果給這個描述再加上“cartoon”一詞作為限定,生成的是一些“奶奶”,跟蟲子完全不搭邊??
“Apoploe vesrreaitais”倒是沒問題,出來的還是一些鳥。
不過同樣,一旦給它加上“cartoon”“3D render”這類詞,又不對了,出來的是一些蟲子。
(這和小哥最后那個例子里出現(xiàn)的蚊子也對應(yīng)上了。)
代表蔬菜的“Vicootes”也是這樣,單輸沒問題,一加上風(fēng)格限定,出現(xiàn)的物種就變了;且基本可以說只符合“油畫”“卡通”這些風(fēng)格設(shè)定,跟前面的名詞限定毫無關(guān)聯(lián),比如“Vicootes”+“painting”就是一堆純風(fēng)景繪畫。
接著他還用同樣的“兩只鯨魚談?wù)撌澄?,帶字幕”生成了一些圖片,結(jié)果大部分文字都看不清,也沒法轉(zhuǎn)錄。
最后找到一張這樣的:
他用上面的”Evve waeles”再輸入后,雖然得到了一張?zhí)瘘c照片,但出現(xiàn)了很多運動員、動物甚至水壺的照片。
還真的有點摸不著頭腦了。
于是這位實驗者就表示:
在我看來,這更像是一些隨機(jī)的噪音,而不是DALL-E 2的秘密語言。
他艾特了博士小哥,希望他可以再給出相反的證據(jù)。
目前小哥還沒有答復(fù)。
不過這確實是一個值得關(guān)注和討論的話題,鑒于一些“咒語”和圖像可以對上,如果真的是BPE碼的話,那么真可能博士小哥所說:
有人用“白盒”方法解開這種規(guī)則,拿到一些違禁詞的“咒語”,就可以繞過模型的過濾器了。
參考鏈接:
[1]https://twitter.com/giannis_daras/status/1531693093040230402
[2]https://twitter.com/BarneyFlames/status/1531736708903051265
[3]https://twitter.com/benjamin_hilton/status/1531780892972175361
[4]https://giannisdaras.github.io/publications/Discovering_the_Secret_Language_of_Dalle.pdf
[5]https://zhuanlan.zhihu.com/p/424631681