首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >问答系统调研

问答系统调研

作者头像
luxuantao
发布2021-02-24 14:18:44
9660
发布2021-02-24 14:18:44
举报
文章被收录于专栏:Fdu弟中弟Fdu弟中弟

在完成毕业论文(设计)期间的调研工作,主要研究了几个经典的问答系统和机器阅读理解模型。

Stanford Attentive Reader

出自论文:A Thorough Examination of the CNN/Daily Mail Reading Comprehension Task

解决的问题:给出一个问题和一段文章,找出答案的位置

思路:

  1. 利用Bidirectional LSTM提取问题的特征向量 q ,取前向的最后一个隐层向量(维度 h1 )和后向的最后一个隐层向量(维度 h1 ),然后做concat,所以q的维度是 2h*1
  2. 对Passage中的每个单词进行Bidirectional LSTM,得到每个单词的特征向量 \widetilde{p}_i,维度是 2h*1
  3. 对每个单词对应的特征向量与问题的特征向量进行Attention操作,这里用的是双线性函数\alpha_{i}=softmax(q^TW_s\widetilde{p}_i)),表示答案开头在各个位置的可能性大小;同样的公式,把矩阵 W_s 换成了另一个矩阵 W_e ,再算一个\widetilde{a}_i,表示答案结尾在各个位置的可能性大小
  4. 损失函数L=-\sum{logP^{start}(a{start})}-\sum{logP^{end}(a{end})} ,其实这里开始就会有不同的版本,这里是按照CS224n课程中的理解

DrQA

出自论文:Reading Wikipedia to Answer Open-Domain Questions

解决的问题:开放域问答,不需要预先给出段落

思路:

模型包含两个部分,分别是Document RetrieverDocument Reader,分别用于从广大的数据来源中提取与问题相关的文章,根据提取的文章找到问题的答案,完成阅读理解工作

  • Document Retriever 只用了信息检索的手段,没有用到机器学习,与Document Reader完全分离
    1. 对语料单词进行清洗,包括去停词等过滤操作
    2. 统计所有的bigram
    3. 将这些bigram进行murmur3 hashing得到每个bigram的id(为了减少存储空间)
    4. 计算每个bigram的TF-IDF向量
    5. 将问题的TF-IDF向量与文章的TF-IDF向量相乘取排名前五的文章
  • Document Reader 表示文章的输入向量是精心改良过的,包括: word embedding:使用预训练的300维Glove词向量,对出现频率最高的1000个单词进行fine-tune,比如常见的who, when, how, what, where Exact match:引入了三个二值特征,分别表示该单词是否对应于问题中的某一个单词,是否是小写原始形式,是否是词根形式 Token features:词性(POS)、命名实体(NER) 以及归一化的词频(TF),三者拼接组成一个向量 Aligned question embedding:描述paragraph中每个单词与question中每个单词对齐的embedding,换句话说,这里是用相似度来度量两个单词,并不要求完全一样,相当于软注意力机制,而Exact Match的第一个二值特征则相当于硬注意力机制 对文章中的每个单词进行Bidirectional LSTM,得到每个单词的特征向量 p_i 表示问句的输入向量没有那么复杂,就是300维Glove词向量 对问句中的每个单词进行Bidirectional LSTM,得到每个单词的特征向量 qi ,然后求加权平均 q=\sum\limits{i}{b_iq_i} ,其中权重因子 b_i 通过将每个单词的embedding q_i 乘以一个可以学习的权重向量 w并经过softmax得到,即 b_i=\frac{exp(w \cdot qi)}{\sum\limits{j}{exp(w \cdot q_j)}} 最后和Stanford Attentive Reader一样,对每个单词对应的特征向量与问题的特征向量进行Attention操作,用双线性函数\alpha_{i}=softmax(q^TWpi)),分别计算每个字符成为开始字符和结束字符的概率。在预测的过程中,选择最大的 P{start}(i) * P_{end}(i\prime) ,且要满足 i\leq i\prime \leq i+15

文章中还提到,在训练的时候,不光使用了SQuAD数据集,还用到了CuratedTREC、WebQuestions、WikiMovies这三个数据集。与SQuAD不同,这三个数据集只包含问题和答案,没有关联的文档或段落,因此无法用来直接训练Document Reader。作者为解决这个问题使用了远程监督的方法:

  1. 基于数据集中的问题,使用document retriever提取相关性最高的5篇文章。
  2. 对于五篇文章中的所有段落,抛弃不包含与已知答案完全匹配的段落,抛弃小于25个字大于1500个字的段落,若有的段落中包含命名实体,抛弃那些不包含命名实体的段落
  3. 对于留下来的所有段落,从段落中找出包含答案的span,这里是基于word水平的,也就是unigram,首先找到段落中包含答案的完整区间[start, end],然后基于20 token window,从start向左延展20个word,从end向右延展20个word(要保证左右两边不能溢出,溢出则取边界)得到一个备选小段落
  4. 从备选小段落中找出最有可能的5个小段落,要与问题进行比较。分别对每个小段落统计它的bigram,同时也统计问题的bigram,最后统计每个小段落的bigram与问题的bigram有多少交集,最后对交集求和,求和总数最多的5个小段落为最有可能的段落。

BiDAF

出自论文:Bi-Directional Attention Flow For Machine Comprehension

解决的问题:给出一个问题和一段文章,找出答案的位置

思路:

该模型的核心创新之处在于 Attention Flow Layer ,提出了双向的attention

假设Context有T个单词,Query有J个单词

  1. 词向量用预训练的glove(维度用d1表示),字符向量用 1D-CNN 计算(最后得到的向量维度等于你用的卷积核的个数,这里用d2表示,字符向量的作用是可以弥补当训练BiDAF时遇到不在gloVe字典中的单词)
  2. 拼接词向量和字符向量,得到的向量维度用d表示(d=d1+d2),现在我们有了两个矩阵,维度分别为 dTdJ ,分别用于表示Context和Query
  3. 通过highway network (highway network 和resnet 很像,它的作者甚至认为何凯明是抄袭了他的思想),用公式表示就是 y=t\bigodot g(Wx+b)+(1-t)\bigodot x ,其中 \bigodot 表示element-wise multiply ,g表示激活函数,t的值本身也是由另一个线性层加一个激活函数算出来,取值范围是0到1。可以认为 highway network 的作用是调整词向量和字符向量的相对比重。这步过后,两个矩阵的维度不变
  4. 单层双向的LSTM。这步过后,两个矩阵的维度分别为 2dT 2dJ ,分别命名为H和U
  5. 接下来的 Attention Flow Layer 是个模型的重点,提出了一个相似度矩阵S,维度是 TJ ,表示每个上下文单词和每个问句单词的相似度,S是这么来的:对于上下文a和问句b, S_{ab}=w^T[a;b;a\bigodot b] ,;表示上下拼接,w是可训练的向量,维度是 6d1 。得到S后,可以进行下面的两个过程 Context-to-Query Attention 和 Query-to-Context attention
  6. Context-to-Query Attention : 取出S中的一行 1J ,做softmax,得到的结果即视为权重,与U中的每一列做加权求和,得到一个 2d1 的向量。遍历S中的每一行重复上述动作,得到矩阵 \check{U} ,维度为 2d*T
  7. Query-to-Context attention :和上面的做法并不一样,先取出S中每一行的最大值,得到一个列向量 T1 ,做softmax,用矩阵H和这个列向量做矩阵乘法,得到一个 2d1 的向量,然后直接把这个向量拷贝T次,得到矩阵 \check{H} ,维度为 2d*T
  8. 这步要把 H\check{H}\check{U} 组合在一起得到一个大矩阵 G 。是这样: G_t=\beta (H_t,\check{U}_t, \check{H}_t) ,下标t表示列号,其中 \beta(a,b,c)=[a;b;a\bigodot b;a\bigodot c]G 的维度是 8d*T
  9. 双层双向的LSTM。第一层双向的LSTM过后,得到矩阵M1,维度为 2dT ,第二层双向的LSTM过后,得到矩阵M2,,维度也为 2dT
  10. 可以预测答案的开始位置和结束位置了,p1=softmax(w^T{p1}[G;M1])p2=softmax(w^T{p2}[G;M2]), w维度都是110d ,p纬度都是1T ,预测的时候取T个值中最大的那个;训练的时候损失函数为L(\theta)=-\frac{1}{N}\sum\limitsi^N{[log(p{y1})+log(p_{y2})]} ,其中y1y2 表示正确答案

GoldEn Retriever

出自论文:Answering Complex Open-domain Questions Through Iterative Query Generation

解决的问题:开放域问答,不需要预先给出段落,问题需要系统进行多步推理才能给出正确答案

思路:

该模型的核心创新之处在于,它在每一步都使用先前的IR结果来生成新的自然语言查询,并检索新的证据来回答原始问题,而不是单纯依靠原始问题来检索文章段落,从而实现多跳推理。

Reference:

  1. https://towardsdatascience.com/modeling-and-output-layers-in-bidaf-an-illustrated-guide-with-minions-f2e101a10d83
本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2020-06-09,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • Stanford Attentive Reader
  • DrQA
  • BiDAF
  • GoldEn Retriever
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档