利用加速器的概念分析操作的制作方法

文档序号:10687049阅读:318来源:国知局
利用加速器的概念分析操作的制作方法
【专利摘要】本发明涉及利用加速器的概念分析操作。提供了在包括主机系统和至少一个加速器设备的系统中用于执行概念分析操作的机制。主机系统从信息源提取具有一个或多个概念的集合,并将具有一个或多个概念的集合提供给加速器设备。主机系统还提供至少一个矩阵表示数据结构,其代表语料库中的概念和概念之间关系的图。加速器设备在加速器设备内部执行所述概念分析操作,以生成标识所述语料库中的概念的输出向量,所述输出向量在所述至少一个矩阵表示数据结构中被标识并与从所述信息源提取的具有一个或多个概念的集合相关。加速器设备将所述输出向量输出到主机系统,主机系统利用所述输出向量响应提交给所述主机系统并与所述信息源关联的请求。
【专利说明】
利用加速器的概念分析操作
技术领域
[0001] 本申请一般地涉及改进的数据处理装置和方法,更具体地说,涉及用于利用加速 器执行概念分析操作的机制。
【背景技术】
[0002] 用于从数据集合获得信息和知识的信息技术和系统在日常生活中占据主导地位。 例如,搜索引擎针对大数据集合运行以便获得与搜索查询相关的信息。问答(QA)系统(例如 可从位于纽约阿蒙克的国际商业机器(IBM)公司获得的IBM Watson? QA系统)针对文档语 料库或其它信息部分运行以便回答自然语言问题。此外,许多社交网络服务将其用户、通信 等表示为大数据集。通常,重要的是针对这些大型数据集执行知识提取、推理和各种其它分 析以便促进系统的操作,例如在社交网络服务中回答问题、返回搜索结果或提供功能。例 如,许多社交网络服务帮助个人标识他们可能知道或具有联系的其它注册用户。此类功能 需要分析表示社交网络服务用户的大数据集。
[0003] 当促进在大文档集中搜索信息(例如在因特网(或"Web")上搜索网页)时,采用搜 索引擎,这些搜索引擎基于各种因素对结果进行分级。一个此类搜索引擎是Google?搜索引 擎,其使用称为"PageRank(页面分级)"的分级算法。PageRank利用Web的链接结构计算全局 "重要性"得分,这些得分可以用于影响搜索结果的分级。
[0004]最近,斯坦福大学作为其斯坦福全球信息库项目的一项工作已开发一种算法,该 算法用于允许用户针对每个个体查询定义他们自己的重要性概念。该算法(称为个性化 PageRank)使用基于私有个性化简档的个性化PageRank变型,提供在线个性化Web搜索。

【发明内容】

[0005] 在一个示例性实施例中,提供一种在包括具有处理器和存储器的主机系统以及至 少一个加速器设备的系统中用于执行概念分析操作的方法。所述方法包括由所述主机系统 从信息源提取具有一个或多个概念的集合,并且由所述主机系统将所述具有一个或多个概 念的集合提供给所述加速器设备。此外,所述方法包括由所述主机系统提供至少一个矩阵 表示数据结构,所述矩阵表示数据结构代表语料库中的概念和概念之间关系的图。此外,所 述方法包括由所述加速器设备在所述加速器设备内部执行所述概念分析操作,以便生成标 识所述语料库中的概念的输出向量,所述输出向量在所述至少一个矩阵表示数据结构中被 标识并且与从所述信息源提取的所述具有一个或多个概念的集合相关。所述方法还包括由 所述加速器设备将所述输出向量输出到所述主机系统,其中所述主机系统利用所述输出向 量来响应提交给所述主机系统并与所述信息源关联的请求。
[0006] 在其它示例性实施例中,提供一种计算机程序产品,其包括具有计算机可读程序 的计算机可用或可读介质。当在计算设备上执行时,所述计算机可读程序使得所述计算设 备执行上面针对方法示例性实施例描述的各种操作和操作组合。
[0007]在另一个示例性实施例中,提供一种系统/装置。所述系统/装置可以包括具有一 个或多个处理器和存储器的主机系统以及加速器设备,所述存储器耦合到所述一个或多个 处理器。所述存储器可以包括指令,当由所述一个或多个处理器执行时,所述指令使得所述 一个或多个处理器执行上面针对方法示例性实施例描述并且由所述主机系统产生的各种 操作和操作组合。在所述加速器设备内部执行由所述加速器设备产生的其它操作,并且所 述加速器设备将输出向量输出到所述主机系统。
[0008] 将在以下对本发明的实例实施例的详细说明中描述本发明的这些和其它特性和 优点,并且鉴于以下详细说明,这些和其它特性和优点对于所属技术领域的普通技术人员 来说将变得显而易见。
【附图说明】
[0009] 当结合附图阅读时,通过参考以下对示例性实施例的详细说明,将最佳地理解本 发明及其优选使用方式、进一步的目的和优点,这些附图是:
[0010]图1示出计算机网络中的问/答创建(QA)系统的一个示例性实施例的示意图;
[0011] 图2是其中实现示例性实施例的各个方面的实例数据处理系统的框图;
[0012] 图3示出根据一个示例性实施例的用于处理输入问题的QA系统流水线;
[0013] 图4是示出用于使用主机系统和主机系统存储装置执行概念分析操作的一种方法 的实例图;
[0014] 图5是示出根据一个示例性实施例的使用一个或多个加速器设备执行的概念分析 操作的实例图;
[0015] 图6是示出根据一个示例性实施例的通过使用基于集群的矩阵重新排序操作获得 的矩阵条目排序的实例图;
[0016] 图7是示出根据一个示例性实施例的基于集群的实例矩阵重新排序操作的流程 图;
[0017] 图8A示出使用矩阵的紧凑稀疏行(CSR)格式化数据结构执行的矩阵向量乘法运算 以及用于执行部分矩阵向量乘法运算的示例伪代码;
[0018] 图8B示出使用矩阵的紧凑稀疏列(CSC)格式化数据结构执行的矩阵向量乘法运算 以及用于执行部分矩阵向量乘法运算的示例伪代码;
[0019] 图9是示出根据一个示例性实施例的实例混合表示矩阵向量乘法运算的流程图;
[0020] 图10是示出根据一个示例性实施例的用于基于使用混合矩阵表示机制确定输入 向量的稀疏度/密度,动态修改用于矩阵运算迭代的压缩矩阵表示的实例操作的流程图;以 及
[0021] 图11是示出根据一个示例性实施例的用于使用一个或多个加速器设备执行概念 分析操作的实例操作的流程图。
【具体实施方式】
[0022] 如上面讨论的,现代计算系统通常参与针对大型数据集执行知识提取、推理和各 种其它分析操作。搜索引擎、问答系统、自然语言处理(NLP)系统、关系分析引擎等只是这些 类型的现代计算系统的一些实例,它们针对大型数据集运行以便促进其操作。通常这些系 统针对信息部分中的已标识概念运行,这些信息部分例如包括电子文档、网页、数据文件 等,统称为信息语料库。
[0023] 这些概念可以被表示为包括节点和边的网络或图,其中节点表示概念本身,并且 边表示在语料库中标识的概念之间的关系。边可以是单向或双向的,并且可以具有关联的 权重或强度,它们表示与边关联的一个概念(节点)被确定为如何强烈地与边所关联的另一 个概念(节点)相关。在一个示例性实施例中,源于节点的每个外出边的所有权重的总和是 1。还应该注意,对于此类图,可以具有"自边"或"自链接",它们是指回到其所源自的节点的 边。可以认识到,如果例如具有大信息语料库(例如Wikipedia?网站),则此类网络/图的复 杂性和大小也变得非常大。
[0024] 为了针对此类大型数据集(即,网络/图)执行知识提取、推理和其它分析操作,这 些网络/图通常被表示为矩阵,其中矩阵的索引表示网络/图的节点,并且矩阵的行/列处的 条目表示节点是否具有将它们彼此连接的边,即,节点彼此是否具有关系。行/列的交叉点 处的条目中的非〇值指示对应于索引的概念之间存在关系,而〇值指示概念之间没有关系。 概念之间关系的强度通过条目的值来衡量,例如,较高值指示由交叉行/列索引表示的概念 之间的较强关系。边的权重或强度可以在针对矩阵执行的矩阵运算期间恒定,但可以由于 在矩阵运算之间实时发生的动态事件或更新而变化。
[0025] 如可以认识到的,对于大型数据集和对应大型网络/图,表示这些网络/图的矩阵 是大稀疏矩阵,它们可以具有数百万或者甚至数十亿个节点和对应边。这些矩阵是稀疏的, 因为矩阵中的大多数条目具有〇值(稠密矩阵的大多数值为非〇)。在一个示例性实施例中, 此类矩阵的属性如下:
[0026] -节点对应于感兴趣的概念、实体、信息、搜索术语等。
[0027] -图中的边是单向的,并且列j、行i中的条目对应于从节点j到节点i的边的权重 (或强度)。
[0028] -所有外出边(包括自边)的总和是1.0,并且因此,对应矩阵中的每个列的总和是 1.0〇
[0029] _矩阵是正方形的和稀疏的。
[0030] 应认识到,这些仅是可以针对其运行示例性实施例的机制的一个实例大稀疏矩阵 的属性,而并非旨在限制可以针对其运行示例性实施例的矩阵的类型。相反,如所属技术领 域的普通技术人员鉴于本说明将显而易见的是,示例性实施例的机制可以使用其它类型的 矩阵实现并且可以针对这些矩阵运行,这些矩阵具有不同于在上面的实例属性集中提及的 属性。
[0031] 针对这些大型矩阵执行矩阵运算以提取矩阵中的条目之间的关系,以便收集知 识,执行推理操作等。例如,如果过程想要知道什么概念与概念A(例如,搜索术语概念或信 息源中的概念,例如在线百科全书等)相关,则概念A可以被表示为矩阵中的索引(列和/或 行)(并且例如可以通过输入向量指定),并且其它概念可以被表示为矩阵中组织成行和列 的其它索引。矩阵中的行和列的交叉点具有值,如果概念A与另一个概念相关,则将这些值 设置为非〇值,例如,如果概念A被表示为行中的索引,则沿着列的索引可以表示其它概念, 并且每个列与概念A的交叉点表示概念A是否与另一个概念相关(如果概念A与另一个概念 相关,则为非〇,并且如果概念A与另一个概念不相关,则为0)。此外,概念之间的"关系"在图 中通过边和边的关联权重/强度来表示,以使得矩阵中的0或非0值是概念A与另一个概念之 间的边的权重/强度。
[0032] 用于知识提取、信息提取、概念分析或其它分析操作(旨在使用矩阵表示标识图的 节点之间的关系)的大多数矩阵运算涉及矩阵向量乘法运算,其中矩阵乘以向量,这导致指 不向量与矩阵的交叉点的输出,例如,向量中的非〇值与矩阵中的非〇值相乘导致输出中的 非0值,这些非0值指示对应向量元素与矩阵索引之间的关系。由于高速缓冲存储器的有限 大小,矩阵的稀疏度和向量的稀疏度都影响完成该矩阵向量乘法运算的效率。
[0033] 因为这些大型矩阵往往非常稀疏,所以针对这些稀疏矩阵执行的过程通常涉及许 多运行时资源密集型大稀疏矩阵运算,每个运算包括矩阵向量乘法运算。当执行矩阵向量 乘法运算时,以推测方式加载矩阵的各个部分以便执行矩阵向量乘法。矩阵/向量的一部分 被加载到高速缓冲存储器中,并且用于执行矩阵/向量的部分乘积乘法。当矩阵中的特定条 目或单元被加载到高速缓存中时,与选定条目/单元极为靠近的其它条目或单元也被加载, 以便推测下一个矩阵向量乘法将针对与选定条目/单元极为靠近的条目或单元。但是,在稀 疏矩阵中,高速缓冲存储器的这种推测性加载通常导致高速缓存未命中,即,感兴趣的非〇 条目或单元未存在于高速缓冲存储器中并且必须从主存储器或存储装置加载。因此,稀疏 矩阵/向量连同有限大小的高速缓冲存储器导致影响性能的高速缓存未命中。
[0034] 因此,可以认识到,用于标识相关概念或者针对大型数据集执行其它知识或信息 提取的过程可以是资源非常密集的过程,随着矩阵的大小和矩阵的稀疏度增加,该过程涉 及大量高速缓存未命中,并且因此从主存储器或存储装置加载。当向量稀疏时也是这种情 况,因为矩阵向量乘法运算基本上是在矩阵中查找与向量的非〇元素相乘的非〇条目,并且 如果向量和矩阵是稀疏的,则当加载到高速缓冲存储器中时,大多数条目/元素将是0。因 此,提供系统功能的效率可以受限于针对这些大型数据集执行矩阵运算的效率和速度。
[0035] 此外,因为矩阵大小较大,所以变得难以在存储器中维护整个矩阵以便用于矩阵 运算。因此,已设计各种机制以便以压缩格式表示矩阵。例如,已设计用于基于矩阵中的非0 值表示矩阵的格式,这显著减少维护有关矩阵的信息需要的存储器大小。例如,紧凑稀疏行 (CSR)和紧凑稀疏列(CSC)存储格式提供此类实例。但是,这些格式的每一种对于不同类型 的输入向量稀疏度(或密度)都具有更高或更低的效率。
[0036] 位于纽约阿蒙克的国际商业机器(IBM)公司已开发用于解决以下问题的机制:这 些问题有关大稀疏矩阵运算期间的高速缓存效率和大型矩阵对不同存储格式的利用。例 如,2015年2 月2 日提交的标题为"Matrix Ordering for Cache Efficiency in Performing Large Sparse Matrix Operations(用于在执行大稀疏矩阵运算中实现高速 缓存效率的矩阵排序)"的第14/611,297号美国专利申请(在此引入作为参考)提供一种机 制,其用于通过使用集群方法,对矩阵进行重新排序以便沿着矩阵的对角线集中矩阵的非0 值。此外,2015年3 月2 日提交的标题为"Parallelized Hybrid Sparse Matrix representations for Performing Personalized Content Ranking(用于执行个性化内 容分级的并行化混合稀疏矩阵表示)"的第14/635,007号美国专利申请(在此引入作为参 考)提供用于以下操作的机制:基于在特定迭代期间用于矩阵运算的向量的稀疏度(或密 度),选择大型矩阵的不同存储格式以便在矩阵运算的不同迭代期间使用。
[0037]这些机制旨在通过修改在矩阵运算中表示或使用矩阵的方式,改进执行矩阵运算 本身的方式。这些机制可以与在此给出的示例性实施例提供的其它机制结合使用,以便提 供更有效的概念分析机制以分析在大型稀疏矩阵中表示的概念之间的关系,从而实现执行 知识提取、推理操作、概念分析操作或其它分析操作的目的。即,尽管上述机制通过重新组 织矩阵的非0值以便减少高速缓存未命中并且针对矩阵运算的不同迭代使用不同压缩格式 表示矩阵,专注于表示矩阵的方式以便在处理矩阵运算中实现更高效率,但以下给出的示 例性实施例通过使用一个或多个加速器设备提供用于促进端到端概念分析过程的加速的 机制,进一步改进矩阵运算的整体性能。机制用于使用海量数据并行性并且执行大量并行 线程,加速矩阵运算的核心计算,每个线程针对大稀疏矩阵的一部分执行运算。由于加速器 设备的存储器限制,利用批量执行,该执行使能针对对应于加速器设备的固定存储器限制 的多批数据(例如,输入向量)执行运算。在加速器设备的存储器中(而不是在主机系统处) 初始化向量数据结构,以便减少所需的数据传输量。使用单个功能合并加速器设备中的运 算结果,从而不需要将结果存储到主机系统的主存储器。因此,可以在加速器设备中完全执 行矩阵运算而不必访问主机系统资源。
[0038]在操作中,主机系统为加速器设备提供从信息源(例如,文档、输入自然语言问题, 或者任何其它概念源)提取的一组概念。在一个示例性实施例中,信息源是具有一个或多个 嵌入式概念的输入文档,并且概念分析操作设法标识与嵌入在输入文档中的那些概念相关 的概念,从而将相关概念的向量与输入文档相关联。该结果向量可以用于标识具有相关概 念的其它文档,以便提供一个文档相对于另一个文档的分级。在某些示例性实施例中,信息 源可以包括用户简档(单独或与文档、搜索查询、自然语言问题或用户对内容的其它请求组 合),然后用户简档用于提供针对其执行概念分析操作的一组输入概念。例如,这可以用于 执行个性化PageRank操作,其中对内容的请求指定用户希望访问的内容,并且用户简档指 定用户的个人偏好,这些偏好可以用于修改返回到用户的结果内容的分级。在某些示例性 实施例中,用户简档可以用作在问答系统中修改用于提供自然语言问题答案的文档的分级 的方式。简言之,涉及基于指定相关概念的信息语料库的网络/图来标识相关概念的任何概 念分析操作都可以利用示例性实施例的机制。
[0039]使用示例性实施例的机制,主机系统对信息源执行某种初始处理以便标识这些概 念,其中此类处理通常在所属技术领域中已知,并且因此在此不提供更详细的说明。例如, 在自然语言处理系统、搜索引擎或问答(QA)系统上下文中,可以使用自然语言处理、搜索引 擎解析或其它文本分析技术,从输入到QA系统的自然语言问题或者从电子文档或搜索引擎 提取概念。将得到的一组概念输入可以作为专用处理器、服务处理器等提供的加速器设备 (以下简称为"加速器")。在一个示例性实施例中,加速器是图形处理单元(GPU),其被集成 在主机系统中或耦合到主机系统,并且其主要功能是处理以便呈现图形,但其被动态重用 以便执行示例性实施例的概念分析操作。除了标准GPU内核之外,GPU可以具备不同GPU内核 以用于图形呈现、执行根据示例性实施例的概念分析操作,并且当需要并通过以下方式被 指示时可以动态切换GPU内核:将作业从主机系统提交给GPU、将指令从主机系统发送到 GPU、在从主机系统到GPU的通信中设置预定义位、或者可针对切换GPU操作模式实现的任何 其它机制。
[0040]除了从信息源提取的概念之外,主机系统为加速器提供大稀疏矩阵的表示以便用 于执行概念分析操作。大稀疏矩阵本身表示已经通过信息语料库的处理被标识的概念及其 关系的网络/图。例如,在QA系统环境(例如可以由IBM Wat son? QA系统提供)中,例如可以 将文档语料库(例如标识各种概念并且在可标识的概念之间具有链接的Wikipedia?网页) 提供给QA系统,以便用于回答提交给QA系统的问题。在医疗保健应用中,此类QA系统可以获 取包括以下各项的文档语料库:医学期刊、医学试验文档、包括旨在描述药物和疗程的文本 的医学资源、医学字典、患者记录,或者被认为与医学领域相关的任何其它文档。在其它领 域中,可以提供类似的电子文档集合作为语料库以便由QA系统获取。可以使用已知或以后 开发的获取过程(这可以包括自然语言处理、特性提取等)处理语料库,以便标识在语料库 中指定的概念和概念之间的关系,以及在语料库中指定的这些关系的强度。结果是概念的 网络或图,其中节点表示概念并且边表示概念之间的关系,并且边具有表示所连接的概念 之间的关系强度的权重。
[0041]在搜索引擎上下文中,信息语料库可以是各种领域的大网页集,例如因特网。因 此,网络/图可以包括数千个表示概念的节点和节点之间的边、其关系以及这些关系的强 度,如上面讨论的那样。
[0042]网络/图可以被表示为大稀疏矩阵,如上面讨论的那样。根据上面提及的IBM机制 以及共同受让并且共同未决的序号为14/611,297和14/635,007的美国专利申请中描述的, 可以使用集群重新组织大稀疏矩阵,并且可以使用多个压缩表示来表示产生的重新组织后 的矩阵,这些压缩表示可以用于混合方法中以便在加速器中执行矩阵运算。在一个示例性 实施例中,主机系统可以执行矩阵的重新组织,连同重新组织后的矩阵的多个压缩格式表 示的生成。然后可以将产生的重新组织后的矩阵的压缩格式表示提供给加速器以便与其内 部概念分析操作一起使用,这涉及使用矩阵运算,例如矩阵向量乘法运算。加速器可以包括 内部逻辑,当执行概念分析操作的迭代时,该逻辑实施混合方法以便执行在序号为14/635, 007的美国专利申请中描述的矩阵运算。
[0043] 应认识到,处理大稀疏矩阵以生成重新组织后的矩阵和重新组织后的矩阵的压缩 格式表示可能极少被执行。即,只要大稀疏矩阵没有显著变化,就不需要重新计算重新组织 后的矩阵和压缩格式表示。但是,当矩阵显著变化(例如由于语料库的更新)时,可以启动矩 阵的重新计算,并且可以生成已更新的重新组织后的矩阵和压缩格式表示。这可以响应于 系统管理员或其它授权用户请求,或者响应于发生定义的事件(例如语料库的更新)而定期 进行。因此,尽管主机系统的计算资源可能偶尔参与生成重新组织矩阵和对应压缩格式表 示,但对于对加速器的大多数操作,除了从信息源提取概念并将它们作为输入提供给加速 器之外,不使用系统资源。
[0044] 在接收从信息源提取的概念(由主机系统提供)时,加速器针对提取的概念运行以 生成一个或多个向量以便与概念分析操作一起使用。将一个或多个向量提供给概念分析操 作逻辑,该逻辑使用由加速器生成的向量(多个)和由主机系统作为输入提供给加速器的压 缩格式矩阵表不,执行概念分析操作。然后概念分析操作的结果被规范化为正态分布并被 提供给加速器的后处理逻辑,该逻辑借助在向量(多个)中指定的概念来计算矩阵中的概念 关系的分级,即关系强度。结果是包括非0向量元素的输出向量,其中向量(多个)的概念与 矩阵中的非0条目交叉。输出向量元素的值指示向量(多个)中的概念与矩阵中的概念之间 的关系强度。
[0045] 因此,示例性实施例的机制使加速器基于提取的概念和由主机系统提供的矩阵表 示,在主机系统外部执行概念分析操作。加速器不需要在计算最终结果之前将概念分析操 作的结果存储在主存储器或外部存储装置中,而是提供单个功能,该单个功能直接输出最 终结果而不将中间结果存储到主存储器或外部存储装置。这最小化主机系统与加速器之间 以及加速器与主存储器或外部存储装置之间的数据交换。因此,执行此类概念分析操作的 速度显著增加。
[0046] 在开始更详细地讨论示例性实施例的各方面之前,首先应认识到,在本说明中术 语"机制"将用于指本发明的执行各种操作、功能等的元素。"机制"作为在此使用的术语,可 以是示例性实施例的功能或方面以装置、过程或计算机程序产品形式的实现。在过程的情 况下,过程由一个或多个设备、装置、计算机、数据处理系统等实现。在计算机程序产品的情 况下,由一个或多个硬件设备执行由嵌入在计算机程序产品之中或之上的计算机代码或指 令表示的逻辑,以便实现功能或者执行与特定"机制"关联的操作。因此,在此描述的机制可 以实现为专用硬件、在通用硬件上执行的软件、存储在介质上以使得指令可以容易地由专 用或通用硬件执行的软件指令、用于执行功能的过程或方法,或者上述任意组合。
[0047] 本说明书和权利要求可以针对示例性实施例的特定特性和元素使用术语"一个"、 "至少一个"和"一个或多个"。应认识到,这些术语和短语旨在声明具有存在于特定示例性 实施例中的至少一个特定特性或元素,但还可以存在多个特性或元素。即,这些术语/短语 并非旨在将说明书或权利要求限于存在的单个特性/元素,或者要求存在多个此类特性/元 素。相反,这些术语/短语仅需要至少单个特性/元素,并且具有多个此类特性/元素在说明 书和权利要求的范围内的可能性。
[0048] 此外,应认识到,以下说明针对示例性实施例的各种元素使用多个不同实例,以便 进一步示出示例性实施例的实例实现,并且帮助理解示例性实施例的机制。这些实例并非 旨在限制和穷举用于实现示例性实施例机制的各种可能性。所属技术领域的普通技术人员 鉴于本说明将显而易见的是,这些不同元素具有许多其它备选实现,除了在此提供的实例 或替代在此提供的实例,可以使用这些备选实现而不偏离本发明的精神和范围。
[0049] 应该认识到本发明可以是系统、方法和/或计算机程序产品。计算机程序产品可以 包括计算机可读存储介质,其上载有用于使处理器实现本发明的各个方面的计算机可读程 序指令。
[0050] 计算机可读存储介质可以是可以保持和存储由指令执行设备使用的指令的有形 设备。计算机可读存储介质例如可以是一但不限于一电存储设备、磁存储设备、光存储设 备、电磁存储设备、半导体存储设备或者上述的任意合适的组合。计算机可读存储介质的更 具体的例子(非穷举的列表)包括:便携式计算机盘、硬盘、随机存取存储器(RAM)、只读存储 器(ROM)、可擦式可编程只读存储器(EPROM或闪存)、静态随机存取存储器(SRAM)、便携式压 缩盘只读存储器(CD-ROM)、数字多功能盘(DVD)、记忆棒、软盘、机械编码设备、例如其上存 储有指令的打孔卡或凹槽内凸起结构、以及上述的任意合适的组合。这里所使用的计算机 可读存储介质不被解释为瞬时信号本身,诸如无线电波或者其它自由传播的电磁波、通过 波导或其它传输介质传播的电磁波(例如,通过光纤电缆的光脉冲)、或者通过电线传输的 电信号。
[0051] 这里所描述的计算机可读程序指令可以从计算机可读存储介质下载到各个计算/ 处理设备,或者通过网络、例如因特网、局域网、广域网和/或无线网下载到外部计算机或外 部存储设备。网络可以包括铜传输电缆、光纤传输、无线传输、路由器、防火墙、交换机、网关 计算机和/或边缘服务器。每个计算/处理设备中的网络适配卡或者网络接口从网络接收计 算机可读程序指令,并转发该计算机可读程序指令,以供存储在各个计算/处理设备中的计 算机可读存储介质中。
[0052] 用于执行本发明操作的计算机可读程序指令可以是汇编指令、指令集架构(ISA) 指令、机器指令、机器相关指令、微代码、固件指令、状态设置数据、或者以一种或多种编程 语言的任意组合编写的源代码或目标代码,所述编程语言包括面向对象的编程语言一诸如 Smalltalk、C++等,以及常规的过程式编程语言一诸如"C"语言或类似的编程语言。计算机 可读程序指令可以完全地在用户计算机上执行、部分地在用户计算机上执行、作为一个独 立的软件包执行、部分在用户计算机上部分在远程计算机上执行、或者完全在远程计算机 或服务器上执行。在涉及远程计算机的情形中,远程计算机可以通过任意种类的网络一包 括局域网(LAN)或广域网(WAN)-连接到用户计算机,或者,可以连接到外部计算机(例如利 用因特网服务提供商来通过因特网连接)。在一些实施例中,通过利用计算机可读程序指令 的状态信息来个性化电子电路,例如可编程逻辑电路、现场可编程门阵列(FPGA)或可编程 逻辑阵列(PLA),该电子电路可以执行计算机可读程序指令,从而实现本发明的各个方面。
[0053] 这里参照根据本发明实施例的方法、装置(系统)和计算机程序产品的流程图和/ 或框图描述了本发明的各个方面。应当理解,流程图和/或框图的每个方框以及流程图和/ 或框图中各方框的组合,都可以由计算机可读程序指令实现。
[0054] 这些计算机可读程序指令可以提供给通用计算机、专用计算机或其它可编程数据 处理装置的处理器,从而生产出一种机器,使得这些指令在通过计算机或其它可编程数据 处理装置的处理器执行时,产生了实现流程图和/或框图中的一个或多个方框中规定的功 能/动作的装置。也可以把这些计算机可读程序指令存储在计算机可读存储介质中,这些指 令使得计算机、可编程数据处理装置和/或其它设备以特定方式工作,从而,存储有指令的 计算机可读存储介质则包括一个制造品,其包括实现流程图和/或框图中的一个或多个方 框中规定的功能/动作的各个方面的指令。
[0055] 也可以把计算机可读程序指令加载到计算机、其它可编程数据处理装置、或其它 设备上,使得在计算机、其它可编程装置或其它设备上执行一系列操作步骤,以产生计算机 实现的过程,从而使得在计算机、其它可编程装置、或其它设备上执行的指令实现流程图 和/或框图中的一个或多个方框中规定的功能/动作。
[0056] 附图中的流程图和框图显示了根据本发明的不同实施例的系统、方法和计算机程 序产品的可能实现的体系架构、功能和操作。在这点上,流程图或框图中的每个方框可以代 表一个模块、程序段或指令的一部分,所述模块、程序段或指令的一部分包含一个或多个用 于实现规定的逻辑功能的可执行指令。在有些作为替换的实现中,方框中所标注的功能可 以以不同于附图中所标注的顺序发生。例如,两个连续的方框实际上可以基本并行地执行, 它们有时也可以按相反的顺序执行,这依所涉及的功能而定。也要注意的是,框图和/或流 程图中的每个方框、以及框图和/或流程图中的方框的组合,可以用执行规定的功能或动作 的专用的基于硬件的系统来实现,或者可以用专用硬件与计算机指令的组合来实现。
[0057]示例性实施例可以用于包括搜索引擎、QA系统、自然语言处理系统等的许多不同 类型的数据处理环境。为了针对示例性实施例的特定元素和功能的说明提供上下文,以下 提供图1-3作为其中可以实现示例性实施例的各个方面的实例环境。应认识到,图1-3只是 实例并且并非旨在断言或暗示有关其中可以实现本发明的各个方面或实施例的环境的任 何限制。在不偏离本发明的精神和范围的情况下可以对所示环境做出许多修改。
[0058]图1-3旨在描述实现示例性实施例的机制所使用的实例问答(QA)系统(也称为问/ 答系统或问答系统)、方法和计算机程序产品。如以下更详细地讨论的,示例性实施例可以 被集成在这些QA机制中,增强和扩展这些QA机制有关执行概念分析操作的功能,这些概念 分析操作例如可以用于标识其中发现与在输入问题中指定的概念相关的概念的语料库的 各个部分,或者用于当计算与输入问题的候选答案关联的置信度值时,标识语料库中的证 据段落。此外,可以通过考虑由用户简档(其可以与输入问题一起输入,并且向用户标识感 兴趣的概念)指定的用户的个人偏好,基于使用示例性实施例的机制执行的概念分析操作, 修改证据段落的分级,从而增强用作标识相关概念的基础的输入概念。
[0059]因为将针对示例性实施例的机制在QA系统中的实现描述这些机制,所以在描述示 例性实施例的机制如何被集成在此类QA系统中并且增强这些系统之前,重要的是首先理解 如何实现QA系统中的问答处理。应认识到,图1-3中描述的QA机制只是实例并且并非旨在声 明或暗示有关实现示例性实施例所使用的QA机制类型的任何限制。在不偏离本发明的精神 和范围的情况下,可以在本发明的不同实施例中实现对图1-3中所示实例QA系统的许多修 改。
[0060] 作为概述,问答系统(QA系统)是在数据处理硬件上执行的人工智能应用,其回答 有关以自然语言提出的给定主题领域的问题。QA系统从各种源接收输入,这些源包括通过 网络的输入、电子文档或其它数据语料库、来自内容创建者的数据、来自一个或多个内容用 户的信息,以及来自其它可能输入源的其它此类输入。数据存储设备存储数据语料库。内容 创建者在文档中创建内容,以便作为数据语料库的一部分与QA系统一起使用。文档可以包 括任何文件、文本、文章或数据源以便用于QA系统。例如,QA系统访问有关领域或主题领域 (例如,金融领域、医学领域、法律领域等)的知识体系,其中可以以各种配置组织知识体系 (知识库),例如,领域特定信息的结构化存储库(例如本体),或者与领域相关的非结构化数 据,或者有关领域的自然语言文档集合。
[0061] 内容用户将问题输入到QA系统,QA系统然后通过评估文档、文档的各个部分、语料 库中的各个数据部分等,使用数据语料库中的内容回答输入问题。当过程评估文档的给定 部分以查找语义内容时,该过程可以使用各种约定以便从QA系统查询此类文档,例如,将查 询作为格式良好的问题发送到QA系统,QA系统然后解释该问题,并且提供包含该问题的一 个或多个答案的响应。语义内容是基于意符(signifier)之间关系的内容,这些意符例如包 括单词、短语、记号和符号,以及它们代表的内容,其外延或内涵。换言之,语义内容是例如 通过使用自然语言处理解释表达的内容。
[0062] 如以下将更详细地描述的,QA系统接收输入问题,解析问题以便提取问题的主要 特性(包括输入问题中的已标识概念),使用所提取的特性形成查询,并且然后将这些查询 应用于数据语料库。基于将查询应用于数据语料库,QA系统通过在数据语料库中查找有可 能包含对输入问题的有价值响应的数据语料库的各个部分,生成输入问题的一组假设或候 选答案。QA系统然后使用各种推理算法,针对输入问题的语言和在查询应用期间发现的数 据语料库的每个部分中使用的语言执行深度分析,例如英语槽语法(ESG)和谓词论元结构 (PAS)构造器(例如,参见McCord等人的 "Deep Parsing in Watson(深入解析Watson)"(IBM J.Res .&Dev .,第56卷,第3/4期,2012年5月/7月)以获得有关IBM Watson?中的深入分析的 更多信息)。可以应用数百种或者甚至数千种推理算法,每种算法执行不同分析(例如,比 较、自然语言分析、词法分析等),并且生成得分。例如,某些推理算法可以着眼于输入问题 的语言和发现的数据语料库部分中的术语和同义词的匹配。其它推理算法可以着眼于语言 中的时间或空间特性,而其它推理算法可以评估数据语料库部分的来源并且评估其真实 性。
[0063]从各种推理算法获得的得分指示基于该推理算法的特定焦点领域,通过输入问题 推断可能响应的程度。然后对照统计模型对每个产生的得分进行加权。在QA系统的训练期 间内,统计模型捕获推理算法在特定领域的两个类似段落之间建立推断时的执行程度如 何。统计模型用于概述QA系统关于通过问题推断可能响应(即,候选答案)的证据而具有的 置信度级别。针对每个候选答案重复该过程,直到QA系统标识表现为明显强于其它候选答 案的候选答案,并且因此针对输入问题生成最终答案或一组分级答案。
[0064] 如上所述,QA系统和机制通过以下操作运行:从数据或信息语料库(也称为内容语 料库)访问信息,分析信息,并且然后基于对该数据的分析而生成答案结果。从数据语料库 访问信息通常包括:数据库查询,其回答有关结构化记录集合中有什么的问题;以及搜索, 其响应于对非结构化数据(文本、标记语言等)集合的查询,提供文档链接集合。常规问答系 统能够基于数据语料库和输入问题生成答案,针对数据语料库检验问题集合的答案,使用 数据语料库纠正数字文本中的错误,以及从可能答案(即,候选答案)池中选择问题答案。
[0065] 诸如文章作者、电子文档创建者、网页作者、文档数据库创建者之类的内容创建者 在编写其内容之前,确定在此类内容中描述的产品、解决方案和服务的用例。因此,内容创 建者知道内容旨在回答由内容解决的特定主题中的什么问题。在数据语料库的每个文档 中,例如按照与问题关联的角色、信息类型、任务等对问题进行分类允许QA系统更快速和有 效地标识包含与特定查询相关的内容的文档。内容还可以回答内容创建者未构想的可能对 内容用户有用的其它问题。问题和答案可以由内容创建者检验以便被包含在给定文档的内 容中。这些能力有助于改进QA系统的准确性、系统性能、机器学习和置信度。内容创建者、自 动化工具等注释或以其它方式生成元数据以便提供可由QA系统使用的信息,从而标识内容 的这些问题和答案属性。
[0066] 针对此类内容工作时,QA系统使用多个密集分析机制生成输入问题的答案,这些 机制评估内容以便针对输入问题标识最可能答案(即,候选答案)。根据示例性实施例的机 制,这些密集分析机制可以利用表示语料库文档中的概念及其关系的大稀疏矩阵,作为用 于以下操作的手段:标识与在输入问题中指定的概念相关的概念、用户简档(例如在个性化 分级过程中)、被访问以便包括在语料库中的文档,或者基于概念分析的任何其它操作。
[0067] 如上所述,概念分析操作通常使用大稀疏矩阵,该大稀疏矩阵表示从知识源获得 的概念及其关系的网络/图。"知识源"是任何充当信息源的电子系统或数据结构,以及关于 已知概念及其关系的知识。该"知识源"可以是以自然语言格式或预定义结构化格式提供的 文档语料库、来自各种文本源的各文本部分,这些文本源例如包括网站帖子、电子邮件消 息,或者任何其它文本内容源、网页等。在某些情况下,这些"知识源"可以包括以结构化格 式提供的信息数据库。提供可以用于生成概念和关系的网络/图的信息的任何信息和知识 源旨在在术语"知识源"的精神和范围内。
[0068] 作为在此使用的术语,"信息源"指概念源,针对该源查找关系信息,并且其概念是 用于生成在矩阵运算中使用的至少一个向量的源。"信息源"可以是具有自然语言或结构化 文本的输入文档或输入文档集、输入自然语言问题、短语、搜索查询、用户简档等。在一个示 例性实施例中,"信息源"是QA系统的输入问题。在另一个示例性实施例中,"信息源"是要添 加到QA系统针对其运行的信息语料库的文档。在其它示例性实施例中,"信息源"是任何其 它文本输入源,例如搜索查询。无论哪种特定实现,"信息源"都提供文本,可以从该文本提 取一个或多个概念以便用于生成至少一个向量,该至少一个向量要用于执行作为在加速器 中执行的概念分析操作的一部分的矩阵运算。
[0069] -般而言,概念分析操作涉及两个主要阶段:索引建立和相关概念标识。对于索引 建立阶段,例如假设知识源是包括大量网页的在线百科全书,例如Wikipedia。从该知识源, 提取一系列概念N并且计算稀疏关系矩阵N*N,其中如果概念i与概念j相关,则矩阵中的条 目(行i,列j)为非〇,例如"1"。例如,概念"信息论"是"电气工程"的一个分支,以使得在网 络/图中,边将"信息论"连接到"电气工程",并且相应地,将对应于"信息论"和"电气工程" 的(i,j)中的条目设置为1。针对知识源中的每个概念执行该过程导致由N*N矩阵表示的索 引后的知识源,其中非〇条目表示概念之间的关系。可以将条目中的值设置为指示概念之间 关系强度的值,其中基于各种准则以许多不同方式计算这些强度。
[0070] 在相关概念标识阶段内,对于每个信息源,概念分析提取具有M个概念的集合。使 用在索引建立阶段中生成的知识源关系矩阵,计算每个输入概念M的相关概念。这通常使用 以下讨论的矩阵向量乘法运算或其它稀疏矩阵(N*N)_稠密矩阵(N*M)乘法运算进行(其中 "稠密矩阵"是矩阵形式的一组向量,并且可以分别处理每个向量以便生成部分乘积,随后 可以组合部分乘积)。在某些实施例中,该信息源可以包括用户的个人简档,个人简档指示 用户的概念偏好以使得执行个性化分级过程作为该相关概念标识阶段的一部分,即,通过 涉及矩阵向量乘法运算的概念分析操作,标识用户感兴趣的概念。该概念分析可以涉及这 些乘法运算的多次迭代,其中对结果矩阵进行后处理以便生成N元素向量,该N元素向量表 示来自信息源的概念如何与知识源中的所有其它概念相关。
[0071 ]应认识到,M的值可以显著变化,例如从数十个概念到数千个概念。中间数据(即, 矩阵向量乘法的结果)的大小取决于M的值。为了限制中间数据大小,如以下讨论的,示例性 实施例利用批,例如在某些实施例中批大小为32(32个输入向量),但可以具有不同批大小, 具体取决于需要的实现。
[0072]示例性实施例的机制例如在概念分析操作的相关概念标识阶段,通过使用一个或 多个加速器执行概念分析操作,加速标识相关概念的过程,如以下描述的那样。由一个或多 个加速器生成的相关概念输出向量可以用于生成候选答案,并且在QA系统中对这些候选答 案分级,或者在诸如搜索引擎之类的其它实现中,例如对返回到用户的搜索查询的搜索结 果分级。在某些示例性实施例中,该过程可以用于提供如上所述的个性化分级操作,其中标 识由用户简档(其可以作为信息源的一部分提供)指定的特定用户感兴趣的概念。最可能的 答案被输出作为分级后的候选答案列表(根据在候选答案的评估期间计算的其相对得分或 置信度量进行分级),作为单个最终答案(其具有最高分级得分或置信度量,或者其与输入 问题最匹配),或者作为分级列表和最终答案的组合。
[0073]图1示出计算机网络102中的问/答创建(QA)系统100的一个示例性实施例的示意 图。在第2011/0125734号美国专利申请公开(在此全部引入作为参考)中描述了可以与在此 描述的原理结合使用的问/答生成的一个实例。QA系统100在连接到计算机网络102的一个 或多个计算设备1〇4(包括一个或多个处理器和一个或多个存储器,并且可能包括所属技术 领域公知的任何其它计算设备,包括总线、存储设备、通信接口等)上实现。网络102包括多 个计算设备104,这些计算设备104经由一个或多个有线和/或无线数据通信链路彼此通信 并且与其它设备或组件通信,其中每个通信链路包括导线、路由器、交换机、发送器、接收器 等中的一个或多个。QA系统100和网络102针对一个或多个QA系统用户,经由其相应计算设 备110-112启用问/答(QA)生成功能。QA系统100的其它实施例可以与不同于在此示出的组 件、系统、子系统和/或设备一起使用。
[0074] QA系统100被配置为实现从各种源接收输入的QA系统流水线108。例如,QA系统100 从网络102、电子文档语料库106、QA系统用户和/或其它数据和其它可能输入源接收输入。 在一个实施例中,到QA系统100的部分或全部输入通过网络102路由。网络102上的各种计算 设备104包括用于内容创建者和QA系统用户的接入点。某些计算设备104包括用于存储数据 语料库1〇6(仅为了示例性目的,其在图1中被示出为单独实体)的数据库的设备。数据语料 库106的各个部分还可以在一个或多个其它网络附加存储设备上提供,在一个或多个数据 库或者图1中未明确示出的其它计算设备中提供。在不同实施例中,网络102包括局部网络 连接和远程连接,以使得QA系统100可以在任何大小(包括局部和全球,例如因特网)的环境 中操作。
[0075]在一个实施例中,内容创建者在数据语料库106的文档中创建内容以便作为数据 语料库的一部分与QA系统100-起使用。文档包括任何文件、文本、文章或数据源以便用于 QA系统100。QA系统用户经由到网络102的网络连接或因特网连接访问QA系统100,并且将问 题输入到QA系统100,这些问题通过数据语料库106中的内容回答。在一个实施例中,使用自 然语言形成问题。QA系统100解析和解释问题,并且向QA系统用户(例如,QA系统用户110)提 供包含问题的一个或多个答案的响应。在某些实施例中,QA系统100以分级候选答案列表向 用户提供响应,而在其它示例性实施例中,QA系统100提供单个最终答案或者最终答案和分 级其它候选答案列表的组合。
[0076] QA系统100实现QA系统流水线108,其包括用于处理输入问题和数据语料库106的 多个阶段。QA系统流水线108基于输入问题和数据语料库106的处理,针对输入问题生成答 案。将在以下针对图3更详细地描述QA系统流水线108。
[0077]在某些示例性实施例中,QA系统100可以是可从位于纽约阿蒙克的国际商业机器 公司获得的IBM Watson? QA系统,该系统使用以下描述的示例性实施例的机制进行增强。 如前所述,IBM Watson? QA系统接收输入问题,然后解析该问题以便提取问题的主要特性, 这些特性然后转而用于形成应用于数据语料库的查询。基于将查询应用于数据语料库,通 过在数据语料库中查找有可能包含对输入问题的有价值响应的数据语料库的各个部分,生 成输入问题的一组假设或候选答案。IBM Watson? QA系统然后使用各种推理算法,针对输 入问题的语言和在查询应用期间发现的数据语料库的每个部分使用的语言执行深度分析。 然后对照统计模型对从各种推理算法获得的得分进行加权,该统计模型概述IBM Watson? QA系统关于通过问题推断可能响应(即,候选答案)的证据而具有的置信度级别。针对每个 候选答案重复该过程以便生成分级候选答案列表,然后可以将该分级候选答案列表提供给 提交输入问题的用户,或者从中选择最终答案并且提供给用户。有关IBM Watson? QA系统 的更多信息例如可以从IBM公司网站、IBM Redbooks等获得。例如,可以在Yuan等人的 "Watson and Healthcare(Watson和医疗保健)"(IBM developerWorks,2011 年)和Rob High的"The Era of Cognitive Systems:An Inside Look at IBM Watson and How it Works(认知系统时代:IBM Watson揭秘及其工作方式Redbooks,2012年)中发现有 关IBM Watson? QA系统的信息。
[0078] 如图1中所示,QA系统100利用一个或多个加速器120,它们加速由QA系统100执行 的概念分析操作。优选地提供一个或多个加速器120,以使得它们与由QA系统流水线执行的 操作结合以及并行运行。加速器120包括在主要QA系统100处理器外部的处理器和存储器, 并且加速器120作为现有QA系统100处理器的专用处理器或服务处理器操作。在某些示例性 实施例中,加速器120是图形处理单元(GPU),其具备专用内核以便代表QA系统100执行概念 分析操作。因此,GHJ可以通过响应于QA系统100将概念分析操作任务提交给GPU而切换内核 并且因此切换操作模式,在图形处理与概念分析操作之间动态切换。可以通过以下各项促 进这种切换:来自QA系统100的指令、设置由GPU校验的位,或者可以用于将GPU的操作模式 从图形处理切换到另一种操作模式的任何其它机制。
[0079] 在操作中,在概念分析操作模式下,一个或多个加速器120均接收矩阵122的一个 或多个表示,矩阵122代表通过QA系统100的语料库获取操作,先前从语料库提取的已知概 念和概念之间的关系。这种从自然语言内容生成概念和概念之间关系的网络/图的过程通 常在所属技术领域中已知,并且因此在此不提供更详细的说明。此外,然后以通常在所属技 术领域中已知的方式将网络/图表示为矩阵。如果给出矩阵,则利用机制重新组织矩阵以便 沿着矩阵的对角线集中矩阵的非〇值。该过程可以使用公知的矩阵重新组织算法(例如 Cuthill-McKee算法),以便执行此类重新组织。在某些示例性实施例中,可以通过实现在共 同未决并且共同受让的序号为14/611,297的美国专利申请中描述的矩阵处理机制,执行这 种矩阵重新组织,这些矩阵处理机制利用集群将非0值聚集成集群,并且沿着矩阵的对角线 组织集群。
[0080] QA系统100可以预先生成和存储提供给加速器120的矩阵表示,以使得QA系统100 每次处理输入问题时不重新计算矩阵表示。仅当响应于授权用户以周期性间隔的请求而使 QA系统100针对其运行的语料库发生变化时,或者当发生另一个指定事件时,才重新计算矩 阵表示122。加速器120可以接收矩阵的多个表示,这些表示针对加速器120中在其上执行矩 阵运算的向量的不同稀疏度(或密度)而优化。例如,如在共同受让并且共同未决的序号为 14/635,007的美国专利申请中描述的,矩阵的CSR和CSC表示可以具备矩阵运算的不同迭 代,基于作为矩阵向量乘法运算的一部分而使矩阵与其相乘的向量的稀疏度(或密度),使 用这些表示中的不同表示在加速器中执行该矩阵运算。当执行迭代时,向量的密度可以增 加,从而使得需要从一个表示切换到另一个表示以便最大化运算效率。
[0081 ] 加速器120还从QA系统100接收输入到QA系统100的概念列表124,该概念列表124 提取自自然语言问题或其它信息源,其它信息源例如用于包括在语料库中的文档、作为个 性化分级操作的一部分的用户简档等。将概念列表124输入到加速器120,加速器120针对概 念列表操作以构造已提取概念的输入向量以在执行概念分析操作中使用。在某些示例性实 施例中,该概念分析操作涉及矩阵向量乘法的多次迭代,其中初始地,由加速器生成的输入 向量被乘以矩阵表不(例如CSC表不),并且产生的向量输出被用作下一次迭代的输入向量。 基于与矩阵相乘的向量的稀疏度(或密度),可以选择矩阵表示以便最大化操作效率,例如, 从在最初一组迭代期间使用CSC表示切换到在后续一组迭代期间使用CSR表示。迭代继续直 到确定输出向量已收敛,即,输出向量的变化低于指定阈值变化量。在收敛之后,得到的输 出向量表示与从输入问题提取的概念以及关系强度(由输出向量的向量元素中的值表示) 相关的一组概念。
[0082]因此,将以下工作卸载到与主机QA系统100并行操作的加速器120:该工作用于生 成相关概念到已提取概念(来自输入问题或其它信息源)的输出向量。主机QA系统100只需 要从输入问题或其它信息源(为了示例目的,假设其是输入问题)提取概念(这是QA系统100 已经执行的操作),并且将这些概念提供给加速器120。作为获取过程或其它预处理器处理 过程的一部分,主机QA系统100偶尔生成一个或多个概念矩阵表示,其频率相对很小,因为 语料库的不频繁变化需要概念矩阵表示的更新。因此,主机QA系统100被卸载,以使得加速 器120加速生成相关概念的输出向量的过程。
[0083] 因为加速器120具有有限的存储器大小,所以可以以批量方式执行概念分析操作 的处理,其中多批输入向量表示来自输入问题、用户简档或其它信息源的一个或多个已提 取概念,以使得加速器利用各种线程以便针对表示输入向量的各个部分的批执行概念分析 操作。每个批可以具有大小(输入向量数量),该大小例如基于加速器120的存储器大小来设 置。在一个示例性实施例中,加速器120是GPU,其具有能够处理批大小为32个输入向量的存 储器大小。在一个示例性实施例中,每个输入向量具有一个非0条目,其对应于来自信息源 的一个已提取概念。在其它示例性实施例中,批中的每个输入向量可以具有一个或多个非0 条目。在输入向量中利用单个非0条目的好处在于,它极大地简化针对该向量执行的矩阵-向量乘法运算,以使得仅在矩阵中的对应列/行中进行非0条目的列或行查找。
[0084] 加速器120可以在内部组合批的执行结果,以便生成相关概念的结果输出向量。组 合矩阵-向量乘法的部分乘积通常在所属技术领域中已知,并且因此不需要进一步详细地 解释。但是,值得注意的是,加速器120不将任何中间结果存储到主机QA系统100存储器或外 部存储系统,而是在加速器120内部维护数据,直到将相关概念的输出向量输出回到QA系统 100以便由QA系统流水线使用。
[0085]应认识到,在某些示例性实施例中,可以利用多个加速器120,其中每个加速器针 对概念矩阵表示122和/或概念列表124的一部分运行。在此类实施例中,处理的组合阶段可 以在加速器120之一(主加速器)、加速器的外部机构(未示出)或主机QA系统100中,组合来 自不同加速器120的结果。
[0086]图2是其中实现示例性实施例的各个方面的实例数据处理系统的框图。数据处理 系统200是计算机的一个实例,例如图1中的服务器104或客户机110,实现本发明示例性实 施例的过程的计算机可用代码或指令位于其中。在一个示例性实施例中,图2表示服务器计 算设备,例如服务器104,其实现增强的QA系统100和QA系统流水线108以便包括以下描述的 示例性实施例的其它机制。
[0087]在示出的实例中,数据处理系统200采用集线器架构,其包括北桥及存储控制器集 线器(NB/MCH)202和南桥及输入/输出(I/O)控制器集线器(SB/ICH)204。处理单元206、主存 储器208和图形处理器210连接到NB/MCH 202。图形处理器210通过图形加速端口(AGP)连接 到NB/MCH 202。图形处理器210例如可以是GPU,其可以在本说明的上下文中用作加速器。 [0088] 在示出的实例中,局域网(LAN)适配器212连接到SB/ICH 204。音频适配器216、键 盘及鼠标适配器220、调制解调器222、只读存储器(R0M)224、硬盘驱动器(HDD)226、CD-R0M 驱动器230、通用串行总线(USB)端口及其它通信端口 232以及PCI/PCIe设备234通过总线 238和总线240连接到SB/ICH SOLPCI/PCIe设备例如可以包括以太网适配器、附加卡,以及 用于笔记本计算机的PC卡。PCI使用卡总线控制器,而PCIe则不使用。ROM 224例如可以是闪 存基本输入/输出系统(BIOS)。
[0089] HDD 226和CD-ROM驱动器230通过总线240连接到SB/ICH 204 JDD 226和CD-ROM驱 动器230例如可以使用集成驱动电子设备(IDE)或串行高级技术附件(SATA)接口。超级1/0 (SI0)设备236连接到SB/ICH 204。
[0090] 操作系统在处理单元206上运行。操作系统协调和提供对图2中的数据处理系统 200中的不同组件的控制。作为客户机,操作系统是可从市面上购买的操作系统,例如 M iei*OSO ft、i ndo w s 。诸如Ja va?编程系统之类的面向对象的编程系统可以与操作系 统结合运行,并且从在数据处理系统200上执行的Java?程序或应用来提供对操作系统的调 用。
[0091] 作为服务器,数据处理系统200例如可以是lBM?eServer? Systemp?计算机系 统,其运行Advanced Interactive ExecutivedX? )操作系统或LINUX?操作系统。 数据处理系统200可以是对称多处理器(SMP)系统,其在处理单元206中包括多个处理器。备 选地,可以采用单处理器系统。
[0092]用于操作系统、面向对象的编程系统的指令以及应用或程序位于诸如HDD 226之 类的存储设备上,并且被加载到主存储器208中以便由处理单元206执行。本发明示例性实 施例的过程由处理单元206使用计算机可用程序代码执行,计算机可用程序代码例如位于 诸如主存储器208、R0M 224之类的存储器中,或者位于一个或多个外围设备226和230中。
[0093] 总线系统(例如图2中示出的总线238或总线240)包括一个或多个总线。当然,总线 系统可以使用任何类型的通信结构或架构实现,该结构或架构用于在连接到结构或架构的 不同组件或设备之间传输数据。通信单元(例如图2的调制解调器222或网络适配器212)包 括一个或多个用于发送和接收数据的设备。存储器例如可以是主存储器208、R0M 224或高 速缓存,例如在图2中的NB/MCH 202中发现的高速缓存。
[0094] 所属技术领域的普通技术人员将认识到,图1和2中示出的硬件根据实现而有所不 同。除了图1-2中示出的硬件或替代图1-2中示出的硬件,还可以使用其它内部硬件或外围 设备,例如闪存、等效非易失性存储器或光盘驱动器等。此外,示例性实施例的过程可以应 用于不同于前面提及的SMP系统的多处理器数据处理系统,而不偏离本发明的精神和范围。 [0095]此外,数据处理系统200可以采取多个不同数据处理系统中的任意一个的形式,包 括客户机计算设备、服务器计算设备、平板计算机、膝上型计算机、电话或其它通信设备、个 人数字助理(PDA)等。在某些示例性实例中,数据处理系统200可以是便携式计算设备,其具 备闪存以提供非易失性存储器以便例如存储操作系统文件和/或用户生成的数据。基本上, 数据处理系统200可以是没有架构限制的任何已知或以后开发的数据处理系统。
[0096]图3示出根据一个示例性实施例的用于处理输入问题的QA系统流水线。图3的QA系 统流水线例如可以实现为图1中的QA系统100的QA系统流水线108。应认识到,图3中示出的 QA系统流水线的各个阶段被实现为一个或多个软件引擎、组件等,它们具备用于实现由特 定阶段产生的功能的逻辑。使用此类软件引擎、组件等中的一个或多个实现每个阶段。软件 引擎、组件等在一个或多个数据处理系统或设备的一个或多个处理器上执行,并且使用存 储在一个或多个数据处理系统上的一个或多个数据存储设备、存储器等中的数据或者针对 该数据运行。图3的QA系统流水线例如在一个或多个阶段中被增强以便实现以下描述的示 例性实施例的改进机制,可以提供附加阶段以便实现改进机制,或者可以提供来自流水线 300的单独逻辑以便与流水线300对接并且实现示例性实施例的改进功能和操作。
[0097]如图3中所示,QA系统流水线300包括多个阶段310-380,QA系统通过这些阶段操作 以便分析输入问题并且生成最终响应。在初始问题输入阶段310,QA系统接收以自然语言格 式提出的输入问题。即,用户可以经由用户接口输入用户希望针对其获得答案的输入问题, 例如,"Who are Washington's closest advisors?(谁是华盛顿的最亲近顾问?)"。响应于 接收输入问题,QA系统流水线300的下一个阶段(即,问题和主题分析阶段320)使用自然语 言处理(NLP)技术解析输入问题以便从输入问题提取主要特性,并且根据类型(例如,名称、 日期,或者多个其它已定义主题中的任何一个)对主要特性进行分类。例如,在上面的实例 问题中,术语"who(谁)"可以与用于指示正在寻求某人的身份的"persons(人)"的主题关 联,"Wash ington (华盛顿)"可以被标识为与问题所关联的人的正确姓名,"c 1 〇sest (最亲 近)"可以被标识为指示接近度或关系的单词,并且"advisors(顾问)"可以指示名词或其它 语言主题。
[0098] 此外,提取的主要特性包括分类成问题特征的关键字和短语,这些问题特征例如 包括问题的焦点、问题的词法答案类型(LAT)等。如在此所指的,词法答案类型(LAT)是输入 问题中的单词或者从输入问题推断的单词,其指示答案类型并且独立于为该单词指定语 义。例如,在问题"What maneuver was invented in the 1500s to speed up the game and involves two pieces of the same color?( 16世纪发明了什么策略以加快游戏并且 涉及同一颜色的两块?)"中,LAT是字符串"maneuver(策略)"。问题的焦点是这样的问题部 分:如果由答案替换,则使问题成为独立语句。例如,在问题"What drug has been shown to relieve the symptoms of ADD with relatively few side effects?(什么药物已表 明可缓解ADD症状并具有相对较小的副作用?)"中,焦点是"drug(药物)",因为如果使用答 案替换该单词,则例如答案"Adderall(安非他明)"可以用于替换术语"drug"以便生成句子 "Adderall has been shown to relieve the symptoms of ADD with relatively few side effects.(安非他明已表明可缓解ADD症状并具有相对较小的副作用。)"。焦点通常但 并非始终包含LAT。另一方面,在许多情况下,可能不能从焦点推断有意义的LAT。
[0099] 再次参考图3,然后在问题分解阶段330中使用所标识的主要特性以便将问题分解 成一个或多个查询,这些查询应用于数据/信息语料库345以便生成一个或多个假设。以任 何已知或以后开发的查询语言(例如结构查询语言(SQL)等)生成查询。将查询应用于一个 或多个数据库,这些数据库存储有关构成数据/信息语料库345的电子文本、文档、文章、网 站等的信息。即,这些不同源本身、不同源集合等表示语料库345中的不同语料库347。可以 存在不同语料库347,它们基于取决于特定实现的不同准则针对不同文档集合被定义。例 如,可以针对不同主题、主旨类别、信息源等建立不同语料库。作为一个实例,第一语料库可 以与医疗保健文档关联,而第二语料库可以与金融文档关联。备选地,一个语料库可以是由 美国能源部发布的文档,而另一个语料库可以是IBM Redbooks文档。具有某种类似属性的 任何内容集合可以被视为语料库345中的一个语料库347。
[0100] 将查询应用于一个或多个数据库,这些数据库存储有关构成数据/信息语料库(例 如,图1中的数据语料库106)的电子文本、文档、文章、网站等的信息。在假设生成阶段340将 查询应用于数据/信息语料库,以便生成标识用于回答输入问题的可能假设的结果,然后可 以对这些结果进行评估。即,应用查询导致提取与特定查询准则匹配的数据/信息语料库的 各个部分。然后在假设生成阶段340中分析和使用语料库的这些部分,以便生成用于回答输 入问题的假设。这些假设在此也称为输入问题的"候选答案"。对于任何输入问题,在该阶段 340,可以具有数百个生成的假设或候选答案,可能需要对它们进行评估。
[0101] 在阶段350,QA系统流水线300然后执行深度分析和输入问题的语言与每个假设或 "候选答案"的语言的比较,以及执行证据评分以便评估特定假设是输入问题的正确答案的 可能性。如上所述,这涉及使用多种推理算法,每种推理算法对输入问题的语言和/或提供 支持或不支持假设的证据的语料库内容执行单独类型的分析。每种推理算法基于它执行的 分析生成得分,该得分指示通过应用查询提取的数据/信息语料库的个体部分的相关性度 量,以及对应假设的正确性度量,即假设中的置信度量。具有生成此类得分的各种方式,具 体取决于执行的特定分析。但是,一般来说,这些算法查找指示感兴趣的术语、短语或模式 的特定术语、短语或文本模式,并且确定匹配度,其中与较低匹配度相比,为较高匹配度提 供相对较高的得分。
[0102] 因此,例如,算法可以被配置为从输入问题查找精确术语或者在输入问题中查找 该术语的同义词(例如,术语"movie(电影)"的精确术语或同义词),并且基于这些精确术语 或同义词的使用频率生成得分。在此类情况下,将为精确匹配提供最高得分,而可以基于同 义词的相对分级为同义词提供较低得分,这种相对分级可以由主题专家(具有特定领域和 所用术语的知识的人)指定,或者从同义词在对应于领域的语料库中的使用频率自动确定。 因此,例如,为语料库内容(也称为证据或证据段落)中的术语"movie"的精确匹配提供最高 得分。可以为电影的同义词(例如"motion picture(电影)")提供较低得分,但仍然高于类 型"f ilm(电影)"或"moving picture show(电影)"的同义词。可以编辑每个证据段落的精 确匹配和同义词的实例并且将其用于定量函数,以便针对证据段落与输入问题的匹配度生 成得分。
[0103] 因此,例如,输入问题"What was the first movie?(第一部电影是什么?)"的假 设或候选答案是"The Horse in Motion(奔马)"。如果证据段落包含语句"The first motion picture ever made was'The Horse in Motion'in 1878by Eadweard Muybridge ? It was a movie of a horse running(有史以来的第一部电影是Eadweard Muybridge在1878年出品的"奔马"。这是关于奔跑的马的一部电影)",并且算法查找输入问 题焦点(即"movie")的精确匹配或同义词,则在证据段落的第二个句子中发现"movie"的精 确匹配,并且在证据段落的第一个句子中发现"movie"的高得分同义词(8卩"motion picture")。这可以与证据段落的进一步分析组合,以便标识候选答案的文本也存在于证据 段落中,即"The Horse in Motion"。可以组合这些因素以便为该证据段落提供相对高的得 分,作为候选答案"The Horse in Motion"是正确答案的支持证据。
[0104] 应认识到,这只是如何可以执行评分的一个简单实例。可以使用具有不同复杂性 的许多其它算法来针对候选答案和证据生成得分,而不偏离本发明的精神和范围。
[0105] 在合成阶段360,将由各种推理算法生成的大量得分合成为各种假设的置信度得 分或置信度量。该过程涉及将权重应用于各种得分,其中权重已通过训练由QA系统采用的 统计模型而确定和/或被动态更新。例如,与评估证据段落的发布日期的其它算法相比,可 以将用于由标识精确匹配术语和同义词的算法生成的得分的权重设置为相对较高。权重本 身可以由主题专家指定或者通过机器学习过程获得,这些机器学习过程评估特征证据段落 的意义及其相对于整体候选答案生成的重要性。
[0106] 根据通过训练QA系统生成的统计模型处理加权得分,该统计模型标识这样一种方 式:该方式可以用于组合这些得分以便针对个体假设或候选答案生成置信度得分或度量。 该置信度得分或度量概述QA系统关于通过输入问题推断候选答案(即,候选答案是输入问 题的正确答案)的证据而具有的置信度级别。
[0107]通过最终置信度合并和分级阶段370处理得到的置信度得分或度量,该阶段将置 信度得分和度量彼此比较、对照预定阈值比较它们、或者针对置信度得分执行任何其它分 析以便确定哪些假设/候选答案最可能是输入问题的正确答案。根据这些比较对假设/候选 答案进行分级以便生成分级假设/候选答案列表(以下简称为"候选答案")。在阶段380,从 分级候选答案列表,生成最终答案和置信度得分,或者最终一组候选答案和置信度得分,并 且经由图形用户接口或用于输出信息的其它机制,将它们输出到原始输入问题的提交者。
[0108] 如图3中所示,QA系统流水线300可以将已提取概念392的处理卸载到一个或多个 加速器390,这些已提取概念是作为阶段320的一部分生成的已提取特性的一部分。一个或 多个加速器390也从主机QA系统接收语料库矩阵表示394。这些语料库矩阵表示394是先前 由QA系统作为语料库获取操作的一部分生成的概念和概念之间关系的表示。在一个示例性 实施例中,语料库矩阵表示394包括CSC和CSR表示。尽管在示例性实施例中使用多个表示, 但应认识到,不需要针对向量的不同密度使用不同表示进行优化(如在共同未决的序号为 14/635,007的美国专利申请中描述的那样),而是可以使用单个概念矩阵表示。
[0109] 加速器390基于从输入问题310接收的已提取概念392生成输入向量,并且使用输 入向量针对一个或多个语料库矩阵表不394执行概念分析操作。加速器390将具有相关概念 和关系强度的输出向量输出到假设生成阶段340,该阶段340利用输出向量生成输入问题 310的候选答案。例如,输出向量指定什么是输入问题和/或用户简档(如果执行个性化分级 操作)中的概念的相关概念,并且因此,可以分析与语料库中的文档关联的类似向量以便标 识它们是否针对与当前信息源的输出向量相同的概念具有非0值。如果是,则可以根据非0 值对这些文档进行分级,以使得当生成候选答案时,对于信息源,输入向量中相关概念的较 尚值(和$父强相关)文档具有$父尚分级。
[0110] 应该注意,尽管针对将概念分析操作与由示例性实施例的加速器提供的加速一起 使用以便标识矩阵(语料库的网络/图)中与从输入问题提取的概念相关的概念,描述了上 面的示例性实施例,但本发明并不限于此。而是,其中使用矩阵运算进行概念分析和相关概 念标识的任何操作都可以实现示例性实施例的机制,而不偏离示例性实施例的精神和范 围。例如,可以从其它文档、网页、电子自然语言内容的各个部分等获得提取的概念和产生 的输入向量,而不是将表示从输入问题提取的概念的输入向量提交给QA系统。作为一个实 例,当获取文档或者将文档添加到语料库时,可以使用示例性实施例的机制从这些文档提 取概念并分析概念、标识已经存在于矩阵中的相关概念、并且扩展矩阵和网络/图以便包括 将新文档添加到语料库,例如方式为添加节点和边,修改边权重等。此外,在获取过程中,可 以针对每个文档、网页、自然语言内容部分等执行相关概念向量的这种标识,以便将相关概 念向量与知识源的该部分关联。然后可以使用与知识源的各个部分关联的向量快速标识与 知识源的这些部分对应的概念以选择这些部分,以便通过标识具有对应于在搜索查询、输 入问题或请求中指定的概念的非0值的向量,处理搜索查询、输入问题或对信息的其它请求 (例如个性化分级操作)。可以根据与在关联向量中指定的相关概念的关系强度,使用向量 修改知识源的这些部分的分级或基于知识源的这些部分返回的答案/结果的分级。当然,在 各个部分被标识为与从信息源提取的那些概念关联的概念相关之后,可以对知识源的各个 部分执行其它处理,例如进一步自然语言处理以便评估在知识源的各个部分中处理概念的 方式等。
[0111]如上所述,加速器390通过卸载主机QA系统并且与由主机QA系统执行的其它操作 并行执行这些概念分析操作,加速概念分析操作的执行。应认识到,在卸载主机QA系统中, 加速器390最小化主机QA系统与加速器390之间的数据通信。为了进一步示出益处以及根据 示例性实施例的机制的加速器的用户与这些加速器与基于主机系统的概念分析操作之间 的操作差异,现在参考图4和5。
[0112] 图4是示出用于使用主机系统和主机系统存储装置执行概念分析操作的一种方法 的实例图。如图4中所示,对于执行概念分析操作的基于主机的系统,主机系统执行用于执 行概念分析操作的所有操作,并且必须在执行后处理之前将中间结果存储到主存储器或主 机系统存储装置以便生成输出向量。即,如图4中所示,主机系统400从信息源410(例如,输 入问题、文档等)执行初始概念提取,并且生成初始输入向量412,初始输入向量412作为输 入被提供给概念分析操作引擎420。此外,主机系统400针对语料库生成或检索矩阵数据结 构414,并且也将矩阵数据结构414输入到概念分析操作引擎420。概念分析操作引擎420包 括以下逻辑:其针对输入向量412和矩阵数据结构414运行以便执行概念分析操作(其涉及 矩阵向量乘法运算的迭代)以便标识矩阵数据结构414中与在输入向量412中指定的概念相 关的概念。
[0113] 应认识到,输入向量412可以包括任何数量的已标识概念,并且一般而言范围可以 从20到超过3000个已标识概念。在某些示例性实施例中,输入向量412可以是同时包括N*M 输入矩阵的多个输入向量412中的一个。例如,在概念分析操作期间,N*M输入矩阵的每个输 入向量412可以作为单独矩阵向量乘法运算分别处理。矩阵数据结构414优选地表示N*N正 方稀疏矩阵,其可以包括数百万个概念及其关系(边)。
[0114] 已观察到,概念分析操作引擎420可能需要多次迭代以便执行概念分析操作。一般 而言,概念分析操作大约使用矩阵向量乘法运算的5次迭代来获得收敛结果,然而在某些情 况下可以使用更多或更少的迭代。在矩阵数据结构414表示数百万个概念及其关系,并且输 入向量(多个)412表示数千个已提取概念的情况下,执行这些多次迭代需要的处理资源相 当可观。
[0115] 由概念分析操作引擎420生成的结果包括一个或多个输出向量,这些输出向量指 定矩阵中与输入向量中的概念相关的概念。一个或多个输出向量中的每个非〇值指示相关 概念。值本身指示概念之间关系的强度。输出向量(多个)中的这些值由规范化引擎430规范 化,其中将结果存储在主机系统存储装置440的文件系统中。将结果存储在主机系统存储装 置440的文件系统中,因为现有机制未被设计为与有限大小的存储器一起使用,并且由概念 分析操作生成的中间数据结构可以由于大型输入矩阵和向量(多个)而非常大。
[0116] 作为后处理的一部分,后处理引擎450检索存储在主机系统存储装置440中的规范 化后的输出向量结果,并且针对输出向量结果执行分级操作。分级操作基本上根据输出向 量中的概念强度值对概念进行分级,以使得最高分级的概念比其它概念具有更高分级。后 处理引擎450然后输出最终N元素输出向量460,其表示与从信息源检索的概念相关的分级 概念列表。该N元素输出向量460可以与以下信息源关联:该信息源例如在与信息源关联的 元数据数据结构中、集成到信息源的数据结构中、存储在与信息源链接的单独数据结构中 等。例如,如果信息源是添加到文档语料库的文档,则由加速器生成的N元素向量可以与该 文档关联地存储,以供随后当搜索语料库以查找具有某些相关概念的文档时使用。
[0117] 应认识到,在某些示例性实施例中,可以针对信息语料库中的每个信息部分执行 该概念分析操作,以使得每个部分可以具有关联的N元素向量(N是概念数量)。这促进用于 使用N元素向量标识相关信息部分并对语料库执行搜索的不同操作。例如,可以针对语料库 中的不同信息部分(例如,文档)的N元素向量执行计算,以便确定哪些部分高度类似于彼 此。例如,可以评估两个文档的N元素向量中的非0强度概念的类似度的计算,以便判定这些 文档是否旨在描述类似的概念。关于肿瘤患者治疗的一个文档可以具有针对肿瘤概念具有 高强度值的N元素向量,而涉及加利福尼亚州麻疹爆发的另一个文档可能在其N元素向量中 没有肿瘤概念的高强度值,并且因此,通过比较N元素向量,可以判定这些文档是否类似 (即,处理类似的概念)。同样,涉及一流大学的癌症研究的文档可以具有包含许多肿瘤概念 的N元素向量,这些肿瘤概念具有的非0值对应于肿瘤患者治疗文档的肿瘤概念的那些非0 值,并且因此,将基于N元素向量的比较被确定为类似。还可以在输入问题、搜索查询、用户 简档等的相关概念输出向量与语料库中的各个信息部分之间执行这种方式的类似性,以便 例如回答输入问题,返回搜索结果,或者执行个性化分级操作。
[0118] 图5是示出根据一个示例性实施例的使用一个或多个加速器设备执行的概念分析 操作的实例图。如图5中所不,与图4中不出的操作相反,主机系统500不生成输入向量(多 个),并且不执行概念分析操作、规范化操作或后处理操作。此外,不将中间结果存储到主机 系统存储装置。相反,在加速器中执行和维护这些操作和中间结果。
[0119] 如图5中所示,主机系统500负责从信息源510提取概念列表512,并且将概念列表 512和一个或多个矩阵表示数据结构514提供给加速器520。加速器520包括初始化引擎522, 其针对概念列表512运行以便生成一个或多个向量523,这些向量又可以是共同构成从信息 源510提取的概念的N*M矩阵的一组输入向量523。将生成的输入向量(多个)523提供给概念 分析操作引擎524。概念分析操作引擎524针对输入向量(多个)523和矩阵表示数据结构514 运行以便执行矩阵向量乘法运算的迭代,矩阵向量乘法运算标识矩阵中与输入向量(多个) 5 2 3中的概念相关的概念。
[0120] 应认识到,针对来自输入向量(多个)523和/或矩阵表示数据结构514的多批数据 执行由初始化引擎522、概念分析操作引擎524和规范化引擎526执行的操作,其中批大小由 加速器520的存储器限制确定,加速器520包括存储器521,其用于在处理数据时存储数据。 因此,每个批可以由单独线程处理,其中所有批的总和等于矩阵和输入向量的总大小。在一 个示例性实施例中,将批大小设置为32个向量,这些向量从来自信息源的已提取概念的输 入向量生成。例如,输入向量可以指定从信息源提取的数十到数千个概念,并且可以将这些 概念分解成个体向量,它们具有由通过在加速器中执行线程处理的已提取概念中的一个或 一个小子集。因此,可以利用多个线程,每个线程处置从输入向量生成的一批向量中的不同 向量处理。可以以这种方式执行多个批,其中将处理每个批中的每个向量的结果与该批中 的其它向量的结果组合,并且组合每个批的结果以便生成最终结果。例如,如果输入向量表 示1000个已提取概念,则第一批可以具有前32个已提取概念(批的每个向量中的一个非0 值),而第二批可以包括概念33-65,第三批可以包括概念66-98等。因此,对于大型矩阵和输 入向量,使用海量数据并行性执行元素522-526的操作,并且可能针对基于已提取概念的输 入向量生成的多批向量运行数千个线程。
[0121] 由概念分析操作引擎524将概念分析操作的结果输出到规范化引擎526,规范化引 擎526规范化结果并且直接将规范化后的结果输出到后处理引擎528。后处理引擎528编辑 规范化后的结果并且执行分级操作,以便对结果进行分级并生成被输出到主机系统500的N 元素输出向量530。结果分级可以根据由针对每个批生成的输出向量中的非0值指定的强度 对结果进行分级,以便生成单个分级后的N元素输出向量530。
[0122] 应认识到,在上面的操作中,矩阵表示数据结构514只需加载到加速器中一次,并 且可以用作所有线程批量执行的基础。此外,在由于矩阵变化(并且因此,表示语料库的网 络/图的变化)而需要更新或修改矩阵表示数据结构514之前,加载的矩阵表示数据结构514 可以用于其它信息源510的后续处理。因此,对于由加速器执行的大多数操作,仅需来自主 机系统500的输入是来自信息源510的已提取概念列表512。此外,来自加速器520的输出是N 元素向量。因此,主机系统500与加速器520之间的数据传输被最小化。此外,因为在加速器 内部执行所有操作而不必利用主机系统资源,并且这些操作与由主机系统500执行的操作 并行执行,所以增加执行概念分析操作的速度。
[0123] 如上所述,可被执行以便改进概念分析操作的性能的一种优化是重新组织大稀疏 矩阵,以使得非〇条目彼此靠近集中。这最小化由于将矩阵的各个部分推测性地加载到存储 器中而导致的高速缓存未命中。在示例性实施例中,可以通过在生成矩阵表示之前使用此 类矩阵重新排序而获得类似的性能改进,因为将矩阵的各个部分加载到加速器的存储器中 以便每个线程针对其运行。存在于加载到存储器中的部分中的非〇条目越多,操作越有效。 用于执行此类非0条目集中的一种方式是利用非0条目的集群,如在共同未决并且共同受让 的序号为14/611,297的美国专利申请中描述的那样。图6和7示出这种基于集群的矩阵重新 排序操作,其可以与示例性实施例的机制一起使用以便将矩阵表示数据结构514提供给加 速器520。
[0124] 图6是示出根据一个示例性实施例的通过使用基于集群的矩阵重新排序操作获得 的矩阵条目排序的实例图。如图6中所示,作为示例性实施例机制的操作结果生成的重新排 序矩阵具有集中到对角线附近的集群610中的非0条目或元素(例如,集群612-616),并且远 离对角线的那些非〇条目(例如,集群622-624)被紧密地共同布置到对角线外的集群620中。 每个集群610、620(在图6中表示为矩阵的阴影区域)具有彼此松散关联的非0条目,这意味 着对应于这些条目或元素的节点与同一集群610、620中的其它节点具有的连接数量大于节 点与集群610、620外部节点具有的连接数量,例如,电影明星与其它电影明星具有的连接多 于与公众具有的连接,并且因此,电影明星将是集群。允许矩阵的非阴影区域630包括少量 的非〇条目或元素(以下称为"元素")。
[0125]即使针对具有接近无标度(near-scale-free)图拓扑的大型矩阵,也会实现图6中 示出的矩阵排序。如图6中所示,没有由于矩阵重新排序操作生成的显著非0元素块。因此, 已知重新排序算法(例如Cuth i 11 -McKee和分割算法)遇到的高速缓存效率和运行时执行方 面的改进限制对于示例性实施例的矩阵重新排序机制而言并不是问题。相反,矩阵重新排 序机制针对大型接近无标度图拓扑矩阵实现了 Cuthill-McKee算法寻求的理想重新排序, 其中仅存在一些对角线外的集群620,但这些集群被集中到它们自己的集群620中。
[0126] 这种沿着对角线组织非0元素的集群610、620的益处是在矩阵运算期间减少了高 速缓存未命中。即,当执行矩阵乘法运算时,矩阵乘法运算通常在矩阵中查找非〇元素。因为 这些非0元素被集中到集群610、620中,所以当集群被加载到高速缓冲存储器中时,发生更 多高速缓存命中,而高速缓存未命中更少。对于沿着重新排序后的矩阵的对角线定位的集 群610而言尤为如此,其中即使当额外集群被加载到高速缓冲存储器中时,集群也彼此接 近。即使对于远离对角线的那些非〇元素,这些非〇元素中的大多数也被聚集在对角线外的 集群620中,以使得当这些集群被加载到加速器520的高速缓冲存储器中时,当访问输入/输 出向量中的对应条目时存在更少的高速缓存未命中。尽管某些非〇元素未在集群610、620中 (即,位于重新排序后的矩阵的非阴影区域630中),但通过集群获得的效率增加超过未位于 集群610、620中的相对较少的非0元素。
[0127] 示例性实施例的机制的集群方法将非0元素集中到紧密关联的集群610、620中,这 与已知的Cuthill-McKee算法相反,该算法更多地涉及图距离,如由Cuthill-McKee算法中 使用的各种级别所表示的那样。因为Cuthill-McKee更多地涉及图距离,所以可能具有大型 非〇元素块,它们不会改进高速缓存效率,如上面讨论的那样。此外,对于分割算法,问题是 查找分离的数据集,以使得如果从矩阵中取出数据集,则其余数据将被连接。再次地,这可 以导致大型非〇元素块,它们不会改进高速缓存效率,如上面讨论的那样。因为示例性实施 例的机制使用紧密关联的集群610、620,所以大型非0元素块的可能性显著降低。此外,因为 示例性实施例的机制组织集群610、620以便减少跨集群连接和跨集群连接长度,所以集群 610、620以紧凑配置被组织在重新排序后的矩阵中,导致更有效地将非0元素加载到高速缓 冲存储器中,从而减少高速缓存未命中。
[0128] 为了例示通过实现示例性实施例的机制获得的效率增加量,考虑以下表1,表1示 出稀疏矩阵与向量乘法基准的结果,其用于评估具有和没有示例性实施例的矩阵重新排序 机制的Intel Nehalem处理器上的高速缓存未命中数量。
[0129]
[0131] 表1-稀疏矩阵与向量乘法基准
[0132] 该表的每行表示硬件计数器。第一行是指令总数。第二行是存储器加载指令的数 量。第三行是L2高速缓存未命中的数量。第四行是L3高速缓存未命中的数量,它们最昂贵并 且在运行时中占据主要地位。应该注意,通过使用示例性实施例的重新排序机制,L3高速缓 存未命中减少了几乎一半。通过示例性实施例的重新排序机制,测量的运行时执行也减少 了几乎一半,这远优于通过Cuthi 11-McKee或分割算法实现的10 %改进。
[0133] 示出通过示例性实施例的基于集群的矩阵重新排序机制获得的结果之后,以下是 这些机制和作为这种基于集群的矩阵重新排序的一部分执行的操作的更详细讨论。应认识 到,以下讨论涉及用于实现基于集群的矩阵重新排序的一个示例性实施例并且并非旨在作 为限制,而是例示用于执行这种重新排序的一种实例方法和机制。如所属技术领域的普通 技术人员鉴于本说明将显而易见的是,可以对示例性实施例做出许多修改而不偏离本发明 的精神和范围。
[0134] 图7是示出根据一个示例性实施例的基于集群的实例矩阵重新排序操作的流程 图。图7中示出的基于集群的矩阵重新排序操作可以以专门配置的硬件(其被配置为实现以 下描述的操作)、在硬件上执行并且被配置为实现这些操作的软件,或者专门配置的硬件和 在硬件上执行的软件的任意组合来实现。在一个示例性实施例中,图7中示出的操作在主机 系统中作为语料库获取或预处理操作的一部分执行,以便重新组织表示语料库中的概念及 其关系的矩阵,从而实现图6中示出的组织。这种重新组织后的矩阵然后可以用于生成一个 或多个矩阵表示数据结构,将这些数据结构提供给示例性实施例的加速器以便加速概念分 析操作,如先前讨论的那样。
[0135] 为了与图7中给出的操作说明关联地示出示例性实施例的操作,将使用其中矩阵M 包括对应于社交网络服务用户的索引或节点的一个实例,其中对应于索引或节点的非0元 素指示由索引或节点表示的用户之间的关系。应认识到,这只是一个实例,并且示例性实施 例的机制可以与针对具有接近无标度图拓扑的任何大型矩阵执行的任何矩阵运算一起使 用。例如,代替社交网络服务用户,矩阵M可以具有节点和边,节点表示在信息语料库中发现 的概念,边表示这些概念之间的已标识关系。
[0136] 如图7中所示,操作开始于分析输入矩阵M以便标识矩阵M中的团(clique)(步骤 710)。输入矩阵M可以是一组收集的数据,该数据表示特定信息对象、概念、实体等之间的连 接或关系,这些信息对象、概念、实体等被指定为矩阵M的索引。例如,在社交网络环境中,矩 阵M的索引可以表示社交网络服务用户、其属性、在用户之间交换的通信等。在问答环境或 因特网搜索环境中,矩阵M的索引可以表示信息语料库中的文档的特性(概念),该信息语料 库被用作执行问答或因特网搜索的基础。因此,输入矩阵M中的索引表示适合于执行知识提 取、推理或其它分析操作的任何信息、概念或实体。两个索引的交叉点处的条目存储值,该 值指示由交叉的索引表示的信息、概念或实体之间存在或不存在关系。
[0137] 团被定义为矩阵的一组行和列索引(或节点),以使得它们的子矩阵包括所有非0 条目。例如,如果在矩阵M中表示的第一用户连接到第二用户并且反之亦然,则两个用户可 以构成团。可以通过以下操作标识团:使用起始节点或索引,并且标识矩阵M中连接到该起 始节点或索引的其它节点或索引并反之亦然,即,索引的交集标识矩阵M中的非0值元素。可 以针对连接到起始节点或索引的每个节点或索引重复该过程,其中某些连接的节点或索引 (以下简称为"节点")可以是团的一部分,而其它则不是。即,例如,如果John Smith(约翰? 史密斯)是起始节点并且与Pete Johnson(皮特?约翰逊)具有"friend(朋友)"连接,并且 Pete Johnson与John Smith具有"friend"连接,则John Smith和Pete Johnson可以构成 团。如果Pete Johnson与John Smith没有连接,贝ijPete Johnson不被包括在团中,尽管如以 下讨论的那样,他可能被包括在后续生成的团中。
[0138] 可以针对输入矩阵M中的每个节点重复生成团的过程,以使得生成多个团。可以在 配置参数中指定最小大小要求,其指示对于要维护的团,必须存在于团中的最小节点数量, 以便进一步用作图7中的其它操作的起始点,例如,团必须具有至少20个节点,其中丢弃具 有少于20个节点的较小大小的团。
[0139] 生成团作为矩阵的已连接节点的初始集群之后,执行集群发展操作以便从每个团 发展集群(步骤720)。在将团发展成集群中,将已经不是团一部分的矩阵节点指定给集群。 节点到集群的指定基于对应行/列与已经在集群中的节点具有的连接数量。即,将节点添加 到该节点与其具有最多连接的集群,即,非〇值元素与集群的其它节点关联。这可以使某些 节点没有集群,前提是节点与其它节点没有任何连接或者与其它节点具有相对较少的连 接。随着节点加入集群,更新表示该集群的数据结构并且将新添加的节点用作添加额外节 点的基础,例如,如果将John Smith添加到表示Mary Monroe(玛丽?梦露)的朋友的用户集 群,贝1JJohn Smith的朋友可以进一步用作判定是否应该将这些朋友中的任意一个添加到 Mary Monroe的朋友集群的基础。
[0140]这样,集群从初始的团发展成较大集群。可以在基于集群的矩阵重新排序机制的 配置参数中设置集群的最大集群大小。可以根据其中实现基于集群的矩阵重新排序机制的 计算架构中的存储层次结构参数(例如,高速缓存大小)设置最大集群大小。例如,可以将集 群最大大小设置为等于架构中的特定高速缓存大小的某一比例的大小,例如,L3高速缓存 大小的X%,或者作为另一个实例,加速器520的存储器大小。
[0141]在已处理矩阵的每个非0元素并且以上述方式将对应节点添加到集群之后,可以 通过允许将节点重新指定给其它集群而完善集群(步骤730)。例如,可以分析每个集群的节 点,以便判定它们与其它集群的节点具有的连接是否多于与其当前指定的集群中的节点具 有的连接。如果集群A中的某个节点与集群B中的节点具有更多连接(非0元素),则可以将该 节点重新指定给集群B。响应于确定重新指定将导致跨集群连接(或边)的总数减少而不违 反集群最大大小限制,基于集群的矩阵重新排序机制可以允许重新指定。因此,如果集群B 已经处于最大大小,则可以拒绝重新指定。此外,如果重新指定未减少跨集群连接总数,则 可以拒绝重新指定。可以针对在步骤720中生成的每个集群的每个节点执行这种完善。 [0142]在步骤730中完善节点的集群之后,对产生的集群进行排序以便最小化跨集群连 接(或边)的总长度,即,最小化节点条目距矩阵的对角线的远离程度(步骤740)。此外,作为 该操作的一部分,根据跨集群连接的两端节点分布来串接该连接,即,最小化该连接的两个 节点之间的连接长度。该操作可以实现为动态编程算法,所述动态编程算法每次优化一个 部分解,并且逐集群地递增该部分解,直到所有集群均被排序为止。
[0143] 尽管不是必需而是可选操作,但可以在集群中对有序集群中的节点本身进行局部 排序(步骤750)。集群的这种局部排序移动非0条目以使其更接近集群中的对角线,并且移 动具有跨集群连接的节点以使其更接近集群的边界。即,当在集群中排序时,如果集群中的 矩阵节点与在该集群之前排序的其它集群的节点具有连接(非〇元素),则节点位于该集群 中的前面位置(朝向"前端"),以使得节点的跨集群非〇更接近重新排序后的矩阵的对角线。 以同样的方式,如果节点与在该集群之后排序的其它集群具有连接(非〇元素),则节点位于 该集群中的后面位置(朝向"后端")。在局域级别,可以通过执行如上讨论的相同操作(步骤 710-740)但针对局域集群执行,实现集群中的此类重新排序,或者可以使用其它已知算法 对非〇元素进行重新排序,例如Cuthi 11-McKee或分割算法。应该注意,可以针对个体集群使 用已知算法以便实现集群内重新组织,因为集群是相对较小并且更强烈连接的子图(并非 如稀疏填充的那样),以使得高速缓存效率在重新排序算法之间没有大的差异。
[0144] 应认识到,当执行该重新排序过程或者在完成该重新排序过程之后,更新查找表 中的向量以便表示已移动的元素的新位置。例如,查找表可以包括具有原始矩阵M的索引位 置的第一向量以及具有在执行重新排序之后的新位置的第二向量,其中指针从一个向量条 目到另一个向量条目以便允许将元素的原始位置映射到其在重新排序后的矩阵中的新位 置。可以输出该查找表和重新排序后的矩阵以便用于执行矩阵运算,并且最后,执行知识提 取操作、推理操作或其它分析操作(步骤760)。
[0145] 在运行时操作期间,输出查找表和重新排序后的矩阵可以用于生成矩阵表示,以 便用于执行矩阵运算作为知识操作(即,知识提取、推理、分析等)的一部分,在上面加速器 520的情况下,知识操作可以是在加速器520中执行的概念分析操作(步骤770)。然后可以输 出该知识操作的结果(步骤780),例如可以由加速器输出N元素向量。因此,示例性实施例的 机制专门配置在其上实现这些机制的计算设备,以便专门执行这种基于集群的矩阵排序操 作,该操作不由通用计算设备执行,并且其改进计算设备的操作和功能。此外,示例性实施 例的机制通过在矩阵运算期间增加计算设备的高速缓存效率,修改在其上实现这些机制的 计算设备的功能和性能。
[0146] 应认识到,可以在运行时矩阵运算期间使用重新排序后的矩阵和查找表之前,实 现步骤710-760。即,这些步骤710-760可以用于矩阵的预处理,其中将得到的重新排序后的 矩阵和查找表输出到运行时系统组件以便用于执行其运行时操作。这样,每次在运行时期 间执行矩阵运算(其被表示为步骤770-780)时,不需要对矩阵进行重新排序。将此应用于图 5中的加速器520,主机系统500可以将步骤710-760作为预处理操作执行,而基于输入到加 速器520的矩阵表示,在加速器520中执行步骤770-780,基于重新排序后的矩阵生成该矩阵 表不。
[0147]也如上所述,加速器520可以接收一个或多个矩阵表示数据结构作为输入,这些数 据结构以压缩格式表示矩阵。压缩格式专注于表示矩阵中的非0值,而假设矩阵中未以压缩 格式表示的任何条目是矩阵中的0条目。存在可以使用的各种类型的格式,包括Yale(耶鲁) 稀疏矩阵格式、CSR、CSC等。如在共同未决并且共同受让的序号为14/635,007的美国专利申 请中认识到的,可以通过根据被乘数向量的稀疏度(或密度),动态修改用于执行构成概念 分析操作的矩阵向量乘法运算的迭代的表示,实现概念分析操作的有效执行。因此,在某些 示例性实施例中,可以使用单个矩阵表示,其针对矩阵表示实现单一压缩格式,例如Yale、 CSR、CSC或另一种已知或以后开发的压缩格式。在其它示例性实施例中,可以将具有不同压 缩格式的多个矩阵表示数据结构提供给加速器520,以使得加速器基于确定的被乘数向量 稀疏度(或密度),动态选择矩阵表示数据结构。
[0148] 例如,已认识到,CSR格式化矩阵更适合于稠密向量(即,具有的非0值多于0值的向 量)的矩阵向量乘法运算的并行执行。这是因为CSR逐行对矩阵的非0值进行排序,并且允许 将行的非〇值和与行相乘的向量的值分组在一起。因此,可以将行与向量元素的每个乘法分 配给不同工作方(worker ),例如加速器520中的不同线程。
[0149] 例如,图8A示出使用矩阵的紧凑稀疏行(CSR)格式化数据结构执行的矩阵向量乘 法运算以及用于执行部分矩阵向量乘法运算的示例伪代码。如图8A中所示,矩阵A 810乘以 向量X 820以使得矩阵向量乘法运算的核心是y(i)=y(i) + (A(i,j)*x( j)),其中再次i是行 索引,j是列索引,y是矩阵向量乘法运算的部分结果,A(i,j)是矩阵A中i,j处的条目,并且x (j) 是向量X中对应于列索弓丨j的值。
[0150] 如图8A中所示,矩阵A 810的数据结构表示830包括值(val)数组或向量832、列索 弓丨(ind)数组或向量834,以及行指针(ptr)数组或向量836。val数组832存储矩阵A中非0条 目的值(从左到右,然后从上到下)。因此,矩阵A的行0中的非0值首先出现(如由阴影图案所 示),然后出现行1、行2等中的非0值。ind数组834存储val数组832中的对应值的列索引。ptr 数组836存储指向针对ind数组834中的值开始行的位置的指针。
[0151] 如用于执行部分矩阵向量乘法运算的伪代码中所示,对于每行i,并且对于ptr数 组836中的每个指针值k,部分矩阵向量乘法运算结果被生成为y[i]=y[i]+val[k]*x[ind
[k] ],基本上针对矩阵A的每行计算上述矩阵向量相乘核心。结果是加权行的总和。应该注 意,与每行关联的计算可以基本上同时并行执行,并且因此,可以分配给不同工作方。
[0152] 图8B示出使用矩阵的紧凑稀疏列(CSC)格式化数据结构执行的矩阵向量乘法运算 以及用于执行部分矩阵向量乘法运算的示例伪代码。如图8B中所示,矩阵A 840乘以向量X 850以使得矩阵向量乘法运算的核心再次是y (;〇=7(;〇 + (4(;[,」)*1(」)),其中再次;[是行索 引,j是列索引,y是矩阵向量乘法运算的部分结果,A(i,j)是矩阵A中i,j处的条目,并且x (j) 是向量X中对应于列索弓丨j的值。
[0153] 如图8B中所示,矩阵A 840的数据结构表示860包括值(val)数组或向量862、行索 弓丨(ind)数组或向量864,以及列指针(ptr)数组或向量866。val数组862存储矩阵A中非0条 目的值(从左到右,然后从上到下)。因此,矩阵A的行0中的非0值首先出现(如由阴影图案所 示),然后出现行1、行2等中的非0值。ind数组864存储val数组862中的对应值的行索引。ptr 数组866存储指向针对ind数组864中的值开始列的位置的指针。
[0154]如用于执行部分矩阵向量乘法运算的伪代码中所示,对于每列i,并且对于ptr数 组866中的每个指针值k,部分矩阵向量乘法运算结果被生成为y[ind[k]]=y[ind[k]]+val
[k] *x[k],基本上针对矩阵A的每列计算上述矩阵向量相乘核心。这导致加权列的总和。应 该注意,可以分配与每个向量值x[k]关联的计算以便少量非0x[k]值利用叠加。因为x向量 可以由许多单条目向量的总和表示,所以可以简单地将这些向量的对应输出(y[])相加在 一起以便获得最终输出向量。
[0155] 因此,尽管CSR和CSC格式化数据结构可以用于在存储器中以紧凑方式表示大型稀 疏矩阵,但基于在矩阵向量乘法运算中与矩阵相乘的向量的稀疏度,这些格式的每一种针 对数据处理系统中的并行执行提供不同的效率级别。矩阵的CSR表示适合于稠密向量X的并 行执行并且更有效,而矩阵的CSC表示适合于稀疏向量X并且更有效。示例性实施例可以利 用格式效率方面的这种差异提供一种用于执行矩阵向量乘法运算的混合方法。可以根据被 乘数向量的稀疏度(或密度),选择在示例性实施例中用于加速器520中的概念分析操作的 特定迭代的矩阵表示。
[0156] 因为用于从大型网络或矩阵获得信息的知识提取、信息提取、关系分析和其它复 杂过程利用矩阵运算(其包括矩阵向量乘法运算)的多次迭代,所以矩阵与其相乘的向量的 密度往往随着后续迭代而增加。因此,向量X在过程的初始迭代中可以相当稀疏,而在随后 迭代中向量X可以变得更稠密。例如,初始迭代可以确定"what concepts are related to concept A(什么概念与概念A相关)",这可以通过矩阵M乘以向量X来确定,其中向量中非0 值的条目是对应于概念A的条目。该操作可以输出结果作为具有多个非0元素的输出向量Y。 为了确定何种其它概念可以与概念A相关,需要矩阵M乘以向量Y以便确定何种概念与向量Y 中的概念相关。因此,可以生成输出向量Z,其包括甚至更大的一组非0元素。这可以一直继 续,直到输出向量与前一个输出向量的非0元素数量的差收敛,即,不超过预定阈值(在该点 过程完成),并且结果是向量输出的组合。因此,可以看到,随着向量X、Y和Z等随着过程的每 次后续迭代而变得更稠密,不同矩阵表示可以更有效用于后续迭代的并行执行。
[0157] 在某些示例性实施例中,示例性实施例通过提供预定迭代次数(其中使用第一矩 阵表示,并且随后在后续迭代期间切换到第二矩阵表示),或者提供用于评估在过程迭代期 间执行的矩阵向量乘法运算的向量稀疏度的机制(其中使用阈值稀疏度值判定是否应该执 行矩阵表示的切换),动态修改在针对大型矩阵运行的概念分析操作的迭代期间使用的矩 阵表示。做出矩阵表示的选择,以便最大化被执行的部分矩阵向量乘法运算的并行执行。这 种动态选择在共同受让并且共同未决的序号为14/635,007的美国专利申请中更详细地加 以描述,但在以下流程图中概述以便例示可如何在示例性实施例的加速器520中实现该过 程。
[0158] 图9是示出根据一个示例性实施例的实例混合表示矩阵向量乘法运算的流程图。 应认识到,使用图9中示出的过程,操作910-920可以由主机系统500执行,其中操作的其余 部分由一个或多个加速器520代表主机系统执行。
[0159] 如图9中所示,操作开始于接收矩阵,该矩阵是执行矩阵向量乘法运算的基础(步 骤910)。该矩阵是大型数据集的表示,该大型数据集又可以表示实体、概念、信息等之间的 许多不同类型的关系,具体取决于其中实现示例性实施例的机制的特定系统。例如,在文档 语料库的一个或多个电子文档中,矩阵可以表示概念和概念之间关系,问答(QA)系统(例如 可从位于纽约阿蒙克的国际商业机器(IBM)公司获得的IBM Watson? QA系统)针对该文档 语料库运行。在此类情况下,矩阵可以作为获取操作的一部分生成,在该获取操作中QA系统 获取语料库以便用于执行问答操作。概念及其关系的网络或图可以具有表示概念的节点和 表示概念之间关系的边,其中这些关系的强度由与边关联的特定值来指示。然后可以将该 网络或图转换为矩阵表示,其中概念(节点)是矩阵的索引,而边被表示为矩阵中位置处的 值。
[0160] 接收该矩阵作为输入之后,示例性实施例的机制生成该矩阵的多个压缩表示数据 结构,每个压缩表示数据结构用于该矩阵的不同类型压缩表示(步骤920)。压缩表示以压缩 方式表示矩阵,优选地通过将表示专注于指定矩阵中的非〇值,并且假设未由压缩表示所表 示的任何值是0值。例如,在一个示例性实施例中,多个压缩表示包括CSR表示和CSC表示。还 可以使用其它表示,例如包括但不限于Yale稀疏矩阵表示。在某些示例性实施例中,压缩表 示将矩阵表示为多个数组或向量,这些数组或向量专注于输入矩阵中存在的非〇值。
[0161] 基于诸如文档、输入问题之类的信息源生成向量,其中向量指定感兴趣的实体、概 念、信息等(步骤930)。例如,向量可以针对不同概念具有多个条目,这些条目可以是评估矩 阵的基础,其中将这些条目中的一个设置为非〇值以便指示感兴趣的特定概念,例如图9中 的概念。例如,如果过程是标识可以与矩阵中的概念i相关的所有概念,则可以将概念i的向 量条目设置为非〇值,以使得当向量乘以矩阵时,仅矩阵中与概念i关联的那些非〇值将在输 出向量中生成非〇输出,即,仅那些概念直接与概念i相关,并且因此,与概念i具有边或关系 将导致输出非0值。
[0162] 对于过程的一组初始迭代,选择第一矩阵表示数据结构以便用于执行部分矩阵向 量乘法运算(步骤940)。在一个示例性实施例中,该第一矩阵表示可以是CSC矩阵表示数据 结构,如上讨论的,其对于稀疏向量是高效的。例如,对于在向量中具有单个非0值(例如,概 念i)的向量输入,在过程的第一次迭代942期间,可以选择CSC矩阵表示数据结构,并且可以 执行基于CSC的稀疏矩阵乘法运算以便生成部分矩阵向量乘法输出。备选地,因为向量仅具 有单个非〇值,所以可以在CSC形成数据结构中执行查找以便获得第i个向量,然后使用该向 量作为第一次迭代的部分矩阵向量乘法运算的输出。
[0163] 对于过程的第二次迭代944,CSC表示数据结构可以再次用于通过使用第一次迭代 的向量输出作为与该第二次迭代的矩阵相乘的向量,针对第二次迭代执行部分矩阵向量乘 法运算。在该迭代期间,生成CSC表示数据结构(其基于第一次迭代的输出向量)的列的加权 总和。如上面针对图8B的CSC表示说明中所述,可以针对x [ k ]中的少量非0分配x [ k ]评估,其 中结果是加权列的总和。因此,可以使用多个工作方并行化第二次迭代944。
[0164] 如图9中所示,在其中使用第一矩阵表示数据结构执行部分矩阵向量乘法运算(步 骤940)的一组初始迭代之后,使用第二矩阵表示数据结构(针对不同工作方将该结构分为 多个部分)以分布/并行方式执行矩阵向量乘法运算(步骤950)。例如,在一个示例性实施例 中,第二矩阵表示数据结构可以是矩阵的CSR表示。如上面针对图8A讨论的,可以将矩阵的 不同行的部分矩阵向量乘法运算分配给大量工作方,以使得可以基本上同时执行针对多个 行的计算。
[0165] 在此,除了上面步骤940的并行化之外,也可以使用多个工作方(线程)并行执行步 骤950。因此,通过选择适合于矩阵向量乘法运算迭代和整体过程中涉及的向量的特定稀疏 度的压缩矩阵表示,最大化矩阵向量乘法运算的并行化。工作方可以是同一加速器520中的 单独线程,或者当使用多个加速器时,可以是不同加速器520中的不同线程。
[0166] 可以重复并行部分矩阵向量乘法运算950直到过程的迭代收敛(步骤960)。基于监 视输出向量的变化,迭代通常收敛(步骤960)。如果输出向量变化在相对术语和大小方面变 得很小,则迭代被视为收敛,并且系统生成输出向量(步骤970)。基于通常表示测试例的基 准集,还可以将迭代收敛设置为固定迭代次数。例如,可以基于基准测试将迭代次数设置为 5,其中在执行第五次迭代时生成最终输出向量。
[0167] 然后输出从迭代收敛生成的结果向量输出作为过程的最终结果(步骤970)。例如, 如果过程尝试发现与概念A相关的概念,则产生的向量输出将在向量(其对应于直接或间接 与概念A相关的概念)中的每个条目中具有非0值,如从矩阵向量乘法运算的多次迭代确定 的那样。如先前讨论的,针对示例性实施例的加速器520,可以将由该过程生成的最终结果 输出提供给规范化引擎526以便规范化,并且可以将产生的规范化后的输出提供给后处理 引擎528以便在将N元素向量530结果返回到主机系统500之前进一步处理。
[0168] 尽管图9示出其中固定次数的初始迭代使用第一压缩矩阵表示数据结构,而后续 迭代使用第二压缩矩阵表示的示例性实施例,但示例性实施例并不限于此。相反,可以基于 输入向量稀疏度的评估,动态执行从一个压缩矩阵表示到另一个压缩矩阵表示的切换。应 认识到,在迭代的矩阵向量乘法运算中,输入向量是前一次迭代的输出向量。因此,当随着 每次迭代而使输入向量稀疏度减小并且输入向量变得更稠密时,压缩矩阵表示可以动态从 一个压缩矩阵表示切换到另一个压缩矩阵表示。从向量密度的角度来看,当随着每次迭代 而使输入向量密度增加时,可以动态切换压缩矩阵表示。
[0169] 图10是示出根据一个示例性实施例的用于基于使用混合矩阵表示机制确定输入 向量的稀疏度/密度,动态修改用于矩阵运算迭代的压缩矩阵表示的实例操作的流程图。如 图10中所示,操作再次开始于接收是执行矩阵向量乘法运算的基础的矩阵(步骤1010)。再 次生成和存储矩阵的多个压缩表示数据结构(每个压缩表示数据结构用于矩阵的不同类型 的压缩表示)以便用于执行矩阵运算(步骤1020)。在初始迭代期间,以类似于上面图9中的 步骤930的方式生成输入向量(步骤1030)。
[0170] 然后启动矩阵运算的下一次迭代(步骤1040)。在矩阵运算的开始,"下一次迭代" 是第一次迭代并且使用在步骤1030中输入的向量。在后续迭代中,输入向量将是从矩阵运 算的前一次迭代生成的输出向量。
[0171] 计算输入向量的稀疏度(或备选地密度)并且将其与一个或多个稀疏度(或密度) 阈值相比较(步骤1050)。应认识到,稀疏度和密度是相同特征的两个相对方面。它们均衡量 输入向量中的〇值与非〇值之间的关系。当输入向量中的〇值数量大于非〇值数量时,输入向 量更稀疏或不太稠密。当输入向量中的〇值数量小于输入向量中的非〇值数量时,则输入向 量不太稀疏或更稠密。因此,可以在该运算中评估稀疏度或密度。以下,为了示例目的,将假 设使用稀疏度。
[0172] 基于比较结果,选择对应压缩矩阵表示数据结构以便与当前迭代一起使用(步骤 1060)。例如,如果输入向量的稀疏度等于或大于稀疏度阈值(即,向量足够稀疏),则选择第 一压缩矩阵表示数据结构(例如,CSC)以便在本迭代期间使用。但是,如果输入向量的稀疏 度小于稀疏度阈值(即,输入向量稠密),则选择第二压缩矩阵表示数据结构(例如,CSR)以 便在本迭代期间使用。当然,这可以基于其它阈值扩展到其它类型的压缩矩阵表示,以使得 当密度继续增加时,可以选择适合于在更高密度输入向量处的并行化执行的其它压缩矩阵 表不。
[0173] 然后使用选定压缩矩阵表示数据结构,以并行方式执行矩阵运算的迭代(步骤 1070)。判定迭代是否已收敛(步骤1080),并且如果未收敛,则操作返回到步骤1040,其中输 入向量现在是前一次迭代的输出向量。否则,如果迭代已收敛,则输出向量被生成为在迭代 期间执行的部分矩阵向量乘法运算的输出向量的聚合(步骤1090)。因此,示例性实施例可 以进一步利用基于混合压缩矩阵表示的矩阵向量乘法运算机制,其极大地增加并行执行矩 阵向量乘法运算的可能性,并且因此,增加执行整体矩阵运算或处理的效率。
[0174] 图11是示出根据一个示例性实施例的用于使用一个或多个加速器设备执行概念 分析操作的实例操作的流程图。出于本说明的目的,假设矩阵已经被预处理以便生成矩阵 的一个或多个压缩格式表示,例如CSC格式化表示和CSR格式化表示。如上所述,相对不太频 繁地执行此操作。
[0175] 如图11中所示,操作开始于接收信息源并且提取在信息源中标识的概念列表(步 骤1110)。将概念列表与一个或多个矩阵表不数据结构一起发送到加速器(如果加速器尚未 加载矩阵表示数据结构)(步骤1120)。由加速器的初始化引擎处理概念列表以便生成一个 或多个输入向量(步骤1130)。将一个或多个输入向量与一个或多个矩阵表示数据结构一起 使用以便执行概念分析操作(步骤1140)。如上面讨论的,该概念分析操作可以涉及矩阵向 量乘法运算的多次迭代,其中初始迭代可以利用一个或多个输入向量以及所述矩阵表示数 据结构之一,并且后续迭代可以利用从前一次迭代产生的向量以及同一或另一个矩阵表示 数据结构,具体取决于所使用的向量的密度。可以以并行方式,通过多个线程使用批处理执 行该概念分析操作。
[0176] 由加速器的规范化引擎规范化由概念分析操作生成的结果(步骤1150)。然后由加 速器的后处理引擎处理规范化后的结果(步骤1160),以便生成和输出N元素向量(步骤 1170)。将N元素向量输出到主机系统,主机系统利用N元素向量在主机系统中执行知识提 取、推理或其它分析操作(步骤1180)。操作然后结束。
[0177] 因此,示例性实施例提供了用于改进概念分析操作的执行的机制,以便与自然语 言处理(NLP)系统、知识提取系统等一起使用。具体地说,在某些示例性实施例中,所述机制 用作问答(QA)系统(例如IBM Watson? QA系统)的一部分,以便当获取文档和/或回答输入 问题时,有助于被执行的概念分析操作。示例性实施例的机制提供了这样的能力:将概念分 析操作(旨在标识大型稀疏矩阵中的相关概念)的处理卸载到一个或多个加速器,其中最小 化主机系统与加速器之间的数据传输。在每个加速器中使用海量数据并行性和多个线程进 行批处理还增加执行概念分析操作的效率和速度。此外,使用基于集群的矩阵重新排序和 混合矩阵存储格式进一步改进加速器的概念分析操作的效率。
[0178] 如上所述,应认识到,示例性实施例可以采取完全硬件实施例、完全软件实施例或 包含硬件和软件元素两者的实施例的形式。在一个实例实施例中,示例性实施例的机制以 软件或程序代码实现,所述软件或程序代码包括但不限于固件、驻留软件、微代码等。
[0179] 适合于存储和/或执行程序代码的数据处理系统将包括至少一个通过系统总线直 接或间接连接到存储器元件的处理器。存储器元件可以包括在程序代码的实际执行期间采 用的本地存储器、大容量存储装置以及提供至少某些程序代码的临时存储以减少必须在执 行期间从大容量存储装置检索代码的次数的高速缓冲存储器。
[0180] 输入/输出或I/O设备(包括但不限于键盘、显示器、指点设备等)可以直接或通过 中间I/O控制器与系统相连。网络适配器也可以被连接到系统以使所述数据处理系统能够 通过中间专用或公共网络变得与其它数据处理系统或远程打印机或存储设备相连。调制解 调器、电缆调制解调器和以太网卡只是当前可用的网络适配器类型中的少数几种。
[0181]出于示例和说明目的给出了对本发明的描述,并且所述描述并非旨在是穷举的或 是将本发明限于所公开的形式。在不偏离所述实施例的范围和精神的情况下,对于所属技 术领域的技术人员来说许多修改和变化都将是显而易见的。实施例的选择和描述是为了最 佳地解释本发明的原理、实际应用,并且当适合于所构想的特定使用时,使得所属技术领域 的其它技术人员能够理解本发明的具有各种修改的各种实施例。在此使用的术语的选择, 旨在最好地解释实施例的原理、实际应用或对市场中的技术的技术改进,或者使所属技术 领域的其它技术人员能理解在此所公开的实施例。
【主权项】
1. 一种在包括具有处理器和存储器的主机系统以及至少一个加速器设备的系统中用 于执行概念分析操作的方法,所述方法包括: 由所述主机系统从信息源提取具有一个或多个概念的集合; 由所述主机系统将所述具有一个或多个概念的集合提供给所述加速器设备; 由所述主机系统提供至少一个矩阵表示数据结构,所述矩阵表示数据结构代表语料库 中的概念和概念之间关系的图; 由所述加速器设备在所述加速器设备内部执行所述概念分析操作,以便生成标识所述 语料库中的概念的输出向量,所述输出向量在所述至少一个矩阵表示数据结构中被标识并 且与从所述信息源提取的所述具有一个或多个概念的集合相关;以及 由所述加速器设备将所述输出向量输出到所述主机系统,其中所述主机系统利用所述 输出向量来响应提交给所述主机系统并与所述信息源关联的请求。2. 如权利要求1所述的方法,其中所述加速器设备是具备内核的图形处理单元GPU,所 述内核包括用于执行所述概念分析操作的逻辑。3. 如权利要求1所述的方法,其中在所述加速器设备内部执行所述概念分析操作包括: 在所述加速器设备中基于所述具有一个或多个概念的集合生成输入向量;以及基于所述至 少一个矩阵表示数据结构和所述输入向量,执行矩阵向量乘法运算的一次或多次迭代。4. 如权利要求3所述的方法,其中在所述加速器设备内部执行所述概念分析操作进一 步包括在所述加速器设备中对所述输入向量进行批处理,其中所述批处理包括处理多批输 入向量,每个批包括对应于所述加速器设备的存储器限制的一组输入向量,并且所述一组 输入向量中的每个输入向量包括所述具有一个或多个概念的集合中的至少一个概念。5. 如权利要求1所述的方法,其中在所述加速器设备内部执行所述概念分析操作包括 执行所述概念分析操作而不将中间结果存储到主机系统存储装置。6. 如权利要求3所述的方法,其中在所述加速器设备内部执行所述概念分析操作进一 步包括规范化所述矩阵向量乘法运算的结果,以及根据在所述输出向量中指定的非0值来 执行后处理分级操作以对概念分级。7. 如权利要求1所述的方法,还包括: 在所述主机系统中从与所述信息源关联的用户接收所述请求,其中所述信息源包括所 述用户的个人简档;以及 由所述主机系统基于输出到所述主机系统的所述输出向量来响应来自所述用户的所 述请求,其中所述主机系统通过基于所述输出向量,根据所述用户的所述个人简档对所述 语料库中的概念执行个性化分级来响应所述请求。8. 如权利要求1所述的方法,还包括: 在所述主机系统中接收所述请求; 由所述主机系统存储与所述信息源关联的所述输出向量,其中所述语料库中的每个信 息部分具有关联向量,所述关联向量指定与从所述信息部分提取的概念相关的概念;以及 由所述主机系统基于输出到所述主机系统的所述输出向量来响应所述请求,其中所述 主机系统通过将所述输出向量与所述语料库中的信息部分所关联的向量相比较以标识所 述语料库中与所述信息源相似的信息部分来响应所述请求。9. 如权利要求1所述的方法,其中所述主机系统是问答QA系统,所述信息源是由用户提 交给所述QA系统的自然语言问题,并且所述QA系统利用所述输出向量生成所述输入问题的 候选答案并对所述候选答案分级。10. 如权利要求1所述的方法,其中所述请求是以下之一:输入到所述主机系统以便由 所述主机系统回答的自然语言问题、输入到所述主机系统以请求搜索所述语料库以查找与 搜索概念相关的电子文档的搜索请求、或用于在所述语料库中添加文档的请求。11. 一种包括计算机可读存储介质的计算机程序产品,所述计算机可读存储介质具有 存储在其中的计算机可读程序,其中当在包括主机系统和加速器设备的数据处理系统上执 行时,所述计算机可读程序使得所述数据处理系统执行权利要求1-10之一中的步骤。12. -种装置,包括: 主机系统,其包括至少一个处理器和耦合到所述处理器的存储器;以及 加速器设备,其耦合到所述主机系统,其中所述存储器包括指令,当由所述主机系统的 所述至少一个处理器执行时,所述指令使得所述主机系统执行权利要求1-10之一中的步 骤。
【文档编号】G06Q50/00GK106055549SQ201610220609
【公开日】2016年10月26日
【申请日】2016年4月11日 公开号201610220609.9, CN 106055549 A, CN 106055549A, CN 201610220609, CN-A-106055549, CN106055549 A, CN106055549A, CN201610220609, CN201610220609.9
【发明人】E·阿卡尔, R·R·博尔达维卡尔, M·M·弗兰切斯基尼, L·A·拉斯特拉斯-莫塔诺, R·普里, 钱海峰, L·B·索尔斯
【申请人】国际商业机器公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1