當前位置:
首頁 > 新聞 > CIKM AnalytiCup 2018冠軍方案出爐,看他們構造模型的訣竅

CIKM AnalytiCup 2018冠軍方案出爐,看他們構造模型的訣竅

雷鋒網 AI 科技評論消息,CIKM AnalytiCup 2018(阿里小蜜機器人跨語言短文本匹配演算法競賽)近日落幕,由微軟羅志鵬、微軟孫浩,北京大學黃堅強,華中科技大學劉志豪組成的 DeepSmart 團隊在一千多名參賽選手中突出重圍,一舉奪冠。

CIKM AnalytiCup 2018冠軍方案出爐,看他們構造模型的訣竅

打開今日頭條,查看更多圖片

本次演算法競賽以聊天機器人中最常見的文本匹配演算法為目標,通過語言適應技術構建跨語言的短文本匹配模型。在本次競賽中,源語言為英語,目標語言為西班牙語。參賽選手可以根據主辦方提供的數據,設計模型結構判斷兩個問句語義是否相同。最終,比賽主辦方將在目標語言上測試模型的性能。在這次比賽中,主辦方對外部資源進行了嚴格限制。訓練數據集包含兩種語言,主辦方提供 20000 個標註好的英語問句對作為源數據,同時提供 1400 個標註好的西班牙語問句對,以及 55669 個未標註的西班牙語問句。所有的標註結果都由語言和領域專家人工標註。與此同時,也提供每種語言的翻譯結果。

規則描述

主辦方希望參賽選手關注在短文本匹配和語言適應的問題上,所有的參賽選手都需要注意以下限制:

1)模型訓練中只能使用主辦方提供的數據,包括有標註語料、無標註語料、翻譯結果、詞向量等。不得使用其它數據或預訓練模型。

2)如果需要預訓練詞向量,只能使用 fastText 預訓練的詞向量模型。

3)如果需要使用翻譯模型或翻譯語料,只能使用主辦方提供的翻譯結果。

4)理論上選手們可以用主辦方提供的平行語料訓練出一個翻譯模型,此類方法不禁止,但不推薦。

DeepSmart 團隊成員介紹:

羅志鵬(getmax): 微軟 Bing 搜索廣告演算法工程師,北京大學軟體工程專業碩士,專註於深度學習技術在 NLP, 廣告相關性匹配,CTR 預估等方面的研究及應用。

黃堅強 (Jack Strong) : 北京大學軟體工程專業碩士在讀,擅長特徵工程、自然語言處理、深度學習。

孫浩(fastdeep): 微軟 Bing 搜索廣告部門首席開發工程師,專註於機器學習與深度學習在搜索廣告和推薦演算法領域的創新和應用,致力於通過提高在線廣告匹配演算法、相關性模型和點擊率預估模型等來推動廣告收入增長。

劉志豪 (LZH0115) : 華中科技大學自動化學院控制科學與工程碩士在讀,主要研究方向圖像識別、zero-shot learning、深度學習。

CIKM AnalytiCup 2018冠軍方案出爐,看他們構造模型的訣竅

左一:微軟 Bing 搜索廣告部門首席開發工程師孫浩;左二:微軟 Bing 搜索廣告演算法工程師羅志鵬

團隊成員曾經獲獎記錄:


  • NeurIPS 2018 AutoML(Phase 1)

    1st place

  • KDD Cup 2018(Second 24-Hour Prediction Track)

    1st place

  • KDD Cup 2018(Last 10-Day Prediction Track)

    1st place

  • Weibo Heat Prediction

    1st place

  • Shanghai BOT Big Data Application Competition

    1st place

  • Daguan text Classification

    1st place

以下為 DeepSmart 團隊成員羅志鵬的奪冠心得和詳細方案解讀:

1. 你們團隊共有四名成員,大家是通過何種渠道認識的?大家的研究背景以及在比賽中的分工如何?各自擅長的工作是什麼?

比賽剛開始我們隊伍有三人,包括我,黃堅強和孫浩(Allen),其中黃堅強是我的直系師弟,孫浩是我在微軟的 tech lead,是廣告匹配和推薦方面的專家。在比賽即將進入第二階段時,我在比賽交流群看到劉志豪想找隊伍合併,當時覺得和我們的模型有些互補,就組成了 4 人戰隊。由於堅強和志豪是在校碩士研究生,相對業餘時間較多,他們在數據處理和特徵工程上花了不少時間;我和 Allen 主要設計特徵和模型結構,堅強和志豪也有參與。

我個人比較擅長設計和實現深度學習模型,在特徵工程和模型融合上也有豐富的經驗;Allen 身為廣告推薦領域的老兵,對主流匹配演算法如數家珍,對數據有深入透徹的理解,他基於工業界的實際經驗對演算法的弱點提出了多種改進方案,幫助我們避免了一些數據陷阱;堅強和志豪比較擅長設計特徵,對數據有敏銳的直覺,能快速實現特徵並得到效果反饋以加快模型迭代。

整體而言,我們隊伍的成員有各自擅長的領域,大家優勢互補,在比賽過程中充分溝通、通力合作,最終讓我們在眾多競爭對手中脫穎而出。

2. 你們最終取得了第一名,這個最終成績是根據什麼而定的呢?

最終成績由 5 項指標計算而來,階段一線上成績佔比 20%,階段二線上成績佔比 30%,創新性、系統性佔比 20%,數據理解佔比 10%,實用性佔比 20%。

階段一成績:初賽線上成績。

階段二成績:複賽線上成績。

創新性、系統性:設計思路新穎,從數據預處理到模型結果本地驗證的整體設計獨特;合理使用開源庫,充分發揮開源模型的作用,不盲目拷貝;演算法模型設計思路清晰,詳細論述模型設計的優勢,符合賽題數據應用特點;演算法模式架構特徵明顯,闡明了作品中設計相關特徵的目的,及其對於預測目標的優勢;演算法模型結果驗證策略合理,能夠證明最優的結果是經過仔細比對後得出,而非運氣導致。

數據理解:充分理解數據樣本的欄位含義,清晰闡明數據預處理方法。

實用性:參賽作品的演算法模型設計,對於真實業務具有實用性或啟發。

CIKM AnalytiCup 2018冠軍方案出爐,看他們構造模型的訣竅

圖:階段二成績排名

3. 阿里對參賽規則進行了嚴格限制,如模型訓練時只能使用他們提供的數據,只能使用 fastText 預訓練的詞向量模型,如果需要使用翻譯模型或翻譯語料,只能使用他們提供的翻譯結果,這會不同於你們以往的比賽嗎?是否會帶來一些新的挑戰?

這些限制能使得這次比賽更公平,大家使用相同的資源來進行效果比拼,儘管能使用一些外部資源是可以幫助提升效果的,但其實和以往的比賽的差別並不是很大,而且還能讓我們的精力集中在官方提供的數據上。

4. 團隊成員中是否有人懂西班牙語?如果懂西班牙語,會不會在比賽中佔據一些優勢?

沒有。如果懂西班牙語也許能針對語言做一些數據處理或者特徵提取來提升模型效果,具體是否有效需要實驗去驗證。

5. 這次比賽的難點集中在哪些方面?


  • 嚴格限制使用外部資源。

  • 提供的訓練數據少,local 驗證不穩定。

  • 如何有效的使用英文數據。

6. 能具體講講你們在數據預處理、特徵工程、驗證、模型選擇、模型融合上的思路?

數據預處理、特徵工程

我們通過 LightGBM 模型來驗證特徵效果,對文本做不同的預處理後進行特徵工程。經驗證,不同的文本預處理後形成的特徵進行混合非常有利於單個模型的泛化能力的提升。我們將兩個問題稱為 q1 與 q2,接下來列舉用到的特徵,並說明不同預處理方式所使用的特徵。

使用的特徵如下:

文本距離特徵。文本距離能較簡單地判斷出不相似的文本,相似的文本往往字元數及單詞數較為接近,會帶有相同或相似的單詞,並且編輯距離會較短。同時,使用了 tf-idf 後關鍵詞的權重會高,使用它來代替 count 提取特徵更有效。以下為使用的文本距離特徵:

  • 字元距離:q1 與 q2 字元數的差值絕對值,比例。

  • 單詞距離:相同單詞 tf-idf 權重和占所有單詞 tf-idf 權重和的比例,q1 與 q2 相同單詞數占所有單詞數的比例,q1 與 q2 單詞的 jaccard 距離,q1 與 q2 單詞的交集數,並集數,單詞數的差值等。

  • 字元 fuzzywuzzy 距離:使用 fuzzywuzzy 計算字元的編輯距離等。

  • 單詞 fuzzywuzzy 距離:使用 fuzzywuzzy 計算單詞的編輯距離等。

詞向量特徵。共使用了三種詞向量:官方提供的詞向量,利用官方提供的訓練數據、預測數據、無標籤數據訓練的詞向量,以及去除停用詞後訓練的詞向量。雖然訓練集及測試集數據量小,但是使用它們訓練得出的詞向量更能體現出該數據的特性。由於兩個問題的單詞長度並不相等,並且相似句子的詞序差異很大,要使用詞向量計算問題相似性,需要將詞向量轉換為句向量,我們對問題的詞向量進行了兩種處理得到了與詞向量相同維度的句向量,分別是所有單詞的詞向量取均值,所有單詞的詞向量和除以單詞詞向量的 2 範數,使用這兩種句向量來計算相似度能從詞向量的角度來計算出兩個問題的相似性。我們使用詞向量構建了以下特徵:

  • q1 詞向量均值與 q2 詞向量均值的相似度,相似度計算包括 cosine, cityblock,canberra, euclidean, minkowski, braycurtis,這些不同的距離能從不同角度來度量相似度。

  • q1 詞向量和除以 q1 詞向量 2 範數與 q2 詞向量和除以 q2 詞向量 2 範數的相似度,相似度計算包括 cosine, cityblock,, canberra, euclidean, minkowski, braycurtis。

  • 使用詞向量計算問題的 Word Mover"s Distance。

  • 根據兩個問題的單詞的 tf-idf 值提取兩個問題的關鍵詞,對關鍵詞的詞向量計算餘弦相似度。兩個問題會由於最關鍵的單詞不相似從而導致句子不相似,所以通過 tf-idf 先計算出問題的關鍵詞,然後再計算關鍵詞詞向量的相似度。

主題模型特徵。主題模型是常用的文本相似度計算模型,使用主題模型來提取文本相似度特徵加入我們的模型對模型的泛化能力有很大的提升。我們採用 LSI 和 LDA 模型來將句子映射到低維度的主題向量空間,由於主題向量維度低,可以直接使用主題向量特徵而且不容易導致模型的過擬合,同時可以根據兩個問題的主題向量來得出相似性特徵,主題向量的計算能直接體現出兩個問題的主題是否相似,以下為使用到的主題模型特徵:

  • q1,q2 主題數為 3,5,7,9 的 LSI、LDA 主題向量

  • q1,q2 主題向量差值的絕對值

  • q1,q2 主題向量的相似度

預處理方式如下:

  • 原文本:使用特徵 1,2,3,4,兩個問題文本距離相差大的樣本更傾向於不相似。

  • 去標點符號+字母轉小寫:使用特徵 1,2,3,4,5,6,7,8,9,10,11,有無標點符號基本不會改變短文本的語義,大小寫字母對語義也不會有影響,所以去標點符號及轉換為小寫後提取的特徵更為有效。

  • 去標點符號+字母轉小寫+單詞 2 元組:使用特徵 2,4,9,10,11,n 元模型是自然語言處理的常用模型,使用單詞 n 元組來提取特徵,給模型增加了單詞間的詞序信息。

  • 去標點符號+字母轉小寫+去停用詞:使用特徵 1,2,3,4,5,6,7,8,9,10,11,停用詞往往沒有實際含義,去掉停用詞再提取特徵給模型增強了非停用詞的信息。

  • 去標點符號+字母轉小寫+去停用詞+單詞 2 元組:使用特徵 2,4,11

  • 去標點符號+字母轉小寫+去問題交集詞:使用特徵 1,3,4,5,6,7,8,9,10,11,去掉問題交集詞後提取特徵能給模型增強非交集詞的信息。

無標籤數據的利用:

無標籤數據中包含西班牙語到英文的翻譯,且比賽規則說明了不能使用翻譯介面,因此最初我們訓練了一個翻譯模型,但是由於訓練數據太少,導致模型嚴重過擬合,最後我們放棄使用翻譯模型。

經過數據分析發現無標籤數據集中包含部分測試集的英文翻譯,所以我們採用純規則在無標籤數據中對測試集西班牙語的英文翻譯進行了提取,從而我們可以訓練英文模型並且對部分測試集進行預測。實驗中發現當我們使用弱匹配時雖然能匹配到更多的英文對,但是線上效果卻不好,經過分析發現弱匹配會有映射錯誤,而一旦映射錯誤就很容易被預測成一個接近 0 的概率值,如果這樣,原來這個樣本的 label 是 1 的話,loss 就會變得很大,因此我們匹配時盡量做到精確匹配,儘管這樣匹配的樣本不多。

根據我們的較精確的匹配方法,在 A 榜測試集中,我們可以從 5000 個測試集中提取出 2888 個,在 B 榜測試集中,我們可以從 10000 個測試集中提取出 4334 個。在 A 榜中,使用英文訓練的模型來預測這 2888 個測試集,經驗證,使用西班牙語模型與英語模型融合在 A 榜評分上能提升 0.003~0.004,由於 B 榜匹配上的樣本佔比更少,效果提升可能會有所減少。

從實驗中我們驗證了英文模型的有效性,如果使用英文翻譯介面肯定能夠得到更好的效果,此外也可以使用多種語言進行翻譯來做數據增強。

驗證

我們採用了以下兩種驗證方式。

  • Holdout validation:

由於測試集都為原生的西班牙語,而給予的訓練集分為兩類,一類是 20000 對從英語翻譯過來的西班牙語,一類是 1400 對從西班牙語翻譯過來的英語。顯然,1400 對西班牙語更適合用於做驗證,由於驗證集和線上測試正負比例不一致,所以我們複製 1400 對西班牙語樣本並調整了正負樣本的比重,最終得到 34061 對驗證集,同時我們對模型的隨機數種子進行多次更換,取多個模型對驗證集預測的平均值來得到最終的驗證集評分。經過與 A 榜得分的對照,對該驗證集預測評分的提升與 A 榜分數的提升保持了較好的一致性。

  • k-fold validation:

由於數據集較小,只採用一種驗證方式並不能保證模型的泛化能力,所以我們也對 21400 對訓練集採用了十折交叉驗證。在每一折,我們留出一個部分作為驗證集,一個部分作為測試集,並且將其餘部分作為訓練集。同時考慮到單一的數據劃分,可能劃分後的數據分布與測試集的數據分布差異更大,使得線下驗證的結果可能與線上不一致,因此,我們設定不同的隨機種子來產生多種劃分。通過這種方式來調節模型的超參數以獲得更好的線下線上一致性。當大致確定了模型的超參數之後,我們再使用一般的交叉驗證方式來訓練模型,以使得每折有更多的訓練數據。

模型選擇、模型融合

在模型的選擇上,我們主要考慮使用深度神經網路模型,主要包括 3 種網路結構。在實驗中我們測試了多種詞嵌入的形式,我們使用了給定的 300 維的詞向量,並且通過給定的語料訓練了 128 維的詞向量。通過實驗我們發現使用給定語料訓練出來的詞向量能夠實現更低的 logloss,這可能是因為給定語料訓練的詞向量對問題本身根據有針對性,能夠學習到針對該任務更好的表示;此外我們還測試過 tri-letter 和字元卷積,因實驗效果不好最後未使用。

  • 模型一:M-CNN

該模型是由我們自主創新的一個語義匹配模型。首先使用 Embedding 對 q1,q2 進行編碼提取每個 word 的語義特徵,然後再經過 BN 對 word 的語義特徵進行標準化,然後我們使用不同尺寸的 filter 建立卷積層,每一種 filter 用來提取一種局部語義特徵,filter 越大局部語義跨度越大。這裡我們使用 conv1-conv5 和 maxpooling 後得到 5 種不同的句子語義特徵向量,再用 q1 和 q2 對應的局部語義特徵向量計算餘弦相似度,可以得到 5 個餘弦相似度,我們也添加了交叉相似特徵,包括 Cos1*Cos2, Cos1*Cos3, Cos1*Cos4, 然後 concat 連接起來形成新的表示層,最後再經過 Dense,PRelu, Dropout, BN,output 得到最後的匹配結果。此外我們進行了進一步優化,我們用 Embedding 後的 q1,q2 計算餘弦相似矩陣,這裡每個 word 的向量由該 word 與另一端的所有 word 餘弦相似性組成,然後我們保留了 top10 的相似性作為該 word 的語義表達,然後經過卷積、maxpooling、dense 得到另一種匹配度,最後加入到 Cos 的 concat 中。由於 q1 和 q2 的順序無關,所以這裡的 Embedding,BatchNormlization 和所有的 convolution 層都是共享的。

CIKM AnalytiCup 2018冠軍方案出爐,看他們構造模型的訣竅

  • 模型二:Decomposable Attention

該模型的核心是 alignment, 即詞與詞之間的對應關係,alignment 用在了兩個地方,一個是 attend 部分,是用來計算兩個句子之間的 attention 關係,另一個是 compare 部分,對兩個句子之間的詞進行比較,每次的處理都是以詞為單位,最後用前饋神經網路去做預測,它並沒有使用到詞在句子中的時序關係,但是它參數量少且運行速度較塊,在實驗中也取得了不錯的效果。

CIKM AnalytiCup 2018冠軍方案出爐,看他們構造模型的訣竅

  • 模型三:ESIM

相對於 Decomposable Attention 模型來說,ESIM 在 Embedding 之後添加了 BatchNormlization 層,並把 project 層和 compare 層都從原來的 Dense 換成了 BiLSTM。這裡的局部推理(Local Inference Modeling)也是一個 attention 過程,只是它是在 LSTM 輸出序列上計算得到的。同樣 Pooling 層也是在 LSTM 的每個時間步上進行 pooling 的,ESIM 模型有了很強的時序關係,在時序比較敏感的任務中一般能夠取得很好的效果,在此次競賽中 ESIM 也表現的很好。

CIKM AnalytiCup 2018冠軍方案出爐,看他們構造模型的訣竅

使用 dense feature 作為 gate 的模型優化:

我們在 LightGBM 中使用了文本字距離、tf-idf、詞向量相似度、LDA、LSI 等特徵,同時我們把這些特徵嵌入到了深度學習模型中,這部分特徵我們稱做 dense feature。在實驗中發現把 dense feature 和 nn 模型某一層直接 concat 的效果並不好,我們參考了 product neural network 概念以及 LSTM 中的 Gate 設計,我們把 dense feature 做為 gate 來使用,使用中我們把 dense feature 經過全連接層得到和子模型維度一樣的表示向量,然後加上 sigmoid 激活函數,再進行 element-wise-multiplication,這樣 dense feature 就可以控制子模型的信息流通,通過實驗發現這樣的結構在每個子模型上都得到的很大的提升。優化後的模型結構如下:

CIKM AnalytiCup 2018冠軍方案出爐,看他們構造模型的訣竅

Gate-ESIM:

CIKM AnalytiCup 2018冠軍方案出爐,看他們構造模型的訣竅

這次比賽我們在模型融合上做的比較簡單,最終結果融合了 4 種模型,包括 Gate-M-CNN, Gate-DA, Gate-ESIM 和 LightGBM,對於這 4 種模型我們訓練了英文版本和西班牙語版本,首先按照兩種語言分別加權融合,然後再融合兩種語言的結果。

7. 你們在榜單上領先第二名很多,這次比賽能得到冠軍的決定性因素有哪些?


  • 提出了一種用 dense feature 做 gate 的網路結構。

  • 設計了一種基於 CNN 的多種局部相似度的網路結構。

  • 使用 2 種本地驗證方式,讓效果提升更穩定。

  • 從無標籤數據中匹配英文,進行兩種語言的模型融合。

  • 使用 2 個版本的 dense feature 構造差異化的 gate, 增加模型差異性。

  • 基於官方數據訓練了 fasttext 詞向量,由於詞向量處於網路的第一層,並且佔用了大量參數,使用不同的詞向量訓練的模型具有很大的差異性。

  • 融合 LighGBM 和 DNN 模型。

  • 構造了幾種差異化的模型結構,提升了融合效果,增加了結果穩定性。

  • 使用不同的預處理方法構造特徵,加強了特徵表達。

  • 多種句向量距離度量方法,包括詞向量均值距離,Word Mover"s Distance 及 TF-IDF 與詞向量的結合。

  • 使用 LDA,LSI, fuzzywuzzy 等增加特徵多樣性。

8. 你們已經參加了很多數據挖掘類比賽,如今年的 KDD Cup,NeurIPS 2018 AutoML, 這些賽事有哪些共性?你們挑選賽事的標準是什麼?

這些都是頂級學術會議舉辦的比賽,比賽質量高,影響力大,有許多經驗豐富且實力很強的競爭對手。

參加比賽主要是我們的個人興趣,我們參加過許多不同類型的比賽,大多都是使用的工業應用數據。在比賽中,我們有機會去真正解決這些工業應用問題,這讓我們頗有成就感,因此我們並沒有什麼嚴格的挑選賽事標準,能從比賽中學到東西並解決工業應用問題就是我們的選擇標準。

9. 對於經常參加機器學習類比賽的同學,有什麼好的建議和經驗分享?如何才能做到像你們這樣的成績?

經常參加機器學習類競賽的同學通常是對機器學習競賽感興趣的同學,有的在校,有的在職,通常在校學生比較多,在職的相對要少一些。

對於在校的同學來說,參加機器學習競賽可以快速提升自己的專業技能,也能積累實戰經驗,對找實習和找工作都有很大幫助;對於在職的同學來說,希望在業餘競賽的同時能把競賽中學習到的東西應用到當前工作中來,由於競賽需要花費不少時間,也建議隊伍中有時間相對比較多的在校學生;也希望參賽經驗豐富的同學能多多分享,帶帶新人。

其實網上已經有挺多經驗分享了,我們的分享很簡單:多看看優勝隊伍的分享和相關任務的 paper,多思考,對於特定任務可以結合實際業務場景深入探索。

在機器學習競賽中取得 top 的成績不僅要實力也需要一定的運氣,放鬆心態,帶著學習的態度去玩比賽,在玩的過程中,能提升自己的能力,認識更多相同興趣的朋友,這就是最大的收穫。

雷鋒網雷鋒網

喜歡這篇文章嗎?立刻分享出去讓更多人知道吧!

本站內容充實豐富,博大精深,小編精選每日熱門資訊,隨時更新,點擊「搶先收到最新資訊」瀏覽吧!


請您繼續閱讀更多來自 雷鋒網 的精彩文章:

下個五年,跨境支付的變數在哪裡?
乾貨|BERT fine-tune 終極實踐教程

TAG:雷鋒網 |