0
雷鋒網(wǎng) AI 研習(xí)社按:今天要介紹的比賽是 Quora Question Pairs,該比賽的目的是將具有相同意圖的問(wèn)題正確配對(duì)。最近本次競(jìng)賽的冠軍在 Kaggle 社區(qū)分享了競(jìng)賽經(jīng)驗(yàn),雷鋒網(wǎng) AI 研習(xí)社進(jìn)行了編譯。
Quora 是一個(gè)獲取和分享知識(shí)的問(wèn)答平臺(tái),它能夠促進(jìn)人們互相學(xué)習(xí),以更好地認(rèn)識(shí)這個(gè)世界。每個(gè)月有超過(guò) 1 億的人訪問(wèn) Quora,所以有許多人可能提出相似的問(wèn)題。然而這些具有相似意圖的問(wèn)題可能會(huì)使得尋求者需要花費(fèi)更多的時(shí)間,才能找到所需的最佳答案,而答題者可能也會(huì)覺(jué)得很多問(wèn)題存在重復(fù)。
為了更好地發(fā)掘那些具有相似意圖的問(wèn)題,以幫助用戶更快地找到問(wèn)題的高質(zhì)量答案,提高用戶使用體驗(yàn),Quora 在 Kaggle 上舉辦了本次競(jìng)賽: Quora Question Pairs。下文是比賽冠軍的經(jīng)驗(yàn)分享,正文如下。
1、特征
我們將特征區(qū)分為三種:嵌入特征(Embedding features)、經(jīng)典文本挖掘特征(Classical text mining features)和結(jié)構(gòu)化特征(Structural features)。
嵌入特征
詞嵌入(Word embeddings),例如 Word2Vec
句子嵌入(Sentence embeddings),例如 Doc2Vec、Sent2Vec
使用在 SNLI 上訓(xùn)練的 ESIM 模型的密集層來(lái)編碼問(wèn)題對(duì)(Question pair)
備注:與 Word2Vec 相比,句子嵌入的挑戰(zhàn)更為艱巨,因?yàn)樗鼡碛懈俚挠行畔ⅰ?/p>
經(jīng)典文本挖掘特征
LDA 和 LSI 嵌入的相似性度量
字符袋 n 元模型(Bag of character n-grams,n 取 1 到 8)的相似性度量(TFIDF 重加權(quán)或者不重加權(quán))
網(wǎng)友 Abhishek 和 owl 分享的特征
當(dāng)問(wèn)題的開(kāi)始或結(jié)束相同時(shí),編輯和排序匹配距離
問(wèn)題長(zhǎng)度各異
大寫字母、標(biāo)簽等的數(shù)量
以 "Are"、"Can"、"How"等開(kāi)頭的句子占問(wèn)題的 1/2,所有相應(yīng)的數(shù)學(xué)工程
我們還使用斯坦福大學(xué)的 corenlp 來(lái)標(biāo)記詞匯,利用 postagger 和 ner 來(lái)預(yù)處理一些深度學(xué)習(xí)模型的文本輸入。
結(jié)構(gòu)化特征
我們從訓(xùn)練數(shù)據(jù)和測(cè)試數(shù)據(jù)集串起的多個(gè)問(wèn)題對(duì)的邊(edge)來(lái)構(gòu)建圖,進(jìn)而構(gòu)建密度特征。當(dāng)切割主邊時(shí),我們會(huì)統(tǒng)計(jì)附件的問(wèn)題 1、問(wèn)題 2、最小、最大、交叉、聯(lián)合、最短路徑長(zhǎng)度。
我們進(jìn)一步建立了密度特征,一次又一次計(jì)算鄰問(wèn)題的鄰問(wèn)題......(嵌套循環(huán))。我們還計(jì)算了前面的問(wèn)題,它也挨著后面的問(wèn)題(循環(huán))。
我們嘗試了不同的圖結(jié)構(gòu):我們構(gòu)建了無(wú)向圖和有向圖(邊從問(wèn)題 1 指向問(wèn)題 2),我們也試圖將問(wèn)題 1 的密度特征從問(wèn)題 2 的特征中分離出來(lái),除了可交換的特征之外還產(chǎn)生了不可交換特征。
我們還建立了描述問(wèn)題對(duì)連通子圖的特征:邊數(shù)、節(jié)點(diǎn)數(shù)、訓(xùn)練的邊的百分比。
我們還計(jì)算了問(wèn)題對(duì)的鏈接子圖中的相同特征,這些子圖來(lái)自于出現(xiàn)超過(guò)一次的問(wèn)題對(duì)。我們想要做的是通過(guò)改變結(jié)構(gòu)來(lái)消除那些我們認(rèn)為會(huì)破壞圖特征的捏造問(wèn)題。
最后,和其它團(tuán)隊(duì)一樣,我們使用一些初始模型對(duì)圖進(jìn)行加權(quán)。我們嘗試了 logit ,重新調(diào)整了預(yù)測(cè),但是原始預(yù)測(cè)效果最好。我們還使用相似特征之一對(duì)圖進(jìn)行加權(quán)。
2、模型
我們的 NNets 主要在兩個(gè)架構(gòu)上進(jìn)行工作:孿生神經(jīng)網(wǎng)絡(luò)(Siamese neural networks)和注意力神經(jīng)網(wǎng)絡(luò)(Attention neural networks)。
帶有預(yù)訓(xùn)練 Glove 嵌入的孿生 LSTM
具有預(yù)訓(xùn)練 FastText 嵌入的可分解注意力機(jī)制(https://arxiv.org/abs/1606.01933),這個(gè)模型在 cv 上取得了 ~0.3 。
具有預(yù)訓(xùn)練 FastText 嵌入的 ESIM(https://arxiv.org/abs/1609.06038),這是我們最好的純深度學(xué)習(xí)的 NLP 模型,它在 cv 上取得了 ~0.27。但是這個(gè)模型運(yùn)行時(shí)間太長(zhǎng),我們只在第一個(gè)堆疊層中使用過(guò)一次。
我們注意到深度學(xué)習(xí)(DL) 在第一個(gè)堆疊層中具有很好的效果,但是在第二層上卻不如簡(jiǎn)單的多層感知機(jī)(MLP)。
其中一個(gè)關(guān)鍵問(wèn)題是選擇我們的一些傳統(tǒng)特征并將其納入這些網(wǎng)絡(luò)。我們使用預(yù)訓(xùn)練的 FastText 和 Glove 嵌入,并設(shè)置 trainable=False,因?yàn)槲覀冊(cè)?jīng)嘗試過(guò)微調(diào)模型參數(shù),但并沒(méi)有獲得任何性能提高。
最終,我們證明了在文本序列和我們的圖/文本挖掘特征上訓(xùn)練的神經(jīng)網(wǎng)絡(luò)是性能最好的單一模型。我們還嘗試在字符層級(jí)上訓(xùn)練孿生模型,以進(jìn)一步提高堆疊的多樣性,但是很難判斷它是否真的有用。
然后我們嘗試了更多的經(jīng)典算法以利用圖結(jié)構(gòu)特征,比如像常用算法 XGB/LGBM。
3、再縮放(Rescaling)
為了平衡訓(xùn)練和測(cè)試數(shù)據(jù)之間目標(biāo)分布(Target distribution)的差異,我們?cè)?sweezyjeezy 分析(再次感謝他的貢獻(xiàn),它幾乎幫助了所有的參賽者)的基礎(chǔ)上做了更細(xì)致的研究,鏈接是:
https://www.kaggle.com/c/quora-question-pairs/discussion/31179
我們意識(shí)到可以通過(guò)優(yōu)化再縮放來(lái)減少 Log loss。雖然我們沒(méi)有找到一個(gè)更好的假設(shè)來(lái)模擬測(cè)試數(shù)據(jù)集中數(shù)據(jù)的分布,但是通過(guò)在數(shù)據(jù)的本地子樣本上使用該方案,成功增加了算法的準(zhǔn)確性。
我們發(fā)現(xiàn)訓(xùn)練/測(cè)試數(shù)據(jù)偏差在三個(gè)方面非常不同:
qid1_count = qid2_count = 1
min_qid_count = 1 & max_qid_count > 1
min_qid_count > 1
我們嘗試了公共縮放(Public rescale)和外圍縮放(Perimeter rescale)。對(duì)于第一層模型來(lái)說(shuō)兩者的效果都非常好,但是隨著堆疊的深入,我們發(fā)現(xiàn)公共縮放不夠強(qiáng)大,而外圍縮放卻有點(diǎn)過(guò)頭。我們優(yōu)化了縮放,使它的效果在這兩種方法之間,與公共縮放相比,最終提高了 ~0.001。
4、堆疊(Stacking)
我們采用了四層的堆疊:
層 1:大約 300 個(gè)模型,Paul 和 Lam 的神經(jīng)網(wǎng)絡(luò),以及像 XGB、LGBM 這樣效果出眾的經(jīng)典算法,以及大量的 Scikit-learn 分類算法(ET、RF、KNN等等)
層 2:大約使用了 150 個(gè)模型:
所有輸入特征
以上所有算法的預(yù)測(cè)結(jié)果
我們添加了最好的 L1 純文本 ESIM 模型的隱藏層
層 3:2 個(gè)線性模型
以最小的 3 個(gè) Spearman 相關(guān)性 L2 預(yù)測(cè)為基礎(chǔ)進(jìn)行嶺回歸(Ridge)(基于最大/最小值,創(chuàng)建了 3 個(gè)邊界)
采用 LASSO(回歸模型)對(duì)所有的 L1 和 L2 預(yù)測(cè)進(jìn)行 logit 預(yù)處理
層 4:混合
55/45,基于公共 LB 得分(最佳的提交成績(jī))
Via Quora Question Pairs,由雷鋒網(wǎng) AI 研習(xí)社進(jìn)行編譯。
雷峰網(wǎng)版權(quán)文章,未經(jīng)授權(quán)禁止轉(zhuǎn)載。詳情見(jiàn)轉(zhuǎn)載須知。