KBQA學習筆記

評價標準:召回率,準確率,F1-Score

方法:自然語言查詢–>意圖識別(Intention Recognition)–>實體鏈指(Entity Linking)+關係識別(Relation Detection) -->查詢語句拼裝(Query Construction)–>返回結果選擇(Answering Selection)

KBQA除了 基於模板的方法 之外,還有 基於語義解析基於深度學習 等方法

  • 三元組表示
    “奧巴馬出生在火奴魯魯。” 可以用三元組表示爲 (BarackObama, PlaceOfBirth, Honolulu)
    (實體entity,實體關係relation,實體entity)

技術基礎

一、詞語的向量化表示

  • 離散表示 One-Hot模型(維度高造成很大開銷,詞與詞關係隔離)

  • 分佈式表示 思想:詞的語義可以通過上下文信息確認,通過無監督學習,將文本信息映射到定長的向量表示

  • Word2Vec兩種模型
    CBOW模型(Continous Bags-of-Words Model) 利用上下文預測目標詞語
    Skip-Gram模型(Contin-uous Skip-Gram Model) 利用當前詞語預測上下文
    CBOW複雜度公式 ND+DlogvN*D+D*{\log{v}}其中N是上下文窗口大小,D是詞向量維度,V是詞典大小
    模型最大化目標函數
    Lcbow=1Tt=1Tlogp(ωtContext(ωt))L_{cbow}=\frac{1}{T} {\sum_{t=1}^T}{\log{p}({ω_t|Context(ω_t))}}

    Skip-Gram模型 利用當前詞語預測上下文
    Skip-Gram複雜度公式 C(D+Dlog(V))C*(D+D*log(V))
    模型的最大化目標函數
    LSkipGram=1Tt=1Tcjc,j0logp(ωt+jωt)L_{Skip-Gram}=\frac{1}{T}{\sum_{t=1}^T}{\sum_{-c≤j≤c,j≠0}}{\log{p}({ω_{t+j}|ω_t})}

二、神經網絡

如圖所示,這是一個三層神經網絡模型,包括輸入層(input layer)、隱藏層(hidden layer)、輸出層(output layer)
簡單神經網絡模型

2.1 卷積神經網絡(CNN)

如圖所示,卷積神經網絡本質上是由卷積層、池化層、全連接層構成的深層神經網絡。通過卷積層、池化層的結合,構成多個卷積組,然後逐層提取特徵信息,最後通過全連接層得到最終的特徵信息。
卷積神經網絡
卷積神經網絡主要特點是降採樣局部連接、以及權值共享

  • 局部連接:通過感知小部分的區域來降低參數數量,提供特徵擬合的能力
  • 池化層:更進一步降低輸出參數數量,提高CNN的泛化能力
  • 權值共享:使一些基本特徵能夠被重複使用,共享網絡參數並提高神經網絡的訓練效果

2.1.1 卷積層

是指“滑動窗口”與矩陣重疊局部區域間的線性運算,如圖所示。
卷積計算過程
圖中的“滑動窗口”(也叫卷積核)大小3*3,運算過程:滑動窗口從左上方開始,由左往右,由上至下,單次移動方向不變,距離(步長)固定。根據卷積核大小以及參數的不同,設置不同的卷積核可以提取到不同的特徵。
以上圖所示,卷積運算的公式是
Z=i=1dj=1dXm+i,n+jWi,j+bZ=\sum_{i=1}^{d}{\sum_{j=1}^{d}{X_{m+i,n+j}W_{i,j}}+b}
其中W是卷積核,X代表輸入的矩陣向量(圖像,文本),b是偏移參數,D是窗口的高度和寬度,m、n代表“滑動窗口”局部區域的索引圖右邊展現的是卷積運算結果矩陣Z。卷積層的最終輸出公式:Ci,j=g(Zi,j)C_{i,j}=g(Z_{i,j})
其中g(·)表示signmoid、tanh、relu等激活函數。

2.1.2 池化層

池化層對的任務是從輸出中提取局部特徵,通過篩選減少參數量。一般採用的Pooling方法有MaxPooling(取局部最大值,也叫最大池化法)、Mean-Pooling(取局部平均值,也叫平均池化法)等。
Pooling操作的好處:
①可以使神經網絡的最終輸出可以固定長度
②輸出可以很方便地加入到另外的神經網絡

2.2 循環神經網絡(RNN)

利用有向循環網絡的結構來充分保留序列信息,記憶模型歷史信息。在RNN中,當前神經元的輸出跟序列中的其他神經元的輸出相關。RNN中t時刻的節點與t-1時刻節點相連接,使隱藏層同層的節點不在相互獨立。如圖所示,上一時刻的輸出與當前時刻輸入一起送入當前節點進行計算。
RNN以及展開圖
RNN的輸入序列X={X0,X1…Xt…},Xt是t時刻的輸入。U表示輸入層和隱藏層之間的網絡參數,V表示隱藏層和輸出層間的網絡參數,W表示當前時刻和上一層的隱藏層的網絡參數。
RNN的計算方式:
St=f(Uxt+Wst1+b1)S_t=f(Ux_t+Ws_{t-1}+b1)
Ot=g(VSt+b2)O_t=g(VS_{t}+b2)
其中StS_t代表t時刻隱藏層的輸出狀態,OtO_t代表t時刻輸出層的輸出。當t=0時,St1S_{t-1}可以爲空
f(·)、g(·)爲非線性激活函數,根據模型可以選擇signmoid、tanh、relu等。
RNN由於循環結構而具有一定的記憶能力,但是實際條件下輸入過長的條件下,極易出現梯度消失和梯度爆炸問題。爲改進這類問題,研究者提出來更爲複雜的模型,如GRU模型,長短期記憶模型,雙向循環神經網絡,深層雙向循環神經網絡模型。

智能問答算法及技術

一、概述

目前主流研究思路
① 基於語義解析的方法(Semantic Parsing-Based,SP-based)
構建語義解析器,利用語義解析器將自然語言轉化成邏輯表達,然後通過邏輯表達式在結構化的知識圖譜查詢知識三元組,提取答案
② 基於信息檢索的方法(Information Retrieve,IR-based)
利用問句中的語義信息在知識圖譜中檢索相關知識

隨着深度學習技術的進步,研究者着手基於深度學習的知識圖譜問答(Neural Network-Based,NN-based)方法。
優點:突破了傳統神經網絡在層數上的限制,可自定義層數,利用其強大的表徵學習能力學習隱藏的語義信息。
兩方面改進:
① 在SP-based框架下使用深度學習方法代替傳統方法實現實體識別、關係映射等流程
②端到端(End2End)的生成式學習框架,利用神經網絡將實體、關係以及問句轉化成向量形式,通過問句關係向量和知識向量之間語義相似度判斷是否爲正確答案

二、基於語義解析的問答

在自然語言處理方法的基礎上的問答在解析後,將信息轉化成機器語言
侷限性:都需要標記語料的邏輯形式做監督訓練,且只能在謂詞較少的領域纔有較好的效果
通常採用的思路:降低監督數量、提高邏輯謂詞數量
Berant等提出了一種不需要標註的語義解析器
語義解析的關鍵過程:
①詞彙映射
構建一個詞典將詞語映射到知識三元組中的實體或者關係中來實現
②構建語法樹
將語法樹的節點自下向上兩兩合併來實現,最終得到的根節點就是問句的邏輯表達式

映射層:

難點:如何向自然語言問句中的短語映射成需要的謂詞
常用的語義解析方法:模式匹配;遠程監督;人工規則組合

構建層:

過程:自底向上分析問句並構建一棵語法樹,需要較多的人工規則

三、基於深度學習的問答

藉助大規模語料的訓練有效的解決文本語義構建的問題,緩解語義解析方法帶來的難以推斷和難以大規模訓練的問題。
研究成果:
Bordes等將基於嵌入的語義模型來解決基於知識圖譜的回答問題,將自然語言問句和知識三元組表示爲低維向量,通過餘弦相似度找到相似的答案
Berant等在上面的基礎上提出了針對基於嵌入的語言模型的改進,利用嵌入子圖在答案向量中融入儘可能多的語義信息
Weston在記憶框架更進一步提出了基於記憶神經網絡的大規模QA實現,支持複雜度更高的推理功能
Yih等將基於知識圖譜的問答分爲實體識別及映射、關係映射兩個步驟,分別利用兩個卷積神經網絡模型來完成整個映射過程
yang等將實體間的映射和關係映射成一個整體的過程,與上面的類似

Yih提出的Muli-Column CNN模型從上下文信息、答案路徑、答案類型等多角度分析,利用多個CNN模型來抽取信息,並通過累計的打分方式來排列候選答案順序。

yang等在MCCNN模型基礎上引入了注意力機制,關注不同詞對最後排序的影響,同時引入底層知識庫作爲問答過程的全局信息,集成更多的知識庫信息到答案的向量表示中,有助於解決問句理解中的詞彙不足、信息量過少的問題

zhang等通過不同方式融入注意力機制來獲取不同的問句表達形式

中文領域:
xie等人分別在實體識別和屬性鏈接過程中引入了神經網絡模型
yang等人利用機器學習的GBDT方法完成實體識別,而屬性鏈接則結合傳統NBSVM模型和深度學習中卷積神經網絡
lai等人利用分佈式向量進行餘弦相似度計算,結合人工構建特徵,針對知識庫層次單獨構建細粒度的分詞方法進行屬性鏈接
王銀麗等針對FAQ問句匹配設計並實現了限定領域的智能問答系統
杜澤宇等在CRF的實體識別算法和Word2Vec屬性鏈接算法的基礎上設計了一個基於中文知識圖譜的電商領域問答系統算法框架(CEQA)

三、智能問答算法設計

3.1 框架

在這裏插入圖片描述

  • 自然語言問句:指的是用戶的提問
  • 問句處理:分詞,去停用詞
  • 詞向量:利用詞嵌入技術代替傳統方法提取詞語的潛在語義,將問句輸入轉化爲模型詞向量,主要用word2vec訓練維基語料庫
  • 實體識別:獲取問句中的實體名稱
  • 屬性鏈接:找到問句詢問的實體相關屬性
  • 候選三元組:描述問句可能的三元組,如<NER,PRO,VAL>(實體:NER,屬性:pro,屬性值:VAL)
  • 查詢構建:根據問題類別及查詢模板,上下文流程識別的實體和屬性信息,構建查詢從知識庫中獲取候選三元組,從而構建候選屬性集

3.2 實體識別算法

3.2.1 LSTM模型

選擇LSTM的實體識別模型,提出了門結構
在這裏插入圖片描述
在這裏插入圖片描述
遺忘門決定細胞丟棄的數量,用signmoid函數來實現,計算公式如下:
ft=σ(Wfht1+Ufxt+bf)f_t=σ(W_f·h_{t-1}+U_f·x_t+b_f)
其中,xtx_t表示當前時刻輸入,ht1h_{t-1}爲上一時刻隱藏層的輸出,UfU_f代表輸入信息的權重,WfW_f代表遺忘門權重,bfb_f爲偏置項
細胞更新時,首先通過輸入確定更新的信息,然後根據得到的信息確定LSTM需要在新的細胞狀態中的保存的信息
it=σ(Wiht1+Uixt+bi)i_t=σ(W_i·h_{t-1}+U_i·x_t+b_i)
ct=tanh(Wcht1+Uixt+bc)c_t&#x27;=tanh(W_c·h_{t-1}+U_i·x_t+b_c)
ct=ftct1+itctc_t=f_t·c_{t-1}+i_t·c_t&#x27;
其中,UiWIUcWcU_i、W_I、U_c、W_c均爲參數矩陣,bibcb_i、b_c爲偏置參數,ctc_t爲當前時刻的Cell狀態,Ct1C_{t-1}爲上一時刻Cell狀態
輸出門最終決定了LSTM模型的輸出向量,計算公式如下:
ot=σ(W0ht1+U0xt+b0)o_t=σ(W_0·h_{t-1}+U_0·x_t+b_0)
ht=ottanh(Ct)h_t=o_t*tanh(C_t)
其中,W0U0W_0、U_0爲參數矩陣,b0b_0爲偏置參數,hth_t爲當前LSTM的最終輸出

3.2.2 Bi-LSTM模型

雙向長短期記憶網絡(Bi-LSTM):採用兩個LSTM單元對輸入序列進行處理,輸出向量爲兩個LSTM輸出向量的拼接。這個模型分別訓練前後向序列兼顧了上下文信息,可以提取深層次的語義信息
在這裏插入圖片描述

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章