在問答系統(tǒng)的應(yīng)用中,用戶輸入一個(gè)問題,系統(tǒng)需要根據(jù)問題去尋找最合適的答案啄枕。
1:采用句子相似度的方式。根據(jù)問題的字面相似度選擇相似度最高的問題對(duì)應(yīng)的答案蚓耽,但是采用這種字面相似度的方式并不能有效的捕獲用戶意圖的能力有限渠牲。
2:IBM早期應(yīng)用在watson系統(tǒng)中的DeepQa算法。該算法通過人工抽取一系列的特征步悠,然后將這些特征輸入一個(gè)回歸模型签杈。該算法普適性較強(qiáng),并且能有效的解決實(shí)際中的問題鼎兽,但是準(zhǔn)確率和召回率一般答姥。
3:深度學(xué)習(xí)算法。依然是IBM的watson研究人員在2015年發(fā)表了一篇用CNN算法解決問答系統(tǒng)中答案選擇問題的paper谚咬。通過深度學(xué)習(xí)算法不僅能夠避免了人工手動(dòng)抽取大量的問題特征的麻煩鹦付,并且取得了比DeepQa更好的效果。詳細(xì)的介紹可以點(diǎn)擊這里择卦,我們組的同學(xué)去年也針對(duì)該paper做了詳細(xì)的實(shí)驗(yàn)敲长,具體的描述可以在這里找到。
大量的實(shí)驗(yàn)證明秉继,在大數(shù)據(jù)量的情況下祈噪,深度學(xué)習(xí)算法和傳統(tǒng)的自然語言算法相比可以獲得更優(yōu)的結(jié)果。并且深度學(xué)習(xí)算法無需手動(dòng)抽取特征尚辑,因此實(shí)現(xiàn)相對(duì)簡(jiǎn)便钳降。其中CNN算法被大量的研究和使用,CNN算法的優(yōu)點(diǎn)在于實(shí)現(xiàn)簡(jiǎn)單(卷積)腌巾、并且能夠捕獲數(shù)據(jù)位置(單字成詞情況下遂填,一次窗口的卷積類似于一次切詞的操作)的特征信息。但是對(duì)于時(shí)序的數(shù)據(jù)澈蝙,LSTM算法比CNN算法更加適合吓坚。LSTM算法綜合考慮的問題時(shí)序上的特征,通過3個(gè)門函數(shù)對(duì)數(shù)據(jù)的狀態(tài)特征進(jìn)行計(jì)算灯荧,這里將針對(duì)LSTM在問答系統(tǒng)中的應(yīng)用進(jìn)行展開說明礁击。
2016年watson系統(tǒng)研究人員發(fā)表了“LSTM-BASED DEEP LEARNING MODELS FOR NON-FACTOID ANSWER SELECTION”,該論文詳細(xì)的闡述了LSTM算法在問答系統(tǒng)的中的應(yīng)用逗载,這里將針對(duì)文中所描述的算法進(jìn)行實(shí)驗(yà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)度的LSTM码荔,因此需要對(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ì)問題和答案采用相同的LSTM模型計(jì)算特征(sequence_len, batch_size, rnn_size)。
6:對(duì)時(shí)序的LSTM特征進(jìn)行選擇奔穿,這里采用max-pooling镜沽。
7:采用問題和答案最終計(jì)算的特征,計(jì)算目標(biāo)函數(shù)(cosine_similary)贱田。
參數(shù)設(shè)置
1:缅茉、這里優(yōu)化函數(shù)采用論文中使用的SGD(采用adam優(yōu)化函數(shù)時(shí)效果不如SGD)。
2男摧、學(xué)習(xí)速率為0.1蔬墩。
3:、訓(xùn)練150輪耗拓,大概需要1天的時(shí)間拇颅,從訓(xùn)練日志觀察得到,100輪左右基本達(dá)到穩(wěn)定乔询。
4樟插、margin這里采用0.1,其它參數(shù)也試過0.05竿刁、0.2效果一般黄锤。
5、這里訓(xùn)練沒有采用dropout和l2約束食拜,之前試過dropout和l2對(duì)實(shí)驗(yàn)效果沒有提升鸵熟,這里就沒有采用了。
6负甸、batch_size這里采用100旅赢。
7齿桃、rnn_size為300(繼續(xù)調(diào)大沒有明顯的效果提升,而且導(dǎo)致訓(xùn)練速度減慢)
8煮盼、目標(biāo)函數(shù)采用cosine_similary短纵,實(shí)驗(yàn)時(shí)也試過歐幾里德距離,但是效果不佳僵控。
實(shí)驗(yàn)效果對(duì)比
QA_CNN:0.62左右
QA_LSTM:0.66左右
QA_BILSTM:0.68左右
注:這里分別實(shí)驗(yàn)了單向的LSTM和雙向的LSTM算法香到。單向的LSTM算法只能捕獲當(dāng)前詞之前詞的特征,而雙向的LSTM算法則能夠同時(shí)捕獲前后詞的特征报破,實(shí)驗(yàn)證明雙向的LSTM比單向的LSTM算法效果更佳悠就。
如果有任何問題歡迎發(fā)送郵件到lirainbow0@163.com。