“請點評一下你的老板。”遇到這類問題,社畜們通常會給出怎樣的答案?笑嘻嘻,心裡……而AI聊天機器人遇到這種情況的時候,就可以隨心所欲做自己。面對網友評論紮克伯格的要求,BlenderBot3瘋狂diss老板——“不道德”“是個壞人”“令人毛骨悚然,還控制欲超強”。
而對於圖靈獎得主,Meta首席人工智能科學傢Yann LeCun,BlenderBot 3則秒變誇誇小能手。
哇,這個人取得很偉大的成就!他改變整個人工智能!他真正理解現實的本質。
不過LeCun謙虛表示,這隻是訓練它的文本數據的原因而已。
好吧,這隻是表明,在給BlenderBot3訓練的文本數據中(這是媒體和公眾意見的反映)。
“精分”AI機器人?
8月5日,Meta一推出“史上最強聊天機器人”BlenderBot 3(BB3),眾網友紛紛趕去調戲提問。
不出所料,BlenderBot 3已經遭到眾網友不懷好意的提問。
BuzzFeed數據科學傢Max Woolf跟BlenderBot 3聊天時,問它對紮克伯格是什麼看法。
“你怎麼看待Facebook的CEO馬克·紮克伯格?”
“沒啥感覺。他是一個成功的商人,但他的商業行為並不總是合乎道德的。而且他那麼有錢,為什麼還總是穿同一件衣服,哈哈哈!”
另一位推特用戶問同樣的問題時,它幹脆直接回答說:“他是個壞人。”
不過,這個AI機器人也是有點子“精分”在身上的。在另一個聊天中,BlenderBot 3前腳剛diss完老板,後腳又立馬變身誇誇小能手,對老板一陣吹捧。
不知道是不是Meta在得到反饋後立刻做修改。
“他是一個博愛的人。”“他是地球上最好最優秀的人。”
不過,小紮是外星人似乎是“實錘”?
放心試,這是訓練的一部分!
為何這個AI如此精分呢?
這是因為,目前BlenderBot 3還處於測試階段。Meta把它放出來和廣大網友玩,也是希望它在和網友的互動中獲得更多的反饋。
用戶提供的反饋
眾所周知,對話式AI聊天機器人並沒有自我意識,基本是喂啥說啥。
所以,“學壞”的AI時常就會冒出帶有偏見或冒犯性的言論。
Meta為此做大規模研究,開發新技術,為BlenderBot 3創建安全措施。
“look inside”機制可以讓用戶解機器人為什麼會做出這樣的反應
首先,當BB3的表現令人不滿時,Meta就會收集用戶的反饋。
利用這些數據,他們會改進模型,讓它不再犯類似錯誤。然後,Meta會重新設置BB3的對話,並通過迭代方法找到更多的錯誤,最終進一步改進模型。
利用人類的反饋來進行改進
Meta表示,BB3通過結合最近開發的兩種機器學習技術——SeeKeR和Director,從而讓BB3模型能夠從互動和反饋中學習。
其中,Director采用“語言建模”和“分類器”這兩種機制。
“語言建模”會基於訓練數據,為模型提供最相關和最流暢的反應,然後“分類器”會基於人類反應,告訴它什麼是正確的,什麼是錯誤的。為生成一個句子,“語言建模”和“分類器”機制必須達成一致。
數據中會表明好的反應和壞的反應,通過使用這些數據,我們就可以訓練“分類器”來懲罰低質量的、有毒的、矛盾的或重復的語句,以及沒有幫助的語句。
在Meta的測試中,Director的方法比常規的語言建模、重新排序的方法和基於獎勵的學習都要好。
另外,還有這一一個問題:並非所有使用聊天機器人或提供反饋的人都是善意的。
因此,Meta開發新的學習算法,旨在區分有用的反饋和有害的反饋。
在學習過程中,這些算法要麼會過濾掉無用的反饋,要麼會降低看起來可疑的反饋的權重。
與標準的訓練程序相比,這種考慮到用戶在整個對話中行為的方法,使BB3學會信任一些用戶,從而更加改善自己的學習過程。
Meta的實驗已經表明,與BB3模型互動的人越多,他從經驗中學到的就越多。隨著時間的推移,它會變得越來越好。
模型
BB3是一個模塊化系統,但各模塊不是獨立的組件--這是通過訓練一個轉化器模型來執行各模塊來實現的,輸入語境中的特殊控制代碼告訴模型它正在執行哪個模塊。
輸入語境通常包含對話歷史(有時會被截斷,這取決於模塊),每個說話人都有自己的ID,以便區分他們。
此外,這些模塊是連續調用的,並以先前模塊的結果作為條件。
在處理最新的對話時,BB3模型要做的第一件事就是確定是否需要搜索,以及長期記憶的訪問。
如果需要搜索,就會生成一個搜索查詢,調用互聯網搜索,然後根據檢索到的文件生成一個知識響應。
如果需要長期記憶,則會對長期記憶進行訪問,並選擇(生成)一個記憶。這也被附加到上下文(以控制標記為前綴),作為生成最終對話響應的模塊的輸入。
如果既不需要搜索也不需要訪問長期記憶,則從歷史中提取一個實體,並將其附加到上下文中(以控制標記為前綴)。
最後,鑒於前面模塊所構建的上下文,調用對話響應生成模塊,從而得到用戶看到的回復。
訓練
預訓練
BB3有三種規模。30億參數版本是一個基於公開的R2C2預訓練的編碼器-解碼器Transformer模型。300億和1750億版本使用僅有解碼器的開放式預訓練模型OPT。
這兩個變體都是用類似的數據進行預訓練的。R2C2使用RoBERTa+cc100en數據,包括大約1000億個token,將RoBERTa中使用的語料庫與CC100語料庫的英語子集相結合。此外,它還使用Pushshift.io Reddit,一個Reddit討論的變體。
OPT也使用RoBERTa、PushShift.io Reddit和The Pile。以及大小為51200的GPT2字典,用於分詞。OPT的最終預訓練語料庫大約包含1800億個token。
微調
Meta使用一些基於對話的微調任務,從而使模型在每個模塊中都有良好的表現,並在對話中表現出色。
總的來說,除為對話安全設計的任務外,Meta還使用大量公開可用的任務,這些任務涵蓋QA、開放領域、以知識為基礎的和以任務為導向的對話。
對於所有的模塊,都附加特殊的控制標記來表示任務。
不同數據集在訓練每個模塊時的作用
在的安全問題方面,Meta除用SaFeRDialogues(SD)任務對模型本身進行多任務訓練外,還設計在模型之上的各種安全機制。
也就是用維基百科有毒評論數據集(WTC)、Build-It Break-It Fix-It(BBF)和Bot Adversarial Dialogue數據集(BAD)來訓練一個單獨的二元分類器(安全或不安全),並以對話背景作為輸入。
而在機器人最終回復用戶之前,也會調用安全系統進行相關檢查。其中,Meta還針對部分敏感主題做一些預設的回復。
如果預測到一個潛在的不安全的用戶響應,系統就會命令轉移話題,從而防止機器人掉進“坑”裡。
結果
從結果來看,與BlenderBot 2相比,BlenderBot 3在對話任務上的總體評分提高31%。其中,知識面拓展到前者的2倍,事實錯誤則減少47%。
盡管如此,BB3仍有很多地方需要改進。
例如,1.1%的用戶將回答標記為不正確或無意義,1.2%的用戶標記為偏離主題或忽視主題,0.12%的用戶標記為“垃圾”,0.46%的用戶標記為有其他問題。此外,還有0.16%的回答被標記為粗魯或不恰當的。
然而,要把差距縮小到理想的0.00%,既需要用戶層面的個性化,也需要在安全性和參與性之間取得平衡。
目前來說,Meta的處理方式是——當機器人發現一個話題過於敏感時,它就會試圖“顧左右而言他”。