[0002] 本申请要求于2016年11月4日提交的、题为“用于问答的动态协同注意力网络(DYNAMIC COATTENTION NETWORKS FOR QUESTION ANSWERING)”(案号:SALE 1179-1/1945PROV)的62/417,332号美国临时
专利申请的权益。优先权临时申请出于所有目的通过引用合并于此;
[0003] 本申请要求于2016年11月4日提交的、题为“用于问答的动态协同注意力网络(DYNAMIC COATTENTION NETWORKS FOR QUESTION ANSWERING)”(案号:SALE 1179-2/1945PROV2)的62/418,060号美国临时专利申请的权益。优先权临时申请出于所有目的通过引用合并于此;
[0004] 本申请要求于2017年1月31日提交的、题为“用于问答的动态协同注意力网络(DYNAMIC COATTENTION NETWORKS FOR QUESTION ANSWERING)”(案号:SALE 1179-3/1945US)的15/421,193号美国非临时专利申请的权益。优先权非临时申请出于所有目的通过引用合并于此。
技术领域
[0005] 所公开的技术总地涉及使用
深度神经网络的
自然语言处理(NLP),并且更具体地涉及用于机器理解和问答的端到端神经网络架构。
背景技术
[0006] 本部分中讨论的主题不应仅仅由于在本部分中提到而被假定为
现有技术。同样地,本部分中提到的问题或与作为背景提供的主题有关的问题不应被假定为之前在现有技术中已得到承认。本部分中的主题内容仅代表不同的方法,其中和其本身也可以对应于所述技术的实现。
[0007] 针对问答,已提出了几种
深度学习模型。然而,由于它们的单个传递性质,它们无法从对应于错误答案的局部最大值中恢复。为了解决这一问题,所公开的技术提供了一种用于问答的所谓“动态协同注意力网络(DCN)”。DCN首先融合问题和文档的协同依赖的表示,以便关注两者的相关部分。然后,DCN遍历可能的答案范围。这个
迭代过程使DCN能够从与错误答案对应的初始局部最大值中恢复。
[0008] 在斯坦福问答数据集(SQuAD)数据集上,单一的DCN模型优于之前的技术
水平,从71.0%的F1得分到75.9%的F1得分,而集成DCN模型优于之前的技术水平,从78.1%的F1得分到80.4%的F1得分。
附图说明
[0009] 在附图中,相似参考字符一般是指贯穿不同视图的相似部分。此外,这些图纸不一定是按比例绘制的,相反,重点通常放在说明所披露技术的原则上。在下面的描述中,参照以下附图描述了所公开技术的各种实现,其中:
[0010] 图1例示了读取和理解文档并基于文档回答问题的动态协同注意力网络(DCN)的各个方面。
[0011] 图2示出了使用
编码器神经网络产生文档和问题上下文编码的一种实现。
[0012] 图3描述了隐藏状态比较器的一种实现,其产生确定图2中文档和问题上下文编码之间的语言相似性的亲和矩阵(affinity matrix)。
[0013] 图4是通过对图3的亲和矩阵进行逐文档的归一化以产生文档到问题注意力权重的一种实现。
[0014] 图5例示了通过结合图2的文档上下文编码和图4的文档到问题的注意力权重来生成文档的上下文总结的一种实现。
[0015] 图6是通过对图3的亲和矩阵进行逐问题的归一化,来产生问题到文档注意力权重的一种实现。
[0016] 图7例示了通过将图2的问题上下文编码与图6的问题到文档注意力权重相结合来生成问题的上下文总结的一种实现。
[0017] 图8描述了通过将图5的文档的上下文总结与图6的问题到文档的注意力权重相结合,生成文档的改进的上下文总结的一种实现。
[0018] 图9是通过将图8的文档的改进的上下文总结与图7的问题的上下文总结
串联起来,生成文档的协同依赖表示的一种实现。
[0019] 图10示出了通过将图9的文档的协同依赖表示与图2的文档上下文编码串联起来,生成文档的改进的协同依赖表示的一种实现。
[0020] 图11例示了使用图10的文档的改进的协同依赖表示产生双向逐文档的协同注意力编码的双向协同注意力编码器的一种实现。
[0021] 图12描述了
解码器神经网络的一种实现,其迭代地预测文档中响应于问题的短语的开始
位置和结束位置。
[0022] 图13是开始高速路最大输出网络的一种实现。
[0023] 图14是结束高速路最大输出网络的一种实现。
[0024] 图15、图16和图17是解码器神经网络产生的开始条件分布和结束条件分布的例子。
[0025] 图18示出了可以用来实现动态协同注意力网络(DCN)的之前描述组件的模
块。
[0026] 图19是可用于实现DCN的
计算机系统的简化
框图。
[0027] 详细描述
[0028] 以下讨论是为了使能本领域技术人员制造和使用所公开的技术而提出的,并且在特定应用及其要求的背景下提供。对于本领域技术人员来说,对所公开的实现的各种
修改是显而易见的,并且在不脱离所公开的技术的精神和范围的情况下,这里定义的一般原理可以应用于其他实现和应用。因此,所公开的技术不意图被限于所示的实现方式,而是与符合本文公开的原理和特征的最宽范围相一致。
[0029] 讨论被组织如下。首先,提出提供所公开技术的概述的介绍。然后,讨论所公开的技术的编码器及其功能。接下来,讨论了协同注意力机制,接着是所公开的技术的解码器及其功能。最后,提供了一些说明了在SQuAD数据集上公开的技术的性能的实验结果。
[0030] 介绍
[0031] 问答(QA)是自然语言处理(NLP)中的关键任务,其需要自然语言理解和世界知识。由于人类注释,之前的QA数据集往往
质量很高,但尺寸很小。因此,他们不允许
训练数据密集型、富有表现力的模型,如深度神经网络。
[0032] 为了解决这个问题,研究人员已通过半自动技术开发了大规模数据集。与其较小的手工注释的对应物相比,这些QA数据集可以训练更具表现力的模型。然而,已经表明它们与回答问题所需的推理类型中的更自然的、人类注释的数据集不同。
[0033] 最近发布的斯坦福问答数据集(SQuAD)比所有之前的手工注释数据集大几个数量级,并且具有在自然QA任务中达到
顶点的各种质量。SQuAD由群众工作者在一组维基百科文章中提出的问题组成。SQuAD在536篇文章中包含107,785个问答
配对。SQuAD具有理想的质量,其答案是参考文档中的范围或短语。这会将答案限制为参考文档中所有可能范围的空间。
[0034] 所公开的技术涉及用于问答的端到端神经网络,在此称为“动态协同注意力网络(DCN)”。粗略地描述,DCN包括编码器神经网络和协同注意力编码器,其以所谓的“协同注意力编码”捕获问题和文档之间的相互作用。DCN还包括解码器神经网络和高速路最大网络,其处理协同注意力编码以估计文档中响应问题的短语的开始位置和结束位置。
[0035] DCN自动回答关于文档的问题。DCN不是在没有上下文的情况下产生文档的单个静态表示,而是根据问题对文档进行不同的解释。也就是说,给定相同的文档,DCN根据问题构建不同的理解(例如,“哪个团队代表Super Bowl 50中的NFC?”,“谁在第四节触地得分?”)。基于该有条件的解释,DCN迭代地预测多个答案,允许其调整最初被误导的预测。
[0036] 在单个模型实现中,DCN在SQuAD数据集上实现F1得分为75.9%,而现有技术的水平为71.0%的F1得分。在集成模型实现中,DCN在SQuAD数据集上实现F1得分为80.4%,而现有技术的水平为78.1%的F1得分。
[0037] 动态协同注意力网络
[0038] 图1示出了动态协同注意力网络(DCN)100的方面,其读取和理解文档102a并基于其回答问题104a。文档102a存储在文档
数据库102中。问题104a存储在问题数据库104中。DCN 100包括两种类型的组件,即编码组件(即编码器)和解码组件(即,解码器)。DCN 100的编码组件包括嵌入器106、编码器神经网络108、隐藏状态比较器110、指数归一化器112、编码混合器114和协同注意力编码器116。DCN 100的解码组件包括解码器神经网络118、开始高速路最大化网络120和结束高速路最大化网络122。
[0039] 图1中的组件可以用
硬件或
软件实现,并且不需要精确地划分为与图1所示的完全相同的框。一些组件也可以在不同的处理器或计算机上实现,或者分布在许多不同的处理器或计算机之间。另外,应当理解,一些组件可以被组合、并行操作或以与图1所示不同的顺序操作,而不影响实现的功能。同样如本文所用,术语“组件”可以包括“子组件”,其本身在本文中可视为构成组件。例如,嵌入器106、编码器神经网络108、隐藏状态比较器110、指数归一化器112、编码混合器114和协同注意力编码器116在本文中也可以被认为是编码组件的子组件。同样地,解码器神经网络118,开始高速路最大输出网络120和结束高速路最大输出网络122在本文中也可以被认为是解码组件的子组件。另外,编码组件和解码组件在此也可以被认为是DCN组件的子组件。此外,图1中的框也可以被认为是方法中的
流程图步骤。组件或子组件也不一定必须将其所有代码连续地放置在
存储器中;代码的一些部分可以与代码的其他部分分开,将来自其他组件或子组件的代码或其他函数放在中间。
[0040] 嵌入
[0041] 嵌入器106将文档102a和问题104a中的每个单词映射到高维向量空间,这里称为“嵌入空间”。在一个实现中,嵌入器106使用嵌入矩阵E∈l×|v|生成与文档102a中的m个单词对应的l维单词向量 的序列202,其中v表示词汇表的大小。序列202在本文中称为“文档嵌入”。使用相同的嵌入矩阵E∈l×|v|,嵌入器106还生成与问题104a中的n个单词对应的l维单词向量 的序列204。序列204在这里被称为“问题嵌入”。这些嵌入步骤由DCN 100的嵌入器106实现。
[0042] 通过共享嵌入矩阵E∈l×|v|,文档102a和问题104a都参与了嵌入空间的学习,并相互受益。在另一个实现中,嵌入器106首先将文档102a和问题104a中的每个单词转换为独热(one hot)表示,然后使用共享的嵌入矩阵E∈l×|v|将它们转换为连续表示。在另一个实现中,嵌入器106使用预先训练的单词嵌入模型(如Glove和Word2Vec)来初始化单词嵌入,以获得文档102a和问题104a中每个单词的固定单词嵌入。在其他实现中,嵌入器106生成字符嵌入和/或短语嵌入。
[0043] 上下文编码
[0044] 编码器神经网络108是循环神经网络(RNN),它将上下文信息合并到文档102a和问题104a中每个单词的表示中。在一个实现中,编码器神经网络108是标准的单向长短期记忆(LSTM)神经网络,其分别处理文档102a和问题104a,如下所示:
[0045]
[0046] 一种示例LSTM神经网络在Alex Graves的“用循环神经网络生成序列”中有更详细的描述,可从http://arxiv.org/abs/1308.0850v5获得。在其他实现中,编码器神经网络108是
门控循环单元(GRU)神经网络。
[0047] 文档编码矩阵 和问题编码矩阵产生文档102a和问题104a的隐藏状态表示,其中l是隐藏状态
向量的维度。在一些实现中,使用了
指针哨兵向量 和 这使得编码器神经网络108不关注(attend to)输入中的任何特定单词。为了允许文档编码空间和问题编码空间之间的变化,将非线性投影层应用于问题编码。因此,问题的最终表现变为:
[0048] Q=tanh(W(Q)Q′+b(Q))∈l×(n+1)
[0049] 使用编码矩阵,编码器神经网络108基于文档嵌入202生成文档102的包含文档隐藏状态向量 的上下文编码212,并基于问题嵌入204为问题104a生成包含问题104a的隐藏状态向量 的上下文编码214。本文将文档102a的上下文编码212称
为“文档编码”。产生文档上下文编码的步骤由编码器神经网络108的文档编码器LSTM 1802实现。问题104a的上下文编码214在这里称为“问题编码”。产生问题上下文编码的步骤由编码器神经网络108的问题编码器LSTM 1804实现。第i个隐藏状态向量 (例如 )表示文档
102a的第i个单词嵌入(例如 ),以及来自文档102a的之前的单词嵌入(例如 )
的隐藏状态向量(例如 )的一些上下文信息。类似地,第i个隐藏状态向量 (例
如 )表示问题104a的第i个单词嵌入(例如 ),以及来自问题104a的之前的单词嵌入(例如 )的隐藏状态向量(例如 )的一些上下文信息。
[0050] 协同注意力机制
[0051] 协同注意力机制同时关注(attend to)文档102a和问题104a,并最终融合了两种注意力上下文。隐藏状态比较器110使用点积对文档编码212和问题编码214进行比较,并输出具有逐文档的维度和逐问题的维度的亲和矩阵(affinity matrix)302,如下所示:
[0052] L=DTQ∈(m+1)×(n+1),
[0053] 其中Lmn表示第m个文档单词和第n个问题单词之间的语言相似性。计算语言相似性嵌入的步骤由DCN 100的隐态比较器110来实现。
[0054] 亲和矩阵302标识文档到问题的亲和分数和与所有文档单词和问题单词对相对应的问题到文档的亲和分数。文档到问题的亲和分数表示哪些问题单词与每个文档单词最相关。问题到文档的亲和分数表示哪些文档单词与问题单词之一最相似,因此对回答问题至关重要。在亲和矩阵302中,文档102a中的每个单词的文档到问题的亲和分数被标识为其上下文编码和问题编码214的点积。在亲和矩阵302的转置中,问题104a中的每个单词的问题到文档的亲和分数被标识为其上下文编码和文档编码212的点积。
[0055] 指数归一化器112通过对文档到问题的亲和分数应用逐行的softmax函数402来逐文档地归一化亲和矩阵302,从而产生文档到问题的注意力权重(γ)404。指数归一化器还通过对问题到文档的亲和分数应用逐列的softmax函数602,从而产生问题到文档的注意力权重(μ)604。指数归一化的步骤由DCN 100的指数归一化器112来实现。指数归一化的文档到问题的注意力权重(γ)404和指数归一化的问题到文档的注意力权重(μ)604是注意力标量,其编码由所有文档单词和问题单词对之间的亲和分数计算出的语言相似性。沿着亲和矩阵302中的每一列的逐文档的注意力标量AQ加和为一体(例如,从 到 )。沿着亲和矩阵302中的每一行的逐问题的注意力标量AD加和为一体(例如, 到 )。注意力标量计算如下:
[0056] AQ=softmax(L)∈(m+1)×(n+1)
[0057] AD=softmax(LT)∈(n+1)×(m+1),
[0058] 其中LT表示亲和矩阵302的转置。
[0059] 编码混合器114根据文档到问题的注意力权重(γ)404计算文档编码212的加权和。也就是说,文档编码212是逐元素地乘以亲和矩阵302中文档到问题的注意力权重(γ)404的每一列。通过将每个逐文档的注意力标量(例如 414)乘以文档编码212中相应的隐藏状态向量(例如 216),编码混合器114确定每个文档单词参与计算与问题相关的文档
102a(例如 512)的上下文总结的程度。因此,文档102a的每个上下文总结向量
表示文档102a中与问题104a相关的最重要单词的加权和。生成文档的上下
文总结的步骤由编码混合器114的文档编码混合器1806实现。
[0060] 类似地,编码混合器114根据问题到文档的注意力权重(μ)604计算问题编码214的加权和。也就是说,问题编码214是逐元素地乘以亲和矩阵302中问题到文档的注意力权重(μ)604的每一行。通过将每个逐问题的注意力标量(例如, 614)乘以问题编码214中相应的隐藏状态向量(例如, 218),编码混合器114确定每个问题单词参与计算与文档102a相关的问题104a(例如, 712)的上下文总结的程度。因此,问题104a的每个上下文总结向量都表示问题104a中与文档102a相关的最重要单词的加权和。生成问题的上下文总结的步骤由编码混合器114的问题编码混合器1808实现。
[0061] 编码混合器114接着根据问题到文档的注意力权重(μ)604计算文档102a的上下文总结 的加权和。也就是说,亲和矩阵302中的问题到文档的注意力权重(μ)604的每一行都逐元素地乘以文档102a的每个上下文总结 通过将每个逐
问题的注意力标量(例如 614)乘以文档102a的相应上下文总结(例如 512),编码混合器114确定每个上下文总结参与计算文档102a(例如 812)的与问题104a相关的改进的上下文总结的程度。因此,文档102a的每个改进的上下文总结向量 都表示
文档102a的与问题104a相关的最重要上下文总结的加权和。编码混合器114的重新关注器(reattender)1810实现了生成文档的改进的上下文总结的步骤。
[0062] 编码混合器114接着将文档102a的改进的上下文总结 与问题104a的上下文总结 串联起来,以生成文档102a和问题104a的协同依赖表示作为
协同注意力上下文 其中每个协同注意力上下文向量都具有2l
维度。接下来,为了减少更早总结造成的信息损失,编码混合器114逐元素地串联协同注意力上下文Y902(例如 912)与文档编码212(例如 216),以产生改进的协同注意力上下文 1002,其中每个改进的协同注意力上下文向量都具有3l维度。然后改进
的协同注意力上下文Z1002作为输入被提供给协同注意力编码器116。产生双向逐文档的协同注意力编码的步骤由DCN 100的串联器1812和协同注意力编码器116实现。
[0063] 协同注意力编码器116是一种双向LSTM,其通过沿正向方向和反向方向评估元素并产生协同注意力编码U1102,融合了改进的协同注意力上下文Z1002的元素之间的时间交互。协同注意力编码U1102中的每个元素(例如ut1102t)表示针对问题104a编码的相应文档单词。协同注意力编码U1102定义如下:
[0064]
[0065] 其中,协同注意力编码 并为选择哪个可能是最可能的答案提供了
基础。
[0066] 解码
[0067] 由于SQuAD的性质,一种产生答案跨度(answer span)的直观方法是通过预测范围的起点和终点。但是,给定问题-文档对,文档中可能存在几个直观的答案跨度,每个对应于一个局部最大值。为了解决这个问题,DCN 100使用迭代技术,通过预测文档中答案跨度的起点和终点来选择答案跨度。此迭代过程允许DCN 100从对应于错误答案跨度的初始局部最大值中恢复。
[0068] 图12提供了解码器神经网络118的说明,该网络类似于状态机,其状态由基于LSTM的序列模型维护。在每次迭代期间,解码器神经网络118在考虑到与开始位置和结束位置的当前估计相对应的协同注意力编码的情况下更新其状态,并通过多层神经网络(如开始高速路最大输出网络120和结束高速路最大输出网络122)产生开始位置和结束位置的新估计。
[0069] 令hi、si、和ei表示迭代i期间解码器神经网络118的隐藏状态、开始位置的估计和结束位置的估计。解码器神经网络118的状态更新描述如下:
[0070]
[0071] 其中 和 是对应于协同注意力编码U1102中开始位置和结束位置的之前估计的表示。
[0072] 给定当前隐藏状态hi、上一个开始位置 和上一个结束位置 DCN 100估计当前开始位置和结束位置如下:
[0073] si=argmax(α1,...,αm)
[0074] ei=argmax(β1,...,βm),
[0075] 其中,αt和βt表示与文档102a中第t个单词对应的开始分数和结束分数。从逐文档的协同注意力编码产生的分数中选择文档中可能的开始位置和结束位置,从而产生当前估计的开始位置和结束位置的步骤,由解码器神经网络118的argmax模块1816实现。
[0076] 使用开始高速路最大输出网络120计算开始分数αt,如下所示:
[0077]
[0078] 使用结束高速路最大输出网络122计算结束分数βt,如下所示:
[0079]
[0080] 在上述方程中,ut是文档102a中与第t个单词对应的协同注意力编码。
[0081] 高速路最大输出网络120和122都通过多层
感知器(例如1302、1402)将当前隐藏状态hi、之前的开始位置 和之前的结束位置 的非线性投影r作为输入。然后,网络120和122的第一最大
输出层(例如1304、1404)组合被计分的每个位置ut和非线性投影,并通过四个或更多线性模型处理每个组合,并从线性模型之一中选择最大输出 然后,网络120和122的第二最大输出层(例如1306、1406)针对被计分的每个位置ut通过四个或更多线性模型处理第一最大输出层的输出,并从线性模型之一中选择最大输出 然后,第三最大输出层(例如1308、1408)针对被计分的每个位置ut通过四个或更多线性模型处理第一 和第二 最大输 出层的 输出 ,并从 线性 模型之 一中 选择最 大输 出[0082] 高速路最大输出网络120和122的处理描述如下:
[0083]
[0084]
[0085]
[0086]
[0087] 其中r∈l是具有参数W(D)∈l×5l的当前状态的非线性投影,mt(l)是具有参数W(1)∈p×l×3l和b(1)∈p×l的第一最大输出层的输出,并且 是具有参数W(2)∈p×l×l和b(2)∈p×l的第二最大输出层的输出。 和 被馈送到具有参数W(3)∈p×l×2l和b(3)∈p的最终最大输出层。p是每个最大输出层的
池化大小。最大操作计算张量的第一维上的的最大值。此外,在第一最大输出层和最后一个最大输出层的输出之间存在高速路连接。
[0088] 在实现中,高速路最大输出网络120和122共享相同的架构,但参数和超参数不同。在回应问题的文档中,输出短语的当前估计的开始位置和结束位置的步骤由解码器神经网络118的输出产生器1818实现。
[0089] 为了训练DCN 100,在所有迭代中,起点和终点的累积softmax交叉熵被最小化。当开始位置的估计和结束位置的估计不再变化,或者达到最大迭代次数时,迭代程序停止。训练的步骤由DCN 100的训练器1820实现。
[0090] 所公开的技术的其他实现包括使用不同于指数归一化器的、除指数归一化器以外的和/或与指数归一化器组合使用的归一化器。一些例子包括基于sigmoid的归一化器(例如,多类sigmoid、分段斜坡)、基于双曲正切的归一化器、基于整
流线性单元(ReLU)的归一化器、基于识别的归一化器、基于逻辑的归一化器、基于正弦的归一化器、基于余弦的归一化器、基于单位和的归一化器和基于阶跃的归一化器。其他的例子包括分层的softmax、差分的softmax、重要性
采样、噪声对比估计、负采样、门控softmax、球面softmax、泰勒softmax和稀疏最大值。在其他实现中,可以使用任何其他传统的或将来开发的归一化器。
[0091] 实验结果
[0092] 图15-图17是解码器神经网络118产生的开始条件分布和结束条件分布的示例。在图15-图17中,奇数(蓝色)行表示开始分布,偶数(红色)行表示结束分布。i指示解码器神经网络118的迭代次数。更高的概率质量由较暗的区域表示。与具有最高概率质量的单词对应的偏移显示在右侧。预测的跨度用红色下划线标出,真实(ground truth)答案跨度用绿色下划线标出。
[0093] 例如,图15中的问题1演示了一个实例,其中模型最初猜测的起点和终点不正确。在随后的迭代中,DCN 100调整起点,最终到达迭代3中的正确起点。同样地,模型逐渐将终点的概率质量移位到正确的单词上。
[0094] 图16中的问题2示出了一个示例,其中开始估计和结束估计最初都不正确。然后DCN 100在下一个迭代中确定正确的答案。而解码器神经网络118的迭代性质允许DCN 100避开与错误答案对应的初始局部最大值。图17中的问题3演示了一种情况,其中尽管经过多次迭代,DCN 100仍无法在多个局部最大值中作出决定。也就是说,DCN 100无限期地在“带电
粒子束”和“粒子束武器”的答案之间交替。
[0095] 具体实现
[0096] 我们描述用于基于问题协同注意力地分析文档和基于文档回答问题的系统、方法和制造产品。实现的一个或更多个特征可以与基本实现相结合。不互斥的实现被教导是可组合的。实现的一个或更多个特征可以与其他实现相结合。本公开定期提醒用户这些选项。重复这些选项的记载的一些实现中省略了这些选项,不应被视为限制了前面几节中所教导的组合—这些记载在此通过引用被合并到下面的每一个实现中。
[0097] 图18示出了可用于实现动态协同注意力网络(DCN)100(在本文中也称为“协同注意力问题解答系统”)的之前描述的组件模块。之前所述的DCN 100的模块或组件,例如嵌入器106、编码器神经网络108、隐藏状态比较器110、指数归一化器112、编码混合器114、协同注意力编码器116、解码器神经网络118、开始高速路最大输出网络120和结束高速路最大输出网络122可选地使用较小的模块化模块或组件进行描述,而不改变其工作原理或DCN 100。
[0098] 图18中的模块可以用硬件或软件实现,并且不需要按照图18所示的完全相同的框进行划分。一些模块也可以在不同的处理器或计算机上实现,或者分布在多个不同的处理器或计算机之间。此外,应了解的是,一些模块可以组合、并行或以与图18所示不同的顺序操作,而不会影响所实现的功能。此外,如本文所用,术语“模块”可包括“子模块”,其本身可在本文中被视为构成模块。例如,文档编码器LSTM 1802和问题编码器LSTM 1804在本文中可视为编码器神经网络108的子模块(在本文中也称为“编码器LSTM”或“编码器”)。在一个实现中,文档编码器LSTM 1802和问题编码器LSTM 1804不是两个单独的LSTM,而是分别应用于文档的同一单个LSTM和基于文档的问题。在一些实现中,可以复制这样的同一单个LSTM,以形成文档编码器LSTM 1802和问题编码器LSTM 1804,用于并发地编码文档和基于文档编码问题。在另一个示例中,文档编码混合器1806、问题编码混合器1808和重新关注器1810可在此视为编码混合器114的子模块。在另一个示例中,解码器LSTM、argmax模块1816和输出产生器1818在本文中可视为解码器神经网络118的子模块(在本文中也称为“解码器”)。图18中被
指定为模块的框也可以被认为是方法中的流程图步骤。模块也不需要把它的所有代码连续地放在存储器中;代码的一些部分可以与代码的其他部分分离,将来自其他模块或其他函数的代码放在中间。
[0099] 在一种实现中,所公开的技术包括协同注意力问答系统(在本文中也称为“动态协同注意力网络(DCN)100”)。系统运行在许多并行处理器上。系统基于问题分析文档,并基于文档回答问题。
[0100] 系统包括文档编码器长短期记忆(缩写为LSTM)1802,用于通过多个LSTM门循环地处理文档单词嵌入和之前的文档上下文编码,并生成文档上下文编码。
[0101] 系统包括问题编码器LSTM 1804,用于通过LSTM门循环地处理问题单词嵌入和之前的问题上下文编码,并生成问题上下文编码。
[0102] 系统包括隐藏状态比较器110,用于确定文档和问题上下文编码对之间的逐对的语言相似性分数。在一些实现中,可以使用隐藏状态比较器应用的点积或双线性积来确定文档和问题上下文编码对之间的逐对的语言相似性分数。
[0103] 系统包括文档编码混合器1806,用于生成文档上下文总结,作为由基于文档到问题的单词产生的指数归一化的分数序列缩放的文档上下文编码的凸组合。
[0104] 系统包括问题编码混合器1808,用于生成问题上下文总结,作为由基于问题到文档的单词产生的指数归一化的分数序列缩放的问题上下文编码的凸组合。
[0105] 系统包括重新关注器1810,用于生成重新关注的文档上下文总结,作为由基于问题到文档单词产生的指数归一化的分数序列缩放的文档上下文总结的凸组合。
[0106] 系统包括协同注意力编码器双向LSTM(此处也称为“协同注意力编码器116”),用于通过多个LSTM门循环地处理前向方向和后向方向的串联的输入和之前的文档协同注意力编码,并生成文档协同注意力编码。在一些实现中,串联的输入包括重新关注的文档上下文总结、问题上下文总结和文档上下文编码。系统还包括串联器1812,用于串联重新关注的文档上下文总结、问题上下文总结和文档上下文编码的相应元素。
[0107] 系统包括解码器(在本文中也称为“解码器神经网络118”),用于通过高速路最大输出网络(例如开始高速路最大输出网络120和/或结束高速路最大输出网络122)迭代地处理文档协同注意力编码、在之前估计的开始位置和结束位置处的文档注意力编码和解码器LSTM 1814的当前解码器隐藏状态的组合,以针对可能的开始位置和可能的结束位置对文档协同注意力编码计分。
[0108] 解码器进一步包括argmax模块1816,用于在高速路最大输出网络生成的可能分数中进行选择,并产生当前估计的开始位置和结束位置。解码器还包括输出产生器1818,用于在达到终止条件时输出回答该问题的文档短语。文档短语包括当前估计的开始位置和结束位置处及其内的文档单词。
[0109] 本系统实现和可选地公开的其他系统包括一个或更多个下列特征。系统还可以包括与公开的方法相关描述的特征。为了简洁起见,不单独列举系统特征的可选组合。适用于系统、方法和制造产品的特征不会重复用于基本特征的每个法定类别集合。读者将理解本部分中识别的特征如何容易地与其他法定类别中的基本特征相结合。
[0110] 系统还包括解码器LSTM 1814,用于基于之前的解码器隐藏状态和之前估计的开始位置和结束位置处的文档注意力编码进一步生成当前的解码器隐藏状态。
[0111] 系统还包括高速路最大输出网络、第一最大输出层、第二最大输出层和第三最大输出层,所述高速路最大输出网络用于通过将之前估计的开始位置和结束位置处的当前解码器隐藏状态和文档注意力编码投影到非线性投影中的线性层进一步处理用于文档中位置的文档协同注意力编码,,所述第一最大输出层用于将被计分的每个位置与非线性投影相结合,并通过四个或更多个线性模型对每个组合进行处理,以从线性模型之一中选择最大输出,所述第二最大输出层用于通过四个或更多线性模型针对被计分的每个位置处理第一最大输出层的输出,以从线性模型之一中选择最大输出,以及第三最大输出层用于通过四个或更多线性模型针对被计分的每个位置处理第一最大输出层和第二最大输出层的输出,以从线性模型之一中选择最大输出。
[0112] 在一些实现中,当当前估计的开始位置和结束位置与之前估计的开始位置和结束位置匹配时,可以达到终止条件。在其他实现中,当达到最大迭代次数时,可以达到终止条件。
[0113] 系统还包括训练器1820,用于通过最小化训练示例上所有迭代的开始位置和结束位置的估计中的累积损失来训练文档编码器LSTM 1802、问题编码器LSTM 1804、协同注意力编码器双向LSTM、解码器LSTM 1814和高速路最大输出网络。在一些实现中,训练器可以使用基于反向传播的softmax交叉熵来确定累积损失。
[0114] 系统还包括解码器,用于进一步基于argmax模块1816对可能分数的最大分数的选择,进一步产生当前估计的开始位置和结束位置。
[0115] 系统还包括协同注意力编码器双向LSTM,用于进一步处理正向方向的串联的输入并生成正向输出,用于进一步处理反向方向的串联的输入并生成反向输出,以及用于进一步串联正向输出和反向输出以生成文档协同注意力编码。
[0116] 其他实现可包括非暂存性计算机可读存储介质,存储处理器可执行的指令,以执行上述系统的操作。
[0117] 在另一实现中,所公开的技术包括协同注意力问答系统(在本文中也称为“动态协同注意力网络(DCN)100”)。系统在许多并行处理器上运行。系统基于问题分析文档,并基于文档回答问题。
[0118] 系统包括隐藏状态比较器110,用于确定由文档编码器长短期记忆(LSTM)1802和问题编码器LSTM 1804循环地生成的文档和问题上下文编码对之间的逐对的语言相似性分数。在一些实现中,可以使用隐藏状态比较器应用的点积或双线性积来确定文档和问题上下文编码对之间的逐对的语言相似性分数。
[0119] 系统包括文档编码混合器1806,用于使用文档到问题的逐单词的语言相似性分数关注文档上下文编码,并以问题上下文编码为条件生成文档上下文总结。
[0120] 系统包括问题编码混合器1808,用于使用问题到文档的逐单词的语言相似性分数关注问题上下文编码,并以文档上下文编码为条件生成问题上下文总结。
[0121] 系统包括重新关注器1810,用于使用问题到文档的逐单词的语言相似性分数关注文档上下文总结,并重新以问题上下文编码为条件生成重新关注的文档上下文总结。
[0122] 系统包括协同注意力编码器双向LSTM(在本文中也称为“协同注意力编码器116”),用于循环地和双向地处理重新关注的文档上下文总结、问题上下文总结和文档上下文编码的串联,并生成文档协同注意力编码。
[0123] 系统包括解码器(在本文中也称为“解码器神经网络118”)解码器,其用于使用解码器LSTM 1814和高速路最大输出网络(例如,开始高速路最大输出网络120和/或结束高速路最大输出网络122)迭代地处理文档协同注意力编码,并输出回答问题的文档短语。
[0124] 在第一系统实现的这个特定实现部分中讨论的每个特征都同样适用于这个系统实现。如上所述,这里并没有重复所有的系统特征,而应该被认为是通过引用进行了重复。
[0125] 其他实现可包括非暂存性计算机可读存储介质,存储处理器可执行的指令以执行上述系统的操作。
[0126] 在另一个实现中,所公开的技术提出了基于问题协同注意力地分析文档并基于文档回答问题的方法。
[0127] 方法包括确定由文档编码器长短期记忆(缩写为LSTM)1802和问题编码器LSTM 1804循环地生成的文档和问题上下文编码对之间的逐对的语言相似性分数。
[0128] 方法包括使用文档到问题的逐单词的语言相似性分数来关注文档上下文编码,并生成以问题上下文编码为条件的文档上下文总结。
[0129] 方法包括使用问题到文档的语言相似性分数来关注问题上下文编码,并生成以文档上下文编码为条件的问题上下文总结。
[0130] 方法包括使用问题到文档的逐单词的语言相似性分数来关注文档上下文总结,并生成重新以问题上下文编码为条件的重新关注的文档上下文总结。
[0131] 方法包括循环地和双向地处理重新关注的文档上下文总结、问题上下文总结和文档上下文编码的串联,并生成文档协同注意力编码。
[0132] 方法包括使用解码器LSTM 1814和高速路最大输出网络(例如,开始高速路最大输出网络120和/或结束高速路最大输出网络122)迭代地处理文档协同注意力编码,并输出回答该问题的文档短语。
[0133] 该特定实现部分中讨论的针对第一系统实现的每个特征都同样适用于这个方法实现。如上所述,这里并没有重复所有的系统特性,并且应该被认为是通过引用来重复。
[0134] 其他实现可以包括非暂存性计算机可读存储介质(CRM),它存储处理器可执行的指令以执行上述方法。另一种实现可以包括包含存储器和一个或更多个处理器的系统,所述处理器可用于执行存储在存储器中的指令以执行上述方法。
[0135] 在一种实现中,所公开的技术包括协同注意力问答系统(在本文中也称为“动态协同注意力网络(DCN)100”)。系统在许多并行处理器上运行。系统基于文档回答问题。
[0136] 系统包括编码器长短期记忆(缩写为LSTM)(在本文中也称为“编码器神经网络108”),其为单词序列发出上下文编码。当应用于文档中的第一单词序列时,编码器LSTM为文档产生上下文编码的第一序列。当应用于问题中的第二单词序列时,编码器LSTM为文档产生上下文编码的第一序列,并应用于该问题的上下文编码的第二序列。
[0137] 系统包括隐藏状态比较器110,其确定第一序列和第二序列中上下文编码之间的语言相似性,并产生逐对的语言相似性分数。
[0138] 系统包括编码混合器114,其发出以另一上下文编码的单词为条件的一上下文编码的上下文总结序列。当使用相似度分数应用于以问题的上下文编码的第二序列为条件的文档的上下文编码的第一序列时,编码混合器114产生文档的以问题单词为条件的第一上下文总结序列。当使用相似度分数应用于以文档的上下文编码的第一序列为条件的问题的上下文编码的第二序列时,编码混合器114产生问题的以文档单词为条件的第二上下文总结序列。当使用相似度分数重新应用于以文档的上下文编码的第一序列为条件的文档的第一上下文总结序列时,编码混合器114产生文档的第三重关注的上下文总结序列。
[0139] 系统包括协同注意力编码器双向LSTM(在本文中也称为“协同注意力编码器116”),其沿正向方向和反向方向循环地处理串联的输入和之前的文档协同注意力编码,以生成文档协同注意力编码。串联的输入包括文档的第三重关注的上下文总结序列、问题的第二上下文总结序列和文档的上下文编码的第一序列。
[0140] 系统包括解码器(在本文中也称为“解码器神经网络118”),其通过高速路最大输出网络(例如开始高速路最大输出网络120和/或结束高速路最大输出网络122)迭代地处理文档协同注意力编码、在之前估计的开始位置和结束位置处的文档注意力编码以及解码器LSTM 1814的当前解码器隐藏状态的组合,以为可能的开始位置和可能的结束位置的文档协同注意力编码计分。解码器在高速路最大输出网络生成的可能分数中进行选择,以产生当前估计的开始位置和结束位置。当达到终止条件时,解码器输出文档短语,该文档短语回答问题,并包括当前估计的开始位置和结束位置处及其内的文档单词。
[0141] 所公开的技术的一种方法实现包括构建机器用来阅读和理解文档的模型,并基于该模型回答问题。动态协同注意力网络(DCN)100的协同注意力问答系统实现了阅读和理解文档以及基于文档回答问题的这些步骤。
[0142] 方法包括将文档和问题嵌入到单词嵌入空间中。这些嵌入步骤由DCN 100的嵌入器106实现。
[0143] 方法包括向编码器LSTM提供文档嵌入和问题嵌入,以产生文档上下文编码和问题上下文编码。产生文档上下文编码的步骤由编码器神经网络108的文档编码器LSTM 1802实现。产生问题上下文编码的步骤由编码器神经网络108的问题编码器LSTM 1804实现。
[0144] 方法包括计算文档和问题的上下文编码之间的语言相似性,以产生具有逐文档和逐问题维度的亲和矩阵。DCN 100的隐藏状态比较器110实现了计算语言相似性嵌入的步骤。
[0145] 方法包括对亲和矩阵逐文档和逐问题地进行指数归一化,以产生各自的文档到问题的注意力权重和问题到文档的注意力权重。指数归一化的步骤由DCN 100的指数归一化器112表示。
[0146] 方法包括将文档上下文编码与文档到问题的注意力权重相结合,并进一步与问题到文档的注意力权重相结合,以生成文档的上下文总结。生成文档的上下文总结的步骤由编码混合器114的文档编码混合器1806实现。编码混合器114的重新关注器1810实现了生成改进的文档上下文总结的步骤。
[0147] 方法包括将问题上下文编码与问题到文档的注意力权重相结合,以生成问题的上下文总结。生成问题上下文总结的步骤由编码混合器114的问题编码混合器1808实现。
[0148] 方法包括向双向LSTM提供文档和问题的上下文总结以及文档上下文编码,从而产生双向逐文档的协同注意力编码。产生双向逐文档的协同注意力编码的步骤由DCN 100的串联器1812和协同注意力编码器116实现。
[0149] 该方法实现和所公开的其他方法可选地包括以下一个或更多个特征。方法还可以包括关于所公开的方法描述的特征。为了简洁起见,不单独列举方法特征的可选组合。适用于方法、系统和制造产品的特征不会针对每个法定的基本特性类集重复。读者将理解本部分中标识的特征如何容易地与其他法定类中的基本特征相结合。
[0150] 方法还包括,在一次或更多次迭代中,分析双向的逐文档的协同注意力编码,以生成逐文档的隐藏状态。这还包括使用解码器LSTM 1814,其在第二次和随后的迭代期间考虑来自紧接在前的迭代的用于逐文档的隐藏状态和之前产生的估计的开始位置和结束位置的结果。方法还包括通过应用单独的开始计分和结束计分分数函数对可能的开始位置和可能的结束位置计分。方法还包括针对文档中可能的开始位置和结束位置从逐文档的协同注意力编码产生的分数之中进行选择,以产生当前估计的开始位置和结束位置。针对文档中可能的开始位置和结束位置从逐文档的协同注意力编码产生的分数之中进行选择以产生当前估计的开始位置和结束位置的步骤由解码器神经网络118的argmax模块1816实现。
[0151] 方法还包括,在达到终止条件时,输出文档中响应于问题的短语的当前估计的开始位置和结束位置。输出文档中响应于问题的短语的当前估计的开始位置和结束位置的步骤由解码器神经网络118的输出产生器1818实现。
[0152] 当短语的当前估计的开始位置和结束位置与之前估计的开始位置和结束位置匹配时,可以达到终止条件。当达到最大迭代次数时,可以达到终止条件。
[0153] 单独的计分函数适用于单独训练的高速路最大输出网络,该网络通过线性层、第一最大输出层、第二最大输出层和第三最大输出层处理文档中位置的逐文档的协同注意力编码,该线性层将逐文档的隐藏状态和估计的开始位置和结束位置从紧接在前的迭代投影到非线性投影,第一最大输出层将每个被计分的位置与非线性投影相结合,并通过四个或更多线性模型处理每个组合,并从线性模型之一中选择最大输出,第二最大输出层针对每个被计分的位置,通过四个或更多线性模型处理第一最大输出层的输出,并从线性模型之一中选择最大输出,第三最大输出层针对被计分的每个位置,通过四个或更多线性模型处理第一和第二最大输出层的输出,并从线性模型之一中选择最大输出。
[0154] 方法还包括通过最小化训练示例上所有迭代的开始位置和结束位置的估计中的累积损失来训练编码器LSTM、双向LSTM、解码器LSTM和高速路最大输出网络。累积损失可使用softmax交叉熵确定。训练步骤由DCN 100的训练器1820实现。
[0155] 在用于第一个系统实现的这个特定实现部分中讨论的每个特征都同样适用于这个方法实现。如上所述,此处没有重复所有系统特征,并且应视为通过引用进行了重复。
[0156] 其他实现可以包括非暂存性计算机可读存储介质(CRM),其存储处理器可执行的指令以执行上述方法。然而,另一种实现可以包括包含存储器和一个或更多个处理器的系统,所述处理器可操作为执行存储在存储器中的指令,以执行上述方法。
[0157] 所公开技术的系统实现包括神经网络系统。
[0158] 神经网络系统包括编码器神经网络,其生成文档和问题的上下文编码。
[0159] 神经网络系统包括隐藏状态比较器,其使用文档上下文编码和问题上下文编码中位置之间的语言相似性分析来生成亲和矩阵,所述亲和矩阵具有逐文档的和逐问题的维度。
[0160] 神经网络系统包括指数归一化器,其逐文档地和逐问题地将亲和矩阵归一化,以产生各自的文档到问题的注意力权重和问题到文档的注意力权重。
[0161] 神经网络系统包括编码混合器,其将文档上下文编码与文档到问题的注意力权重相结合,并进一步与问题到文档的注意力权重相结合,以生成文档的上下文总结,并将问题上下文编码和所述问题到文档的注意力权重相结合,以生成问题的上下文总结。
[0162] 神经网络系统包括协同注意力编码器,其将文档和问题的上下文总结以及文档上下文编码作为输入,以产生逐文档的协同注意力编码。
[0163] 神经网络系统包括解码器神经网络,其分析逐文档的协同注意力编码以生成逐文档的隐藏状态。解码器神经网络还使用解码器LSTM,其在第二次和后续迭代期间考虑来自逐文档的隐藏状态和之前产生的估计的开始位置和结束位置的紧接的前一次迭代的结果。解码器神经网络通过应用单独的开始计分函数和结束计分函数依次对可能的开始位置和可能的结束位置计分。解码器神经网络从文档中可能的开始位置和结束位置的逐文档的协同注意力编码产生的分数中选择,以产生当前估计的开始位置和结束位置。在达到终止条件时,解码器神经网络输出文档中响应于问题的短语的当前估计的开始位置和结束位置。
[0164] 在这个特定实现部分中针对之前的方法和系统实现所讨论的每个特征都同样适用于此系统实现。如上所述,这里没有重复所有的方法和系统特征,而应该被认为是通过引用而重复。
[0165] 其他实现可以包括非暂存性计算机可读存储介质,其存储处理器可执行的指令以执行上述系统的操作。
[0166] 计算机系统
[0167] 图19是计算机系统1900的简化框图,其可用于实现动态协同注意力网络(DCN)100。计算机系统1900包括至少一个
中央处理器(CPU)1924,其经由总线子系统1922与多个
外围设备通信。这些外围设备可以包括存储子系统1910,其包括例如存储器设备和文档存储子系统1918、用户
接口输入设备1920、用户接口输出设备1928和网络接口子系统1926。输入设备和输出设备允许用户与计算机系统1900交互。网络接口子系统1926提供了到外部网络的接口,包括到其他计算机系统中相应接口设备的接口。
[0168] 在一个实现中,DCN 100与存储子系统1910和用户接口输入设备1920通信链接。
[0169] 用户接口输入设备1920可以包括
键盘;定点设备,例如
鼠标、
轨迹球、
触摸板或图形板;
扫描仪;集成到显示器中的
触摸屏;音频输入设备,如
语音识别系统和麦克
风;以及其他类型的输入设备。一般而言,术语“输入设备”的使用旨在包括将信息输入计算机系统1900的所有可能类型的设备和方法。
[0170] 用户接口输出设备1928可以包括显示子系统、
打印机、传真机或非可视显示器,如音频输出设备。显示子系统可包括
阴极射线管(CRT)、平板设备,例如
液晶显示器(LCD)、投影设备或用于创建可视图像的一些其他机制。显示子系统还可以提供非可视显示,例如音频输出设备。一般而言,术语“输出设备”的使用旨在包括将信息从计算机系统1900输出给用户或其他机器或计算机系统的所有可能类型的设备和方法。
[0171] 存储子系统1910存储编程和数据结构,其提供本文所述的部分或全部模块和方法的功能。这些
软件模块通常由深度学习处理器1930执行。
[0172] 深度学习处理器1930可以是
图形处理单元(GPU)或
现场可编程门阵列(FPGA)。深度学习处理器1930可以由深度学习
云平台托管,如Google Cloud PlatformTM、XilinxTM和CirrascaleTM。深度学习处理器1930的例子包括Google的张量处理单元(TPU)TM、
机架式解TM TM TM TM决方案例如GX4机架式系列 、GX8机架式系列 、NVIDIA DGX-1 、微软的Stratix V FPGA ,Graphcore 的智能处理器单元(IPU)TM、采用骁龙处理器TM的高通的Zeroth平台TM,NVIDIA的VoltaTM、NVIDIA的DRIVE PXTM、NVIDIA的JETSON TX1/TX2 MODULETM、英特尔的NirvanaTM、Movidius VPUTM、富士通DPITM、ARM的DynamicIQTM、IBM的TrueNorthTM等等。
[0173] 存储子系统1910中使用的存储器子系统1912可以包括多个存储器,包括用于在程序执行期间存储指令和数据的主
随机存取存储器(RAM)1914和存储固定指令的
只读存储器(ROM)1916。文件存储子系统1918可以为程序和数据文件提供持久存储,并且可以包括
硬盘驱动器、
软盘驱动器以及相关的可移除介质、CD-ROM驱动器、光盘驱动器或可移除的介质盒。实现某些实现的功能的模块可以由文件存储子系统1918存储在存储子系统1910中,也可以存储在处理器可
访问的其他机器中。
[0174] 总线子系统1922提供了允许计算机系统1900的各个组件和子系统按预期相互通信的机制。尽管总线子系统1922示意性地显示为单个总线,但是总线子系统的可选实现可以使用多个总线。
[0175] 计算机系统1900自身可以是各种类型,包括个人计算机、便携式计算机、工作站、计算机终端、网络计算机、电视、大型机、
服务器群、一组分布广泛的松散联网计算机或任何其他
数据处理系统或用户设备。由于计算机和网络不断变化的性质,图19中描述的计算机系统1900的描述仅意图作为说明本
发明的优选
实施例的具体示例。计算机系统1900的许多其他配置可能具有比图19所示的计算机系统更多或更少的组件。
[0176] 为了使能所公开的技术的制造和使用而提出了上述描述。所公开的实现的各种修改将是显而易见的,并且本文定义的一般原则可适用于其他实现和应用,而不背离所公开技术的精神和范围。因此,所公开的技术不意图限于所示的实现,而是应被给予与本文所公开的原则和特征一致的最广泛的范围。所公开的技术的范围由所附的
权利要求书限定。
[0177] 用于问答的动态协同注意力网络
[0178] 熊蔡明,*维克多.钟,理查德.佐赫尔
[0179] 易享研究中心
[0180] 帕罗奥图(市),美国加利福尼亚州94301
[0181] {cxiong,vzhong,rsocher}@salesforce.com
[0183] 已提出了用于问答的几种深度学习模型。然而,由于它们的单传递性,它们无法从与错误答案对应的局部最大值中恢复。为了解决这一问题,我们引入了动态协同注意力网络(DCN)进行问答。DCN首先融合问题和文档的相互依赖表示,以便将重点放在两者的相关部分。然后动态指向解码器在可能的答案跨度上迭代。这个迭代过程使模型能够从对应于不正确答案的初始局部最大值中恢复。在Stanford问答数据集中,单个DCN模型将之前的技术水平从71.0%F1提高到75.9%,而DCN全体获得80.4%F1。
[0184] 1、介绍
[0185] 问答(QA)是自然语言处理中的一项重要任务,其既需要自然语言理解,又需要世界知识。之前的QA数据集往往由于人为注释而质量较高,但规模较小(Berant等人,2014;Richardson等人,2013)。因此,他们不允许训练数据密集的、表达性强的模型,诸如深度神经网络。
[0186] 为了解决这个问题,研究人员通过半自动化技术开发了大规模的数据集(Hermann等人,2015;Hill等人,2016)。与他们小型的手工注释的同族相比,这些QA数据集允许训练更具表现力的模型。然而,研究表明,在回答问题所需的推理(reasoning)类型上,它们与更自然的、人类注释的数据集有所不同(Chen等人,2016)。
[0187] 最近,Rajpurkar等人(2016)发布了斯坦福问答数据集(SQuAD),其数量级比以前所有手工注释的数据集大,并且具有多种质量,最终导致自然QA任务。SQuAD具有理想的质量,其答案是参考文档中的跨度。这限制了所有可能跨度的空间的答案。然而,Rajpurkar等人(2016)表明数据集保留了一组不同的答案,且需要不同形式的逻辑推理,包括多语句推理。
[0188] 我们介绍了动态协同注意力网络(DCN),如图1所示,一个用于问答的端到端神经网络。该模型包括协同注意力编码器,其捕获问题和文档之间的相互作用,以及在估计答案跨度的开始和结束之间交替的动态指向解码器。我们的最佳单一模型获得了75.9%的F1,而最佳公布的结果为71.0%(Yu等人,2016)。此外,我们的最佳全
体模型获得了80.4%的F1,而官方SQuAD排行榜1上的第二最好结果为78.1%。
[0189] 2、动态协同注意力网络
[0190] 图1示出了DCN的概述。我们首先描述了文档和问题的编码器,然后描述了协同注意力机制和产生答案跨度的动态解码器。
[0191]
[0192] 图1:动态协同注意力网络的概述。
[0193] 2.1文档和问题编码器
[0194] 使 表示与问题中的单词对应的单词向量的序列,并使表示文档中的单词对应的单词向量的序列。使用LSTM(Hochreiter&
Schmidhuber,1997),我们将文档编码为: 我们将文档编
码矩阵定义为 我们还添加了一个哨兵向量 (Merity
等人,2016),这个我们稍后示出的哨兵向量允许模型不关注输入中的任何特定单词。
[0195] 采用相同的LSTM计算问题嵌入以分享表示能力:我们定义了中间问题表示 为了允许问题编码空间
和文档编码空间之间的变化,我们在问题编码的顶部引入了非线性投影层。问题的最终表示变为:
[0196] 2.2协同注意力编码
[0197] 我们提出了一种同时关注问题和文档的协同注意力机制,类似于(Lu等人,2016),并最终融合了两种注意力上下文。图2提供了协同注意力编码器的图示。
[0198] 我们首先计算亲和矩阵,其包含对应于所有文档单词和问题单词对的亲和分数:针对问题中的每个单词,亲和矩阵被逐行地归一化
以产生文档的注意力权重AQ,并且针对问题中的每个单词,亲和矩阵被逐列地归一化以产生问题的注意权重AD:
[0199] 和
[0200] 接下来,我们根据问题中的每个单词计算文档的总结或注意力上下文。
[0201]
[0202]
[0203] 图2:注意力编码器。此处未示出亲和矩阵L。相反,我们直接示出了归一化的注意力全中AD和AQ。
[0204] 我们同样根据文档的每个单词计算问题的总结QAD。类似于Cui等人(2016),我们还根据文档的每个单词计算先前注意力上下文的总结CQAD。这两个操作可以并行完成,如方程3所示。对操作CQAD的一种可能解释是将问题编码映射到文档编码的空间中。
[0205]
[0206] 我们定义问题和文档的相互依赖表示CD为协同注意力上下文。我们使用符号[a;b]用于水平地串联向量a和b。
[0207] 最后一步是通过双向LSTM将时间信息融合到协同注意力上下文中;
[0208]
[0209] 我们定义 它为选择哪个跨度可能是最佳可能答案提供了基础,作为协同注意力编码。
[0210] 2.3动态指示解码器
[0211] 由于SQuAD的性质,用于产生答案跨度的直观方法是通过预测跨度的起点和终点(Wang&Jiang,2016)。但是,给定一个问题-文档对,文档中可能存在几个直观的答案跨度,每个答案跨度对应于局部最大值。我们提出了一种迭代技术,用于通过在预测起点和预测终点之间交替来选择答案跨度。该迭代程序允许模型从对应于不正确答案跨度的初始局部最大值中恢复。
[0212] 图3提供了动态解码器的图示,其类似于由基于LSTM的序列模型维护其状态的状态机。在每次迭代期间,解码器在考虑与开始位置和结束位置的当前估计相对应的协同注意力编码的情况下更新其状态,并且经由多层神经网络产生对开始位置和结束位置的新估计。
[0213] 使hi、si以及ei表示LSTM的隐藏状态、位置的估计以及迭代i过程中结束位置的估计。接着由方程5描述LSTM状态更新。
[0214]
[0215] 其中 和 是与协同注意力编码U中的开始位置和结束位置的先前估计相对应的表示。
[0216]
[0217] 图3:动态解码器。蓝色表示与估计开始位置相关的变量和函数,红色表示与估计结束位置相关的变量和函数。
[0218] 给定当前隐藏状态hi,之前的开始位置 和之前的结束位置 我们通过方程6和方程7估计当前的开始位置和结束位置。
[0219]
[0220]
[0221] 其中αt和βt表示与文档中第t个单词对应的开始分数和结束分数。我们采用单独的神经网络计算αt和βt。这些网络具有相同的架构,但不共享参数。
[0222] 基于最大输出网络(Goodfellow等人,2013)和高速路网络(Srivastava等人,2015)的强有力的实证表现,特别是在深层架构方面,我们提出了高速路最大输出网络(HMN)来计算αt,如方程式8所述。使用这种模型背后的直觉是QA任务由多种问题类型和文档主题组成。这些变化可能需要不同的模型来估计答案跨度。最大输出提供了一种简单有效的方式来池化多个模型变体。
[0223]
[0224] 此处,ut是对应于文档中第t个单词的协同注意力编码。图4中例示了HMNstart。结束分数βt类似于开始分数αt而被计算,但是使用单独的HMNend。
[0225] 现在我们描述HMN模型:
[0226]
[0227]
[0228]
[0229]
[0230] 其中 是具有参数 的当前状态的非线性投影, 是具有参数 和 的第一最大输出层的输出,并且 是具有参数
和 的第二最大输出层的输出。 和 被馈送到最终的最
大输出层,其具有参数 且 p是每个最大输出层的池化尺寸。
最大运算计算张量的第一维度上的最大值。我们注意到,第一最大输出层和最后一个最大输出层的输出之间存在高速路连接。
[0231]
[0232] 图4:高速路最大输出网络。虚线表示高速路连接。
[0233] 为了训练该网络,我们最小化所有迭代中起点和终点的累积softmax交叉熵。当开始位置的估计和结束位置的估计两者都不再改变时,或者当达到最大迭代次数时,迭代过程停止。详细信息请参见第4.1节。
[0234] 3.相关工作
[0235] 统计QA 用于问答的传统方法通常涉及基于规则的
算法或手动设计的特征集上的
线性分类器。Richardson等人(2013)提出了两条基线,一条基线使用简单的词法特征(例如滑动窗口)来匹配大量单词,而另一条基线使用问题和文档中单词之间的单词距离。Berant等人(2014)提出了一种替代方法,其中一条基线首先以
知识库的形式学习文档中的实体和关系的结构化表示,然后将该问题转换为结构化查询,其与该知识库的内容相匹配。Wang&McAllester等人(2015)描述了使用
帧语义特征以及诸如词性标签和依赖性解析之类的句法特征的统计模型。Chen等人(2016)提出了使用各种精心设计的词汇、句法和词序特征的竞争性的统计基线。
[0236] 神经QA 神经注意力模型已被广泛应用于NLP中的机器理解或问答。Hermann等人(2015)提出了注意力阅读(AttentiveReader)模型,其发布了CNN/Daily Mail完形填空式问答数据集。Hill等人(2016)发布了另一个源自儿童书籍的数据集,并提出了基于窗口的存储器网络。Kadlec等人(2016)提出了指针式注意力机制,但只执行一个注意步骤。Sordoni等人(2016)引入了迭代神经注意模型并将其应用于完形填空式机器理解任务。
[0237] 最近,Rajpurkar等人(2016)发布了SQuAD数据集。与完形填空式的查询不同,答案包括非实体和较长的短语,并且问题更加真实。对于SQuAD,Wang&Jiang(2016)提出了一种端到端神经网络模型,该模型由最初在Wang&Jiang(2015)中引入的Match-LSTM编码器和指针网络解码器(Vinyals等人,2015)组成。Yu等人(2016)引入了动态语块阅读器,一种神经阅读理解模型,其从文档中提取一组可变长度的答案候选并对它们进行排序以回答问题。
[0238] Lu等人(2016)提出了一种用于可视问答的分层协同注意力模型,该模型在COCO-VQA数据集上获得了最新结果(Antol等人,2015)。在(Lu等人,2016)中,协同注意力机制在给定问题时计算图像的有条件的表示,以及在给定图像时计算问题的有条件的表示。
[0239] 受上述工作的启发,我们提出了一种动态协同注意力模型(DCN),其包括新型的协同注意力编码器和动态解码器。在我们的模型中,我们不是在单个传递中估计答案跨度的开始位置和结束位置(Wang&Jiang,2016),而是以与迭代条件模式算法类似的方式迭代地更新开始位置和结束位置(Besag,1986)。
[0240] 4.实验
[0241] 4.1实现细节
[0242] 我们在SQuAD数据集上训练和评估我们的模型。为了预处理语料库,我们使用来自Stanford CoreNLP的词条器(Manning等人,2014)。我们使用在840B Common Crawl语料库上预训练的GloVe单词向量(Pennington等人,2014)。我们将词汇表限制为Common Crawl语料库中存在的单词,并将词汇表外的单词的嵌入设置为零。根据经验,我们发现训练嵌入总是导致过度拟合和低于预期水平的性能,因此仅报告具有固定单词嵌入的结果。
[0243] 我们在训练期间使用最大序列长度600,并且对于所有循环单元、最大层和线性层使用200的隐藏状态大小。所有LSTM都随机初始化参数,且初始状态为零。哨兵向量在训练期间被随机初始化和优化。对于动态解码器,我们将最大迭代次数设置为4,并使用最大池大小16。我们使用丢弃(dropout)在训练期间规范我们的网络(Srivastava等,2014),并使用ADAM优化模型(Kingma&Ba,2014)。所有模型都使用Chainer实施和训练(Tokui等,2015)。
[0244] 4.2结果
[0245] 对SQuAD数据集的评估包括两个度量。精确匹配分数(EM)计算预测答案与真实答案之间的精确字符串匹配。F1分数计算预测答案中的单词与真实答案之间的重叠。因为文档-问题对可能有几个真实答案,文档-问题对的EM和F1被视为所有真实答案的最大值。然2
后,通过对所有文档-问题对求平均来计算总体度量。官方SQuAD评估在CodaLab上托管。训练和开发集是公开可用的,而测试集是保留的。
[0246]
[0247] 表1:写入时的排行榜表现(2016年11月4日)。*指示用于提交的模型未发布。—指示在写入时,开发分数尚未公开可用。
[0248] 与排行榜3上的其他提交模型相比,SQuAD数据集上的动态协同注意力网络的性能如表4.2所示。在写入时,在单模型提交之中,我们的单模型DCN在测试数据上以66.2%的精确匹配和75.9%的F1排名第一。在测试数据上,我们的总体DCN以71.6%的精确匹配和80.4%的F1排名第一。
[0249] DCN具有多次估计答案跨度的起点和终点的能力,每次都以其先前的估计为条件。通过这样做,模型能够探索对应于多个似是而非的答案的局部最大值,如图5所示。
[0250]
[0251] 图5:动态解码器产生的开始和结束条件分布的例子。奇数(蓝色)行表示开始分布,偶数(红色)行表示结束分布。i表示动态解码器的迭代次数。较高的概率质量由较暗的区域表示。与概率质量最高的单词对应的偏移显示在右侧。预测的跨度具有红色下划线,真实答案跨度具有绿色下划线。
[0252] 例如,图5中的问题1演示了一个实例,其中模型最初猜测了不正确的起点和正确的终点。在随后的迭代中,模型调整起点,最终到达迭代3中的正确起点。类似地,模型逐渐将终点的概率质量移动到正确的单词。
[0253] 问题2示出了一个例子,其中开始估计和结束估计两者最初都是错误的。然后,模型在下一次迭代中确定正确的答案。
[0254]
[0255] 图6:用于各种长度的文档、问题和答案的DCN的性能。蓝色的点表示给定长度下的均值F1。竖条表示给定长度下F1的标准偏差。
[0256] 虽然解码器的动态性质允许模型逃避对应于不正确答案的初始局部最大值,但问题3演示了这样一种情况,其中尽管进行若干多次迭代,但模型仍然无法在多个局部最大值之间做出选择。也就是说,模型在“带电粒子束”和“粒子束武器”之间无限期地交替。经验上,我们观察到,采用最大迭代次数为4次训练的模型,平均需要2.7次迭代才能收敛为一个答案。
[0257] 跨长度的性能 感兴趣的一点是DCN的性能如何随着文档的长度而变化。直观地说,我们预计模型性能会随着更长的例子而恶化,就像神经
机器翻译一样(Luong等人,2015)。但是,如图6所示,与我们的期望相反,对于较长的文档和问题,没有明显的性能下降。这表明,协同注意力编码器对于长文档很大程度上是不可知的,并且能够专注于相关文本的小部分而忽略了(可能非常长的)文档的其余部分。我们注意到,答案越长,性能就会下降。但是,考虑到评估度量的性质,这是直观的。也就是说,随着单词数量的增加,计算正确的单词跨度变得越来越具有挑战性。
[0258] 跨问题类型的性能 分析模型性能的另一种自然方法是跨问题类型检查它的性能。在图7中,我们注意到DCN的F1均值超过了以前系统的F1均值(Wang&Jiang,2016b;Yu等人,2016)。DCN和其他模型一样,擅长于“什么时候”的问题,而纠结于更复杂的“为什么”问题。
[0259]
[0260] 图7:跨问题类型的DCN性能。每个栏的高度表示针对给定问题类型的均值F1。较低的数字表示开发集中有多少实例属于相应的问题类型。
[0261] F1分布的故障 最后,我们注意到DCN的性能是高度双模式的。在开发集上,模型完美地预测了(100%F1)62.2%的示例的答案,并为16.3%的示例预测了完全错误的答案(0%F1)。也就是说,该模型只在21.5%的时间内选出部分答案。如附录A.1所示,在对0%F1答案的定性检验时,我们观察到当模型是错误的时,其错误往往具有正确的“答案类型”(例如,针对问题“谁”的人,针对问题“如何”的方法),并且答案边界封装了良好定义的短语。
[0262] 5结论
[0263] 我们提出了一种用于问答的端到端神经网络架构——动态协同注意力网络。DCN由协同注意力编码器和动态解码器组成,前者学习问题和文档的协同依赖的表示,后者迭代地估计答案跨度。我们示出了该模型的迭代性质使其能够从与不正确预测相对应的初始局部最大值中恢复。在SQuAD数据集上,DCN采用单一模型实现了F1为75.9%的最先进结果,整体F1为80.4%。DCN明显优于所有其他模型。
[0264] 感谢
[0265] 我们感谢Kazuma Hashimoto的帮助和深刻见解。
[0266] 参考文献
[0267] Stanislaw Antol,Aishwarya Agrawal,Jiasen Lu,Margaret Mitchell,Dhruv Batra,C Lawrence Zitnick以及Devi Parikh。Vqa:可视问答(Visual question answering)。在
计算机视觉IEEE国际会议的会议记录中(In Proceedings of the IEEE International Conference on Computer Vision),第2425–2433页,2015年。
[0268] Jonathan Berant,Vivek Srikumar,Pei-Chun Chen,Abby Vander Linden,Brittany Harding,Brad Huang,Peter Clark和Christopher D Manning。对
生物过程建模以进行阅读理解(Modeling biological processes for reading comprehension)。在EMNLP中,2014。
[0269] Julian Besag。关于脏图片的统计分析(On the statistical analysis of dirty pictures)。皇家统计学会杂志(Journal of the Royal Statistical Society)。系列B(方法论)eries B(Methodological),第259–302页,1986。
[0270] Danqi Chen,Jason Bolton和Christopher D.Manning。全面检查CNN/每日邮报的阅读理解任务(A thorough examination of the cnn/daily mail reading comprehension task)。arXiv preprint arXiv:1606.02858,2016.
[0271] Yiming Cui,Zhipeng Chen,Si Wei,Shijin Wang,Ting Liu和Guoping Hu。用于阅读理解的注意力神经网络上的注意力(Attention-over-attention neural networks for reading comprehension).arXiv preprint arXiv:1607.04423,2016.
[0272] Ian J Goodfellow,DavidWarde-Farley,Mehdi Mirza,Aaron C Courville和Yoshua Bengio。最大输出网络(Maxout networks)。ICML(3),28:1319–1327,2013.[0273] Karl Moritz Hermann,Tomas Kocisky,Edward Grefenstette,Lasse Espeholt,Will Kay,Mustafa Suleyman和Phil Blunsom。教学机器阅读和理解(Teaching machines to read and comprehend)。在神经信息处理系统研究进展中(In Advances in Neural Information Processing Systems),第1693–1701页,2015。
[0274] Felix Hill,Antoine Bordes,Sumit Chopra,和Jason Weston。金凤花原则:用显式记忆表示阅读儿童读物(The goldilocks principle:Reading children’s books with explicit memory representations)。ArXiv:1511.02301,2015。
[0275] Sepp Hochreiter and Jürgen Schmidhuber。长短期记忆(Long short-term memory)。Neural computation(神经计算),9(8):1735–1780,1997。
[0276] Rudolf Kadlec,Martin Schmid,Ondrej Bajgar和Jan Kleindienst。文本理解与注意力总和阅读器网络(Text understanding with the attention sum reader network)。arXiv preprint arXiv:1603.01547,2016。
[0277] Diederik Kingma和Jimmy Ba。Adam:一种随机优化的方法(A method for stochastic optimization)。arXiv preprintarXiv:1412.6980,2014.
[0278] Jiasen Lu,Jianwei Yang,Dhruv Batra和Devi Parikh。用于可视问答的分层级的问题-图像协同注意力(Hierarchical question-image co-attention for visual question answering)。arXiv preprint arXiv:1606.00061,2016.
[0279] Minh-Thang Luong,Hieu Pham和Christopher D.Manning。基于注意力的
神经机器翻译的有效方法(Effective approaches to attention-based neural machine translation)。arXiv preprint arXiv:15.04025,2015
[0280] Christopher D Manning,Mihai Surdeanu,John Bauer,Jenny Rose Finkel,Steven Bethard和David McClosky。斯坦福corenlp自然语言处理工具包(The stanford corenlp natural language processing toolkit)。在ACL(System Demonstrations)中,第55–60页,2014。
[0281] Stephen Merity,Caiming Xiong,James Bradbury和Richard Socher。指针哨兵混合模型(Pointer sentinel mixture models)。arXiv preprint arXiv:1609.07843,2016。
[0282] Jeffrey Pennington,Richard Socher和Christopher D Manning。Glove:用于单词表示的全局向量(Global vectors for word representation)。在EMNLP中,第14卷,第1532–43页,2014。
[0283] Pranav Rajpurkar,J.Zhang,K.Lopyrev和P.Liang。Squad:超过100,000个机器理解文本的问题(100,000+questions for machine comprehension of text).arXiv preprint arXiv:1606.05250.2016。
[0284] Matthew Richardson,Christopher JC Burges和Erin Renshaw。Mctest:面向文本开放域机器理解的挑战数据集(A challenge dataset for the open-domain machine comprehension of text)。在EMNLP中,第3卷,第4页,2013。
[0285] Alessandro Sordoni,Phillip Bachman和Yoshua Bengio。用于机器阅读的迭代交替神经注意力(Iterative alternating neural attention for machine reading)。arXiv preprint arXiv:1606.02245,2016。
[0286] Nitish Srivastava,Geoffrey E Hinton,Alex Krizhevsky,Ilya Sutskever和Ruslan Salakhutdinov。临时丢弃:一种防止神经网络过度拟合的简单方法(Dropout:a simple way to prevent neural networks from overfitting)。
机器学习研究杂志(Journal of Machine Learning Research),15(1):1929–1958,2014。
[0287] Rupesh Kumar Srivastava,Klaus Greff和Jüergen Schmidhuber。高速路网络(Highway networks)。arXiv preprint arXiv:1505.00387,2015。
[0288] Seiya Tokui,Kenta Oono,Shohei Hido和Justin Clayton。Chainer:用于深度学习的下一代开源
框架(a next-generation open source framework for deep learning).在第二十九届神经信息处理系统年会关于机器学习系统的研讨会纪要(In Proceedings of Workshop on Machine Learning Systems(LearningSys)in The Twenty-ninth Annual Conference on Neural Information Processing Systems(NIPS)),2015。
[0289] Oriol Vinyals,Meire Fortunato和Navdeep Jaitly。指针网络(Pointer networks)。在神经信息处理系统研究进展中(In Advances in Neural Information Processing Systems),第2692–2700页,2015。
[0290] Hai Wang,Mohit Bansal,Kevin Gimpel和David McAllester。具有语法、框架和语义的机器理解(Machine comprehension with syntax,frames,and semantics),第2卷:短论文,第700页,2015。
[0291] Shuohang Wang和Jing Jiang。使用LSTM学习自然语言推理(Learning natural language inference with LSTM)。arXiv preprint arXiv:1512.08849,2015。
[0292] Shuohang Wang和Jing Jiang。使用匹配LSTM和答案指针的机器理解(Machine comprehension using match-LSTM and answer pointer)。arXiv preprint arXiv:1608.07905,2016。
[0293] Y.Yu,W.Zhang,K.Hasan,M.Yu,B.Xiang和B.Zhou.端到端阅读理解与动态答案语块排名(End-to-End Reading Comprehension with Dynamic Answer Chunk Ranking)。ArXiv e-prints,2016年10月。
[0294] Yang Yu,Wei Zhang,Kazi Hasan,Mo Yu,Bing Xiang和Bowen Zhou。端到端的答案语块提取和阅读理解排名(End-to-end answer chunk extraction and ranking for reading comprehension)。arXiv preprint arXiv:1610.09996v2,2016。
[0295] A附录
[0296] A.1通过动态协同注意力网络进行的不正确的SQuAD预测的样本
[0297] 网络欧盟法律的一个补充来源是什么?
[0298] ID 5725c3a9ec44d21400f3d506
[0299] 欧盟法律适用于成员国法院和欧盟法院。在成员国法律规定较少权利的情况下,欧盟法律可由成员国法院执行。如果欧洲联盟的法律本应转变为成员国的法律,例如指令,欧洲委员会可以根据《欧洲联盟运作条约》对该成员国提起诉讼。欧洲法院是能够解释欧盟法律的最高法院。欧洲联盟法的补充来源包括法院判例法、国际法和欧洲联盟法一般原则。
[0300] 真实事实 国际法
[0301] 预测 判例法由法院制定
[0302] 评论 模型产生的预测是正确的,但它并不是由MechanicalTurk注释选择的谁设计了特斯拉电灯公司的照明系统和制造安装?
[0303] ID 56 e0d6cf231d4119001ac424
[0304] 1886年,在离开爱迪生的公司后,特斯拉与两位商人罗伯特·莱恩和本杰明·威尔合作,他们同意以特斯拉的名义资助一家电力照明公司—特斯拉电力照明与制造公司。该公司安装了由特斯拉设计的基于
电弧灯的照明系统,还设计了发
电机电机换向器,这是特斯拉在美国获得的第一项专利。
[0305] 真实事实 特斯拉
[0306] 预测 罗伯特·莱恩和本杰明·威尔
[0307] 这个模型产生了错误的预测,其与资助特斯拉的人对应,而不是实际设计照明系统的特斯拉。根据经验,我们发现模型所犯的大多数错误都具有正确的类型(例如,名称的实体类型),尽管不包括作为模型之前知识的类型。在本例中,不正确的响应对应的是正确的人的类型。
[0308] 球栉水母通常是什么形状?
[0309] ID 57265746 dd62a815002e821a
[0310] 球栉水母的身体或多或少是圆形的,有时近乎球形,有时则是圆柱形或蛋形;沿海常见的“海刺”侧腕水母有时有蛋形的身体,嘴巴较窄,虽然有些个体更均匀地呈圆形。从身体的两侧伸出一对细长的触须,每条触须都被包裹在一个鞘中,触须可以收回到该鞘中。有些种类的球栉水母的身体在不同程度上是扁平的,所以它们在触手的平面上更宽。
[0311] 真实事实 或多或少是圆的,蛋形的
[0312] 预测 球形
[0313] 评论 虽然错误很小,但预测是不正确的。“或多或少是圆的,有时几乎是球形的”这句话表明实体更通常是“圆的”,而非“球形”、“圆柱形”或“蛋形”(注释者给出的答案)。这表明,由于缺乏对“或多或少”相对于“有时”和“其他时间”的相对严重性的理解,该模型难以在多个直观答案中进行识别。