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