如何在3天內拿下DigSci大賽的亞軍?| DigSci科學數據挖掘大賽

  • 2019 年 10 月 31 日
  • 筆記

作者 | 朱翔宇(DOTA)

【導讀】本文將基於作者在中國計算機大會方案宣講PPT中的內容,給出此次比賽的完整方案,主要從賽題理解、建模核心思路、算法核心思想等角度闡述,同時對相關細節進行了適當的拓展講解。涉及SIF Sentence Embedding、InferSent、Bi-LSTM和BERT等算法及相關概念。

任務背景

科學研究已經成為現代社會創新的主要動力。大量科研數據的積累也讓我們可以理解和預測科研發展,並能用來指導未來的研究。論文是人類最前沿知識的媒介,因此如果可以理解論文中的數據,可以極大地擴充計算機理解知識的能力和範圍。

在論文中,作者經常會引用其他論文,並對被引論文做出對應描述。如果我們可以自動地理解、識別描述對應的被引論文,不僅可以加深對科研脈絡的理解,還能在科研知識圖譜、科研自動問答系統和自動摘要系統等領域有所進步。

任務描述

本次比賽將提供一個論文庫(約含20萬篇論文),同時提供對論文的描述段落,來自論文中對同類研究的介紹。參賽選手需要為描述段落匹配三篇最相關的論文。

例子:

描述段落:

An efficient implementation based on BERT [1] and graph neural network (GNN) [2] is introduced.

相關論文:

[1] BERT: Pre-training of deep bidirectional transformers for language understanding.

[2] Relational inductive biases, deep learning, and graph networks.

評測方案

準確率(Precision): 提交結果的準確性通過 Mean Average Precision @ 3 (MAP@3) 打分,具體公式如下:

其中,|U|是需要預測的press_id總個數,P(k)是在k處的精度,n是paper個數。

題意分析

從任務描述中我們可以看到,該任務需要對描述段落匹配三篇最相關的論文。單從形式上可以理解為這是一個「完形填空」任務。但相較於在本文的相應位置上填上相應的詞語不同的是,這裡需要填充的是一個Sentence,也就是論文的題目。但是如果你按照這個思路去尋求解決方案,你會發現在這個量級的文本數據上,一般算力是滿足不了的。

既然如此,那我們不如換一個思路來思考這個問題,「對描述段落匹配三篇最相關的論文」,其實最簡單的實現方式是計算描述段落和論文庫里所有論文的相似度,找出最相似的即可。但這同樣會存在一個問題,通過對數據進行探查你會發現「An efficient implementation based on BERT [1] and graph neural network (GNN) [2] is introduced.」這一描述段落,同時引用了兩篇文章,那麼在計算相似度時,到底哪個位置該是哪篇文章呢?

基於分析中提到的問題和難點,本次比賽給出了以下解決方案。

建模核心思路

在解決本問題時,我借鑒了推薦算法的思想,將問題拆解了兩部分——召回和排序。在召回階段,使用了兩種方式,其一是利用Word2Vec和TFIDF方法,將描述段落利用Word2Vec得到每個詞的詞向量,同時對句子中的詞使用TF-IDF為權重進行加權得到Sentence Embedding,同時為了得到更好的效果,這裡做了一個改進,即使用Smooth Inverse Frequency代替TFIDF作為每個詞的權重;其二是利用TFIDF得到Sentence Embedding。兩種方法各自計算餘弦相似度得到3篇論文,去重後召回集中每個段落有3-6篇不等的召回論文。

在排序階段,我們利用Bi-LSTM對描述段落Description和論文文本PaperText組成句子對(Description,PaperText)進行編碼,在中間層對兩個向量進行差值和內積操作後,在輸出層經過Dense和Softmax層後得到概率值後排序。

算法核心思想

1.SIF Sentence Embedding

SIF Sentence Embedding 使用預訓練好的詞向量,使用加權平均的方法,對句子中所有詞對應的詞向量進行計算,得到整個句子的embedding向量。

SIF 的計算分為兩步:

1) 對句子中的每個詞向量,乘以一個獨特的權重b,權重b是一個常數 a除以a與該詞頻率的和,這種做法的會對出現頻率高詞進行降權,也就是說出現頻次越高,其權重也就越小;

2) 計算句向量矩陣的第一主成分u,讓每個Sentence Embedding減去它在u上的投影,具體參見論文[2];

這裡,利用該方法做召回,在驗證集上的準確性要比其他兩種方式效果好。

(1)對句子中所有單詞求平均得到sentence embedding;

(2)對句子中所有單詞利用TF-IDF值加權後求平均得到sentence embedding。

2. InferSent

InferSent相似度模型是Facebook提出了一種通過不同的encoder得到Sentence Embedding,然後計算兩個Sentence Embedding的差值、點乘得到交互向量,計算兩者之間的相似度。

這裡,對原始論文方法做了兩處修改:

其一,針對這個問題對3-way softmax層(entailment,contradiction,neutral)做了相應的修改變為2-way softmax;

其二,中間層去掉了u和v,只使用差值和內積兩種特徵表徵方式;

同時在7中編碼器:1)LSTM, 2)GRU, 3)bi-GRU, 4)bi-LSTM(mean pooling), 5)bi-LSTM(max pooling), 6)self-attention, 7)CNN 中選用了Bi-LSTM MaxPooling的方式。

3. Others-BERT

當時,在BERT時代,解決方案的嘗試中少不了它的身影,這裡我們用BERT嘗試了兩種方案,其一是利用BERT對Description和PaperText進行編碼後,計算文本的餘弦相似度;其二是在上述整體模型中,用BERT替換InferSent部分。

以上兩種方式是我和何從慶在CCL「中國法研杯」相似案例匹配評測競賽中使用的方案(https://zhuanlan.zhihu.com/p/88207736),但在本任務中首次嘗試後發現線下Valid是不Work的,因為本次比賽我只做了最後兩天,5次線上提交後得到終榜最高分,所以未對其他更多方式做嘗試性修正,如果BERT在本任務上work的話,按照經驗應該可以提升不少MAP@3,有興趣的朋友可以嘗試一下。

總結

入職兩年,見過了許多形形色色,感慨良多,但初心沒忘,為了讓自己保持一個良好的競技狀態和學習狀態。每次任務又是一個不斷審視、總結自己的過程。無論是結構化數據、自然語言處理領域還是圖像領域,歡迎志同道合的小夥伴一起分享探討,共同進步。

參考論文:

[1] Sanjeev Arora, Yingyu Liang, Tengyu Ma. A Simple but Tough-to-Beat Baseline for Sentence Embeddings, ICLR 2017

[2] Conneau A , Kiela D , Schwenk H , et al. Supervised Learning of Universal Sentence Representations from Natural Language Inference Data[J]. 2017.

[3] Devlin J , Chang M W , Lee K , et al. BERT: Pre-training of Deep Bidirectional Transformers for Language Understanding[J]. 2018.

(*本文為 AI科技大本營投稿文章,請聯繫作者)