閆曉宇 彭蘇婷


摘? 要:隨著自然語言處理技術的發展,對話機器人以節省人工和易于嵌入等特點受到業界青睞。為了滿足在線教育的需求,本文提出的教育領域多輪對話機器人具備和用戶針對知識點進行深入對話的能力。本文介紹了此對話機器人的實現全流程:采取用戶模擬器生成教育領域語料,使用意圖識別和槽位填充實現自然語言理解,通過對話狀態追蹤和對話策略設計多輪對話邏輯。這為學生提供了答疑解惑的新渠道,為線上教育的智能創新帶來更多選擇。
關鍵詞:教育;對話機器人;多輪對話
Abstract: With the development of Natural Language Processing (NLP) technology, chatbots are favored for their advantages of labor saving and easy embedding. In order to meet the needs of online education, this paper proposes to design multi-turn chatbots with ability to conduct in-depth dialogue with users on knowledge points in the field of education. This paper introduces a lifecycle of realizing multi-turn chatbot: adopting user simulator to generate educational corpus, using intention recognition and slot filling to realize natural language understanding, and designing multi-turn dialogue logic through dialogue state tracking and dialogue policy. This chatbot provides students with a new way to solve their puzzles and brings more choices for intelligent innovation in online education.
Keywords: education; chatbot; multi-turn dialogue
1? ?引言(Introduction)
在傳統的教育模式中,學生會遇到層出不窮的學習難點,理想的情況是他們可以得到及時準確的幫助,但需要教師投入大量的時間與精力。教師在講授某門課程時需要解答的問題是有限的,這意味著他們的工作存在很大重復性。幸運的是隨著互聯網教育的興起,人工智能技術已經滲透教育行業的多個領域。目前,市場急需具備線上教學能力的產品來填補空白,既可以隨時為學生答疑解惑,又可以節省教師勞動力的對話機器人不失為一個好的選擇。
現今已上線的對話機器人有很多,從功能上大致可以分為兩類:非任務導向型對話機器人和任務導向型對話機器人。非任務導向型機器人以小冰為代表,旨在和用戶在開放域,即開放的話題空間中閑聊互動。任務導向型機器人以小度為例,旨在和用戶在封閉域,即有限的話題空間中完成特定任務,比如播放歌曲、查詢天氣等。任務導向型機器人多出現在生活領域,通過語音、文字等方式控制家居產品等,給用戶帶來智慧生活的體驗。但令人遺憾的是,這類機器人卻極少出現在教育領域。
雖然一些平臺和軟件也嵌入了簡單的對話機器人,但其任務設定較為簡單,大多只能完成單輪對話,即其僅能對用戶發出的最后一句話做出回應。此類對話機器人只具備問答功能而非對話功能,這顯然是不夠智能的。
本文提出的對話機器人具有多輪對話功能,它可以根據用戶對話歷史和當前的對話信息與用戶產生互動。另外,此對話機器人服務于教育領域,是一個可以在教育領域完成多輪對話的機器人,可以和用戶深入探討關于知識點的各種問題。它可以實時回答學生的問題,為學生減輕負擔,同時避免教師的重復勞動,更可以為學校和其他教育機構提供新鮮的學習方法,帶來新的學習選擇。
實現這一機器人的技術挑戰主要有三個:一是缺乏語料庫,獲得符合預期的教育領域語料庫是很困難的;二是設計合理清晰的多輪對話邏輯;三是大體量預訓練語言模型的工業部署。
2? ?相關工作(Related work)
要實現任務導向型機器人,學界和業界公認的經典方法是一種流水線(Pipeline)方法,該方法通過集成三個組件的功能使機器人完成對話,組件按順序分別是自然語言理解(NLU)、對話管理(DM)和自然語言生成(NLG)。
自然語言理解將用戶輸入的非結構化文本轉化為結構化信息,這一組件的功能實現經歷了漫長的技術演變。繼有限狀態機(FSM)、隱馬爾可夫模型(HMM)等方法之后,目前在特定的封閉域內實現自然語言理解具體可分為兩個關鍵任務:一個是意圖識別,判斷用戶語句的意圖;另一個是槽位填充,提取語句中的關鍵文本信息。
意圖識別屬于文本分類問題,在深度學習中這類技術產生了快速的更新迭代,包括基于卷積神經網絡的特征提取[1]、上下文機制[2]、記憶存儲機制[3]、注意力機制[4]。槽位填充就是命名實體識別(NER),它的本質是一個序列標注問題,即給文本中每一個字符打上標簽,提取文本中的槽值。其中槽是人為設定好的詞槽(例如鬧鐘時間),槽值是文本中出現的詞槽對應的值(例如上午十點)。深度學習中頗為經典的結構是論文[5]提出的兩種結構,一種是LSTM-CRF,另一種是Stack-LSTM。
意圖識別和槽位填充既可以作為兩個單獨的任務處理,也可以聯合處理。由于兩個任務之間存在較大的相關性,因此聯合建模的效果一般會更好。而2018年BERT[6]等預訓練模型出現以后,我們可以更方便地聯合處理意圖識別和槽位填充任務,本文的對話機器人同樣應用了這種方法。
根據對話歷史和當前輪次對話信息,對話管理組件記錄對話狀態并決定對話機器人生成何種回復,其包含兩個子組件:對話狀態追蹤(DST)和對話策略(DP)。對話狀態追蹤的任務是追蹤記錄用戶的對話歷史信息,有兩種實現方法可供選擇:一種是選取用戶的近幾輪對話信息,將其拼接后統一做自然語言理解,提取出意圖和槽值[7];另一種是根據自然語言理解每一輪的結構化信息作對話狀態的更新。對話策略的核心目標是根據DST的結果決定當前輪次如何回應用戶。其傳統的實現方法是基于規則設計,這在特定封閉域內的效果很好,但是缺乏通用性,在新的域內泛化能力差,故多領域的對話機器人需要手工設計大量規則使對話策略完備。雖然學術界有很多大膽的嘗試,不乏使用強化學習來替代基于規則的對話策略模型的算法,但其結果的穩定性和可解釋性仍待進一步研究。
自然語言生成將對話管理返回的結果用自然語言表達出來,是由結構化文本生成非結構化文本的過程。雖然現在生成式算法層出不窮,但業界仍然更青睞基于模板和規則的方法來保證任務驅動型對話機器人輸出文本的穩定性,本文的對話機器人也采用了這樣的方法。
3? ?提出的方法(Proposed method)
本文提出的教育領域多輪對話機器人的算法設計本質是工程問題,它采用了經典的流水線方法,其組件包括自然語言理解、對話管理和自然語言生成三部分。為了保證在知識點封閉域中回答的嚴謹性,自然語言生成組件僅用有限的模板就可以達到理想的效果,故本文不做過多介紹。
3.1? ?語料準備
雖然目前面向自然語言處理技術的開源語料庫很多,但滿足教育領域和多輪對話兩個條件的語料庫幾乎沒有。這為對話機器人工程實現帶來了巨大的困難,冷啟動是需要首先解決的問題。
解決這一問題的主流方法有兩個:通過眾包平臺獲取語料或者構建用戶模擬器生成模擬語料。眾包方法獲得的語料是由人工生成的,最符合自然語言處理的期望,但其成本造價較高,并且我們的機器人面向教育領域,眾包得到的語料還面臨內容不嚴謹、數據回流周期長和不滿足模型快速迭代需求的風險。因此我們選擇通過構建用戶模擬器來獲得語料。我們的用戶模擬器對每一次完整的對話會首先生成一個總體目標,這保證模擬器可以生成上下文連貫的用戶動作。這個用戶模擬器最終可以生成如圖1所示的語料,其展示了一個多輪的用戶對話。
教育領域的對話無非是圍繞知識點展開的,我們將知識點看作每個完整對話的討論主題,故我們設定對話將在知識點域這一封閉域中展開。我們將期望機器人能夠掌握的知識點列舉在一個知識點清單中,用戶模擬器的語料將圍繞這些知識點生成?;趯<抑R,我們定義了四種意圖:告知、詢問、比較和問候。對應于詞槽,我們賦予知識點七個屬性,包括名稱、定義、性質、應用、優缺點、實現工具、優化改進,用戶模擬器可以對知識點的這些屬性產生提問。
對于知識點域,設定用戶目標包括兩種詞槽類型:告知槽和詢問槽,這分別對應告知意圖和詢問意圖。其中告知槽在語料中對應有槽值,它是知識點的名稱,而知識點名稱也是我們在自然語言理解的槽位填充中需要識別出的實體,數據結構形如[‘知識點域,‘Inform,‘名稱,‘二次規劃]。而詢問槽沒有槽值對應,它對應知識點的其他六個屬性,于是我們得到六種詢問槽,數據結構形如[‘知識點域,‘Request,‘定義,‘]。另外,為了模擬現實生活中學生對知識點產生的疑問,我們增加了比較意圖,這使得用戶模擬器可以產生類似“二次規劃和支持向量機有什么聯系”的問題,其數據結構是[[‘知識點域,‘Inform,‘名稱,‘二次規劃],[‘知識點域,‘Compare,‘名稱,‘支持向量機]]。最后我們使用戶模擬器可以產生擬人的問候意圖,即生成一些簡單的問候語句,數據結構為[‘General,‘Greeting,‘none,‘]。
針對每個完整的對話,依據意圖和詞槽的排列組合可以生成用戶模擬器的總目標,每輪對話都會從還沒被完成的總目標中挑選出一些子目標來完成該輪對話,直至所有的總目標都被完成后該完整對話結束。
此用戶模擬器的優勢是可以根據需要生成任意數量的語料數據,并且可通過增加知識點清單中知識點的數量使機器人可以討論的知識點范圍擴大。我們共生成了7,000 條訓練數據、2,000 條驗證數據和2,000 條測試數據,每條數據都是一個完整的對話,每個完整的對話都包含多輪的用戶對話信息。
3.2? ?自然語言理解
自然語言理解在任務流水線中的作用是把非結構化文本轉化為結構化信息。其中要完成兩個主要任務:意圖識別和槽位填充,其分別屬于文本分類和序列標注任務。早期的深度學習方法將這兩部分用兩個模型分別處理,例如用TextCNN和Attention做意圖識別,用BiLSTM和CRF做槽位填充。但這樣做有一些顯而易見的缺陷,兩個模型疊加可能使最終結果出現誤差的概率增大。
雖然一直有學者嘗試意圖識別和槽位填充兩個任務的聯合訓練,但真正的突破出現在2018年BERT和GPT等預訓練模型出現之后。以BERT為例,它的語料庫由維基百科等數據集構成,網絡結構上沿用了Attention機制的Encoder部分,由12個頭的Attention層組成,并且通過MASK機制和NSP(Next Sentence Prediction)方法使模型分別學習到語料的詞級別和句級別的知識。這樣的設計使BERT可以完成各個類型的自然語言處理下游任務,包括句子的分類任務、閱讀理解任務、問答任務和序列標注任務。
BERT有很多中文預訓練版本,其中BERT-wwm[8]被廣泛使用,它努力保證了原BERT的訓練條件和模型結構,并針對中文詞匯特點做出改善,引入了wwm(whole word mask)方法,具體是BERT在MASK機制中不再遮蓋住單個中文字而是遮蓋整個中文詞組,這讓BERT學習到更多詞組的知識?;贐ERT-wwm提出的BERTNLU模型[9]以用戶模擬器構建的語料庫作為輸入,在模型的最后一層隱藏層后分別連接兩組不同的輸出層,兩個輸出層分別得到意圖識別和槽值填充的logist結果,經過后處理就可以得到最終的結果。本文介紹的機器人也采用這種方法完成自然語言理解任務,槽位填充可以識別出語料中的知識點名稱,意圖識別可以判斷語料中包含的意圖是否存在告知、詢問、比較、問候中的一個或多個。在訓練集上訓練得到的模型在測試集上的F1值可以達到0.92,這表明我們的自然語言理解組件的性能是滿足預期的。
BERT模型效果固然好,但其上億的模型參數也為工程部署帶來了不可忽視的負擔。為了解決這個問題,出現了許多輕量化的BERT模型,它們對原始的BERT做剪枝或者蒸餾等處理,以期BERT參數大量減少的同時其精度不會有大幅下降,甚至有些許提升。其中基于知識蒸餾的TinyBERT[10]構造十分精巧,效果也很顯著,遺憾的是該模型暫時只能處理英文文本。我們嘗試了可以處理中文文本的ALBERT[11]模型,它通過詞嵌入參數因式分解和隱藏層間參數共享的方法達到了BERT模型輕量化的目的,雖然模型的運算速度沒有提升,但其參數數量減少了十倍左右,并且模型精度在BLUE等數據集上沒有顯著下降。本文的機器人用ALBERT替代BERT來做預訓練模型,并用相同的訓練集訓練模型后,在測試集上得到的F1值同樣可以達到0.9以上的分數。但在人工確認模型輸出效果時,我們發現基于ALBERT的模型在意圖識別任務上效果沒有明顯波動,但在槽位填充任務上的表現卻不及BERT,我們分析這可能是參數共享帶來的副作用,12層隱藏層共用一組參數不可避免地使模型更難識別語料中字詞的信息,從而導致序列標注能力下降。
3.3? ?對話管理
在得到結構化的文本信息后,機器人要根據用戶對話歷史和當前的對話狀態做出恰當的反應。這一決策過程在對話管理組件中實現,因此對話管理可以被理解為對話機器人的大腦部件。更具體地來說,對話狀態追蹤組件記錄更新用戶的歷史對話狀態,對話策略組件決定提供何種反饋。
3.3.1? ?對話狀態追蹤
對話狀態追蹤通過不斷獲得用戶每一輪的對話信息,相應更新維護用戶的對話狀態,基本的數據結構為詞槽和槽值的組合。隨著深度學習的發展,學術界出現了一些對話狀態追蹤的端到端生成方法,例如TRADE算法以用戶歷史的幾輪對話信息作為模型輸入,輸出結果是用戶相應多輪的歷史對話狀態。這樣的方法將自然語言理解和歷史對話狀態更新整合在一起,省去了基于專家知識面向對話狀態追蹤的規則設計,但模型的輸出結果不能保證穩定可控的效果。而工業界多數采用穩定且易于部署的基于規則的方法,首先設定好需要維護的狀態包含哪些字段,再由每一輪對話獲得的結構化信息更新。這樣雖然需要一些人工來保證規則的完備,但在知識封閉域內的工作量不會很大并且效果是顯著的。
3.3.2? ?對話策略
對話策略也經歷了幾個階段的發展,由最初基于規則的方法,發展到基于部分可見馬爾可夫決策過程等基于統計的方法,最后是近期學術界青睞的強化學習等深度學習方法。
基于規則方法的ELIZA心理醫療聊天機器人就采用模板匹配的方法完成了對話策略,在當時它的出現引起了轟動,由此可見其對話效果是出人意料的。但基于規則的對話策略有擴展性差、需要強人工干預等缺點,而可擴展性差主要體現在意圖識別和槽位填充結果的不穩定性上。前面我們已經提到過,自然語言理解會識別出用戶對話中的意圖和相應詞槽對應的槽值。但在現實應用中,尤其是當對話機器人需要處理多個封閉域甚至是開放域的任務時,用戶的意圖、詞槽和對應的槽值是很難窮舉的。即用戶的對話中會出現自然語言理解組件識別不了的意圖和詞槽,例如當用戶和機器人在進行電影域內的談話時,用戶突然提及了一個機器人訓練集中沒出現過的電影名稱,這時機器人很難將這個電影名稱用槽位填充的方法識別出來,進而就不能和用戶產生關于該部電影的互動。為了解決這個問題,前文提到的TRADE算法利用拷貝網絡,提升了對不可窮舉的詞槽的識別能力。
部分可見馬爾可夫決策過程等基于統計的方法也取得了不錯的效果,此類算法摒棄了人工設計決策規則,但是面對較為復雜多變的狀態時無法獲得很好的效果。
與強化學習相關的一些算法也在學術界取得了進展[12],但強化學習應用到自然語言處理任務中還是較為困難的,因為語言的復雜性,我們很難設定合適的獎勵函數,所以這方面仍需學者們更進一步探索。
因為本文介紹的機器人被應用在教育領域,用戶的意圖和詞槽的槽值是可能窮舉的,尤其是僅針對某一門課程來設計機器人時。因此我們選用基于專家知識的模板設計,通過如圖2所示的邏輯架構使機器人可以進行多輪對話。對話策略組件首先會根據用戶的當前對話判斷其提供的信息是否完整,若完整則執行查詢數據庫等操作,若不完整則需要用澄清話術對需要填充的詞槽做出提問。而在知識點域信息完整性的判斷方法是知識點的告知槽和需求槽都不為空。
本文機器人的流水線設計舍棄了自然語言生成的部分,因為機器人的對話輸出為:當機器人查詢到用戶對話相應結果時,直接返回該結果;當查不到時則輸出澄清話術,這是可以枚舉的,故不需要額外的自然語言生成組件來形成輸出結果。當然,如果期望機器人可以產生多樣化的輸出,采用自然語言生成可以帶來更智能的效果。
4? ?實驗效果(Experimental results)
為了展示本文介紹的教育領域多輪對話機器人的對話效果,以下將舉例說明。假設用戶在一句話中就完整表達出他想了解的信息,例如,“你知道二次規劃和支持向量機的關系是什么嗎?”此時無須多輪對話功能,機器人根據這些信息就可以在數據庫中查詢到相應的答案反饋給用戶。
但在現實的人際交往中,對話雙方往往會省略一些他們談論過的歷史信息。例如,A:“今天天氣真好啊”,B:“的確,太陽光暖融融的”,A:“是啊,昨天也是這樣呢”。這里A所說的“昨天也是這樣呢”,其實想要表達的完整意思是“昨天的太陽光也暖融融的”。我們的對話機器人在教育領域也可以用多輪對話技術達到這樣具有歷史記憶的效果。例如,用戶在第一輪詢問“二次規劃的定義是什么”,而后又問“那么它的應用和優化改進是什么呢”,此時機器人會自動補全對話信息,分別去數據庫查詢“二次規劃的應用”和“二次規劃的優化改進”這兩個問題并返回結果。另外,如果用戶提問“這和支持向量機有什么聯系呢”,機器人會補全信息,在數據庫中查詢“二次規劃和支持向量機的聯系”并返回答案。進一步地,如果用戶想要轉換提問的知識點“那么隨機森林呢”,此時機器人會識別出用戶想要比較新的知識點“隨機森林”和二次規劃的區別,因此會查詢“隨機森林和二次規劃的聯系”,最后將答案返回給用戶。
5? ?結論(Conclusion)
本文介紹了一種應用在教育領域的多輪對話機器人,在線上教育風行的今天,它可以和學生在學習方面進行人機互動,這樣既保證了及時為學生解惑,也為教師減輕了教學壓力。并且本機器人還可以被泛化在各門課程,普適性較強。在未來的工作中我們希望可以讓此機器人具有雙語甚至多語對話的功能,同時更智能完備的邏輯結構和更自然的交互模式也需要我們繼續探索。
參考文獻(References)
[1] Wang Shiyao, Minlie Huang, Zhidong Deng. Densely Connected CNN with Multi-scale Feature Attention for Text Classification[C]. IJCAI, 2018:4468-4474.
[2] Smith J, Adamczyk J, Pesavento J. Context manager and method for a virtual sales and service center[P]. U.S. Patent No.6,064,973, 2000.
[3] 華冰濤,袁志祥,肖維民,等.基于BLSTM-CNN-CRF模型的槽填充與意圖識別[J].計算機工程與應用,2019,55(09):139-143.
[4] 胡文妹.基于任務導向型多輪對話系統的意圖識別研究[D].北京:北京郵電大學,2019.
[5] Lample G, Ballesteros M, Subramanian S, et al. Neural Architectures for Named Entity Recognition[C]. Proceedings of the 2016 Conference of the North American Chapter of the Association for Computational Linguistics: Human Language Technologies, 2016:260-270.
[6] Devlin J, Chang M W, Lee K, et al. BERT: Pre-training of Deep Bidirectional Transformers for Language Understanding[C]. Proceedings of the 2019 Conference of the North American Chapter of the Association for Computational Linguistics: Human Language Technologies, Volume 1 (Long and Short Papers), 2019:4171-4186.
[7] Wu C S, Madotto A, Hosseini-Asl E, et al. Transferable Multi-Domain State Generator for Task-Oriented Dialogue Systems[C]. Proceedings of the 57th Annual Meeting of the Association for Computational Linguistics, 2019:808-819.
[8] Cui Y, Che W, Liu T, et al. Pre-Training with Whole Word Masking for Chinese BERT[DB/OL]. [2019-06-19]. https://arxiv.org/pdf/1906.08101.pdf.
[9] Zhu Q, Huang K, Zhang Z, et al. CrossWOZ: A Large-Scale Chinese Cross-Domain Task-Oriented Dialogue Dataset[DB/OL]. [2020-02-27]. https://arxiv.org/pdf/2002.11893.pdf.
[10] Jiao X, Yin Y, Shang L, et al. Tinybert: Distilling bert for natural language understanding[DB/OL]. [2019-11-23]. https://arxiv.org/pdf/1909.10351.pdf.
[11] Lan Z, Chen M, Goodman S, et al. Albert: A lite bert for self-supervised learning of language representations[DB/OL]. [2019-11-26]. https://arxiv.org/pdf/1909.11942v6.pdf.
[12] Abel D, Salvatier J, Stuhlmüller A, et al. Agent-agnostic human-in-the-loop reinforcement learning[DB/OL]. [2017-01-15]. https://arxiv.org/pdf/1701.04079.pdf.
作者簡介:
閆曉宇(1995-),女,碩士,初級研究員.研究領域:自然語言處理,對話系統.
彭蘇婷(1995-),女,碩士,初級研究員.研究領域:人工智能,自然語言處理.