司博文,孔 芳
(蘇州大學 計算機科學與技術學院,江蘇 蘇州 215006)
人機對話(Human-Computer Conversations[1])是自然語言處理(Natural Language Process,NLP[2])領域的關鍵任務,旨在最大限度地模仿人與人之間的對話方式,使得人類能夠用更自然的方式與機器進行交流。當前,人機對話系統(tǒng)主要分為任務型對話系統(tǒng)(Task-Oriented Dialogue Systems[3])和聊天機器人(Chatbots[4]),任務型對話系統(tǒng)面向垂直領域,目的是使用盡可能少的對話輪數幫助用戶完成預定任務或動作,例如,預訂酒店、機票和電影票等,典型的應用有Siri[5]、Cortana[6]等。任務型對話針對特定任務,這也限制了其在其他領域的使用。聊天機器人面向開放領域,話題沒有特定領域的限制,因此對系統(tǒng)的要求極高,典型的應用有微軟的小冰[7]。這兩種對話系統(tǒng)都需要根據歷史信息進行回應,而給出的回應都需要確?;貞c對話歷史在語義上具有連貫性。
產生回應目前有兩種方法: 檢索式和生成式。檢索式又稱回應選擇(Response Selection),旨在針對對話上文從備選回應池中選擇最相關的回應;生成式則要求模型自動生成合適的回應。本文主要關注回應選擇任務。已有的回應選擇方法存在對對話歷史的語義挖掘不充分、對話上文和備選回應之間語義關聯(lián)不夠的問題。針對這兩個問題,本文提出了融合豐富歷史信息的回應選擇方法,記為AICRS(All Information Combination for Response Selection),具體而言,首先將對話上文拼接,形成一個長文,以保證對話歷史的序列特性;其次使用交叉注意力機制(Cross-attention Mechanism[8])將對話歷史與回應進行軟對齊,從而挖掘歷史和回應間的關聯(lián)信息;接著使用多頭自注意力機制(Multi-Head Attention Mechanism[9])挖掘對話歷史及回應的語義信息并使用高速路神經網絡(Highway Network[10])進行信息橋接;最后整合各類信息進行最終的回應選擇。該方法能深度挖掘對話歷史及回應間的潛在語義和相互的關聯(lián)關系,提升回應選擇的性能。
本文的貢獻包括如下幾點: ①提出了一個結構簡單,沒有使用任何外部資源的輕量級回應選擇模型; ②使用交叉注意力機制挖掘對話歷史和備選回應之間的語義關聯(lián); ③將信息橋接的方法應用到回應選擇任務,在深度挖掘信息的同時保證信息的完整性; ④通過Ubuntu Corpus V1數據集上的實驗驗證模型的有效性。
本文的組織結構如下: 第1節(jié)介紹相關工作;第2節(jié)闡述AICRS模型;第3節(jié)介紹具體的實驗設置,并對實驗結果進行分析;第4節(jié)對本文進行總結,并給出下一步的研究計劃。
早期關于對話回應選擇的研究主要側重于短文本的單回合對話。2013年Wang等人[11]提出了相關數據集和一個基于向量空間和語義匹配的方法。2014年Ji等人[12]提出使用深度神經網絡來匹配對話上文和回應之間的語義信息的方法。2016年Wu等人[13]提出了一個用于短文本回應選擇的主題感知卷積神經網絡框架。這些方法在單回合回應選擇任務取得了一定成果,但是無法解決多回合問題。
當前的研究主要集中于多輪對話的回應選擇任務。該任務更具挑戰(zhàn)性,因為模型需要整合整個對話上文中信息。2015年Lowe[14]提出一個大型多輪對話數據集UDC(Ubuntu Dialogue Corpus),此外Lowe提出使用RNN編碼對話上文和備選回應的方法,此類方法又被稱為平行編碼方法。不久,Kadlec等人[15]研究了不同種類編碼器在平行編碼網絡上的性能。2016年Yan等人[16]采用了另一種做法,他們使用一個CNN計算對話上文和備選回應的匹配分數。但這些方法處理信息相對簡單,沒有充分挖掘對話上文和回應之間的深層語義信息。
之后的研究人員對平行編碼方法進行了各種拓展。2016年Zhou等人[17]采用了兩個并行的編碼器,一個處理單詞級別的信息,另一個處理話語級別的信息。2016年Wang等人提出Match_LSTM[18]模型,通過基于LSTM的注意力加權句子表示法來提升模型的性能。Tan等人提出的QA-LSTM[19],使用一個簡單的注意力機制與LSTM編碼器相結合的方法。此外,研究人員還提出一些將回應選擇任務與句子評分任務相結合的方法。這些方法在挖掘文本信息方面均取得了一定的成果,但是沒有將得到的信息進行充分整合,回應選擇任務要求模型選出合適的回應,因此,模型必須能夠充分整合出對話上文和備選回應之間的關聯(lián)信息。
2017年Wu等人提出順序匹配網絡(Sequential Matching Network,SMN[20]),將備選回應分別與對話上文中的每一次對話匹配,2018年Zhang等人[21]提出深度話語匯聚網絡(Deep Utterance Aggregation Network,DUA),該網絡細化處理對話,同時使用自注意力機制來尋找每次對話中的重要信息。Zhou等人[22]提出深度注意力匹配網絡(Deep Attention Matching network,DAM),該網絡構造了具有不同的粒度的表示形式,并具有堆疊式的自我注意力和交叉注意力。2019年Tao等人[23]提出交互模型(Interaction Over Interaction Model,IOI),該模型通過堆疊多個交互塊來執(zhí)行匹配。以上四種做法主張將每一次對話與備選回應進行匹配,使用了前文對話信息,但是忽視了對話之間的語義信息。
現有的工作取得了一定成果并推動了多回合對話回應選擇任務的發(fā)展,但已有研究存在對話歷史和回應間關聯(lián)關系挖掘不夠、潛在語義利用及多種信息整合效率不足的問題。對此,本文提出AICRS方法,借助交叉注意力機制挖掘對話歷史和回應間的關聯(lián)關系,借助多頭自注意力機制和高速路神經網絡進行豐富信息的整合。
多回合對話回應選擇任務要求模型在備選回應池中為對話上文選擇合適的回應。本文將多回合對話回應選擇任務轉化為分類任務,要求模型在得到對話上文和備選回應的情況下判斷備選回應是否為對話上文的合適回應。
給定數據集D={(yi,ci,ri)}Ni=1,其中,ci表示對話上文,ri表示備選回應,yi∈{0,1}表示標簽,yi=1表示ri是ci合適的回應,yi=0表示ri不是ci合適的回應。檢索式對話的目標是根據數據集D訓練出一個匹配模型s(·,·)。對于任意一個對話上文-回應對(c,r),匹配模型都能給出對話上文c和回應r之間的匹配分數。
圖1為AICRS模型框架圖,該模型主要有以下結構:
圖1 AICRS模型框架
(1)編碼層: 首先將對話上文拼接成一個長文,保證對話的序列特性,之后使用BiGRU[24]編碼器,獲得長文和備選回應的內部信息。
(2)嵌入交叉注意力機制的匹配層: 使用交叉注意力機制獲取對話上文和備選回應相關的信息,并對獲得的信息進行第一次整合。
(3)融入多頭自注意力機制的信息橋接層: 首先,使用多頭自注意力機制深度挖掘對話上文的語義信息,之后,使用高速路神經網絡對信息進行橋接。
(4)輸出層: 首先,融合得到的語義信息,之后,對結果進行預測。
下面我們將逐步介紹AICRS模型中的各個組成部分。
本文首先將對話上文拼接成一個長文并控制長文的長度,對話之間用特殊的連接符連接,這樣做可以在編碼的時候盡量將整個對話上文的語義信息整合成一個語義向量,相比復雜的層次編碼,該做法在一定程度上保證了挖掘到的對話上文語義信息的完整。此時,對話上文可以表示為:c=(c1,…,cm),備選的回應可以表示為:r=(r1,…,rn),m表示拼接后對話上文的長度,n表示備選回應的長度。之后,使用預訓練詞向量Rde×|V|將每個詞轉為其對應的詞向量。特別的,如果某個詞在表中不存在,則賦予一個隨機值。此時,對話上文c和回應r變成詞向量序列W(c)=[W(c1),W(c2),W(c3),…,W(cm)],W(r)=[W(r1),W(r2),W(r3),…,W(rn)]。為了得到對話上文和備選回應的語義向量ce,re,本文將對話上文和回應向量序列傳入BiGRU,具體計算如式(1)、式(2)所示。
其中,i和j表示對話長文中的第i個單詞和回應中的第j個單詞,式(1)和式(2)中的BiGRU1是同一個。2.4 嵌入交叉注意力機制的匹配層基于編碼的方法在得到對話上文和回應的語義信息后直接將兩個向量拼接,傳入輸出層,這樣做只挖掘到了對話上文和回應本身的淺層語義信息,并沒有將二者的交互語義信息挖掘出來。而能否對對話上文和回應之間的局部語義關系進行正確建模是確定回應是否為正確回應的關鍵步驟。正確的回應一定與對話上文中一些關鍵信息相關,這些關鍵信息可以通過本地建模得到。本文使用交叉注意力機制將對話上文與備選回應進行對齊,計算對話上文與備選回應之間單詞級別的語義信息,具體如圖2所示。
圖2 交叉注意力機制
交叉注意力機制權重的計算如式(3)所示。
(3)本文使用軟對齊[25]獲取對話上文和回應之間的局部相關性,其通過式(8)中的注意力矩陣e∈m×n計算得到。對話上文中第i個單詞的隱藏層向量與備選回應中相關的語義部分被標識為向量稱之為的對偶向量, 這個向量表示所有相關信息的加權和。備選回應對偶向量的計算方法和對話上文對偶向量的計算方法相同,如式(4)、式(5)所示。
其中,α∈m×n,β∈m×n表示標準化注意力權重矩陣。為了融合已經得到的所有相關信息,本文使用啟發(fā)式匹配方法分別處理對話上文和回應語義向量以獲得局部匹配向量和具體如式(6)、式(7)所示。
圖3 信息橋接
具體計算如式(8)~式(11)所示。
其中,兩式中的BiGRU2是同一個。其次,對BiGRU2的輸出進行最大化和平均化處理;最后,將處理后的向量合并成固定長度的向量,并傳入分類器中,如式(14)~式(19)所示。
(16)
(17)
(18)
label=softmax(W2·tanh(W1·f+b1)+b2)(19)其中,“0”表示在第0維上做max和mean,“[]”表示向量的拼接操作,label表示最終預測的結果,W1和b1分別表示tanh層的權重和偏置,W2和b2分別表示softmax層的權重和偏置。2.7 優(yōu)化策略在模型訓練的過程中,本文選擇交叉熵誤差作為損失函數,如式(20)所示。
(20)
本節(jié)將分析所提出的方法在多輪對話回應選擇任務上的實驗結果及分析。
本文主要使用Ubuntu Corpus V1[14]數據集驗證所提出的方法,該數據集中的對話主要是關于Ubuntu系統(tǒng)故障排除的多回合對話,訓練集包含50萬組多回合對話,每組對話都配對一個由人工產生的正確回應,一個隨機產生的負回應,驗證集和測試集都包含5萬組多回合對話,每組對話都配對1個正確回應,9個負回應。
為了弄清楚數據集中不同類型問題的分布,我們從以下角度對數據集中對話數據進行統(tǒng)計。首先,根據對話是否需要整合前文信息,我們將問題分為以下兩種情況: 單回合對話,通過最近一次對話語義信息即可得到合適的回應,如表1中例子所示,回應可以直接通過最近的一次對話“How it helps”直接得到;多回合對話,必須將對話上文信息整合才能得到合適的回應,如表2中的例子所示,想要找到合適的回應就必須找到最近一次對話“What is that like?”中“What”代指什么。
表1 單回合對話樣例
表2 多回合對話樣例
本文在數據集中隨機抽取100個樣例,統(tǒng)計每種問題的比重。統(tǒng)計結果如表3所示。從表3中可以看出,數據集中存在一定比例的單回合對話,但是多回合對話的比重明顯更大。
表3 單回合與多回合樣例比重
根據對話長度是否均勻,我們將問題分為以下兩種情況: 對話長度均勻,對話之間長度相差不超過10個字符;對話長度不均勻,對話之間長度相差超過10個字符。上述100個隨機抽取樣例中兩種情況的統(tǒng)計結果如表4所示。從表4中可以得出,數據集中有一定比例的問題對話長度相差較大。如果對每句話單獨處理,在訓練過程中就必須將對話填充成相同長度,這無疑增加了模型的計算量。
表4 對話長度分布是否均勻樣例比重
為了充分了解數據集的特點,本文隨機抽取100個樣例,對其中對話的回合數平均值(取整后)和對話上文長度的平均值(取整后)進行了統(tǒng)計,結果見表5。從表5中的數據可以得出,對話上文多為多回合、短文本。因此本文沒有使用層次匹配的方法,而是首先將多回合對話拼接成一個長文,保證上文對話的序列特性。其次,使用編碼器挖掘其淺層語義信息。再次,使用交叉注意力機制挖掘對話上文和回應之間相關的語義信息,并用信息橋接方法對挖掘到的方法進行整合。最后,獲取結果。
表5 樣例中對話的回合數和對話上文長度平均值
本文的方法是在分析已有研究的問題和Ubuntu Corpus V1數據集的特點的基礎上提出的。為了驗證本文方法的普適性,我們還在Douban Conversation Corpus[20]數據集上驗證了本文的方法,該數據集是從豆瓣中獲取的開放域對話。
實驗采用Pytorch 0.4.0 框架,并用NVIDIA的1080 GPU進行加速。具體的模型參數配置為: 使用Word2Vec預訓練詞向量進行初始化,word_dim為300。BiGRU的輸入是一個形狀為[batch_size,seq_length,hidden]的張量,其中,第一個維度表示batchsize,訓練中batch size設置為16;第二維表示batchsize個句子中最大句子長度,每個batch size的seq_length是不相同的,對話上文的seq_length設置為400,回應的seq_length設置為150;第三維表示隱藏層維數,實驗中,hidden設置為300。Bi-GRU的輸出是一個形狀為[batch_size,seq_length,hidden×2]的張量,使用Adam(Adaptive Moment Estimation)算法優(yōu)化模型參數,學習率lr設置為0.004,BiGRU的層數設置為1,dropout設置為0.5,Multi-head Attention中的多頭設置為4,損失函數為交叉熵損失函數。
模型被要求從備選的10個回應中選出最適合的k個回應。本文通過計算k個答案中正確答案的召回率作為主要的評價指標,如式(21)所示。
(21)
考慮到Douban數據集中的回應不止一個,我們增加MAP,MRR和P@1作為Douban數據集的評價指標。
本文選取的對比模型有:
(1) 基于句子編碼的方法: BiLSTM[15]。首先,編碼對話上文和各選回應;然后,計算對話上文和回應之間的語義相似度。
(2) 基于序列匹配的方法: MV-LSTM[27]和Match-LSTM[18]。使用注意力機制計算對話上文和回應之間單詞級別的信息。
(3) 復雜的基于層次的方法: Multi-View[17],分別計算對話上文與回應之間單詞級別和句子級別的相似語義;DAM[22],使用堆棧式自我注意模塊和交叉注意模塊獲取對話上文中每句話與回應在不同級別的交互信息;IOI[23]通過堆疊多個交互塊來執(zhí)行匹配。
表6給出了本文模型和各個模型的實驗結果。從結果可以看到,本文給出的方法雖然結構簡單,但在Ubuntu Corpus V1 數據集上的性能與復雜的基于層次編碼的方法相比并不遜色,在R10@1和R10@2兩個指標上均取得了最佳性能。
表6 各個模型的實驗結果
但在Douban Conversation Corpus數據集上,本文方法取得的效果不如層次匹配模型。分析其中原因,我們認為,Ubuntu Corpus V1數據集是一個任務驅動型對話數據集,其話題主要集中在Ubuntu系統(tǒng)方面,噪聲相對較少;而Douban Conversation Corpus數據集是一個開放領域對話數據集,其話題面向開放領域,噪聲相對較多。我們的模型結構較為簡單,處理噪聲的能力有限,同時Douban Conversation Corpus中對話上文相對較長,而本文的模型采用將對話上文拼接成一個長文之后對長文進行編碼的方法。當長文達到編碼器的極限時,模型性能將會下降。未來我們將針對這一問題探討相應的解決方案,提升本文方法的普適性。
為了驗證不同模塊的作用,本文在Ubuntu Corpus數據集上設置了四個不同的對比實驗。
(1) B: 使用BiGRU編碼,并把編碼后的信息直接傳入輸出層。
(2) B+交叉注意力: 使用BiGRU編碼,使用交叉注意力機制。
(3) B+交叉注意力+殘差: 使用BiGRU編碼,使用交叉注意力機制,使用多頭自注意力機制和殘差網絡對整合后的信息進行深度挖掘和整合。
(4) AICRS: 使用BiGRU編碼,使用交叉注意力機制,使用多頭自注意力機制和高速路神經網絡對整合后的信息進行橋接。
詳細對比實驗結果如表7所示。
表7 詳細實驗對比結果
3.4.1 交叉注意力機制效用分析
比較B和B+交叉注意力的結果,可以得出使用交叉注意力機制的模型相比沒有使用交叉注意力機制的模型,模型性能在R10@1和R10@2上分別提升16.6%和11.12%,說明交叉注意力機制在挖掘對話上文和備選回應之間的相關語義信息方面發(fā)揮了不可忽視的作用,模型在整合到對話上文和備選回應之間相關聯(lián)信息之后,性能有了可觀的提升。
3.4.2 信息橋接效用分析
比較B+交叉注意力和AICRS可以看出: 模型在沒有進行信息橋接的情況下,性能在R10@1,R10@2和R10@5上分別下降3.15%,0.62%和0.69%,說明信息橋接在整合對話上文信息時起到了一定的作用。比較B+交叉注意力和B+交叉注意力+殘差: 可以看出,使用殘差連接替代信息橋接,模型的性能在R10@1,R10@2和R10@5上反而下降了0.72%,3.39%和1.36%,同為連接,殘差連接雖然將多種信息進行了組合,但是此時的語義向量包含十分復雜的信息,如果不做進一步的處理: 反而會對模型的性能起反作用。
3.4.3 模型處理過長對話上文能力分析
為了分析模型處理過長對話上文的能力,本文在Ubuntu Corpus V1數據集中隨機抽取100個對話上文較長的樣例,分析這100個樣例在模型上的結果。實驗表明,本文的模型處理過長對話上文能力不是很好。100個樣例只有27個可以準確預測,其余73個均沒能預測出來,分析原因,我們發(fā)現這是編碼器造成的。當文本的長度達到編碼器的極限后,編碼器便不能有效地挖掘文本的信息,進而導致性能的下降。未來我們將進一步細化對話歷史的表征,特別是長距離依賴問題,以彌補這一缺陷。
本文借助多頭自注意力機制多視角挖掘潛在語義,借助交叉注意力機制建立對話歷史和回應間的關聯(lián),再借助高速路神經網絡進行多種豐富信息的高效融合,據此構建了一個輕量級對話回應選擇模型。相比基準方法,我們的系統(tǒng)簡單有效,實驗結果也證明給出的模型確實能提升對話回應選擇的性能。
未來我們將進一步細化對話歷史的表征,計劃從挖掘歷史對話中的全局和局部信息更好地融入對話的交互信息、時序信息等方面入手,嘗試通過有效解決長距離依賴問題來進一步提升回應選擇的性能。