二十七 用深度學習來做自動問答的一般方法

2021-07-26 10:38:07 字數 1287 閱讀 3112

聊天機械人本質上是乙個範問答系統,既然是問答系統就離不開候選答案的選擇,利用深度學習的方法可以幫助我們找到最佳的答案,本節我們來講述一下用深度學習來做自動問答的一般方法

問答系統訓練其實是訓練乙個怎麼在一堆答案裡找到乙個正確答案的模型,那麼為了讓樣本更有效,在訓練過程中我們不把所有答案都放到乙個向量空間中,而是對他們做個分組,首先,我們在語料庫裡採集樣本,收集每乙個問題對應的500個答案集合,其中這500個裡面有正向的樣本,也會隨機選一些負向樣本放裡面,這樣就能突出這個正向樣本的作用了

cnn的三個優點:sparse interaction(稀疏的互動),parameter sharing(引數共享),equivalent respresentation(等價表示)。正是由於這三方面的優點,才更適合於自動問答系統中的答案選擇模型的訓練。

我們設計卷積公式表示如下(不了解卷積的含義請見《機器學習教程 十五-細解卷積神經網路》):

假設每個詞用三維向量表示,左邊是4個詞,右邊是卷積矩陣,那麼得到輸出為:

如果基於這個結果做1-maxpool池化,那麼就取o中的最大值

訓練時獲取問題的詞向量vq(這裡面詞向量可以使用google的word2vec來訓練,有關word2vec的內容可以看《自己動手做聊天機械人 二十五-google的文字挖掘深度學習工具word2vec的實現原理》),和乙個正向答案的詞向量va+,和乙個負向答案的詞向量va-, 然後比較問題和這兩個答案的相似度,兩個相似度的差值如果大於乙個閾值m就用來更新模型引數,然後繼續在候選池裡選答案,小於m就不更新模型,即優化函式為:

引數更新方式和其他卷積神經網路方式相同,都是梯度下降、鏈式求導

對於測試資料,計算問題和候選答案的cos距離,相似度最大的那個就是正確答案的**

以下是六種結構設計,解釋一下,其中hl表示hide layer隱藏層,它的啟用函式設計成z = tanh(wx+b),cnn是卷積層,p是池化層,池化步長為1,t是tanh層,p+t的輸出是向量表示,最終的輸出是兩個向量的cos相似度

圖中hl或cnn連起來的表示他們共享相同的權重。cnn的輸出是幾維的取決於做多少個卷積特徵,如果有4個卷積,那麼結果就是4*3的矩陣(這裡面的3在下一步被池化後就變成1維了)

要把深度學習運用到聊天機械人中,關鍵在於以下幾點:

1. 對幾種神經網路結構的選擇、組合、優化

2. 因為是有關自然語言處理,所以少不了能讓機器識別的詞向量

3. 當涉及到相似或匹配關係時要考慮相似度計算,典型的方法是cos距離

4. 如果需求涉及到文字序列的全域性資訊就用cnn或lstm

5. 當精度不高時可以加層

6. 當計算量過大時別忘了引數共享和池化

OpenGL學習二十七 混合

混合步驟 1.設定混合模式 2.啟用混合 glcolor4f 1.0f,1.0f,1.0f,0.5f 全亮度,50 alpha 混合 glblendfunc gl src alpha,gl one 基於源象素alpha通道值的半透明混合函式 glenable gl blend 開啟混合 opengl...

深度學習筆記(二十七)遷移學習和多工學習

在識別貓的場景下,我們已經訓練出了不錯的模型,如果要把這個模型搬到放射科診斷上,應該怎麼做呢?如下的做法利用了預訓練模型或者說微調 fine tuning 要在另乙個場景下做影象識別的工作,當然和識別貓不一樣咯,這裡的做法是把輸出層的去掉,並去掉輸出層的權值,然後為輸出層賦予隨機權重,讓神經網路在放...

系統學習NLP(二十七) EMLo

deep contextualized word representations 參考 elmo的語言理解是通過 訓練單詞序列中的下乙個單詞來實現,這項任務被稱為語言建模。這是很方便的,因為我們有大量的文字資料,這樣的模型不需要標籤就可以從中學習。今天給大家介紹一篇2018年提出的 deep con...