<kbd id="afajh"><form id="afajh"></form></kbd>
<strong id="afajh"><dl id="afajh"></dl></strong>
    <del id="afajh"><form id="afajh"></form></del>
        1. <th id="afajh"><progress id="afajh"></progress></th>
          <b id="afajh"><abbr id="afajh"></abbr></b>
          <th id="afajh"><progress id="afajh"></progress></th>

          微信搜一搜中的智能問(wèn)答技術(shù)

          共 8470字,需瀏覽 17分鐘

           ·

          2022-07-08 06:58


          本文約7600字,建議閱讀15分鐘

          本文給大家介紹微信搜一搜中的智能問(wèn)答技術(shù)。



          圍繞下面四點(diǎn)展開(kāi):

          • 背景介紹
          • 基于圖譜的問(wèn)答
          • 基于文檔的問(wèn)答
          • 未來(lái)展望

          01 背景介紹

           1. 從搜索到問(wèn)答


          搜索引擎是人們獲取信息的重要途徑,其中包含了很多問(wèn)答型的query。但傳統(tǒng)的搜索只能返回TopK的網(wǎng)頁(yè),需要用戶自己從網(wǎng)頁(yè)中分析甄別答案,體驗(yàn)較差。原因是傳統(tǒng)搜索引擎只是對(duì)query和doc做“匹配”,并不是真正細(xì)粒度地理解query。智能問(wèn)答正好可以彌補(bǔ)這個(gè)局限,它的優(yōu)勢(shì)在于能夠更好地分析query,直接返回精準(zhǔn)、可靠的答案。

          2. 搜索場(chǎng)景下的常見(jiàn)用戶問(wèn)答需求


          • 基于圖譜的問(wèn)答事實(shí)型query,答案形式是實(shí)體短語(yǔ)類的短答案。例如“劉德華的妻子”,或者實(shí)體集合“中國(guó)四大名著”,還有時(shí)間/數(shù)字等。
          • 第二類是觀點(diǎn)型query,答案形式是“是或否”,例如像“高鐵可以逃票嗎”等。
          • 第三類是摘要型query,不同于前兩類短答案,答案可能需要用長(zhǎng)句的摘要來(lái)回答,通常是“為什么”、“怎么辦”、“怎么做”等問(wèn)題。
          • 最后一類是列表型query,通常是流程、步驟相關(guān)的問(wèn)題,答案需要用列表做精確的回答。

          3. 答案知識(shí)來(lái)源


          • 結(jié)構(gòu)化數(shù)據(jù),來(lái)源于百科、豆瓣等垂類網(wǎng)站的infobox。優(yōu)點(diǎn)是質(zhì)量高,便于獲取和加工;缺點(diǎn)是只覆蓋頭部知識(shí),覆蓋率不夠。例如“易建聯(lián)的身高”、“無(wú)間道1的導(dǎo)演是誰(shuí)”。
          • 非結(jié)構(gòu)化的通用文本,來(lái)源于百科、公眾號(hào)等互聯(lián)網(wǎng)網(wǎng)頁(yè)文本庫(kù)。優(yōu)點(diǎn)是覆蓋面廣,但缺點(diǎn)在于文本質(zhì)量參差不齊,對(duì)醫(yī)療、法律等專業(yè)領(lǐng)域知識(shí)的覆蓋度和權(quán)威度不夠。
          • 非結(jié)構(gòu)化的專業(yè)垂類網(wǎng)站問(wèn)答庫(kù),來(lái)源于專業(yè)領(lǐng)域垂類站點(diǎn)的問(wèn)答數(shù)據(jù),通常以問(wèn)答對(duì)的形式存在。優(yōu)點(diǎn)是在專業(yè)領(lǐng)域知識(shí)覆蓋廣、權(quán)威度高。

          4. 智能問(wèn)答的技術(shù)路線


          支持智能問(wèn)答的技術(shù)路線主要分兩種:KBQA(基于圖譜的問(wèn)答)和DocQA(基于文檔的問(wèn)答)。

          • KBQA的優(yōu)點(diǎn)是擴(kuò)展性強(qiáng),能查詢實(shí)體的各種屬性,同時(shí)支持推理,可以解析復(fù)雜查詢。例如圖中右邊的一個(gè)例子,“姚明的老婆有多高”可以解析得到中間的語(yǔ)義表達(dá)式,從而轉(zhuǎn)換成知識(shí)圖譜的查詢,得到問(wèn)題的答案。涉及的關(guān)鍵技術(shù)是圖譜構(gòu)建(包括schema構(gòu)建、實(shí)體挖掘、關(guān)系抽取、開(kāi)放信息抽取技術(shù))和問(wèn)題解析(包括實(shí)體鏈接、基于semantic parsing的問(wèn)題解析方法、基于檢索的問(wèn)題解析方法等技術(shù))。
          • DocQA相較于KBQA的優(yōu)點(diǎn)是覆蓋面更廣,能覆蓋更多中長(zhǎng)尾的問(wèn)題,同時(shí)能解決一些KBQA難以解析的問(wèn)題。例如,“中國(guó)歷史上第一個(gè)不平等條約”這個(gè)query,很難解析成結(jié)構(gòu)化的表達(dá),涉及到的技術(shù)主要包括閱讀理解(MRC)、開(kāi)放域問(wèn)答(OpenQA)。

          02 基于圖譜的問(wèn)答


          KBQA的定義:給定自然語(yǔ)言問(wèn)題,通過(guò)對(duì)問(wèn)題進(jìn)行語(yǔ)義理解和解析,進(jìn)而利用知識(shí)庫(kù)進(jìn)行查詢、推理得出答案。面臨的難點(diǎn)主要有以下幾點(diǎn):

          • 開(kāi)放領(lǐng)域知識(shí)庫(kù)中存在大量的歧義實(shí)體,例如“長(zhǎng)城”、“蘋果”,可能在知識(shí)庫(kù)中存在多種類型的同名實(shí)體。從query中識(shí)別出正確的實(shí)體是整個(gè)KBQA中一個(gè)比較關(guān)鍵的模塊。
          • 開(kāi)放域的知識(shí)圖譜屬性眾多,需要從4000+屬性中識(shí)別出正確的屬性。
          • 自然語(yǔ)言的問(wèn)法多樣,同一個(gè)屬性有不同問(wèn)法,例如詢問(wèn)李白的出生地,可以有“李白是哪里人”、“李白老家是哪里的”等多種不同的表達(dá)。同一個(gè)問(wèn)法也可能針對(duì)不同的屬性,例如“姚明有多高”、“珠穆朗瑪峰有多高”,同樣是“有多高”,但詢問(wèn)屬性分別是身高和海拔。

          1. KBQA技術(shù)方案


          • 方案一:檢索式的方法。把query和候選答案(知識(shí)圖譜中的候選節(jié)點(diǎn))表征為向量計(jì)算相似度。優(yōu)點(diǎn)是可以進(jìn)行端到端的訓(xùn)練,但可解釋性和可擴(kuò)展性差,難以處理限定、聚合等復(fù)雜類型的query。
          • 方案二:基于解析的方法。把query解析成可查詢的結(jié)構(gòu)化表示,然后去知識(shí)圖譜中查詢。這種方法的優(yōu)點(diǎn)是可解釋性強(qiáng),符合人能理解的圖譜顯示推理過(guò)程,但依賴高質(zhì)量的解析算法。綜合考慮優(yōu)缺點(diǎn),我們?cè)趯?shí)際工作中主要采用的是這種方法。

          2. KBQA整體流程


          首先以一個(gè)例子介紹KBQA的整體流程:

          • 實(shí)體鏈接,識(shí)別出query中的實(shí)體,并關(guān)聯(lián)到圖譜中的節(jié)點(diǎn);
          • 關(guān)系識(shí)別,query詢問(wèn)的具體屬性;
          • Topic實(shí)體識(shí)別,當(dāng)query涉及到多個(gè)實(shí)體時(shí),判斷哪個(gè)實(shí)體是問(wèn)題的主實(shí)體;
          • 條件/約束識(shí)別,解析query中涉及到的一些約束條件;
          • 查詢推理,將前幾步的結(jié)果組合成查詢推理的語(yǔ)句,通過(guò)知識(shí)圖譜獲得答案。

          在整個(gè)流程中,比較關(guān)鍵的是實(shí)體鏈接和關(guān)系識(shí)別這兩個(gè)模塊,下面對(duì)這兩個(gè)模塊做重點(diǎn)介紹。

          3. KBQA-實(shí)體鏈接


          實(shí)體鏈接,從文本中識(shí)別出所有的實(shí)體mention,然后再把他們鏈接到對(duì)應(yīng)的知識(shí)圖譜上。這里展示了一個(gè)實(shí)體鏈接的例子。

          首先通過(guò)NER、SpanNER等方法,對(duì)query進(jìn)行mention識(shí)別;根據(jù)識(shí)別出的mention,在知識(shí)圖譜中召回候選多個(gè)實(shí)體,并進(jìn)行實(shí)體消歧,本質(zhì)上也就是對(duì)召回實(shí)體的排序打分。有時(shí)由于知識(shí)圖譜數(shù)據(jù)不全,庫(kù)中根本不存在對(duì)應(yīng)的實(shí)體,因此通常會(huì)有一步“Top1驗(yàn)證”,即對(duì)排序后的top1結(jié)果再進(jìn)行一次打分,確定top1結(jié)果是否是最終的實(shí)體。


          這里簡(jiǎn)單介紹一下我們?cè)诠ぷ髦杏玫降囊粋€(gè)知識(shí)圖譜——TopBase。它是由TEG-AI平臺(tái)部構(gòu)建并維護(hù)的一個(gè)專注于通用領(lǐng)域的知識(shí)圖譜。在數(shù)據(jù)層面有五十多個(gè)領(lǐng)域,三百多個(gè)實(shí)體類型,億級(jí)實(shí)體和十億級(jí)三元組。對(duì)這個(gè)圖譜我們做了一個(gè)比較完善的自動(dòng)化的構(gòu)建流程,包括下載、抽取、去噪、融合、計(jì)算和索引步驟。由于結(jié)構(gòu)化的InfoBox數(shù)據(jù)可能是不全的,我們也構(gòu)建了一個(gè)非結(jié)構(gòu)化數(shù)據(jù)的抽取平臺(tái)。


          接下來(lái)介紹候選實(shí)體召回模塊。傳統(tǒng)的做法一般是用實(shí)體詞表,把知識(shí)圖譜中所有實(shí)體的原名和別名做成一個(gè)詞表,在召回時(shí)用mention做詞表召回。一般會(huì)有兩個(gè)問(wèn)題:

          ①詞表不完整導(dǎo)致召回率較低,比如圖中的寶龍和索八,如果沒(méi)有挖掘出別名就無(wú)法召回。

          ②有些實(shí)體mention召回的實(shí)體較多,會(huì)導(dǎo)致后面消歧模塊的耗時(shí)比較長(zhǎng),比如圖中的張偉,在知識(shí)庫(kù)中可能有幾十上百個(gè)不同類型的人物。

          針對(duì)這兩個(gè)問(wèn)題,主要采用的是基于向量召回的解決方案:將Query和實(shí)體分別表征成向量,然后計(jì)算相似度。匹配模型是一個(gè)雙塔模型,訓(xùn)練數(shù)據(jù)是Query和它對(duì)應(yīng)的實(shí)體mention。對(duì)于候選實(shí)體會(huì)用到名字、描述信息和簡(jiǎn)介做為模型輸入,通過(guò)這個(gè)模型進(jìn)行匹配做召回。

          在訓(xùn)練過(guò)程中存在一個(gè)問(wèn)題,這個(gè)任務(wù)中負(fù)例很多,如果直接采用隨機(jī)采樣的方式,會(huì)導(dǎo)致大部分負(fù)例比較簡(jiǎn)單,使得困難負(fù)例學(xué)得不好。采用的解決方案是:用上一輪的模型獲得query的候選實(shí)體當(dāng)做負(fù)例,和當(dāng)前的訓(xùn)練集融合到一起訓(xùn)練模型,不斷迭代這個(gè)流程。這樣做的好處是,在迭代訓(xùn)練的過(guò)程中,每一輪都會(huì)加入困難的負(fù)例,讓困難負(fù)例學(xué)得更好。從表格里可以看到這樣的訓(xùn)練效果更好。


          在召回實(shí)體后,下一個(gè)流程是實(shí)體消歧,采用的模型是交互式BERT匹配模型,將Query和實(shí)體的簡(jiǎn)介、描述信息拼接在一起打分。但是對(duì)實(shí)體的描述只有簡(jiǎn)介信息是不夠的,例如在《唐人街探案》中,“長(zhǎng)澤雅美”沒(méi)有出現(xiàn)在簡(jiǎn)介里,只在演員屬性里。因此,更重要的是將實(shí)體的屬性值也加入到消歧的模型里。但實(shí)體的屬性值量非常大,不可能全部加入,采用的方案是對(duì)屬性進(jìn)行粗召回,用query與實(shí)體的屬性值做輕量級(jí)的相似度計(jì)算,例如詞袋、word2vec的向量選出TopK等方法,拼接到這里做消歧。

          4. KBQA-關(guān)系識(shí)別


          關(guān)系識(shí)別是識(shí)別出這個(gè)問(wèn)題問(wèn)的是實(shí)體的哪一個(gè)關(guān)系或?qū)傩?,要完成這個(gè)任務(wù),不管是基于規(guī)則策略的方法還是基于模型的方法,首先要做的是挖關(guān)系的模板庫(kù),常用的方法:

          ① 基于種子三元組的回標(biāo),這是一個(gè)比較經(jīng)典的方法。從知識(shí)圖譜中找到屬性和關(guān)系的一些常見(jiàn)的三元組,去回標(biāo)這種問(wèn)答對(duì),像問(wèn)題匹配到主語(yǔ),段落答案匹配到賓語(yǔ),就有理由認(rèn)為這個(gè)問(wèn)題是在問(wèn)這個(gè)屬性。在匹配一些數(shù)據(jù)之后,可以通過(guò)策略或者人工的方式,為每種關(guān)系或?qū)傩酝诰虺瞿0濉?/span>

          ② 對(duì)于有種子問(wèn)法的屬性,可以采用基于問(wèn)法pattern擴(kuò)展的方式:利用同義匹配模型從query log中檢索出同義的擴(kuò)展問(wèn)法,可以利用query點(diǎn)擊日志或者開(kāi)源數(shù)據(jù)集訓(xùn)練模型,當(dāng)有一個(gè)屬性的種子問(wèn)法后,用這個(gè)模型去匹配query log得到數(shù)據(jù),結(jié)合人工或機(jī)器的驗(yàn)證來(lái)獲得擴(kuò)展問(wèn)法。


          剛才介紹了模板庫(kù)的構(gòu)建,我們的模型也是基于匹配的模型。如圖左邊把識(shí)別出的mention用它的type去替代,通過(guò)Encoder得到向量;如圖右邊,是對(duì)關(guān)系的encode。關(guān)系的表示有兩部分,第一部分是對(duì)每個(gè)關(guān)系獨(dú)立one-hot表示,第二部分是將每個(gè)關(guān)系的字符串拆分成文本token。這個(gè)模型還有一個(gè)好處是可以增加一些新的特征,用于豐富關(guān)系的表示,如圖右邊這一部分。比如關(guān)系的賓語(yǔ)類型,還有預(yù)訓(xùn)練表示向量,可以進(jìn)一步提升模型的訓(xùn)練效果。


          在做關(guān)系模型的過(guò)程中經(jīng)常會(huì)遇到魯棒性較差的問(wèn)題,原因如下:

          ① 用戶Query經(jīng)常很短,而且表達(dá)多樣。

          ② Query表達(dá)的細(xì)小改變很容易導(dǎo)致模型預(yù)測(cè)錯(cuò)誤。

          對(duì)于這個(gè)問(wèn)題可以采用的解決方案是引入對(duì)抗學(xué)習(xí),主要用在樣本側(cè)和訓(xùn)練側(cè)。
          在樣本側(cè)可以通過(guò)多種方式生成更多的“對(duì)抗樣本”,通過(guò)樣本增強(qiáng)來(lái)提升模型魯棒性和泛化能力。如圖對(duì)于原始樣本,可以通過(guò)seq2seq、回譯或者同義詞替換的方式去生成擴(kuò)展的對(duì)抗樣本,但生成的樣本中可能有一些并不是同義的,而是噪聲,這可以用一個(gè)同義的模型或策略來(lái)判別。最后將生成的樣本和原始樣本合并在一起訓(xùn)練,提升模型的魯棒性。

          在訓(xùn)練側(cè),可以在訓(xùn)練過(guò)程中加入擾動(dòng),采用對(duì)抗學(xué)習(xí)的方式,隱式構(gòu)造“對(duì)抗樣本”。對(duì)抗訓(xùn)練一般就是兩個(gè)步驟,第一是生成擾動(dòng):選擇梯度方向(使loss最大的方向);第二是Embedding層加上擾動(dòng)后重新正常訓(xùn)練模型(使loss最?。?。

          5. KBQA-復(fù)雜查詢解析


          大家通常搜的都是一些簡(jiǎn)單Query,但也有一部分復(fù)雜Query,剛才介紹的關(guān)系識(shí)別模型是比較難處理復(fù)雜Query的。圖中列舉了一些復(fù)雜Query的例子,多跳、多限定、序數(shù)、是否和計(jì)數(shù)問(wèn)題都是用戶常搜的復(fù)雜Query類型。

          這些Query涉及到的關(guān)系可能是多個(gè),而且涉及到的實(shí)體也是多個(gè)。所以用剛才的關(guān)系識(shí)別模型是難以處理這種情況的。由于是多關(guān)系、多實(shí)體,可以將其表示為一個(gè)圖,這里介紹幾個(gè)查詢圖,通過(guò)這種方式,將剛才的簡(jiǎn)單單實(shí)體、單跳的問(wèn)答擴(kuò)展成Query Graph的結(jié)構(gòu),我們希望用這樣一個(gè)更復(fù)雜的圖結(jié)構(gòu)來(lái)解析更復(fù)雜的Query。


          對(duì)復(fù)雜查詢有兩個(gè)關(guān)鍵的模塊,一個(gè)是候選路徑生成,依據(jù)query graph模板生成各種候選路徑,但生成的路徑數(shù)量非常大,幾種常見(jiàn)的剪枝方案:

          • 二分類判別:簡(jiǎn)單問(wèn)題還是復(fù)雜問(wèn)題
          • 一跳關(guān)系剪枝:減少中間節(jié)點(diǎn)數(shù)量
          • 基于啟發(fā)式規(guī)則剪枝

          通過(guò)這些方法,在保證一定召回率的基礎(chǔ)上,候選可以減少百分之八九十。

          對(duì)于候選路徑排序一般有兩種方案:

          ① 基于BERT語(yǔ)義匹配的排序模型。BERT需要輸入一個(gè)句子,因此首先將查詢圖序列化成一段文本,再和問(wèn)題拼接一起去搜,得到匹配分,再基于pair-wise的方法訓(xùn)練。這種方法的不足是,將查詢圖進(jìn)行了序列化,沒(méi)有更好地利用圖的結(jié)構(gòu)化信息。

          ② 基于圖表示的模型。Query Graph是一些三元組組成的,分別去encode這些三元組,得到encode向量,通過(guò)Transformer層去做他們之間的交互,最后將它們aggregation起來(lái)得到候選查詢圖的表征。這種方法要比之間序列化的方法要好。

          除了這些深度語(yǔ)義的話,也可以融入一些相關(guān)的人工特征來(lái)進(jìn)一步提升效果。


          除了剛才介紹的方法,還有一類Query解析方法是基于文法的解析。支持快速配置,支持復(fù)雜的和新的查詢。

          采用的文法表示是上下文無(wú)關(guān)文法(CFG),語(yǔ)義表示用的是抽象語(yǔ)義表示(AMR)。

          如圖列舉了一個(gè)簡(jiǎn)單的流程。對(duì)于一個(gè)Query,首先會(huì)去做實(shí)體和屬性的識(shí)別,然后進(jìn)行標(biāo)簽化,再通過(guò)標(biāo)簽依據(jù)配置的語(yǔ)法規(guī)則進(jìn)行語(yǔ)法解析,例如CYK等經(jīng)典算法,得到形式化表示。接下來(lái)還要推理相關(guān)謂語(yǔ),就是一些屬性關(guān)系,最終生成一個(gè)實(shí)際的查詢。

          03 基于文檔的問(wèn)答


          DocQA是指利用檢索+機(jī)器閱讀理解等技術(shù),從開(kāi)放文本庫(kù)中抽取出用戶問(wèn)題的答案。主要面臨了幾個(gè)難點(diǎn):

          ① 抽取的答案片段的準(zhǔn)確性。

          ② 對(duì)無(wú)答案段落的據(jù)識(shí)能力。很多時(shí)候段落中并不包含答案,所以要盡量避免從段落中抽取出一些錯(cuò)誤的答案。

          ③ 召回段落與問(wèn)題的相關(guān)性。只有保證了相關(guān)性,后面的模型才能抽取出正確的答案。

          1. DocQA總體流程


          ① 針對(duì)Query Log進(jìn)行問(wèn)答意圖的過(guò)濾。

          ② 通過(guò)檢索模塊去段落庫(kù)中檢索相應(yīng)的一些段落。

          ③ 對(duì)檢索到的TopK段落,做一個(gè)Reader模型(多段落-MRC)。

          ④ 對(duì)答案進(jìn)行重排序和拒識(shí)判定。

          ⑤ 輸出最終答案。

          可以看到全流程中比較重要的是檢索模塊和多段落的MRC模塊。

          2. DocQA-語(yǔ)義檢索


          對(duì)于檢索模塊,常遇到的問(wèn)題如下:

          ① 特定領(lǐng)域相關(guān)性標(biāo)注樣本有限,如何利用有限的標(biāo)注進(jìn)一步提升模型泛化能力。

          ② 訓(xùn)練和預(yù)測(cè)的不一致問(wèn)題:匹配模型在訓(xùn)練過(guò)程中,一般采用的都是In Batch Negative的方式,從Batch內(nèi)的其他的Query對(duì)應(yīng)的段落作為這個(gè)Query的負(fù)例,由于我們?cè)陬A(yù)測(cè)過(guò)程中采用的是全庫(kù)檢索,可能整個(gè)庫(kù)達(dá)到數(shù)百萬(wàn)或者數(shù)千萬(wàn)規(guī)模,會(huì)導(dǎo)致檢索預(yù)測(cè)時(shí)的過(guò)召回問(wèn)題,召回了很多錯(cuò)誤的段落,這種方式會(huì)造成訓(xùn)練和預(yù)測(cè)的不一致問(wèn)題。

          針對(duì)這個(gè)問(wèn)題有幾種優(yōu)化方案:

          ① 利用大量(問(wèn)題、段落)問(wèn)答對(duì)通過(guò)策略和人工篩選出一些質(zhì)量比較高的來(lái)構(gòu)造預(yù)訓(xùn)練任務(wù),相當(dāng)于在BERT訓(xùn)練模型基礎(chǔ)之上,通過(guò)二次預(yù)訓(xùn)練來(lái)提升模型的效果。從Batch內(nèi)部選Negative換成從Batch外部去選Negative,一般在訓(xùn)練匹配模型時(shí),如果采用多機(jī)多卡的方式時(shí),可以把別的卡的Query段落作為當(dāng)前卡的Query的負(fù)例,每個(gè)Query的負(fù)例規(guī)模,就會(huì)從batch_size提升到gpu_num * batch_size,這樣見(jiàn)到的負(fù)例就會(huì)更多,模型就會(huì)訓(xùn)練得更充分一些,可以較大地緩解訓(xùn)練和預(yù)測(cè)不一致的問(wèn)題。

          ② 可以利用大量<問(wèn)題,答案>pair對(duì)產(chǎn)生遠(yuǎn)監(jiān)督訓(xùn)練樣本來(lái)增強(qiáng)模型訓(xùn)練樣本。<問(wèn)題,答案>對(duì)的來(lái)源有很多方式,可以搜集一些開(kāi)源數(shù)據(jù)集的問(wèn)答對(duì),或者KBQA這種去回答的問(wèn)答對(duì),有了問(wèn)答對(duì)之后就可以引入他們進(jìn)行遠(yuǎn)監(jiān)督的樣本生成。

          如圖就是整個(gè)流程:首先會(huì)用當(dāng)前模型對(duì)收集到的QA對(duì)的Q去召回TopK的段落,如果是第一次,可以采用bm25這種無(wú)監(jiān)督的方式去召回段落。召回段落后就可以用QA對(duì)的A去回標(biāo)這些段落。回標(biāo)到的當(dāng)做正例,沒(méi)回標(biāo)到的當(dāng)做負(fù)例。這樣可以將生成的遠(yuǎn)監(jiān)督樣本和標(biāo)注樣本結(jié)合到一起去訓(xùn)練匹配模型,然后繼續(xù)迭代。這種迭代方式可以引入更多困難負(fù)例,讓模型學(xué)得更好。

          3. DocQA-答案抽取


          接下來(lái)介紹答案抽取(MRC)。

          一般對(duì)于實(shí)體短語(yǔ)類(短答案)抽取,會(huì)將問(wèn)題和段落拼接到一起,用一個(gè)BERT去預(yù)測(cè)片段的開(kāi)始和結(jié)束。但這種方式不能很好地應(yīng)用在長(zhǎng)答案和是否類答案的抽取上,此時(shí)需要對(duì)模型進(jìn)行一些改造。例如增加分類圖,針對(duì)是否類答案去判斷是“是”還是“否”;對(duì)長(zhǎng)答案類,對(duì)句子進(jìn)行聚合,從token級(jí)聚合成句子表征,得到了句子級(jí)的表征之后,就可以預(yù)測(cè)句子級(jí)的開(kāi)始和結(jié)束。


          對(duì)于答案抽取這個(gè)模塊,第一個(gè)問(wèn)題是MRC樣本標(biāo)注成本高,難以獲取大規(guī)模領(lǐng)域內(nèi)標(biāo)注樣本。一般采用預(yù)訓(xùn)練語(yǔ)言模型(BERT)+Finetune方式,借鑒了預(yù)訓(xùn)練模型BERT已經(jīng)學(xué)好的一些知識(shí),可以較大地提升模型效果。但MLM和MRC任務(wù)差異較大,MLM任務(wù)主要是mask一些token,利用句子上下文去預(yù)測(cè)這些token,主要學(xué)習(xí)詞之間的詞法、語(yǔ)法等語(yǔ)言模型特征。MRC則是給定一個(gè)問(wèn)題和相關(guān)段落,去段落里尋找問(wèn)題的答案,主要學(xué)習(xí)對(duì)問(wèn)題和段落的理解。

          因此對(duì)于這個(gè)問(wèn)題,更好的一個(gè)解決方案是能否構(gòu)建一個(gè)與MRC任務(wù)接近的預(yù)訓(xùn)練任務(wù)。去年論文里的一種方式是利用片段選擇 Mask+ 檢索來(lái)構(gòu)造類似MRC的預(yù)訓(xùn)練樣本。

          具體流程如圖:首先需要具備一個(gè)文本庫(kù),從中選擇一些句子去做實(shí)體識(shí)別,隨后隨機(jī)地mask掉其中的實(shí)體,用通配符來(lái)替代。這時(shí)可以將這個(gè)句子當(dāng)做一個(gè)Query,去段落庫(kù)中檢索出TopK的段落,通過(guò)策略篩選之后,這些段落可以當(dāng)做SSPT的一個(gè)樣本,這個(gè)樣本的形態(tài)和MRC樣本的形態(tài)是比較接近的。


          第二個(gè)問(wèn)題是:SSPT構(gòu)造的樣本包含的噪聲如何處理?其中采用的一個(gè)解決方案是新增一個(gè)問(wèn)答上下文預(yù)測(cè)任務(wù)。通過(guò)建模答案周圍的詞和問(wèn)題的語(yǔ)義相關(guān)性來(lái)判定是否噪聲樣本。對(duì)于一個(gè)噪聲樣本,答案項(xiàng)周圍的詞和問(wèn)題無(wú)關(guān),我們希望問(wèn)答上下文預(yù)測(cè)任務(wù)的損失大,而對(duì)于正常樣本,答案項(xiàng)周圍的詞和問(wèn)題相關(guān),問(wèn)答上下文預(yù)測(cè)任務(wù)的損失小。

          具體的做法有三個(gè)步驟:

          ① 定義上下文中每個(gè)詞的label,將段落里的一些上下文中的一些詞作為它的相關(guān)詞,我們假設(shè)距離答案越近的詞,越可能成為相關(guān)詞。因此,啟發(fā)式定義了段落中每個(gè)詞屬于上下文的概率label,相當(dāng)于越靠近答案概率越高,越遠(yuǎn)概率越低,呈指數(shù)級(jí)衰減。

          ② 估計(jì)每個(gè)詞屬于上下文的概率。用BERT的向量和一個(gè)額外的矩陣去算開(kāi)始和結(jié)束,會(huì)對(duì)每一個(gè)詞累計(jì)其區(qū)間,去算出這個(gè)詞屬于上下文的概率。

          ③ 最后得到每個(gè)詞的label和概率,就可以通過(guò)交叉熵的算法來(lái)計(jì)算預(yù)測(cè)任務(wù)上下文的損失,最后我們的損失函數(shù)就是answer抽取的損失加上這個(gè)任務(wù)的損失。

          希望針對(duì)這種噪聲樣本損失偏大一些,對(duì)正常樣本損失偏小一些。最后定義了整體的損失之后,就可以采用co-teaching去噪算法去訓(xùn)練模型,樣本損失越大,權(quán)重越低,來(lái)達(dá)到樣本去噪的目的。


          第三個(gè)問(wèn)題是段落獨(dú)立訓(xùn)練導(dǎo)致多段落抽取效果不好。圖中展示的是多段落抽取流程,抽取時(shí)每個(gè)段落都會(huì)抽取出一個(gè)答案,會(huì)依據(jù)分?jǐn)?shù)選擇最后的答案。

          但由于訓(xùn)練時(shí)每個(gè)段落是獨(dú)立訓(xùn)練的,分?jǐn)?shù)在不同段落之間是不可比的。針對(duì)這個(gè)問(wèn)題可以采用的方案是段落共同歸一,即針對(duì)每個(gè)段落,通過(guò)encoder得到向量后,將向量進(jìn)行拼接,做一個(gè)全局的softmax去做全局的損失。這樣做的好處是,最后得到的分?jǐn)?shù)即使是跨段落也是可比的。


          還有一個(gè)常見(jiàn)的問(wèn)題:預(yù)測(cè)開(kāi)始和結(jié)束一般會(huì)采用0/1標(biāo)簽,無(wú)法區(qū)分錯(cuò)誤候選答案的優(yōu)劣。相應(yīng)的解決方案是將標(biāo)簽soft化,通過(guò)計(jì)算候選答案和標(biāo)準(zhǔn)答案的詞重合率來(lái)計(jì)算得到不同候選答案的優(yōu)劣程度的分布。將整個(gè)答案span的優(yōu)劣程度轉(zhuǎn)化為開(kāi)始和結(jié)束標(biāo)簽的概率分布。首先計(jì)算所有候選答案的優(yōu)劣矩陣,將其轉(zhuǎn)化成概率分布,接下來(lái)得到每個(gè)答案開(kāi)始/結(jié)束位置的概率分布。就將原來(lái)0/1的hard表示,轉(zhuǎn)化成了一種soft表示。

          04 未來(lái)展望


          ① 復(fù)雜問(wèn)題的解析。除了剛才列舉的一些,其實(shí)還有很多用戶常問(wèn)的復(fù)雜問(wèn)題,比如多意圖、多條件問(wèn)題。對(duì)這些Query進(jìn)行很好地解析和解答比較困難,需要更強(qiáng)大的query graph表示和更高校的解析算法。

          ② 提高M(jìn)RC模型的穩(wěn)定性。當(dāng)問(wèn)題換一種問(wèn)法,或者段落中存在和答案類型相同的實(shí)體且上下文和問(wèn)題比較相似,容易造成模型抽取錯(cuò)誤。這也是學(xué)術(shù)界研究的熱點(diǎn),也有很多成果,例如加入一些對(duì)抗樣本或者對(duì)抗句子。這也是未來(lái)一個(gè)比較重要的工作。

          ③ 帶條件且跨片段的實(shí)體類短答案抽取。很多時(shí)候一個(gè)問(wèn)題雖然是實(shí)體短語(yǔ)類的一個(gè)短答案問(wèn)題,但可能在段落里面是帶條件的,不同條件下,短實(shí)體的答案可能是不一樣的。所以,不僅要抽出長(zhǎng)句子,更精準(zhǔn)的是要抽出這些條件以及條件對(duì)應(yīng)的答案。

          05 Q&A

          Q1:KBQA中基于基于種子的三元組的回標(biāo)部分,是不是需要維護(hù)一個(gè)標(biāo)準(zhǔn)問(wèn)和相似問(wèn)的表?

          A1:不需要,我們對(duì)屬性會(huì)選出一些三元組,去回標(biāo)一些問(wèn)答對(duì),對(duì)于回標(biāo)上的那些問(wèn)題,就是疑似問(wèn)這個(gè)屬性的。對(duì)這些問(wèn)題再做一些去噪,加上人工策略或人工審核,最終拿到每個(gè)屬性比較干凈的訓(xùn)練數(shù)據(jù),沒(méi)有涉及到維護(hù)相似問(wèn)的表。剛才介紹了一種方法,得到一些pattern之后,通過(guò)同義模型去Query log中匹配出一些擴(kuò)展的問(wèn)法,這些問(wèn)法再通過(guò)策略處理,最后得到這個(gè)關(guān)系的更多的一些問(wèn)法。

          Q2:KBQA的關(guān)系識(shí)別里識(shí)別除了關(guān)系后,怎么去區(qū)分識(shí)別出的實(shí)體是主語(yǔ)還是賓語(yǔ)?

          A2:一般會(huì)在識(shí)別過(guò)程中單獨(dú)通過(guò)一個(gè)模型去判別,問(wèn)的是已知SP得O還是根據(jù)PO得S。

          Q3:在關(guān)系識(shí)別中,負(fù)樣本該如何選擇?怎么處理字面相似但含義不同的屬性?

          A3:如果隨機(jī)抽取負(fù)例的話會(huì)比較簡(jiǎn)單,一般采用的方法是引入人工的方法標(biāo)注,例如擴(kuò)展問(wèn),同義匹配這種方式去獲取樣本。標(biāo)注的時(shí)候就會(huì)自然把那些看著很相似,但其實(shí)是錯(cuò)誤的問(wèn)法給標(biāo)注出來(lái),通過(guò)類似主動(dòng)學(xué)習(xí)的方式,不斷加入一些困難負(fù)樣本,來(lái)提升困難負(fù)例樣本識(shí)別的準(zhǔn)確率。

          今天的分享就到這里,謝謝大家。

          編輯:王菁

          校對(duì):





          瀏覽 64
          點(diǎn)贊
          評(píng)論
          收藏
          分享

          手機(jī)掃一掃分享

          分享
          舉報(bào)
          評(píng)論
          圖片
          表情
          推薦
          點(diǎn)贊
          評(píng)論
          收藏
          分享

          手機(jī)掃一掃分享

          分享
          舉報(bào)
          <kbd id="afajh"><form id="afajh"></form></kbd>
          <strong id="afajh"><dl id="afajh"></dl></strong>
            <del id="afajh"><form id="afajh"></form></del>
                1. <th id="afajh"><progress id="afajh"></progress></th>
                  <b id="afajh"><abbr id="afajh"></abbr></b>
                  <th id="afajh"><progress id="afajh"></progress></th>
                  噜噜噜成人精品视频夜色久 | 国产 在线观看 | 内射精品视频直播 | 人人妻人人爽人人操 | www.人人操.com |