0
雷鋒網(wǎng) AI 科技評論按,日前,中國科學(xué)院計算技術(shù)研究所網(wǎng)絡(luò)數(shù)據(jù)科學(xué)與技術(shù)重點實驗室開源深度文本匹配項目 MatchZoo。據(jù)悉,MatchZoo 整合了當(dāng)前最流行的深度文本匹配的方法(包括 DRMM、MatchPyramid、 DUET、 MVLSTM、aNMM、 ARC-I、ARC-II、 DSSM、CDSSM 等算法的統(tǒng)一實現(xiàn)),提供基準(zhǔn)數(shù)據(jù)集(例如 WiKiQA 數(shù)據(jù))進(jìn)行開發(fā)與測試,可以應(yīng)用到的任務(wù)場景包括文本檢索、自動問答、復(fù)述問題、對話系統(tǒng)等等。詳細(xì)信息可以參見:深度文本匹配開源工具(MatchZoo)
雷鋒網(wǎng) AI 科技評論注意到,短短一周時間,該項目在 GitHub 上的 star 數(shù)便達(dá)到 480 個,在 MatchZoo 微信群里,大家不斷提出相應(yīng)的改進(jìn)建議以及使用過程中碰到的 bug,開發(fā)人員也在持續(xù)解疑中。
MatchZoo 的開源毫無疑問讓文本匹配任務(wù)更加便利,那么,在這一項目背后,究竟有哪些成員在努力,做這一項目的初衷是什么,在開源過程中又遇到了哪些挑戰(zhàn)?帶著這些疑問,雷鋒網(wǎng) AI 科技評論第一時間聯(lián)系到該項目的核心開發(fā)人員——中科院計算所的博士生范意興,以下為雷鋒網(wǎng) AI 科技評論與他的交流內(nèi)容。
初衷以及團(tuán)隊
據(jù)范意興介紹,MatchZoo 項目由中科院計算所的郭嘉豐研究員、蘭艷艷副研究員以及程學(xué)旗研究員發(fā)起,目前團(tuán)隊的開發(fā)成員中有來自中科院計算所、清華大學(xué)以及美國 UMASS 大學(xué)的研究生。
「項目的核心開發(fā)人員是來自中科院計算所的學(xué)生,包括我、龐亮以及侯建鵬,我們幾個完成了項目的初期的整體框架的設(shè)計與開發(fā),并實現(xiàn)了大部分的文本匹配的模型。后續(xù)有來自 UMASS 的楊柳和清華大學(xué)的鄭玉昆加入,在原來項目的基礎(chǔ)上,加入了更多的文本匹配的模型。」

上圖從左至右:侯建鵬,范意興,龐亮
為什么會想到研發(fā)這樣一套框架并進(jìn)行開源呢?范意興對雷鋒網(wǎng) AI 科技評論說到,「文本匹配任務(wù)是一個從信息檢索任務(wù)、問答任務(wù)、對話任務(wù)中抽象出來的核心問題,也是我們實驗室小組的一個重要方向,我們在文本匹配任務(wù)上已經(jīng)積累了許多原創(chuàng)的模型,比如 MatchPyramid、MV-LSTM、MatchSRNN、DRMM 等等,但是沒有一個統(tǒng)一的框架方便大家使用這些模型,同時,學(xué)術(shù)界在自然語言處理與信息檢索研究方向也出現(xiàn)了大量模型,但是缺乏一個基準(zhǔn)的環(huán)境來研究和對比已有的模型?!?/p>
基于前期的積累和當(dāng)前的研究現(xiàn)狀,他們選擇開源深度文本匹配項目 MatchZoo。
他表示,「MatchZoo 旨在方便大家對比使用已有的文本匹配模型,開發(fā)新的文本匹配模型,以及把這些模型非常便捷的應(yīng)用到自己的工作中去。」
MatchZoo 結(jié)構(gòu)
根據(jù)此前介紹,可以看到,MatchZoo 使用了 Keras 中的神經(jīng)網(wǎng)絡(luò)層,由數(shù)據(jù)預(yù)處理、模型構(gòu)建、訓(xùn)練與評測三大模塊組成,具體結(jié)構(gòu)如下圖。

數(shù)據(jù)預(yù)處理模塊:該模塊包含通用的文本預(yù)處理功能,如分詞、詞頻過濾、詞干還原等,并將不同類型文本匹配任務(wù)的數(shù)據(jù)處理成統(tǒng)一的格式。
同時該模塊針對不同的任務(wù)需求提供了不同的數(shù)據(jù)生成器,包括有基于單文檔的數(shù)據(jù)生成器、基于文檔對的數(shù)據(jù)生成器、以及基于文檔列表的數(shù)據(jù)生成器。不同的數(shù)據(jù)生成器可適用于不同的文本匹配任務(wù),如文本問答、文本對話、以及文本排序等。
模型構(gòu)建模塊:該模塊包含了深度學(xué)習(xí)模型中廣泛使用的普通層,如卷積層、池化層、全連接層等。除此之外,在這一模塊中,他們還針對文本匹配定制了特定的層,如動態(tài)池化層、張量匹配層等。
訓(xùn)練與評測模塊:該模塊提供了針對回歸、分類、排序等問題的目標(biāo)函數(shù)和評價指標(biāo)函數(shù)。用戶可以根據(jù)任務(wù)的需要選擇合適的目標(biāo)函數(shù)。
在模型評估時,MatchZoo 也提供了多個廣為使用的評價指標(biāo)函數(shù),如 MAP、NDCG、Precision,Recall 等。
而針對這些模塊具體的細(xì)節(jié),雷鋒網(wǎng) AI 科技評論與范意興進(jìn)行了如下討論,以下為具體的問答環(huán)節(jié)。
AI 科技評論:MatchZoo 工具的可擴(kuò)展性如何?作為一個工具,用戶的體驗很重要,你們在設(shè)計時考慮到了哪些易用性方面的需求?
范意興:MatchZoo 工具的設(shè)計之初就是為了方便大家能快速的使用以及設(shè)計更多的深度文本匹配模型,因此,我們在設(shè)計 MatchZoo 時就充分的考慮了可擴(kuò)展性,用戶只用關(guān)注匹配模型本身而不用考慮數(shù)據(jù)輸入以及目標(biāo)優(yōu)化,同時由于我們設(shè)計了統(tǒng)一的模型接口,在模型的實現(xiàn)方面,用戶也只需實現(xiàn)基本的模型邏輯即可,從而能達(dá)到快速可擴(kuò)展的需求。
AI 科技評論:對輸入數(shù)據(jù)有什么具體的格式要求?在設(shè)計數(shù)據(jù)預(yù)處理模塊時,對輸入數(shù)據(jù)進(jìn)行預(yù)處理操作最大的難點在哪里,你們是如何解決的?
范意興:對于輸入數(shù)據(jù)的格式可以有多種,最簡單的數(shù)據(jù)格式是「label text1 text2」。
在數(shù)據(jù)預(yù)處理的操作中,最大的難點在于整個框架輸入數(shù)據(jù)的可擴(kuò)展性,因此我們將每一條數(shù)據(jù)對應(yīng)上了一個唯一的 ID,然后專門在一個 relation 的文件中定義數(shù)據(jù)之間的匹配度關(guān)系。我們還將單詞映射到了對應(yīng)的詞 ID,并生成了對應(yīng)的詞 ID 到詞向量的映射。同時為了設(shè)計一套統(tǒng)一的適用于不同場景不同語言的數(shù)據(jù)預(yù)處理的方案,最大限度的保證數(shù)據(jù)預(yù)處理代碼的靈活性,我們設(shè)計了一個數(shù)據(jù)預(yù)處理的類(Class Preprocess), 在該類中,我們實現(xiàn)了不同的數(shù)據(jù)預(yù)處理的函數(shù),例如分詞、詞根還原、詞頻統(tǒng)計與過濾、以及大小寫轉(zhuǎn)換等,用戶可以根據(jù)自己的需要選擇合適的數(shù)據(jù)預(yù)處理的方式,對于有特殊需求的用戶,也可以基于我們的數(shù)據(jù)預(yù)處理的類方便的擴(kuò)展。
AI 科技評論:出于快速構(gòu)建模型的考慮,你們針對文本匹配定制了特定的層,比如動態(tài)池化層,張量匹配層等,這些定制化的層分別能實現(xiàn)什么功能?除了增加一些定制化的層,在模型構(gòu)建模塊,你們還做了哪些改進(jìn)和優(yōu)化呢?是否能自建可視化工具?
范意興:針對文本任務(wù)的特定的需求,我們定制了不同的層,這些層和 TensorFlow 中其他的層具有統(tǒng)一的接口,用戶可以像使用 TensorFlow 中內(nèi)置的層一樣來使用這些層。除此之外,在 matchzoo/layers/中,我們還針對文本匹配定制了特定的層,如動態(tài)池化層、張量匹配層等。
動態(tài)池化層主要是針對文本變長的特性設(shè)計的,在文本相關(guān)的任務(wù)中,文本的長度差異非常的大,例如一篇新聞的長度變化可以從幾十個字到幾萬個字;在神經(jīng)網(wǎng)絡(luò)模型的逐層抽象過程中需要將不同的輸入映射到相同的特征空間中,然而在圖像中常用的裁剪或是填補方案在文本處理時,會導(dǎo)致嚴(yán)重的信息損失或是引入過多的噪音,因此,我們實現(xiàn)的動態(tài)池化層能避免裁剪或是填補方案帶來的問題,針對不同文本的長度的需要進(jìn)行動態(tài)池化。
張量匹配層主要是能夠建模兩個詞向量之間更加復(fù)雜的模式匹配,當(dāng)前大部分的文本相關(guān)任務(wù)都依賴于詞向量,不同詞之間的交互就轉(zhuǎn)變成其詞向量的交互,使用張量匹配層,能更加充分的捕捉詞向量中不同維度的各種交互。
除了定制化的層,在模型構(gòu)建中,我們還設(shè)計了統(tǒng)一的模型接口,用戶也可以基于我們的模型接口方便快速的開發(fā)其他文本模型,另外我們也提供了很多成熟模型的完整實現(xiàn)。
目前我們還沒有為 MatchZoo 構(gòu)建可視化的工具,后續(xù)我們會考慮加上可視化的工具,方便用戶的使用。
AI 科技評論:除了前面提到的兩個模塊,還有訓(xùn)練與評測模塊,在模型的訓(xùn)練時這個工具在速度等方面的優(yōu)勢如何?除此之外,你們還考慮到了哪些技術(shù)細(xì)節(jié)?
范意興:由于我們的工具是基于 TensorFlow 構(gòu)建的,因此能很方便的利用 GPU 進(jìn)行訓(xùn)練和測試,訓(xùn)練的速度與模型的復(fù)雜程度相關(guān);在目前 MatchZoo 的樣例數(shù)據(jù)集 WikiQA 上,我們在一個 K80 的 GPU 上測試,目前實現(xiàn)的模型中,最復(fù)雜的 MV-LSTM 在訓(xùn)練 50 分鐘就已經(jīng)收斂達(dá)到最好的效果,其他的模型基本都在 30 分鐘左右即可收斂。另一個值得一提的是,我們針對數(shù)據(jù)量非常大的情況,設(shè)計了一個動態(tài)樣本(包括單文檔樣本、文檔對樣本、以及文本列表樣本)構(gòu)建的方法,避免在大數(shù)據(jù)的場景下內(nèi)存不足以存放大量的數(shù)據(jù)時的問題。
AI 科技評論:在 MatchZoo 整體的設(shè)計過程中,你們遇到的最大挑戰(zhàn)是什么?具體是如何解決的?
范意興:在 MatchZoo 的整體設(shè)計過程中,最大的挑戰(zhàn)是工具的架構(gòu)設(shè)計,需要設(shè)計一個適應(yīng)不同模型的統(tǒng)一的框架,同時也要兼顧 TensorFlow 本身的模型構(gòu)建的特性。我們對不同的匹配模型分析后,抽象出統(tǒng)一的接口,并將整體的實現(xiàn)切分成數(shù)據(jù)預(yù)處理模塊、模型構(gòu)建模塊、以及模型訓(xùn)練與評估模塊,以便于不同用戶在不同需求下使用該工具的可擴(kuò)展性。
AI 科技評論:在開發(fā) MatchZoo 工具的過程中有哪些經(jīng)驗和心得可以和大家分享呢?
范意興:開發(fā)一個 MatchZoo 文本匹配工具需要對不同匹配算法抽象出統(tǒng)一的接口,良好的架構(gòu)能夠使得工具能方便的擴(kuò)展。另外,在一些子模塊的設(shè)計上也要充分考慮靈活性和通用性,比如數(shù)據(jù)預(yù)處理模塊,必須考慮到不同任務(wù)下輸入的多樣性,所以要盡可能抽象出能夠較好泛化的輸入接口。
后記
可以看到,MatchZoo 在靈活性和通用性上進(jìn)行了多方面的考慮,開發(fā)團(tuán)隊還專門設(shè)計動態(tài)的樣本構(gòu)建方法來應(yīng)對數(shù)據(jù)量極大的情況,此外,在模型的訓(xùn)練上,也能較快達(dá)到收斂效果。那么在未來,他們還會進(jìn)行哪些方面的更新呢?
「目前除了及時的反饋大家提出的問題,我們也正在加入更多的 state-of-the-art 的深度文本匹配的模型。」范意興說道,「除此之外,我們正在為文本分類任務(wù)也添加一個公開的基準(zhǔn)測試數(shù)據(jù)集,并給出相應(yīng)的模型參數(shù)配置和性能結(jié)果。同時針對工具的使用方面,目前我們是采用 json 文件來確定模型輸入和數(shù)據(jù)的輸入,這種方式可以方便快速的實驗驗證效果,但卻給項目的線上直接使用帶來一定的麻煩,我們后續(xù)也會提供更多的輸入接口以支持線上項目的直接使用?!?/p>
在這里提個小插曲,當(dāng)看到 MatchZoo 是基于 Python2 的時候,很多同學(xué)第一時間都會想到,什么時候能支持 Python3,畢竟后者是未來主流,這也是 AI 科技評論想問的問題。與此同時,在 MatchZoo 微信群里,也有同學(xué)在反映這個問題,短短三天時間,開發(fā)團(tuán)隊就表示,「最新的版本已經(jīng)添加了對 Python 3 的支持,歡迎大家測試?!?/p>
當(dāng)然,除了語言支持的問題,開發(fā)團(tuán)隊也一直在積極解決大家提出的疑問,例如對某段代碼的解釋、實際的操作案例等。不過雷鋒網(wǎng) AI 科技評論注意到,目前 MatchZoo 主要是由學(xué)生團(tuán)隊來維護(hù),那么接下來是否會在維護(hù)上遇到挑戰(zhàn)呢?
范意興這樣說道:「在開源之后,一直有學(xué)術(shù)界和工業(yè)界的朋友加入,開發(fā)團(tuán)隊逐漸變大,因此溝通和維護(hù)的成本也會變大?!共贿^他也表明,目前他們團(tuán)隊的人數(shù)還比較少,在代碼的更新和維護(hù)方面還沒遇到大的問題。
而對于未來,他表示:「我們 MatchZoo 的項目是開源的,也希望能吸引更多的相關(guān)開發(fā)人員加入,一起把這個工具做得更好。目前最希望能和相關(guān)公司合作,了解不同任務(wù)場景下的現(xiàn)實挑戰(zhàn)是什么,我們也希望這些算法能在真實的應(yīng)用場景中發(fā)揮作用?!?/p>
GitHub地址:https://github.com/faneshion/MatchZoo
雷峰網(wǎng)原創(chuàng)文章,未經(jīng)授權(quán)禁止轉(zhuǎn)載。詳情見轉(zhuǎn)載須知。