Reading Wikipedia to Answer Open-Domain Questions
本文是一篇很经典的关于开放领域问答的文章,与之前的几篇文章不同,开放式领域的问答系统是基于一种Retriever-Reader的架构,Retriever通过大规模机器阅读理解提取相关度高的文章,再用Reader进行特征提取。
Overview
本文的开放式QA系统有两个部分组成:
- Document Retriever:作者使用Wikipedia作为资料库,针对不同的问题进行相关文章段落的提取,提取出文章后再构建数据集输入到Reader中进行训练
- Document Reader:这一模块就是DrQA的模型部分,使用神经网络进行机器阅读理解
下图是一个开放领域问答的基本流程图

DrQA
本文提出的open-domin QA system叫做DrQA,分为两个独立的子系统:Retriever和Reader
Document Retriever
Document Retriever模块是针对每个问题从Wikipedia提取出相关文章,作者采用了TF-IDF相似度匹配,加上bigram的hash,用top 5作为该问题的候选文章。实验数据表明本文的这个retriever比Wikipedia的搜索引擎效果好了不少,尤其是加入了bigram hashing以后。

Document Reader
Reader又分为以下几个子模块:
Paragraph Encoding
- word embedding: f e m b ( p i ) f_{emb}(p_i) femb(pi),这里采用的是Glove 300d
- exact match: f e x c a t _ m a t c h ( p i ) f_{excat\_match}(p_i) fexcat_match(pi),用三个binary feature来表示该单词是否与问题中的某个单词匹配
- token feature: f t o k e n ( p i ) f_{token}(p_i) ftoken(pi),这个特征包含三个子特征 ( P O S ( p i ) , N E R ( p i ) , T F ( p i ) ) (POS(p_i),NER(p_i),TF(p_i)) (POS(pi),NER(pi),TF(pi))
- question aligned feature:这一部分其实就是P2Q的attention, f a l i g n ( p i ) = ∑ j α i , j E ( q j ) f_{align}(p_i)\ =\ \sum_{j} \alpha_{i,j}E(q_j) falign(pi) = ∑jαi,jE(qj),而attention weight的计算方式为: α i , j = e x p { α ( E ( p i ) ) ⋅ α ( E ( q j ) ) } ∑ j ′ e x p { α ( E ( p i ) ) ⋅ α ( E ( q j ′ ) ) } \alpha_{i,j}\ =\ \frac{exp\{\alpha(E(p_i)) \cdot \alpha(E(q_j))\}}{\sum_{j'}exp\{\alpha(E(p_i)) \cdot \alpha(E(q_j'))\}} αi,j = ∑j′exp{α(E(pi))⋅α(E(qj′))}exp{α(E(pi))⋅α(E(qj))}
Question Encoding
question encoding依然是采用LSTM,得到输出
    
     
      
       
        {
       
       
        
         q
        
        
         1
        
       
       
        ,
       
       
        
         q
        
        
         2
        
       
       
        ,
       
       
        ⋯
        
       
        ,
       
       
        
         q
        
        
         m
        
       
       
        }
       
      
      
       \{q_1,q_2,\cdots,q_m\}
      
     
    {q1,q2,⋯,qm}后,再通过一个self-attention映射到一个vector 
    
     
      
       
        q
       
      
      
       q
      
     
    q
 
     
      
       
        
         
          β
         
         
          j
         
        
        
          
        
        
         =
        
        
          
        
        
         
          
           e
          
          
           x
          
          
           p
          
          
           (
          
          
           w
          
          
           ⋅
          
          
           
            q
           
           
            j
           
          
          
           )
          
         
         
          
           
            ∑
           
           
            
             j
            
            
             ′
            
           
          
          
           e
          
          
           x
          
          
           p
          
          
           (
          
          
           w
          
          
           ⋅
          
          
           
            q
           
           
            
             j
            
            
             ′
            
           
          
          
           )
          
         
        
        
        
         q
        
        
          
        
        
         =
        
        
          
        
        
         
          ∑
         
         
          
           j
          
          
           =
          
          
           1
          
         
         
          m
         
        
        
         
          β
         
         
          j
         
        
        
         
          q
         
         
          j
         
        
       
       
         \beta_{j}\ =\ \frac{exp(w \cdot q_j)}{\sum_{j'}exp(w \cdot q_{j'})}\\ q\ =\ \sum_{j=1}^{m}\beta_{j}q_j 
       
      
     βj = ∑j′exp(w⋅qj′)exp(w⋅qj)q = j=1∑mβjqj
Prediction
p s t a r t ( i ) = e x p ( p i W s q ) ∑ i ′ e x p ( p i ′ W s q ) p e n d ( i ) = e x p ( p i W e q ) ∑ i ′ e x p ( p i ′ W e q ) p_{start}(i) \ =\ \frac{exp(p_iW_sq)}{\sum_{i'}exp(p_{i'}W_sq)}\\ p_{end}(i) \ =\ \frac{exp(p_iW_eq)}{\sum_{i'}exp(p_{i'}W_eq)} pstart(i) = ∑i′exp(pi′Wsq)exp(piWsq)pend(i) = ∑i′exp(pi′Weq)exp(piWeq)
Experiment

DrQA再SQuAD上表现是很优异的,超越了当时的其他模型
消融实验

最后作者使用另外的四个问答数据集来评估整个DrQA开放问答系统

从这个数据可以看出开放领域的问答系统效果的确是都不尽如人意
Further Work
- 让Reader把Retriever选取出的段落进行聚合再进行训练,而不是一篇一篇的训练
- 设计出一个end-to-end的开放领域问答系统,DrQA中的Retriever和Reader仍然是两个独立的系统










