该系列是斯坦福CS224N的一系列学习笔记,“深入学习的自然语言处理”。可以在此处查看相应的课程视频。
ShowMeai是CS224N课程的所有课程。它已经进行了中文翻译和注释,并变成了GIF运动!单击课程的注释和学习对10-NLP讲座系统的Q&A系统的解释。有关更多信息采集方法,请参见本文的末尾。
CS224N是斯坦福大学顶级机构生产的深度学习和自然语言处理的专业课程。核心内容涵盖了RNN,LSTM,CNN,Transformer,Bert,Q&A,摘要,文本生成,语言模型,阅读理解的前沿。
本说明对应于斯坦福CS224N自然语言处理特殊课程的知识领域:Q&A System。务必在NLP中的Q&A系统场景中,引入了一些模型和想法。
质量检查系统的概念是直接从文档,对话,在线搜索等中提取信息(有时段落或单词范围),以满足用户的信息需求。QA系统不需要用户来阅读整个文档,但倾向于给出一个简短的答案。
现在,QA系统可以轻松地与其他NLP系统(例如聊天机器人)结合使用。一些质量检查系统甚至超过了文本文档的搜索,这些文档可以从一组图片中提取信息。
有很多类型的问题,其中最简单的是事实问题和工作事实问题答案。它包含的问题看起来像
当然,还有其他类型的问题,例如数学问题($ 2+3 =?$),逻辑问题,这些问题需要广泛合理(并且没有背景信息)。我们可以说,人们的日常生活,寻求信息信息的事实是最常见的问题。
实际上,大多数NLP问题都可以视为一个问题和回答问题,其范式很简单:
因此,非常自然,我们想设计一个可用于一般质量检查的模型。
为了实现这一目标,我们面临两个主要障碍。
我们可以使用NLP的共享体系结构来解决第一个问题:动态内存网络(DMN),它是为一般质量质量质量质量任务而设计的架构。QA很难,部分是因为它很难阅读长文本。将长文档存储在您的工作记忆中。
将DMN分为多个模块。首先,让我们看一下输入模块。输入模块使用sequence $ t_i $作为输入,输出事实表示序列$ t_c $。如果输出是一个单词列表,我们有$ t_c = t_i $。如果输出是句子列表,我们将$ t_c $作为句子数,而$ ti $作为句子中的单词数。我们使用简单的gru来读取句子,也就是说,隐藏状态$ h {t} = operatorName {gru}左(x {t},h {t-1} ight)$,其中$ x {t} = lleft [w {t} ight] $,$ l $是嵌入式矩阵,$ w_t $是$ t $,我们使用Bi-Gru进一步改进,如下图所示。
(DMN网络的这一部分经常使用GRU结构。特定的GRU详细信息可以由ShowMeai的Wu Enda在深度学习教程中的课程摘要|序列模型和RNN网络。) - 语言模型,RNN,GRU和LSTM)
我们还使用标准gru来读取问题(使用嵌入式矩阵$ l:q {t} = permatatorName {gru}左(lleft [w {t}^Q} ight],q_ {t-1} ight)$),但是问题模块的输出是问题的代码表示。
动态内存网络的一个重要特征是场景内存模块。它在输入序列上运行很多次,并注意输入的不同集聚。内存表示。
我们将场景内存的迹象表示为$ m^i $,场景表示(注意机制输出)为$ e^i $。sITITURAUTION内存表示$ m^0 = q $的初始化,然后继续继续使用$ mathrm {gru}:m} = mathrm {gru} left(e^},m^{i-1} ight)$。使用输入模块的隐藏状态输出来更新情况,如下所示,$ g $是注意机制。
$ $ begin {Aligned} h {t}^{i}&= g {t}^{i} operatoTorName {gru} left(c {t},h {t-t-1}^{i} ight)+左(1-g {t}^{i} ight)h {t-1}^{i} e {i}&= h {t_ {mathrm {c}}}}^{i} end end {aligned} $ $ $
请注意,有很多计算矢量$ g $,但是在原始DMN论文中(Kumar等人,2016年),我们发现以下公式是最有效的公式
$ $ g {t}^{i} = gleft(c {t},m^{i-1},q ight)$ $
$ $ g(c,m,q)= sigma左(w^{(2)} tanh左(w^{(1)} z(c,m,q)+b^{(1)}} ight)+b^{(2)} ight)$ $
$ z(c,m,q)=左[C,M,Q,C Circ Q,C Circ M,|C-Q |,|c-m |,c} w^{(b)} q_ {&,,, ,,,} c^} w^{(b)} m ight] $ $
这样,如果句子与问题或内存有关,则该模块中的门将被激活。每次$ i $,如果摘要不足以回答问题,我们可以在$ i +1 $每次。
例如,考虑这样的问题和输入序列。在此示例中,可以在通过的情况下连接约翰和fotball,然后可以在第二次通过中连接约翰和字段,以便网络可以传递这两个信息。
答案模块是一个简单的GRU解码器,它接收问题模块和方案内存模块的输出,并输出一个单词(或通常是计算结果)。工作原理如下:
$ $ begin {Aligned} y {t}&= OperatoTorname {softmax} left(w^{(a)} a {t} ight)a {t}&= operatotorname {gru}左(左[y {t-1},q ight],a_ {t-1} ight)end {aligned} $ $
可以通过实验可以看出,DMN在BABL Q&A任务中的性能比MEMNN更好,并且在情感分析和单词标记方面也比其他架构更好。任务困难的是,通行证的数量越多。多数传输还可以让网络真正理解句子,只注意最后一个任务的相关部分,而不是对嵌入单词中嵌入的信息的反应。
关键想法是模块化系统,您可以通过更改输入模块允许不同类型的输入。例如,如果我们基于卷积神经网络替换输入模块,则此体系结构可以处理一个称为可视化问题的任务答案(VQA(VQA))。它还可以在此任务中击败其他模型。
自2015年以来,找到可以解决所有问题的通用体系结构的热情略有下降,但是渴望训练和促进一个领域的其他领域的愿望增加了。要了解更高级的Q&A模块,读者可以参考该领域动态注意力网络(DCN)。
原始:https://juejin.cn/post/7096494793991127076