肖俊輝,孫 麗,冉國翔,朱榮清,陳鏡宇,張?zhí)煲?/p>
(東南大學(xué)成賢學(xué)院電子與計算機(jī)工程學(xué)院,南京 210000)
本項目的靈感來源于QQ群中的群聊機(jī)器人小冰,其功能包含入群歡迎、提醒打卡、簡單的游戲交互等,那么我們能否創(chuàng)造一個功能更加完善、更加類似人類、更加貼合特定群聊特色的(個性化的)機(jī)器人加入群聊之中呢?一個對計算機(jī)編程了解甚少的人又如何能夠在群聊中擁有自己所需要的機(jī)器人呢?于是我們便計劃開發(fā)一個平臺,使得更多的人能夠通過低代碼甚至無代碼的簡單方式獲取和培養(yǎng)個性化的聊天機(jī)器人,旨在將本技術(shù)簡單化、日?;?,帶入人們的日常生活。
經(jīng)過多方渠道考察,從1950 年開始,隨著聊天機(jī)器人相關(guān)研究的不斷發(fā)展,已有眾多聊天機(jī)器人產(chǎn)品相繼面世,目前的熱點便是2022年11 月30 日由美國OpenAI 公司發(fā)布的聊天機(jī)器人程序ChatGPT,其為人工智能技術(shù)驅(qū)動的自然語言處理工具,能夠通過學(xué)習(xí)和理解人類的語言來進(jìn)行對話,還能根據(jù)聊天的上下文進(jìn)行互動,真正像人類一樣來聊天交流。這一里程碑式的技術(shù)革命便是深度學(xué)習(xí)應(yīng)用越來越廣泛,技術(shù)越來越成熟的體現(xiàn),其核心通過機(jī)器來模仿人類的對話內(nèi)容和習(xí)慣,對聊天輸入的內(nèi)容做出決策和判斷,給予相應(yīng)的回應(yīng)。
現(xiàn)如今國內(nèi)外雖已出現(xiàn)眾多的聊天機(jī)器人產(chǎn)品,但都在個性化和簡便性方面有所不足,導(dǎo)致目前大部分聊天機(jī)器人還是需投入到客服環(huán)境中使用,因此如果實現(xiàn)了聊天機(jī)器人個性化和簡便性的突破,便可走進(jìn)普通人的日常生活,小到供人消遣娛樂、排憂解難,大到協(xié)助公司部門進(jìn)行人事管理、甚至能夠做到24 小時不間斷提供高質(zhì)量人性化服務(wù)等,以其個性化程度進(jìn)軍各行各業(yè),將擁有巨大的市場潛力。
本項目計劃開發(fā)一個基于深度學(xué)習(xí)的聊天機(jī)器人自動化搭建平臺的軟件產(chǎn)品,試圖在上述技術(shù)方面有所突破,彌補現(xiàn)階段QQ小冰在群聊趣味性、個性化上的不足,以低代碼甚至無代碼形式對機(jī)器人進(jìn)行操作。本項目產(chǎn)品與QQ小冰的功能對比見表1。
表1 本項目與QQ小冰功能對比
軟件總共分為三個系統(tǒng),如圖1所示,包括聊天數(shù)據(jù)收集系統(tǒng)、聊天回復(fù)系統(tǒng)和自動化訓(xùn)練系統(tǒng)。
圖1 總體架構(gòu)
2.1.1 聊天數(shù)據(jù)收集系統(tǒng)
通過Mirai框架,運用Http技術(shù)[1],使得QQ能與軟件連接,可以自動將聊天記錄生成一個“問—答”的詞庫,其中對數(shù)據(jù)集過濾方式包括:用戶自定義策略、常用的無用語句、敏感隱晦字眼分析。最后根據(jù)詞庫鏈生成訓(xùn)練用語料集。
2.1.2 聊天回復(fù)系統(tǒng)
同樣通過Mirai 框架,讓QQ 群或者私聊作為一個聊天室的載體,可以收集數(shù)據(jù)的同時,使用訓(xùn)練的模型給出特定的回答,并回復(fù)在群聊中,系統(tǒng)功能架構(gòu)如圖2所示。
圖2 收集/回復(fù)系統(tǒng)功能架構(gòu)
2.2.1 數(shù)據(jù)預(yù)處理
因為群聊內(nèi)的聊天有時候會出現(xiàn)上文不接下文的情況,此時如果直接將聊天內(nèi)容原封不動地生成對話場景模型,將會使得模型上下文邏輯混亂。我們設(shè)計詞庫鏈的初衷就是為了能更好地生成對話場景。
每個回答均是上一個“問題”的“答案”和下一個回答的“問題”,“問題”和“答案”均有一個“出現(xiàn)頻率”的屬性,據(jù)此可以較好地模擬聊天的對話場景,生成對話模型。
2.2.2 進(jìn)行tokenize(標(biāo)記化)
在文本分割的步驟上,我們從傳統(tǒng)的詞向量[2]轉(zhuǎn)而使用了同為Transformer的BERT框架[3-4]的tokenize,能很好地應(yīng)對一詞多義的問題,從而提高模型對語言的理解能力,如圖3所示。
圖3 tokenize示意圖
2.3.1 切分訓(xùn)練集和測試集
讀取上一個步驟生成的預(yù)處理數(shù)據(jù),將它們按照一定比例劃分為訓(xùn)練集和測試集。
2.3.2 讀取預(yù)訓(xùn)練模型
群聊語料集對于訓(xùn)練一個模型來說還不夠龐大,所以本文使用GPT-2 預(yù)訓(xùn)練模型[5-6]來訓(xùn)練我們的模型。
2.3.3 自回歸訓(xùn)練
在強大的GPT-2 模型基礎(chǔ)上,我們采用自回歸訓(xùn)練方式,讓模型輸出能更加符合語料集的聊天場景,加強連續(xù)聊天能力,如圖4所示。
圖4 自回歸概念圖
2.4.1 模型訓(xùn)練指標(biāo)(loss)計算
在每一批次的訓(xùn)練中,通過前向傳播計算出模型的預(yù)測輸出和實際輸出,使用反向傳播算法計算出損失函數(shù)值(loss)以及對應(yīng)訓(xùn)練模型參數(shù)的梯度,同時進(jìn)行梯度裁剪[7],防止發(fā)生梯度爆炸,進(jìn)行一定次數(shù)的梯度積累后,根據(jù)梯度下降算法,更新模型的參數(shù),完成一輪訓(xùn)練。
2.4.2 生成困惑度最低模型(Perplexity)
困惑度可以被看作是一個語言模型中預(yù)測的不確定性大小的加權(quán)平均。在相同的測試數(shù)據(jù)集上,一般來說,困惑度越低,模型的性能就越好。
在一次訓(xùn)練中,通過對每個批次的loss值進(jìn)行加權(quán)平均就可以得到一次訓(xùn)練的loss值,在測試集上使用同樣的算法得出測試loss值后,與最佳測試loss 值進(jìn)行比較,低于最佳測試loss 值的將保存,在每輪訓(xùn)練中不斷更新與迭代困惑度最低模型,如圖5所示。
圖5 生成困惑度最低模型邏輯
在本文的多次測試中,有時候困惑度低,模型的生成效果不一定會越好,所以最后采用loss 收斂來判斷訓(xùn)練結(jié)束,loss 值穩(wěn)定且不再下降則訓(xùn)練完成,如圖6和圖7所示。
圖6 訓(xùn)練初期loss值變化
圖7 訓(xùn)練后期loss值變化
軟件操作流程如圖8所示。
圖8 軟件操作流程
圖9 功能列表
首先進(jìn)行收集系統(tǒng)測試,添加群聊“add learning”,開始記錄“l(fā)earning”,如圖10 所示,收集一段時間后得足量數(shù)據(jù),進(jìn)行數(shù)據(jù)預(yù)處理,如圖11所示。
圖10 收集系統(tǒng)測試
圖11 數(shù)據(jù)預(yù)處理測試
將生成的語料集置于訓(xùn)練環(huán)境進(jìn)行模型訓(xùn)練,如圖12 所示,注意關(guān)注loss 值浮動幅度,等待訓(xùn)練結(jié)束,如圖13 所示。訓(xùn)練完成后將模型重新加載至機(jī)器人內(nèi)部,如圖14所示。
圖12 模型訓(xùn)練測試
圖13 訓(xùn)練Loss可視化測試
圖14 訓(xùn)練模型加載測試
本文詳細(xì)介紹了一個基于深度學(xué)習(xí)的聊天機(jī)器人自動化平臺,該平臺旨在為普通用戶提供一個親民簡單的方式來構(gòu)建個性化的聊天機(jī)器人,從而將這項技術(shù)更廣泛地應(yīng)用于日常生活。所設(shè)計的平臺分為“收集系統(tǒng)”“回復(fù)系統(tǒng)”“訓(xùn)練系統(tǒng)”三個模塊,三個模塊相互分離,方便用戶根據(jù)需求靈活地選擇和使用。
“收集系統(tǒng)”負(fù)責(zé)連接群聊,自動收集聊天記錄并生成相應(yīng)的問答詞庫。經(jīng)過過濾無用信息和敏感內(nèi)容后,將收集到的聊天數(shù)據(jù)用于訓(xùn)練語料集。而“回復(fù)系統(tǒng)”則負(fù)責(zé)在群聊中使用訓(xùn)練好的模型或收集的詞庫進(jìn)行智能回復(fù)?!坝?xùn)練系統(tǒng)”模塊則包括數(shù)據(jù)預(yù)處理、模型訓(xùn)練和模型優(yōu)化等環(huán)節(jié)。
通過這一設(shè)計,本文為普通用戶提供了一個易于操作、個性化的聊天機(jī)器人搭建平臺。這不僅有利于推動人工智能技術(shù)在日常生活中的應(yīng)用,還能滿足各種不同場景的需求。在未來的研究中,我們將不斷改進(jìn)和優(yōu)化本平臺的功能和性能,以滿足用戶不斷增長的需求,推動聊天機(jī)器人領(lǐng)域的發(fā)展。