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