• 
    

    
    

      99热精品在线国产_美女午夜性视频免费_国产精品国产高清国产av_av欧美777_自拍偷自拍亚洲精品老妇_亚洲熟女精品中文字幕_www日本黄色视频网_国产精品野战在线观看

      ?

      基于深度學(xué)習(xí)的個性化聊天機(jī)器人研究

      2020-04-30 04:36:40王乾銘
      關(guān)鍵詞:解碼器語料編碼器

      王乾銘,李 吟

      (江蘇自動化研究所,江蘇 連云港 222006)

      0 引 言

      在學(xué)術(shù)界,深度學(xué)習(xí)被廣泛應(yīng)用于各種研究領(lǐng)域,在工業(yè)界,深度學(xué)習(xí)掀起了一場巨大的革命,傳統(tǒng)企業(yè)也加入了深度學(xué)習(xí)的浪潮,計(jì)算機(jī)視覺、模式識別和自然語言處理的變化超出了人們的想象。近年來,計(jì)算機(jī)視覺和模式識別取得了很大的進(jìn)展。但由于人與人之間的差異、文化的差異以及人們對自然語言的理解,自然語言處理還存在著一些復(fù)雜的問題。自然語言處理領(lǐng)域一直面臨著復(fù)雜的問題。NLP[1]起源于20世紀(jì)40年代。起先的工作運(yùn)用了語言學(xué)理論并利用計(jì)算機(jī)對自然語言進(jìn)行理解,從而對自然語言進(jìn)行處理。在自然語言領(lǐng)域中,目前發(fā)展比較快的一些任務(wù)有機(jī)器翻譯、機(jī)器理解和問答系統(tǒng)。

      問答系統(tǒng)的一般業(yè)務(wù)流程是在用戶輸入一個問題后,系統(tǒng)需要根據(jù)問題找到最合適的答案。問答系統(tǒng)旨在自動找到任何問題的答案。傳統(tǒng)的研究使用淺層概率對問題和答案進(jìn)行分類,如果某個句子與其中一個問題非常匹配,這個句子就是那個答案。幾十年來,機(jī)器學(xué)習(xí)(支持向量機(jī)、貝葉斯分類等)成為問答系統(tǒng)的實(shí)現(xiàn)方式。

      傳統(tǒng)的seq2seq模型中的輸出結(jié)果往往是在輸出之前選出出現(xiàn)概率最大的單詞,也即極大似然估計(jì)。而訓(xùn)練語料中,作為結(jié)果輸出的單詞可能在訓(xùn)練語料中的出現(xiàn)概率就很大,比如“ok”、“yeah”、“I’m sorry”這類攜帶信息較少而出現(xiàn)比較頻繁的詞,這樣就可能會導(dǎo)致極差的用戶體驗(yàn)。一個吸引人的反應(yīng)生成系統(tǒng)應(yīng)該能夠輸出語法上的、連貫的、多樣的、有趣的反應(yīng)。因此文中使用Beam Search這種啟發(fā)式搜索算法,它不同于傳統(tǒng)的貪婪算法,可以輸出概率最大的若干個句子,從而增加回復(fù)的多樣性和趣味性。

      對于傳統(tǒng)的seq2seq模型的問答系統(tǒng)還存在一個普遍的不一致性問題。由于利用深度學(xué)習(xí)訓(xùn)練問答機(jī)器人時(shí),都會使用大量的語料,而一般常見的問答語料,例如美國康奈爾大學(xué)搜集的電影對話語料“Cornell Movies-Dialogs Corpus”或者大型開放字幕庫“Open Subtitles”以及Ubuntu社區(qū)問答語料“Ubuntu Corpus Dialogs”,都有著覆蓋面廣、開放式、有噪聲的特點(diǎn)。如圖1所示,利用這些語料直接訓(xùn)練的問題就是同樣意思但不同表達(dá)的問句會得到不同答案。這就影響了問答機(jī)器人的效果以及使用功能。而文中利用不同語料多次訓(xùn)練的方式能夠克服這個問題,從而得到良好的效果。

      Q:who are you ?A:I am the bowler.Q:What’s your name ?A:Laure.Q:Where do you live now?A:I live in Los Angeles.Q:In which country do you live now?A:England, you?

      1 相關(guān)工作

      問答系統(tǒng)可以追溯到艾倫·圖靈的圖靈測試。用戶輸入問題,然后模型給出相應(yīng)的準(zhǔn)確答案。1980年至1991年,對知識庫的問答系統(tǒng)進(jìn)行了研究,但大部分知識庫相對有限,沒有太多的參考價(jià)值。在1991-1999年,行業(yè)內(nèi)普遍使用統(tǒng)計(jì)建模和機(jī)器學(xué)習(xí)來構(gòu)建問答系統(tǒng)。而問答系統(tǒng)被認(rèn)為是最接近人工智能的產(chǎn)品。10年后,Siri的出現(xiàn)對問答系統(tǒng)來說具有跨時(shí)代的意義。如今,隨著數(shù)據(jù)的快速發(fā)展,傳統(tǒng)的搜索系統(tǒng)如谷歌和百度,它們的算法已經(jīng)不能滿足人們的要求。因此,他們試圖選擇問答系統(tǒng)作為一種新的方式來完成客戶的需求。

      對于問答系統(tǒng),學(xué)術(shù)界的研究主要有三種類型:

      (1)統(tǒng)計(jì)句子字?jǐn)?shù)的方法[2]。根據(jù)問題統(tǒng)計(jì)頻率的接近性,得到與問題相對接近的答案的頻率。但是僅僅使用統(tǒng)計(jì)知識并不能很好地理解客戶。比如知識檢索圖書館系統(tǒng)。

      (2)機(jī)器學(xué)習(xí)[3-4]。他們用概率和統(tǒng)計(jì)的方法構(gòu)建了問答系統(tǒng)。就像SVM,k均值算法。這些機(jī)器學(xué)習(xí)算法利用數(shù)據(jù)樣本的特征值,將這些特征組合成矩陣作為模型的輸入。

      (3)深度學(xué)習(xí)[5-7]。深度學(xué)習(xí)技術(shù)可以有效地減少數(shù)據(jù)集的創(chuàng)建和預(yù)處理時(shí)間。此外,它還可以減少人為因素造成的誤差。最后,它顯示了比以前更好的結(jié)果。特別是在大數(shù)據(jù)集中,深度學(xué)習(xí)比其他方法更有效。而且它不需要手動提取特性,所以實(shí)現(xiàn)起來很簡單。深度學(xué)習(xí)算法在自然語言領(lǐng)域的第一個應(yīng)用是CNN。在CNN的匯聚效應(yīng)下,有效地減少了數(shù)據(jù)的浪費(fèi),準(zhǔn)確地獲得了相應(yīng)的參數(shù)數(shù)據(jù)。

      利用深度學(xué)習(xí)技術(shù)使自然語言處理領(lǐng)域的問答系統(tǒng)得到了飛速發(fā)展。使用RNN技術(shù)的聊天機(jī)器人模型可以不需要預(yù)定義一個知識庫,它可以直接生成答案[8-12]。這種方法的思路來自于自然語言領(lǐng)域中的機(jī)器翻譯技術(shù)。Ritter等[8]使用了大規(guī)模微博聊天數(shù)據(jù)集進(jìn)行訓(xùn)練,并將問題當(dāng)作翻譯中的源語言,答案當(dāng)作翻譯后的目標(biāo)語言,從而將機(jī)器翻譯的技術(shù)運(yùn)用到了問答上。Hinton等[9]提出了一種自動編碼器,Cho等[10]設(shè)計(jì)了一種新的對RNN進(jìn)行改進(jìn)后的GRU網(wǎng)絡(luò)。Shang等[11]在此基礎(chǔ)上同樣使用大量的微博對話數(shù)據(jù)集訓(xùn)練出了一個基于Sequence-to-Sequence框架的RNN網(wǎng)絡(luò)。谷歌提出的神經(jīng)會話模型[12],利用了4種不同的數(shù)據(jù)集對Seq2Seq模型進(jìn)行訓(xùn)練。文中正是在這個模型的基礎(chǔ)上進(jìn)行改進(jìn)。

      2 模型構(gòu)建

      文中模型是在Seq2Seq架構(gòu)的基礎(chǔ)上進(jìn)行改進(jìn)的。Seq2Seq是一種典型的基于編解碼器的體系結(jié)構(gòu)。該架構(gòu)最初出現(xiàn)在機(jī)器翻譯領(lǐng)域,由Cho等人在2014年EMNLP會議[10]上提出。經(jīng)過Liu等人的升華,出現(xiàn)了Seq2Seq[13-14]模型。Seq2Seq主要由編碼器、解碼器和狀態(tài)向量組成。Seq2Seq的基本架構(gòu)如圖2所示。

      編碼器:編碼器的作用是轉(zhuǎn)換輸入變長序列成定長狀態(tài)向量,狀態(tài)向量包含有關(guān)輸入序列的信息。

      狀態(tài)向量:狀態(tài)向量是由編碼器的隱藏層向量決定的,它將輸入序列的信息從編碼器發(fā)送到解碼器。

      解碼器:解碼器通過對狀態(tài)向量和前一時(shí)刻解碼器的輸出向量進(jìn)行解碼,從而能夠生成可變長度的序列。

      編碼-解碼器體系結(jié)構(gòu)在一定程度上簡化了數(shù)據(jù)集,將數(shù)據(jù)集轉(zhuǎn)換為固定長度向量通過編碼器表示,且向量作為數(shù)據(jù)集引入網(wǎng)絡(luò)進(jìn)行訓(xùn)練。該解碼器對算法的輸出進(jìn)行解碼,解碼的思想是用概率論的方法輸出不確定長度的答案。這樣的體系結(jié)構(gòu)提高了系統(tǒng)的效率和精度,使其特別適用于自然語言處理任務(wù)。

      圖2 Seq2Seq基本結(jié)構(gòu)

      文中使用LSTM(long short term memory)[15-17]結(jié)構(gòu)作為Seq2Seq模型中提取句子信息的單元結(jié)構(gòu)。LSTM是一種循環(huán)神經(jīng)網(wǎng)絡(luò)模型。循環(huán)神經(jīng)網(wǎng)絡(luò)利用前一個節(jié)點(diǎn)的反饋?zhàn)鳛檩斎?,利用遞歸思想迭代映射輸入和參數(shù),計(jì)算輸出和損失,然后進(jìn)行循環(huán)計(jì)算形成動態(tài)網(wǎng)絡(luò)。

      LSTM網(wǎng)絡(luò)是RNN的一種變體,是一種更實(shí)用、更極端的變體。LSTM網(wǎng)絡(luò)是一種能夠在自循環(huán)下產(chǎn)生長時(shí)間連續(xù)流梯度的結(jié)構(gòu)。LSTM對消失梯度和非自然梯度下降具有良好的適應(yīng)性。

      圖3 LSTM Cell結(jié)構(gòu)

      首先,它選擇單元格來代替門的描述。然后,每個細(xì)胞之間相互連接,而不是直接利用一般神經(jīng)網(wǎng)絡(luò)的隱藏單元。由圖3可知,輸入門的數(shù)據(jù)和輸入數(shù)據(jù)要進(jìn)行計(jì)算,遺忘門從狀態(tài)量中修正向量,并且它也加入了自循環(huán)。在自循環(huán)的同時(shí),狀態(tài)返回向量到輸入門、遺忘門和輸出門。每個門都根據(jù)狀態(tài)給出的值進(jìn)行調(diào)整。最后輸出門和狀態(tài)影響輸出。激活函數(shù)選擇Sigmod函數(shù)。上述過程的公式如下:

      forgetti=σ(bfi+∑jUfi,jxtj∑jWfi,jht-1j)

      (1)

      其中,t是當(dāng)前的epoch值,xt是輸入向量,ht是輸出的最終結(jié)果,bf,Uf,Wf是偏置參數(shù),輸入權(quán)重矩陣和向量矩陣。遺忘門被用來表示循環(huán)權(quán)向量的狀態(tài)量。它的權(quán)重隨著狀態(tài)有一定的更新。

      自循環(huán)權(quán)矩陣的更新公式如下:

      Selfloopti=fotgettiSelfloopt-1i+inputgtiσ(bgi+∑jUi,jxtj∑iWi,jht-1j)

      (2)

      輸入門的更新公式如下:

      inpotgti=σ(bgi+∑jUgi,jxtj∑jWgi,jht-1j)

      (3)

      同時(shí)需要給輸出一些限制,最后選擇了tanh函數(shù)作為激發(fā)函數(shù):

      hti=tanh(Sti)outgateti

      (4)

      outgateti=σ(boi+∑jUoi,jxtj∑jWoi,jht-1j)

      (5)

      總之,LSTM可以解決長依賴的問題,可以記住并學(xué)習(xí)更多的知識。而多層的LSTM結(jié)構(gòu)往往比單層結(jié)構(gòu)的效果更好,因此文中采用了4層的LSTM結(jié)構(gòu)。

      Seq2Seq模型中用一個固定長度的向量編碼了所有輸入序列的語義信息,限制了模型性能的提高,注意力機(jī)制(attention mechanism)則允許模型自動搜索源輸入序列中與目標(biāo)序列詞匯相關(guān)的部分信息,注意力機(jī)制可以使得輸出的結(jié)果能夠關(guān)注不同的輸入。在沒有注意力機(jī)制之前,當(dāng)輸入序列的句子比較長,原始的Seq2Seq模型只用一個中間語義向量來表示所有的輸入序列的語義,這就會導(dǎo)致丟失很多輸入序列的細(xì)節(jié)信息。注意力機(jī)制的結(jié)構(gòu)如下:

      在編碼器-解碼器結(jié)構(gòu)中,最后解碼器的輸出層根據(jù)輸入序列X預(yù)測單詞的概率是:

      P(yi|y1,…,yi-1,x)=g(yi-1,si,ci)

      (6)

      其中,si是RNN在時(shí)刻i的隱層狀態(tài),si的計(jì)算公式為:

      si=f(si-1,yi-1,cj)

      (7)

      對于輸入序列的狀態(tài)hi,此處引入不同的權(quán)重:

      (8)

      權(quán)重的計(jì)算公式是:

      (9)

      其中,ei,j是由輸入序列的狀態(tài)決定的,計(jì)算公式如下:

      ei,j=VTtanh(W1hj+W2si-1)

      (10)

      文中的Seq2Seq模型是在傳統(tǒng)的Seq2Seq模型的基礎(chǔ)上進(jìn)行了改進(jìn),采用4層的LSTM結(jié)構(gòu)[18]并且增加了注意力機(jī)制,如圖4所示。使用多層的LSTM結(jié)構(gòu)能增加整體的參數(shù)量,這使得編碼器能夠更加精準(zhǔn)地提取輸入序列的語義信息。從圖中看,其中最主要的改進(jìn)就是在Seq2Seq模型的Decoder過程中每個輸出都可以得到一個結(jié)合輸入狀態(tài)的權(quán)重。這樣輸出的單詞會更準(zhǔn)確,或者在含義上能夠更符合問句。

      圖4 改進(jìn)后的Seq2Seq模型的結(jié)構(gòu)

      傳統(tǒng)的Seq2Seq模型在解碼過程中采用的是Greedy Search,Greedy Search本質(zhì)上是一種貪心算法,在解碼過程中每一個單詞的輸出都選擇了概率最大的值,然后將這個值作為下一個時(shí)刻的輸入。最終得到的結(jié)果經(jīng)常會出現(xiàn)重復(fù)的安全回復(fù),因?yàn)樵谟?xùn)練集中例如“I don’t know”等等出現(xiàn)的次數(shù)比較多。Beam Search算法則是在解碼過程中首先輸出概率最大的前K個單詞,然后再將這K個單詞分別作為輸入計(jì)算它們下一時(shí)刻的輸出,最終能得到K個結(jié)果。所以系統(tǒng)的回復(fù)就能夠變得更多樣化。

      3 系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)

      3.1 數(shù)據(jù)集

      文中使用的數(shù)據(jù)集是康奈爾大學(xué)搜集的電影對話語料“Cornell Movies-Dialogs Corpus”,該數(shù)據(jù)集共包含10 292對電影人物之間的220 579次會話交流,涉及617部電影中的9 035個角色,總共304 713條話語。所以將其中的200 579條數(shù)據(jù)用于訓(xùn)練,其他的20 000條數(shù)據(jù)用于測試。

      文中采用的一個數(shù)據(jù)集就是生活大爆炸的臺詞對話語料。為了給問答機(jī)器人賦予一個角色,使其有一定的個性化,選取了Sheldon與其他人的對話,具體就是將原來的數(shù)據(jù)集進(jìn)行過濾,最終只保留Sheldon回答其他人的對話,具體信息如圖5所示。該數(shù)據(jù)集共包含了50 685條對話。其中45 685條數(shù)據(jù)用于訓(xùn)練,5 000條數(shù)據(jù)用于測試。

      Penny: Well imagine how I’m feeling.Sheldon: Hungry? Tired? I’m sorry this really isn’t my strong suit.Leonard: You told her I lied, why would you tell her I lied?Sheldon: To help you.

      3.2 數(shù)據(jù)處理與模型實(shí)現(xiàn)

      文中的代碼實(shí)驗(yàn)利用了谷歌的Tensorflow框架,第一步先分析兩種數(shù)據(jù)集,通過對文件進(jìn)行處理生成.pkl格式的數(shù)據(jù)集,然后根據(jù)Tensorflow框架中的Seq2Seq框架去定義網(wǎng)絡(luò)的輸入值。

      (1)編碼器的輸入:第一個角色說的句子A,并且設(shè)定了句子A的最大長度為10個單詞。

      (2)解碼器的輸入:第二個角色回復(fù)的句子B,因?yàn)榍昂蠓謩e加上了go開始符和end結(jié)束符,最大長度為12。

      (3)解碼器的目標(biāo)輸入:解碼器輸入的目標(biāo)輸出,與解碼器的輸入一樣但只有end標(biāo)識符號,可以理解為解碼器的輸入在時(shí)序上的結(jié)果,比如說完這個詞后的下個詞的結(jié)果。

      (4)解碼器的權(quán)重輸入:用來標(biāo)記target中的非padding的位置,即實(shí)際句子的長度,因?yàn)椴皇撬械木渥拥拈L度都一樣,在實(shí)際輸入的過程中,各個句子的長度都會被用統(tǒng)一的標(biāo)識符來填充(padding)至最大長度,weight用來標(biāo)記實(shí)際詞匯的位置,代表這個位置將會有梯度值回傳。

      最終計(jì)算Softmax Loss,Softmax Loss是一種交叉熵?fù)p失函數(shù),它的具體形式是:

      E(t,y)=-∑itilogyi

      (11)

      (12)

      3.3 模型訓(xùn)練及結(jié)果分析

      文中的訓(xùn)練及測試在一臺GPU服務(wù)器上完成。GPU服務(wù)器的配置見表1。

      表1 GPU服務(wù)器配置

      訓(xùn)練時(shí)采用基于Adam算法的隨機(jī)梯度下降算法,學(xué)習(xí)率是0.002,每個batch包含256個問答對。另外利用了Dropout技術(shù)來避免出現(xiàn)可能的過擬合問題,Dropout的比率設(shè)為0.1。

      模型的訓(xùn)練分為兩個階段。第一個階段將兩個數(shù)據(jù)集同時(shí)進(jìn)行訓(xùn)練,一共訓(xùn)練90個Epoch,這一階段的訓(xùn)練是為了使系統(tǒng)覆蓋的知識面更廣。第二階段就是只用Sheldon數(shù)據(jù)集進(jìn)行訓(xùn)練學(xué)習(xí),一共訓(xùn)練30個Epoch。

      文中最終訓(xùn)練了兩個模型,一個是只利用了傳統(tǒng)的Seq2Seq結(jié)構(gòu),一個利用了Seq2Seq結(jié)構(gòu)加上注意力機(jī)制。

      實(shí)驗(yàn)過程記錄的損失函數(shù)曲線如圖6所示。

      圖6 兩種模型的loss曲線對比

      結(jié)果顯示:增加了attention機(jī)制的模型loss值比原模型下降的快,這有助于模型能夠快速收斂到穩(wěn)定值,并且最終的loss值也比原模型要低。

      為了更精確地測試兩模型的區(qū)別,文中引入了兩個自動評估指標(biāo):BLEUs[19]、Distinct-n。

      BLEUs指標(biāo)是從機(jī)器翻譯中的評估指標(biāo)引申過來的,它是通過判斷回復(fù)句子和參考回復(fù)句子的詞匯重疊度來表示回復(fù)的質(zhì)量。

      針對對話系統(tǒng)中萬能回復(fù)的問題,通過計(jì)算生成回復(fù)中1元詞和2元詞的比例來衡量回復(fù)的多樣性。具體來說,Distinct-1和Distinct-2分別是不同的unigrams和bigrams的數(shù)量除以生成的單詞總數(shù)。

      評估結(jié)果如表2所示。

      表2 三種評估指標(biāo)結(jié)果

      從實(shí)驗(yàn)結(jié)果可以看出:加入了注意力機(jī)制后,三個指標(biāo)較原來的模型都有提高。當(dāng)在測試時(shí)加入了Beam Search算法時(shí),回復(fù)的多樣性有了明顯的提高。但是BLEU指標(biāo)與原來的相比有所下降,原因是BLEU指標(biāo)只專注于句子之間詞匯的重復(fù)率,當(dāng)增加了回復(fù)的多樣性之后,回復(fù)的句子就會常有相同意思但不同的表達(dá),這就會減小回復(fù)句子與目標(biāo)句重復(fù)單詞的概率,因此BLEU指標(biāo)會有所下降。下面通過輸入一些問句,將它與原有模型進(jìn)行對比,去測試系統(tǒng)的一致性以及是否具有角色的個性。

      表3是測試了若干組問句抽出的幾個結(jié)果。

      表3 兩種模型測試問句結(jié)果

      續(xù)表3

      從結(jié)果可以看出,新模型的回復(fù)有了一定的一致性,相比于傳統(tǒng)模型,回復(fù)質(zhì)量有了一定的提高,回復(fù)的語句也比原來更流暢,效果更好。

      4 結(jié)束語

      通過對Seq2Seq模型進(jìn)行了改進(jìn),針對一般問答機(jī)器人的一致性和多樣性的問題進(jìn)行改進(jìn),訓(xùn)練出了一個個性化的問答機(jī)器人,和原有模型相比提高了一定的回復(fù)質(zhì)量,并且在BLEUs和Distinct-n指標(biāo)上做了相應(yīng)的測試,也都獲得了不錯的結(jié)果。對于未來的工作,準(zhǔn)備將問答機(jī)器人和知識庫相結(jié)合,使它在遇到不知道的問題時(shí)能夠從本地知識庫搜索,或者從網(wǎng)絡(luò)上利用搜索引擎進(jìn)行查找,從而進(jìn)一步增強(qiáng)問答機(jī)器人的作用,提高其回復(fù)質(zhì)量。

      猜你喜歡
      解碼器語料編碼器
      科學(xué)解碼器(一)
      科學(xué)解碼器(二)
      科學(xué)解碼器(三)
      線圣AudioQuest 發(fā)布第三代Dragonfly Cobalt藍(lán)蜻蜓解碼器
      基于FPGA的同步機(jī)軸角編碼器
      基于PRBS檢測的8B/IOB編碼器設(shè)計(jì)
      基于語料調(diào)查的“連……都(也)……”出現(xiàn)的語義背景分析
      JESD204B接口協(xié)議中的8B10B編碼器設(shè)計(jì)
      電子器件(2015年5期)2015-12-29 08:42:24
      華語電影作為真實(shí)語料在翻譯教學(xué)中的應(yīng)用
      《苗防備覽》中的湘西語料
      台湾省| 兰溪市| 明星| 佛冈县| 察哈| 抚州市| 眉山市| 安丘市| 泰顺县| 基隆市| 礼泉县| 容城县| 方山县| 清镇市| 米林县| 抚顺市| 改则县| 姚安县| 万荣县| 东丰县| 左权县| 巴南区| 临江市| 蒙自县| 峡江县| 寿光市| 敦煌市| 桃江县| 石林| 宝丰县| 和田市| 梁平县| 武邑县| 永平县| 婺源县| 名山县| 河北区| 宝坻区| 奈曼旗| 黔东| 镇巴县|