近期有哪些值得读的QA论文?| 专题论文解读
作者丨徐阿衡
學(xué)校丨卡耐基梅隆大學(xué)碩士
研究方向丨QA系統(tǒng)
知乎專(zhuān)欄丨徐阿衡-自然語(yǔ)言處理
FastQA
■?論文 | Making Neural QA as Simple as Possible but not Simpler
■ 鏈接 | https://www.paperweekly.site/papers/835
■ 作者 |?Dirk Weissenborn / Georg Wiese / Laura Seiffe
閱讀理解系列的框架很多大同小異,但這篇 paper 真心覺(jué)得精彩,雖然并不是最新最 state-of-art。
現(xiàn)在大多數(shù)的閱讀理解系統(tǒng)都是 top-down 的形式構(gòu)建的,也就是說(shuō)一開(kāi)始就提出了一個(gè)很復(fù)雜的結(jié)構(gòu)(一般經(jīng)典的就是 emedding-, encoding-, interaction-, answer-layer),然后通過(guò) ablation study,不斷的減少一些模塊配置來(lái)驗(yàn)證想法,大多數(shù)的創(chuàng)新點(diǎn)都在 interaction 層。
而這篇 paper 提供了抽取式 QA 基于神經(jīng)網(wǎng)絡(luò)的兩個(gè) baseline,BoW- 和 RNN-based nerual QA (FastQA) ,創(chuàng)新的以 bottom-up 的方式分析了框架復(fù)雜性以及主流 interaction layer 的作用。?
一個(gè)基本認(rèn)識(shí),構(gòu)建好的 QA 系統(tǒng)必不可少的兩個(gè)要素是:?
1. 在處理 context 時(shí)對(duì) question words 的意識(shí);
2. 有一個(gè)超越簡(jiǎn)單的 bag-of-words modeling 的函數(shù),像是 RNN。
另外,作者還發(fā)現(xiàn)了很多看似復(fù)雜的問(wèn)題其實(shí)通過(guò)簡(jiǎn)單的 context/type matching heruistic 就可以解出來(lái)了,過(guò)程是選擇滿足條件的 answer spans:?
1. 與 question 對(duì)應(yīng)的 answer type 匹配,比如說(shuō)問(wèn) when 就回答 time;
2. 與重要的 question words 位置上臨近,如下圖的 St. Kazimierz Church。
FastQA 的表現(xiàn)對(duì)額外的復(fù)雜度,尤其是 interaction 的復(fù)雜交互,提出了質(zhì)疑。
A BoW Neural QA System?
比照傳統(tǒng)思路來(lái)構(gòu)建。
1. Embedding?
詞向量和字向量的拼接,字向量用 CNN 進(jìn)行訓(xùn)練,。
2. Type matching?
抽取 question words 得到 lexical answer type (LAT)。抽哪些??
who, when, why, how, how many, etc.?
what, which 后面的第一個(gè)名詞短語(yǔ),如 what year did…?
將 LAT 的第一個(gè)和最后一個(gè)單詞的 embedding,以及 LAT 所有單詞的平均的 embedding 拼接起來(lái),再通過(guò)全連接層和 tanh 做一個(gè)非線性變換得到 z? 。
用同樣方法對(duì)每個(gè) potential answer span (s, e) 做編碼。所有 span,最長(zhǎng)為 10 個(gè)單詞,同樣把 span 里第一個(gè)和最后一個(gè)單詞的 embedding 和所有單詞的 embedding 進(jìn)行拼接,又因?yàn)?potential answer span 周?chē)膯卧~會(huì)對(duì) answer span type 提供線索(比如上文提到的 St. Kazimierz Church),所以額外的拼接了 span 往左、往右 5 個(gè)單詞的平均 embedding,這樣一共就是 5 個(gè) embedding,接 FC 層和 tanh 非線性變換,得到 x?s,e。
最后,拼接 LAT 和 span 的表示,[z?;x?s,e;z?☉x?s,e],用一個(gè)前饋網(wǎng)絡(luò)計(jì)算每個(gè) span (s,e) 和 LAT 的分?jǐn)?shù) gtype (s,e)。
3. Context Matching?
引入兩個(gè) word-in-question 特征,對(duì) context 中的每個(gè)單詞?x_j:
binary
,如果 x_j 出現(xiàn)在了 question 中,就為 1,否則為 0。
weighted
計(jì)算 qi 和?xj?的詞向量相似性。
Softmax 保證了 infrequent occurrences of words are weighted more heavily.?
對(duì)每個(gè) answer span(s,e),計(jì)算往左、往右 5/10/20 token-windows 內(nèi)和的平均分?jǐn)?shù),也就是計(jì)算 2(kind of features) 3(windows) 2(left/right)=12個(gè)分?jǐn)?shù)的加權(quán)和得到 context-matching score,各分?jǐn)?shù)的權(quán)重由訓(xùn)練得到。
4. Answer span scoring?
最后每個(gè) span(s,e) 的分?jǐn)?shù)就是 type matching score 和 context matching score 的和。
最小化 softmax-cross-entropy loss 進(jìn)行訓(xùn)練。
FastQA?
上面的方法中語(yǔ)義特征完全被縮減成了 answer-type 和 word-in-question features,另外 answer span 也受到了長(zhǎng)度限制,對(duì)語(yǔ)義的捕捉很弱。?
BiRNN 在識(shí)別 NER 上面非常有優(yōu)勢(shì),context matching 也可以通過(guò)給 BiRNN 喂 wiq-features 得到,answer-type 會(huì)間接由網(wǎng)絡(luò)學(xué)習(xí)得到。?
模型相對(duì)簡(jiǎn)單,就三層 embedding-, encoding-, answer layer。
1. Embedding:和 BoW baseline 相同;
2. Encoding:為了讓 question 和 context embedding 可以交互,先映射到 n 維向量,再過(guò)一個(gè) highway layer。
然后加上 wiq features。
再一起過(guò)一個(gè) BiRNN,輸出再做個(gè) projection。
初始化 project matrix B 為 [In;In],In 是 n 維的 identity matrix,H 是 forawrd 和 backward LSTM 的輸出的加和。?
question 和 context 的參數(shù)共享,question 對(duì)應(yīng)的兩個(gè) wiq 特征設(shè)為 1。projection matrix B 不共享。
3. Answer layer?
context?x H=[h1,…,hLX]?
question Q Z=[Z1,…ZLQ]?
對(duì) Z 做一個(gè)變換,同樣是 context-independent:
answer 的開(kāi)始位置的概率 ps 由 2 個(gè)前饋網(wǎng)絡(luò)加一個(gè) ReLU 激活得到。
結(jié)束位置:
最小化 p(s,e) 的交叉熵來(lái)訓(xùn)練。在預(yù)測(cè)的時(shí)候,可以用 beam-search。
FastQA Extended?
相當(dāng)于主流模型的 interaction layer。對(duì)當(dāng)前的 context state,考慮和剩下的 context(intra)或者和 question(inter)做注意力計(jì)算,將其余 context/question 的信息融入當(dāng)前 context。
Intra-fustion: between passages of the context?
Inter-fusion: between question and context
實(shí)驗(yàn)結(jié)果
一些小結(jié)論:?
1. 簡(jiǎn)單的特征能大幅度提升 performance,原因是讓 encoder 有了真實(shí) question 的部分知識(shí)后,encoder 就可以有選擇性的追蹤問(wèn)題相關(guān)的信息并進(jìn)一步將具體的實(shí)體抽象為對(duì)應(yīng)的類(lèi)型,如果在問(wèn)題中提到了人名,那么 context encoder 就會(huì)記住 “question-person” 而不是具體名字;
2. Beam-search 可以微弱提升結(jié)果,因?yàn)樽羁赡艿拈_(kāi)始位置不一定是最好的 answer span;
3. 額外的 character embedding 對(duì)結(jié)果有顯著提升;
4. 進(jìn)一步的 fusion 對(duì)結(jié)果也有幫助,但并沒(méi)有那么顯著。
討論:Do we need additional interaction??
對(duì)比試驗(yàn),FastQA 與 FastQAExt 和 DCN 相比,快兩倍,而且少 2-4 倍的顯存。分析了結(jié)果發(fā)現(xiàn) FastQAExt 泛化能力更強(qiáng)些,但并沒(méi)有 systematic advantage,并不會(huì)對(duì)某類(lèi)問(wèn)題(主要分析了推理)有一致性的提升。
Qualitative Analysis?
對(duì) FastQA 的錯(cuò)誤結(jié)果進(jìn)行了一些分析,大部分的錯(cuò)誤來(lái)自:?
1. 缺乏對(duì)句法結(jié)構(gòu)的理解;
2. 不同詞位相似語(yǔ)義的詞的細(xì)粒度語(yǔ)義之間的區(qū)分。
其他很多的錯(cuò)誤也是來(lái)自人工標(biāo)注偏好。?
舉了一些典型的錯(cuò)誤例子,像例 1是缺乏對(duì)某些答案類(lèi)型的細(xì)化理解。例 2 缺乏指代消解和上下文縮略語(yǔ)的認(rèn)識(shí),例 3 模型有時(shí)難以捕捉基本的句法結(jié)構(gòu),尤其是對(duì)于重要的分隔符如標(biāo)點(diǎn)符號(hào)和連詞被忽略的嵌套句子。
現(xiàn)有 top-down 模型用到實(shí)際業(yè)務(wù)當(dāng)中通常需要為了 fit 進(jìn)顯存或者是滿足一定的響應(yīng)時(shí)間而進(jìn)行模型的各種簡(jiǎn)化,FastQA 在顯存占用和響應(yīng)速度上有著絕對(duì)優(yōu)勢(shì),感覺(jué)還是非常有意義的。
GDAN
■?論文 | Semi-Supervised QA with Generative Domain-Adaptive Nets
■ 鏈接 | https://www.paperweekly.site/papers/576
■ 作者 |?Zhilin Yang / Junjie Hu / Ruslan Salakhutdinov / William W. Cohen
GDAN,Question Generation 和 Question Answering 相結(jié)合,利用少量的有標(biāo)注的 QA 對(duì) + 大量的無(wú)標(biāo)注的 QA 對(duì)來(lái)訓(xùn)練 QA 模型。
Introduction?
看到這篇論文,看到來(lái)自 CMU,就忍不住推測(cè)作者估計(jì)是 LTI 的,估計(jì)還上過(guò) 411/611/711,畢竟 idea 和 final project 太像了。?
回顧下 CMU 11411/611/711 的 final project,項(xiàng)目是閱讀理解,分為 Asking System 和 Answering System 兩個(gè)子系統(tǒng)。17年初的時(shí)候,Alan 鼓勵(lì)用課上學(xué)到的東西 & 隱晦的不鼓勵(lì)用 DL,anyway 那時(shí)候也并沒(méi)有看到用 DL 做 QG 的 paper,網(wǎng)上唯幾和 QG 相關(guān)的 paper 都是 CMU 的,估計(jì)和這門(mén)課相輔相成。?
611 的 asking system 和 answering system 都沒(méi)有標(biāo)注,只是純粹的 wiki 文本,asking system 基于 document 產(chǎn)生 question 以及 answer,answering system 根據(jù) question 和 document 產(chǎn)生 answer。
因?yàn)闆](méi)有標(biāo)注,所以兩個(gè)系統(tǒng)其實(shí)是相互補(bǔ)充相互促進(jìn)的。如果產(chǎn)生的 question 太簡(jiǎn)單,和原文太過(guò)相近,那么 answering system 的泛化能力有可能就很差,而如果 question 太難,answering system 也就學(xué)很難學(xué)習(xí)很難訓(xùn)練。?
評(píng)價(jià)產(chǎn)生的 question 的好壞的標(biāo)準(zhǔn)除了流暢、符合語(yǔ)法等基于 question 本身的特點(diǎn)外,我們還希望好的問(wèn)題能找到答案,這些邏輯在這篇論文中都有所體現(xiàn)。?
回到 paper,主要思想其實(shí)就是用少量的有標(biāo)注的 QA 對(duì) + 大量的無(wú)標(biāo)注的 QA 對(duì)來(lái)訓(xùn)練 QA 模型。主要做法是,給部分 unlabelled text,用 tagger 抽一些答案,訓(xùn)練 generative model 來(lái)生成對(duì)應(yīng)的問(wèn)題,然后補(bǔ)充訓(xùn)練集,再訓(xùn)練 QA model。實(shí)際是用改進(jìn)的 GAN 方法來(lái)構(gòu)建一個(gè)半監(jiān)督問(wèn)答模型。
Model Architecture?
Generative Model - seq2seq with attention and copy?
對(duì) P(q|p,a) 進(jìn)行建模。輸入是 unlabelled text p 和從中抽取的答案 a,輸出是 q,或者說(shuō) (q, p, a)。答案 a 的抽取依賴 POS tagger + constituency parser + NER tagger。生成模型這里用的是 seq2seq model (Sutskever et al., 2014) + copy mechanism (Gu et al., 2016; Gulcehre et al., 2016)。?
Encoder 用一個(gè) GRU 把 paragraph 編碼成 sequence of hidden states H。注意論文在 paragraph token 的詞向量上加了額外的一維特征來(lái)表示這個(gè)詞是否在答案中出現(xiàn),如果出現(xiàn)就為 1,否則為 0。?
Decoder 用另一個(gè) GRU + Attention 對(duì) H 進(jìn)行解碼,在每一個(gè)時(shí)刻,生成/復(fù)制單詞的概率是:
具體細(xì)節(jié)不多說(shuō)了,相關(guān)可以看 Copy or Generate。?
生成模型 G 產(chǎn)生的 (q, p, a) 作為判別模型的輸入。
Discriminative Model - gated-attention reader?
對(duì) P(a|p,q) 進(jìn)行建模。輸入是人為標(biāo)注數(shù)據(jù) L 以及模型產(chǎn)生的數(shù)據(jù) U,由于 L 和 U 來(lái)自不同分布,所以引入了 domain tag 來(lái)區(qū)分兩類(lèi)數(shù)據(jù),“true”來(lái)表示人為標(biāo)記數(shù)據(jù) L,“gen”標(biāo)簽來(lái)表示模型生成數(shù)據(jù) U(Johnson et al., 2016; Chu et al., 2017)。在測(cè)試時(shí),只加入 d_true。?
論文這里用了 GA (gated-attention) Reader 作為基本結(jié)構(gòu),也是 CMU 出的模型,當(dāng)然事實(shí)上別的模型也可以。
模型很簡(jiǎn)單,embedding 層用詞向量,encoder 層用雙向 GRU 分別得到 Hq 和,context-query attention 層用 gated attention (, Hq 做 element-wise 乘法)做下一層網(wǎng)絡(luò)的輸入,重復(fù)進(jìn)入 encoder 和 attention 層進(jìn)行編碼和乘法(共 k 層),最后將 p, q 做內(nèi)積(inner product)得到一個(gè)最終向量輸入 output 層,output 層用兩個(gè) softmax 分別預(yù)測(cè)答案在段落中的起始和結(jié)束位置。
Loss function?
整體的目標(biāo)函數(shù):
Training Algorithm?
主要要解決下面兩個(gè)問(wèn)題:
Issue 1: discrepancy between datasets
如上,判別模型很容易在 U 上 overfit,所以才用了 domain tag 做區(qū)分。?
Issue 2: jointly train G and D
如上,如果用 auto-encoder,容易讓 question 和 answer 的表達(dá)非常接近,question 甚至可能完全 copy answer,所以這里用了判別模型。
Intuitively, the goal of G is to generate “useful” questions where the usefulness is measured by the probability that the generated questions can be answered correctly by D
Algorithm
分兩個(gè)階段:?
第一階段:固定 G,利用 d_true 和 d_gen,用 SGD 來(lái)更新 D。在 L 上計(jì)算 MLE 來(lái)完成 G 的初始化,對(duì) D 進(jìn)行隨機(jī)初始化。?
第二階段:固定 D,利用 d_true,用 RL 和 SGD 更新 G。由于 G 的輸出是不可導(dǎo)的,所以用到了 reinforce algorithm。action space 是長(zhǎng)度為 T’ 的所有可能的 questions,reward 是 J (UG,dtrue,D)。
Summary
QANet 那篇論文中提到了另一篇 Question Generation 的論文:?
Zhou et al. (2017) improved the diversity of the SQuAD data by generating more questions. However, as reported by Wang et al. (2017), their method did not help improve the performance.?
相信 GDAN 在一定程度上一定能緩解 QA 中標(biāo)注數(shù)據(jù)稀少的問(wèn)題,但是能否在數(shù)據(jù)較為充足,模型較為優(yōu)勢(shì)的情況下提升 performance,估計(jì)難說(shuō),下次嘗試后再來(lái)填這個(gè)坑了。Anyway,看到了曾經(jīng)思考過(guò)的問(wèn)題有人做出了實(shí)踐還是萬(wàn)分開(kāi)心的。
QANet
■?論文 | QANet - Combining Local Convolution with Global Self-Attention for Reading Comprehension
■ 鏈接 | https://www.paperweekly.site/papers/1901
■ 源碼 |?https://github.com/NLPLearn/QANet
CMU 和 Google Brain 新出的文章,SQuAD 目前的并列第一,兩大特點(diǎn):?
1. 模型方面創(chuàng)新的用 CNN+attention 來(lái)完成閱讀理解任務(wù)。
在編碼層放棄了 RNN,只采用 CNN 和 self-attention。CNN 捕捉文本的局部結(jié)構(gòu)信息( local interactions),self-attention 捕捉全局關(guān)系( global interactions),在沒(méi)有犧牲準(zhǔn)確率的情況下,加速了訓(xùn)練(訓(xùn)練速度提升了 3x-13x,預(yù)測(cè)速度提升 4x-9x)。
2. 數(shù)據(jù)增強(qiáng)方面通過(guò)神經(jīng)翻譯模型(把英語(yǔ)翻譯成外語(yǔ)(德語(yǔ)/法語(yǔ))再翻譯回英語(yǔ))的方式來(lái)擴(kuò)充訓(xùn)練語(yǔ)料,增加文本多樣性。
其實(shí)目前多數(shù) NLP 的任務(wù)都可以用 word vector + RNN + attention 的結(jié)構(gòu)來(lái)取得不錯(cuò)的效果,雖然我挺偏好 CNN 并堅(jiān)定相信 CNN 在 NLP 中的作用(捕捉局部相關(guān)性&方便并行),但多數(shù)情況下也是跟著主流走并沒(méi)有完全舍棄過(guò) RNN,這篇論文還是給了我們很多想象空間的。
Model Architecture
先看模型,在 BiDAF 基礎(chǔ)上的一些改進(jìn),主要在 embedding encoder 層。還是閱讀理解經(jīng)典五層結(jié)構(gòu):
1. Input embedding layer?
和其他模型差不多,word embedding + character embedding,預(yù)訓(xùn)練詞向量,OOV 和字向量可訓(xùn)練,字向量用 CNN 訓(xùn)練。
單詞 w 的表示由詞向量和字向量的拼接 [xw;xc]∈Rp1+p2 然后經(jīng)過(guò)兩層 highway network 得到,這個(gè)和 BiDAF 相同。
2. Embedding encoder layer?
重點(diǎn)是這一層上的改變,由幾個(gè)基本 block 堆疊而成,每個(gè) block 的結(jié)構(gòu)是:
[convolution-layer x # + self-attention-layer + feed-forward-layer]?
卷積用的 separable convolutions 而不是傳統(tǒng)的 convolution,因?yàn)楦?memory efficient,泛化能力也更強(qiáng)。核心思想是將一個(gè)完整的卷積運(yùn)算分解為 Depthwise Convolution 和 Pointwise Convolution 兩步進(jìn)行,兩幅圖簡(jiǎn)單過(guò)一下概念。
先做 depthwise conv, 卷積在二維平面進(jìn)行,filter 數(shù)量等于上一次的 depth/channel,相當(dāng)于對(duì)輸入的每個(gè) channel 獨(dú)立進(jìn)行卷積運(yùn)算,然后就結(jié)束了,這里沒(méi)有 ReLU。
然后做 pointwsie conv,和常規(guī)卷積相似,卷積核尺寸是 1x1xM,M 為上一層的 depth,相當(dāng)于將上一步depthwise conv 得到的 map 在深度上進(jìn)行加權(quán)組合,生成新的 feature map。
Self-attention-layer 用的是多頭注意力機(jī)制(head=8),常用的也不多說(shuō)了。?
注意的是這里每個(gè)基本運(yùn)算(conv/self-attention/ffn)之間是殘差連接,對(duì)輸入 x 和操作 f,輸出是 f (layernorm(x))+x,也就是說(shuō)某一層的輸出能夠直接跨越幾層作為后面某一層的輸入,有效避免了信息損失 4 個(gè)卷積層,1 個(gè) encoding block。
3. Context-query attention layer?
幾乎所有 machine reading comprehension 模型都會(huì)有,而這里依舊用了 context-to-query 以及 query-to-context 兩個(gè)方向的 attention,先計(jì)算相關(guān)性矩陣,再歸一化計(jì)算 attention 分?jǐn)?shù),最后與原始矩陣相乘得到修正的向量矩陣。相似度函數(shù)這里用的:
對(duì)行、列分別做歸一化得到 S’ 和 S’’,最后 context-to-query attention 就是 A=S′QT,query-to-context attention 就是 B=S′S″TCT,用了 DCN attention 的策略。
4. Model encoder layer?
和 BiDAF 差不多,不過(guò)這里依舊用 CNN 而不是 RNN。這一層的每個(gè)位置的輸入是 [c, a, c⊙a(bǔ), c⊙b],a, b 是 attention 矩陣 A,B 的行,參數(shù)和 embedding encoder layer 相同,除了 cnn 層數(shù)不一樣,這里是每個(gè) block 2 層卷積,一共 7 個(gè) block。
5. Output layer?
再次和 BiDAF 相同:
p1=softmax(W1[M0;M1]),p2=softmax(W2[M0;M2])?
目標(biāo)函數(shù):
其中和分別是第 i?個(gè)樣本的?groundtruth?的開(kāi)始和結(jié)束位置。
Data Augmentation?
CNN 速度快所以有條件用更多的數(shù)據(jù)來(lái)訓(xùn)練啦,然后進(jìn)一步增強(qiáng)模型的泛化能力啦。這里數(shù)據(jù)增強(qiáng)的基本 idea 就是通過(guò) NMT 把數(shù)據(jù)從英文翻譯成法文(English-to-French),另一個(gè)翻譯模型再把法文翻回英文(French-to-English)。
看圖說(shuō)話,對(duì)段落中每個(gè)句子先用 English-to-French 模型的 beam decoder 得到 k 個(gè)法語(yǔ)翻譯,然后對(duì)每一條翻譯,都再經(jīng)過(guò)一個(gè) reversed translation model 的 beam decoder,這最后就得到了 k^2 個(gè)改寫(xiě)的句子(paraphrases),然后從這 k^2 個(gè)句子中隨機(jī)選一個(gè)。
具體到 SQuAD 任務(wù)就是 (d,q,a) -> (d’, q, a’),問(wèn)題不變,對(duì)文檔 d 翻譯改寫(xiě),由于改寫(xiě)后原始答案 a 現(xiàn)在可能已經(jīng)不在改寫(xiě)后的段落 d’ 里了,所以需要從改寫(xiě)后的段落 d’ 里抽取新的答案 a’,采用的方法是計(jì)算 s’ 里每個(gè)單詞和原始答案里 start/end words 之間的 character-level 2-gram score,分?jǐn)?shù)最高的單詞就被選擇為新答案 a’ 的 start/end word。
這個(gè)方法還可以從 quality 和 diversity 改進(jìn),quality 方面用更好的翻譯模型,diversity 方面可以考慮引入問(wèn)題的改寫(xiě),也可以使用其他的數(shù)據(jù)增廣的方法(Raiman&Miller, 2017)。
實(shí)驗(yàn)結(jié)論是英文語(yǔ)料:法語(yǔ)語(yǔ)料:德語(yǔ)語(yǔ)料是 3:1:1 的比例時(shí)效果最好,EM 提升了 1.5,F1 提升了 1.1。
Question Generation
■?論文 | Machine Comprehension by Text-to-Text Neural Question Generation
■ 鏈接 | https://www.paperweekly.site/papers/330
■ 作者 |?Xingdi Yuan / Tong Wang / Caglar Gulcehre / Alessandro Sordoni / Philip Bachman / Sandeep Subramanian / Saizheng Zhang / Adam Trischler
QG 的應(yīng)用還是挺廣泛的,像是為 QA 任務(wù)產(chǎn)生訓(xùn)練數(shù)據(jù)、自動(dòng)合成 FAQ 文檔、自動(dòng)輔導(dǎo)系統(tǒng)(automatic tutoring systems)等。?
傳統(tǒng)工作主要是利用句法樹(shù)或者知識(shí)庫(kù),基于規(guī)則來(lái)產(chǎn)生問(wèn)題。如基于語(yǔ)法(Heilman and Smith, 2010; Ali et al., 2010; Kumar et al., 2015),基于語(yǔ)義(Mannem et al., 2010; Lindberg et al., 2013),大多是利用規(guī)則操作句法樹(shù)來(lái)形成問(wèn)句。還有是基于模板(templates),定好 slot,然后從文檔中找到實(shí)體來(lái)填充模板(Lindberg et al., 2013; Chali and Golestanirad, 2016)。?
深度學(xué)習(xí)方面的工作不多,有意思的有下面幾篇:?
1. Generating factoid questions with recurrent neural networks: The 30m factoid question-answer corpus?
將 KB 三元組轉(zhuǎn)化為問(wèn)句?
2. Generating natural questions about an image?
從圖片生成問(wèn)題?
3. Semi-supervised QA with generative domain-adaptive nets?
用 domain-adaptive networks 的方法做 QA 的數(shù)據(jù)增強(qiáng)
神經(jīng)網(wǎng)絡(luò)做 QG 基本套路還是 encoder-decoder 模型,對(duì) P(q|d) 或者 P(q|d, a) 進(jìn)行建模。像是 17年 ACL 的 paper Learning to Ask: Neural Question Generation for Reading Comprehension,就是用一個(gè)基本的 attention-based seq2seq 模型對(duì) P(q|d) 進(jìn)行建模,并在 encoder 引入了句子和段落級(jí)的編碼。?
這一篇 Microsoft Maluuba 出的 paper 把 answer 作為先驗(yàn)知識(shí),對(duì) P(q|d, a) 進(jìn)行建模。同時(shí)用監(jiān)督學(xué)習(xí)和強(qiáng)化學(xué)習(xí)結(jié)合的方法來(lái)訓(xùn)練 QG,先用最大似然預(yù)訓(xùn)練一波,然后用 policy gradient 方法進(jìn)行 fine-tune ,最大化能反映問(wèn)題質(zhì)量的一些 rewards。?
Encoder-Decoder Model?
基礎(chǔ)架構(gòu)是 encoder-decoder,加了 attention mechanism (Bahdanau et al. 2015)和 pointer-softmax coping mechanism (Gulcehre et al. 2016)。
Encoder
輸入:
document D=(d1,…,dn)?
answer A=(a1,…,am)
是詞向量。
在文檔詞向量后面拼了個(gè)二維特征表示文檔單詞是否在答案中出現(xiàn)。然后過(guò) Bi-LSTM 對(duì)文檔表示進(jìn)行編碼得到 annotation vectors是每一時(shí)刻前向和后向 hidden state 的拼接。?
接著對(duì) answer 編碼。主要根據(jù) answer 在 document 的位置找到對(duì)應(yīng)的 annotation vector,然后把它和 answer 的詞向量拼接起來(lái)也就是,s<=j<=e,s,e 表示 answer 在 document 的起始結(jié)束位置,經(jīng)過(guò)第二個(gè) biLSTM 得到,ha 是兩個(gè)方向 final hidden state 的拼接。
計(jì)算 decoder 的初始狀態(tài):
Decoder?
解碼器產(chǎn)生輸出,輸出單詞從 pθ(yt|y<t,D,A) 分布中得到。?
為了在問(wèn)句中直接產(chǎn)生文檔中的一些短語(yǔ)和實(shí)體,在 decoder 的時(shí)候采用了 pointer-softmax,也就是兩個(gè)輸出層,shortlist softmax 和 location softmax,shortlist softmax 就是傳統(tǒng)的 softmax,產(chǎn)生 predefined output vocabulary,對(duì)應(yīng) copynet 中的 generate-mode,location softmax 則表示某個(gè)詞在輸入端的位置,對(duì)應(yīng) copynet 中的 copy-mode。?
Decoder:
vt 是從 document 和 answer encoding 計(jì)算得到的 context vector,用了 attention 機(jī)制,atj 同時(shí)可以用作location softmax。
context vector:
shortlist softmax vector ot 用了 deep output layer (Pascanu et al., 2013)。
最后的由 zt?對(duì)兩個(gè) softmax 輸出進(jìn)行加權(quán)和拼接得到。zt 由 MLP 產(chǎn)生,輸入也是 st,vt,yt?1,兩個(gè)隱層然后輸出層 sigmoid 激活得到 zt。
Training?
三個(gè) loss:
1.?negative log-likelihood?
用了 teacher forcing,也就是 yt?1 不是從模型輸出得到的,而是來(lái)自 source sequence。
2. not to generate answer words in question
a? 表示在 answer 中出現(xiàn)但沒(méi)有在 groud-truth question 中出現(xiàn)的單詞。
3. Variety
最大化信息熵來(lái)鼓勵(lì)輸出多樣性。
Policy Gradient Optimization?
Teacher forcing 會(huì)帶來(lái)一個(gè)問(wèn)題,訓(xùn)練階段和測(cè)試階段的結(jié)果會(huì)存在很大差異。在訓(xùn)練階段,tearcher force 使得模型不能從錯(cuò)誤中學(xué)習(xí),因?yàn)樽畲蠡?groud-truth likelihood 并不能教模型給沒(méi)有 groud-truth 的 example 分配概率。于是就有了 RL 方法。在預(yù)訓(xùn)練一波 maximum likelihood 之后,使用一些和問(wèn)題質(zhì)量相關(guān)的 rewards,來(lái)進(jìn)行 policy gradient optimzation。
Rewards?
1. Question answering?
好的問(wèn)題能被回復(fù),把 model-generated question 喂給預(yù)訓(xùn)練好的 QA 系統(tǒng)(論文用的 MPCM 模型),然后用 QA 系統(tǒng)的 accuracy(比如 F1) 作為 reward。
2. Fluency (PPL)?
是否符合語(yǔ)法,過(guò)一個(gè)語(yǔ)言模型計(jì)算 perplexity。
3. Combination
兩者加權(quán)。
Reinforce
“l(fā)oss”:
π 是要訓(xùn)練的 policy,是action 的概率分布,action space 就是 decoder output layer 的詞匯表,可以通過(guò) beam-search 采樣選擇 action,采樣結(jié)果通過(guò) decoder teacher-force 還原得到 state,計(jì)算 reward 進(jìn)行梯度更新。
Policy gradient:
Evaluation?
Baseline Seq2Seq 可以產(chǎn)生更符合語(yǔ)法更流暢的英文問(wèn)題,但是語(yǔ)義可能更加模糊,這篇 paper 提出的系統(tǒng)可以產(chǎn)生更具體的問(wèn)題,雖然沒(méi)那么流暢。
點(diǎn)擊以下標(biāo)題查看更多文章:?
還在熬夜憋思路?這12篇最新論文打包送給你
超全總結(jié):神經(jīng)網(wǎng)絡(luò)加速之量化模型 | 附帶代碼
再談最小熵原理:“飛象過(guò)河”之句模版和語(yǔ)言結(jié)構(gòu)
進(jìn)化計(jì)算在深度學(xué)習(xí)中的應(yīng)用 | 附多篇論文解讀
簡(jiǎn)明條件隨機(jī)場(chǎng)CRF介紹 | 附帶純Keras實(shí)現(xiàn)
▲?戳我查看招募詳情
#作 者 招 募#
讓你的文字被很多很多人看到,喜歡我們不如加入我們
關(guān)于PaperWeekly
PaperWeekly 是一個(gè)推薦、解讀、討論、報(bào)道人工智能前沿論文成果的學(xué)術(shù)平臺(tái)。如果你研究或從事 AI 領(lǐng)域,歡迎在公眾號(hào)后臺(tái)點(diǎn)擊「交流群」,小助手將把你帶入 PaperWeekly 的交流群里。
▽ 點(diǎn)擊 |?閱讀原文?| 進(jìn)入作者博客
總結(jié)
以上是生活随笔為你收集整理的近期有哪些值得读的QA论文?| 专题论文解读的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 还在熬夜憋思路?这12篇最新论文打包送给
- 下一篇: 上海交大提出多模态框架「EmotionM