GRU模型在問答系統(tǒng)中的應(yīng)用

GRU模型與LSTM模型設(shè)計(jì)上十分的相似,LSTM包含三個(gè)門函數(shù)(input gate、forget gate和output gate),而GRU模型是LSTM模型的簡(jiǎn)化版,僅僅包含兩個(gè)門函數(shù)(reset gate和update gate)。reset gate決定先前的信息如何結(jié)合當(dāng)前的輸入,update gate決定保留多少先前的信息。如果將reset全部設(shè)置為1,并且update gate設(shè)置為0,則模型退化為RNN模型。

LSTM模型公式
GRU模型公式

從上面GRU模型和LSTM模型的定義可總結(jié)出區(qū)別如下

1:GRU包含2個(gè)門函數(shù)、LSTM包含三個(gè)門函數(shù)。

2:GRU模型沒有output gate,因此它不需要計(jì)算輸出。

3:LSTM中input gate和forget gate的作用分別為控制輸入的信息和控制先前的信息。而GRU中由update gate同時(shí)控制輸入和先前的信息,即公式中變量z。reset gate直接應(yīng)用于先前的隱藏狀態(tài)的控制,即公式中變量f。

4:輸出不再需要加入一個(gè)非線性函數(shù)。

LSTM模型和GRU模型在應(yīng)用中的選擇

1:從上面的區(qū)別可以看出,GRU模型的參數(shù)相對(duì)更少,因此訓(xùn)練的速度會(huì)稍快,從實(shí)驗(yàn)中也可以得出該結(jié)論。

2:當(dāng)你的訓(xùn)練數(shù)據(jù)足夠多的時(shí)候,LSTM模型會(huì)表現(xiàn)的更好。

實(shí)驗(yàn)步驟

1:本次實(shí)驗(yàn)采用insuranceQA數(shù)據(jù),你可以在這里獲得。實(shí)驗(yàn)之前首先對(duì)問題和答案按字切詞,然后采用word2vec對(duì)問題和答案進(jìn)行預(yù)訓(xùn)練(這里采用按字切詞的方式避免的切詞的麻煩,并且同樣能獲得較高的準(zhǔn)確率)。

2:由于本次實(shí)驗(yàn)采用固定長(zhǎng)度的GRU,因此需要對(duì)問題和答案進(jìn)行截?cái)啵ㄟ^長(zhǎng))或補(bǔ)充(過短)。

3:實(shí)驗(yàn)建模Input。本次實(shí)驗(yàn)采用問答對(duì)的形式進(jìn)行建模(q,a+,a-),q代表問題,a+代表正向答案,a-代表負(fù)向答案。insuranceQA里的訓(xùn)練數(shù)據(jù)已經(jīng)包含了問題和正向答案,因此需要對(duì)負(fù)向答案進(jìn)行選擇,實(shí)驗(yàn)時(shí)我們采用隨機(jī)的方式對(duì)負(fù)向答案進(jìn)行選擇,組合成(q,a+,a-)的形式。

4:將問題和答案進(jìn)行Embedding(batch_size, sequence_len, embedding_size)表示。

5:對(duì)問題和答案采用相同的GRU模型計(jì)算特征(sequence_len, batch_size, rnn_size)。

6:對(duì)時(shí)序的GRU特征進(jìn)行選擇,這里采用max-pooling。

7:采用問題和答案最終計(jì)算的特征,計(jì)算目標(biāo)函數(shù)(cosine_similary)。

目標(biāo)函數(shù)

參數(shù)設(shè)置

1:、這里優(yōu)化函數(shù)采用論文中使用的SGD(采用adam優(yōu)化函數(shù)時(shí)效果會(huì)差大概2個(gè)點(diǎn))。

2、學(xué)習(xí)速率為0.1。

3:、訓(xùn)練100輪,大概需要6個(gè)小時(shí)的時(shí)間。

4、margin這里采用0.15,其它參數(shù)也試過0.05、0.1效果一般。

5、這里訓(xùn)練沒有采用dropout和l2約束,之前試過dropout和l2對(duì)實(shí)驗(yàn)效果沒有提升,這里就沒有采用了。

6、batch_size這里采用問題30字、答案100字。

7、rnn_size為150(繼續(xù)調(diào)大沒有明顯的效果提升,而且導(dǎo)致訓(xùn)練速度減慢)

8、目標(biāo)函數(shù)采用cosine_similary。

實(shí)驗(yàn)效果對(duì)比

QA_CNN:0.62左右

QA_LSTM:0.66左右

QA_BILSTM:0.68左右

QA_GRU :0.6378左右

QA_BIGRU :0.669左右

:這里分別實(shí)驗(yàn)了單向的GRU算法、雙向的GUR算法、單向的LSTM和雙向的LSTM算法。單向GRU/LSTM的算法只能捕獲當(dāng)前詞之前詞的特征,而雙向的GRU/LSTM算法則能夠同時(shí)捕獲前后詞的特征,實(shí)驗(yàn)證明雙向的GRU/LSTM比單向的GRU/LSTM算法效果更佳。LSTM算法性能稍優(yōu)于GRU算法,但是GRU算法訓(xùn)練速度要比LSTM算法快。實(shí)際使用可以根據(jù)自己的要求做出權(quán)衡。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容