摘要:目前復雜問題包括兩種:含約束的問題和多跳關系問題。本文對ACL2020 KBQA 基於查詢圖生成的方法來回答多跳復雜問題這一論文工作進行了解讀,並對相關實驗進行了復現。
1、摘要
1.1 復雜問題
1)帶約束的問題
2)多跳關系問題
1.2 提出一種改進的階段式查詢圖生成方法
1.3 三份數據集上達到SOTA:CWQ、WQSP、CQ
2、介紹
2.1 復雜問題
(1)單跳關系帶約束的問題
- Who was the first president of the U.S.?
- 單跳關系:“president_of”
- 已知實體:“U.S.”
- 約束詞:“first”
(2)多跳關系問題
- Who is the wife of the founder of Facebook?
- 兩跳關系:“wife_of”、“founder_of”
2.2 解決方法:考慮更長的關系路徑,但是搜索空間會隨着路徑的變長呈指數性增長
2.3 挑戰:如何限制搜索空間?以前也有一些方法,提出的只考慮匹配的最佳關系,而不是所有關系。但是沒有同時處理兩種類型的復雜問題。
2.4 方案:束搜索(beam search)
2.5改進:路徑擴展 + 合並約束,串行 → 並行,有效地減少了搜索空間
3、方法
3.1、預備工作
(1)KB
- K={(h,r,t)}
- h,t 來自實體集合 E
- r 來自關系集合 R
(2)KBQA:給定一個問題Q,從KB中找到一個答案a
3.2、階段查詢圖方法
(1)四種類型的節點,如下圖所示
- A grounded entity 接地實體/對齊實體:KB中已存在的一個實體,至少有一個(陰影矩形)
- An existential variable 未接地實體/存在變量/中間變量:0個或者多個(無陰影矩形)
- A lambda variable 未接地實體/未知變量:表示答案,有且只有一個(圓形)
- An aggregation funciton 聚合函數:最大/最小/求和等操作,0個或者多個(菱形)
(2)查詢圖的邊是KB中的 r
(3)查詢圖的生成過程就是SPARQL查詢語句生成的過程,如下圖所示。注:與上圖例子不完全符合。
其中,ns:m.0k2kfpc 是接地實體的MID(Freebase),?name3 是未知變量,?e1、?e2、?e3、?e4 等是中間變量。
3.3、階段查詢圖生成的一般過程
1)從問句中的一個接地實體(topic entity)開始,識別一條核心關系路徑(core relation path),將主題實體連接到一個lambda變量;
2)給核心關系路徑添加一個或多個約束,這個約束包含一個接地實體或者一個帶關系的聚合函數;
3)生成候選查詢圖,度量和問句的相似度,排序(CNN等神經網絡);
4)取top1,在知識圖譜上執行查詢圖,獲得答案。
注:核心關系路徑,在其他論文里叫核心推理鏈,或者叫基本查詢圖
3.4、動機
(1)問題:
- 已有方法只考慮單個關系或兩個關系的核心路徑,無法解決多關系約束問題;
- 如果允許核心關系路徑變長,搜索空間會劇增;
- CWQ數據集上,每個問題三跳情況下會有10000條路徑。
(2)束搜索(beam search)
- 在生成 t+1 跳關系路徑時,只保留 top-K 個 t 跳關系路徑,即每次路徑只生成 K 個;
- 已有方法忽視了約束這個條件,只考慮通過路徑減少搜索空間;
- 問題中的約束也可以幫助減少搜索空間,引導核心路徑朝正確的方法生成。
(3)改進的階段式查詢圖生成方法
- 在附加約束前,不需要生成所有的核心關系路徑;
- 束搜索和語義匹配結合,得到一個更小的搜索空間。
- 給定一個部分核心路徑 (The Jeff Probst Show, nominated for, y1, nominee, y2),如果在y2上擴展一個關系,需要考慮KB中連接y2的所有關系,但是如果先加一個約束(is a, TV producer),將只考慮電視制片人被提名為xx show的人。
3.5、查詢圖生成
(1)束搜索生成查詢圖
- 假設第 t 次迭代生成了 K 個查詢圖,表示為 G_t;
- 第 t+1 次迭代,對於每個圖 g∈G_t,使用三個操作 {extend, connect, aggregate} 增加一條邊和一個節點,如下圖所示;
- 所有生成的圖集合表示為 G′_(t+1) ,使用得分函數排序,取 top-K 個 ,得到候選查詢圖 G_(t+1);
- 繼續迭代,直到沒有 g∈G_(t+1) 得分比 g∈G_t 高。
(2)擴展操作(extend)
- 增加一個關系;
- 如果當前查詢圖只有一個主題實體 e,擴展操作就增加 e 的一個關系 r ,另一端作為lambda變量 x ;
- 如果當前查詢圖含有一個lambda變量 x ,擴展操作就將 x 轉成一個existential變量 y ,找到 y 的關系 r ,生成新的lambda變量 x 。
(3)連接操作(connect)
- 除了主題實體外,問題中經常會出現一些其他的接地實體 e ;
- 連接操作將這個接地實體 e 鏈接到 lambda 變量 x 或者與 x 連接的existential變量。
(4)聚合操作(aggregate)
- 預定義一個關鍵詞集合,檢測約束詞;
- 聚合操作將約束詞作為一個節點連接 lambda 變量 x 或者與 x 連接的existential變量。
(5)方法的創新性:擴展操作可以應用在連接或者聚合操作后面,以前的方法不行。
- 以前:擴展 → 擴展 →......→ 擴展 → 連接或聚合
- 現在:擴展、連接、聚合 → 擴展、連接、聚合 →......→ 擴展、連接、聚合
3.6、查詢圖排序
(1)方法:第 t 次迭代,排序候選查詢圖 G′_t,通過生成一個7維的特征向量,輸入到全連接層,計算分數。
(2)特征
第1維:
- 基於BERT的語義匹配模型;(Pytorch版:https://github.com/huggingface/transformers)
- 將查詢圖 g∈G′_t 轉成一個詞序列,按照圖的生成順序
- 忽視中間變量和未知變量
- 下圖的查詢圖生成的序列:(the, jeff, probst, show, nominated, for, nominee).
第2維:所有接地實體的實體鏈接得分累加和;(谷歌的實體鏈接工具:https://developers.google.com/knowledge-graph)
第3維:接地實體的數量;
第4維:實體類型的數量;
第5維:時間表達式的數量;
第6維:最高級表達式的數量;
第7維:答案實體的數量。
(3)強化學習方法,學習決策函數。
4、實驗
(1)數據
- ComplexWebQuestons (CWQ) 數據量:34689
- WebQuestionsSP (WQSP) 數據量:4737
- ComplexQuestions (CQ) 數據量:2100
(2)結果
(3)消融實驗
模型性能的提升,不僅僅與BERT有關。
論文:Lan Y, Jiang J. Query Graph Generation for Answering Multi-hop Complex Questions from Knowledge Bases[C]//Proceedings of the 58th Annual Meeting of the Association for Computational Linguistics. 2020: 969-974.
鏈接:https://www.aclweb.org/anthology/2020.acl-main.91/
代碼:https://github.com/lanyunshi/Multi-hopComplexKBQA