CN105843781A - 执行大型稀疏矩阵运算中用于缓存效率的矩阵排序的方法和系统 - Google Patents

执行大型稀疏矩阵运算中用于缓存效率的矩阵排序的方法和系统 Download PDF

Info

Publication number
CN105843781A
CN105843781A CN201610073091.0A CN201610073091A CN105843781A CN 105843781 A CN105843781 A CN 105843781A CN 201610073091 A CN201610073091 A CN 201610073091A CN 105843781 A CN105843781 A CN 105843781A
Authority
CN
China
Prior art keywords
node
cluster
matrix
group
reordered
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
CN201610073091.0A
Other languages
English (en)
Other versions
CN105843781B (zh
Inventor
E·阿卡尔
R·R·伯达维卡尔
M·M·弗兰斯切尼
L·A·拉斯特拉斯-蒙塔诺
R·普利
钱海峰
L·B·索雷斯
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
International Business Machines Corp
Original Assignee
International Business Machines Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by International Business Machines Corp filed Critical International Business Machines Corp
Publication of CN105843781A publication Critical patent/CN105843781A/zh
Application granted granted Critical
Publication of CN105843781B publication Critical patent/CN105843781B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F7/00Methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F7/06Arrangements for sorting, selecting, merging, or comparing data on individual record carriers
    • G06F7/08Sorting, i.e. grouping record carriers in numerical or other ordered sequence according to the classification of at least some of the information they carry
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F17/00Digital computing or data processing equipment or methods, specially adapted for specific functions
    • G06F17/10Complex mathematical operations
    • G06F17/16Matrix or vector computation, e.g. matrix-matrix or matrix-vector multiplication, matrix factorization
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/30Information retrieval; Database structures therefor; File system structures therefor of unstructured textual data
    • G06F16/31Indexing; Data structures therefor; Storage structures
    • G06F16/316Indexing structures
    • G06F16/328Management therefor
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0891Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches using clearing, invalidating or resetting means
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0893Caches characterised by their organisation or structure
    • G06F12/0895Caches characterised by their organisation or structure of parts of caches, e.g. directory or tag array
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/12Replacement control
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/30Information retrieval; Database structures therefor; File system structures therefor of unstructured textual data
    • G06F16/35Clustering; Classification
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/60Details of cache memory
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/60Details of cache memory
    • G06F2212/601Reconfiguration of cache memory
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/60Details of cache memory
    • G06F2212/604Details relating to cache allocation

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • Data Mining & Analysis (AREA)
  • Mathematical Physics (AREA)
  • Databases & Information Systems (AREA)
  • Computational Mathematics (AREA)
  • Mathematical Analysis (AREA)
  • Mathematical Optimization (AREA)
  • Pure & Applied Mathematics (AREA)
  • Software Systems (AREA)
  • Computing Systems (AREA)
  • Algebra (AREA)
  • Business, Economics & Management (AREA)
  • General Business, Economics & Management (AREA)
  • Complex Calculations (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
  • Memory System Of A Hierarchy Structure (AREA)

Abstract

本发明涉及执行大型稀疏矩阵运算中用于缓存效率的矩阵排序的方法和系统。提供了用于执行矩阵运算的机制。数据处理系统的处理器被配置为执行输入矩阵的基于集群的矩阵重新排序。接收包括与所述矩阵中的元素相关联的节点的输入矩阵。基于与聚类内部和聚类之间的其它节点之间的连接的数量,将所述节点聚类成集群。通过最小化集群节点之间的跨集群连接的总长对集群排序,从而产生经重新排序的矩阵。生成识别该输入矩阵的节点在经重新排序的矩阵中的新位置的查找表。基于经重新排序的矩阵和所述查找表执行矩阵运算。

Description

执行大型稀疏矩阵运算中用于缓存效率的矩阵排序的方法和系统
技术领域
本申请涉及一种改进的数据处理装置和方法,更具体地涉及一种用于对在大型稀疏矩阵运算中使用的矩阵的非零元素进行排序以提高缓存效率的机制。
背景技术
日常生活中用于从数据集中获取信息和知识的信息技术和系统占有重要位置。例如,搜索引擎在大数据集上操作以获取与搜索查询相关的信息。问答(QA)系统,如可从纽约阿蒙克(Armonk)的国际商业机器(IBM)公司获得的IBM WatsonTM QA系统,就运行在文档或信息的其他部分上的语料库上,以回答自然语言问题。此外,许多社交网络服务将他们的用户、通信等表现为大数据集。许多时候,在这些大型数据集上执行知识提取、推理和各种其他分析以便于诸如在社交网络服务内部回答问题、返回搜索结果、或提供功能的系统的操作是很重要的。例如,许多社交网络服务帮助个人识别他们可能认识或有一定联系的其他注册用户。这种功能需要分析表示社交网络服务用户的大数据集。
发明内容
在一个说明性实施例中,提供了一种在数据处理系统中的方法,该数据处理系统包括用于执行矩阵运算的处理器和存储器,该方法包括配置所述数据处理系统的处理器以执行输入矩阵的基于集群的矩阵重新排序。该方法进一步包括由所述处理器接收该输入矩阵,其中,该输入矩阵包括与所述矩阵的元素相关联的节点。该方法还包括由所述处理器基于与聚类内部和聚类之间的其它节点之间的连接的数量,将所述节点聚类成集群;并由所述处理器通过最小化集群节点之间的跨集群连接的总长对集群排序,从而产生经重新排序的矩阵。此外,该方法包括由所述处理器生成识别该输入矩阵的节点在经重新排序的矩阵中的新位置的查找表;由所述处理器基于所述经重新排序的矩阵和所述查找表执行矩阵运算。
在另一说明性实施例中,提供了一种计算机程序产品,包括具有计算机可读程序的计算机可用或者可读介质,当计算机可读程序在计算机设备上执行时,使得计算机设备执行关于所述方法的说明性实施例概述的上述不同操作之一或者组合。
在另一个说明性实施例中,提供了一种系统/设备,该系统/设备可以包括一个或者多个处理器以及耦接到所述一个或者多个处理器的存储器。所述存储器可以包括指令,当由所述一个或者多个处理器执行所述指令时,使得所述一个或者多个处理器执行关于所述方法的说明性实施例概述的上述不同操作之一或者组合。
鉴于下列本发明示例性实施例的详细描述,本发明的这些和其他特征将被描述或者对本领域技术人员来说是明显的。
附图说明
当结合附图阅读时,通过参考下列说明性实施例的详细描述,将更好地理解本发明,以及优选的使用方式和进一步的目标及其优点,其中:
图1A是说明具有压缩行存储的矩阵乘法运算的示意图,其中矩阵的行乘以输入向量的条目;
图1B是说明具有压缩列存储的矩阵乘法运算的示意图,其中矩阵的列乘以输入向量的单个条目,以对输出向量的条目提供部分贡献;
图2A是说明Cuthill-McKee矩阵排序算法的理想输出的示意图;
图2B是说明在图上通过Cuthill-McKee算法得到的矩阵条目实际排序的示意图;
图3A是说明分割(dissection)矩阵排序算法的理想输出的示意图;
图3B是说明在近似无标度(near-scale-free)图上通过分割(dissection)算法得到的矩阵条目的实际排序的示意图;
图4是说明根据一个示例性实施例的采用基于聚类的矩阵重新排序运算得到的矩阵条目排序的示意图;
图5是根据一个说明性实施例的概述基于聚类的矩阵重新排序运算的例子的流程图;
图6描述了计算机网络中的问题/答案创建(QA)系统的一个说明性实施例的示意图;
图7是可实现说明性实施例的各方面的示例性数据处理系统的方框图;以及
图8表示根据一个说明性实施例的用于处理输入问题的QA系统管道。
具体实施方式
如上文所讨论的那样,现代计算系统通常参与在大型数据集上执行知识抽取、推理和各种其他分析操作。这些大型数据集通常被表示为大型矩阵,运算本身往往涉及运行时资源密集的大型稀疏矩阵运算。即,在这些矩阵上执行矩阵运算以提取矩阵的条目之间的关系从而搜集知识、执行推理运算等等。例如,如果流程想要知道用户A在社交网络中可能认识谁,用户A可以被表示为矩阵中一个条目或索引,其他用户可以表示为矩阵中的其他条目或索引而被组织成行和列。如果用户A认识其他用户,矩阵中行和列的交叉点上具有设置为非零的值,例如,如果用户A被表示为行的一个条目,沿着列的条目可以代表其他用户,而每个列和用户A的交叉点代表用户A是否认识其他用户(如果用户认识该其他用户为非零,如果用户不认识该其他用户为零)。因此,提供的系统功能的效率可能受限于在这些大型数据集上执行矩阵运算的效率和速度。
说明性实施例提供用于使用聚类算法重新排序矩阵从而增加大型稀疏矩阵运算的缓存效率的机制。说明性实施例的机制确定在大型稀疏矩阵中元素的团(clique),并且使用这些团扩展彼此具有连接的元素的集群。集群的扩展包括基于元素与哪一个集群具有最多连接将元素分配给该集群。当元素被添加到一个集群中时,更新该集群的信息以考虑该元素的加入并确定该集群是否已达到最大大小。
一旦集群已被扩展,可以通过分析集群内部或集群之间集群元素的连接提炼集群,以确定集群中的元素是否更适合包含于其他集群。例如,如果将元素从一个集群移动到另一个集群会减少跨集群连接的数量而不违反集群大小的限制,则将该元素从当前群集移动到另一个群集。
一旦被提炼,将提炼的集群组织起来以最小化跨集群连接,并就其两端元素分布集中跨集群连接。此外,可以在集群中排序元素以将非零元素移到更靠近集群的对角线。在查找表中更新矩阵中被重组的元素的索引,以便将矩阵中的元素的原始位置指向经重新排序的矩阵中重新排序后的新位置。当执行诸如用于提取知识、进行推理运算、分析数据的矩阵以识别由矩阵等表示的对象、概念或实体之间关系的大型稀疏矩阵运算时,可以输出并利用查找表和经重新排序的矩阵来在诸如数据处理系统的主存储器的存储器中组织数据,其中数据从存储器被加载到高速缓存存储器中。
此处所描述的说明书将利用与矩阵和矩阵运算相关的术语,因此,重要的是首先要了解这些术语在当前说明书的语境中表示什么。矩阵的“索引”是指对矩阵行或列的指定(designation),例如,行索引“1”是指矩阵中的第一行,列索引“1”是指矩阵中的第一列。术语“节点”也指“索引”,并与术语“索引”可互换。术语“节点”指的是作为矩阵的相互关联的元素的图示,其中图的元素被称为“节点”,并且在矩阵中表示为索引,例如,网络通常表示为包括节点和节点之间的“边”或“连接”的图。
矩阵中的“位置”是行索引和列索引的组合,例如,(1,1)指向对应于行1和列1的矩阵中的位置。术语“位置”、“节点”和“索引”有时可以互换,因为他们都使用索引值来表示矩阵的一部分,但如上面提到的具有不同的内涵。也就是说,索引是行和列的指针,节点也表示索引,但有具有表示为索引的图节点的内涵,并且矩阵中的位置是矩阵的一部分,其中存储代表行和列交叉点的值。存储在矩阵的特定位置的非零值此处是指“连接”或“关系”,因为它指定对应于该位置的两个索引之间的“连接”或者“关系”,例如,在社交网站上的个人朋友图中,非零值可以表示个人A与个人B是朋友。非零值本身可以具有指示两个索引之间关系或连接强度的不同的值。
而在说明性实施例的一些实现中,可以为索引、节点和位置使用指定的数值,索引可以表示不同类型的信息、概念或实体,因此,并不一定是数值。例如,索引可以是人、位置、事物、概念等的标识符,而不使用数值的行和列索引,例如,行索引“约翰史密斯”或“个人A”以及列索引“玛丽约翰逊”或“个人B”。
正如以下将更详细地描述的那样,说明性实施例提供用于对存储在存储器或其它系统存储中的信息矩阵重新排序的机制,以得到矩阵运算更高效的性能。作为这种重组的一部分,节点被聚类和重组,以便使非零元素尽可能靠近矩阵的对角线。如以下所描述的那样,说明性实施例的机制生成经重新排序的矩阵以及查找表,该查找表包括用于将节点的旧位置映射到节点的新位置的向量。因此,为了说明在矩阵重新排序的语境中上述术语的细微差别,考虑下面的简化矩阵的例子,其中行和列的索引表示标记为A-E的五个人:
A B C D E
A 1
B 1
C 1 1
D 1
E 1
假定上述矩阵是原始矩阵,个人A对应于数值索引1,个人B对应于数字索引2,等等。如下文所述,通过说明性实施例的操作,可以通过对索引或者节点聚类对矩阵重组,例如,基于在矩阵中代表人之间的联系或关系的非零值的识别,对人进行聚类。例如,如下文所述,通过说明性实施例的操作,可以确定,索引1、3和5(个人A、C和E)属于一个集群,索引2和4(个人B和D)属于另一个集群。根据这种聚类得到的经重新排序的新矩阵将如下所述:
A C E B D
A 1
C 1 1
E 1
B 1
E 1
除了生成这种重组矩阵,说明性实施例还生成查找表,将索引(或节点)的旧位置映射到索引(或节点)的新位置。在上面的例子中,查找表被表示为2个向量,一个存储旧位置的索引值,而另一个存储新位置的索引值,它们一起提供以下映射:
1→1
2→4
3→2
4→5
5→3
正如上面所提到的那样,许多知识表示、推理算法、社交网络应用等,具有运行时资源密集型的大型稀疏矩阵运算。在这种情况下,高速缓存未命中在运行时操作中占支配地位,因为大部分大型稀疏矩阵填充有零条目,而非零条目稀疏地分布在整个矩阵。此外,用于存储这些大型矩阵的部分以及与其交互的向量的高速缓存存储器只有有限的大小,造成在考虑矩阵运算的性能时,只有一个相对较小部分的矩阵和输入/输出向量可以被加载到高速缓存存储器中。例如,如果高速缓存大小为X,矩阵的第一个非零元素与向量的具有大小为X的第一部分中的条目交互,但是下一个非零元素与向量的第二部分中的另一条目交互,而另一个条目位于比X的位置更远的位置,则发生高速缓存未命中,在矩阵运算可以继续进行前第二部分必须从主存储器或存储器检索并加载到高速缓存存储器中。由于这种矩阵可能非常大并且非常稀疏地分布,这样的高速缓存未命中会经常发生并导致进行这样的大型稀疏矩阵运算时效率低下。
在利用大稀疏矩阵表示诸如基于自然语言处理的知识体系、社交网络分析系统等的概念关系和社会关系、交互等的系统中,这些大稀疏矩阵的拓扑结构经常是近似无标度(near-scale-free)的图或网络(其中,“图”或“网络”指的是节点和连接节点的边组成的系统-如以上所讨论,图和网络可以被表示为矩阵)。术语“无标度”图或“无标度”网络是指这样的图或网络,其度分布(一个节点具有到其他节点的连接数量(“度”)的概率分布)至少近似遵循幂次定律。即,对于较大的k的值,具有k个到其它节点的连接的图或网络中的一小部分P(k)节点,作为P(k)~K-γ,其中,γ是一个参数,其值通常的范围是2~3。“近似无标度”图或网络接近此无标度图或网络状况。
存储器访问在这种矩阵运算的运行时执行占支配地位,但由于这种类型矩阵的拓扑特性,传统的矩阵排序算法对其影响不大。也就是说,这类矩阵的拓扑特性使它们近似于无标度图,即他们是近似无标度图拓扑的矩阵。当分割图时,与来自传统仿真应用的稀疏矩阵相比,无标度图的节点间距离(从一个节点到达另一节点的最短路径上的边的数目)往往更短,并且需要更大的切割尺寸(必须切割的边的数目)之间有较短的距离。
稀疏矩阵使用的一种基本矩阵运算是稀疏矩阵的向量乘法,并且它是大多数知识抽取、推理运算、关系分析等的基础。因此,这种稀疏矩阵向量乘法也往往是知识、推理和关系分析算法的运行时瓶颈的基础。图1A和1B说明进行稀疏矩阵向量乘法的两种最流行方式的例子。其它的用于执行这种稀疏矩阵向量乘法的方法都是这两种最流行方式的变种或组合。
图1A是说明具有压缩行存储的矩阵乘法运算的示意图,其中矩阵的行乘以输入向量的条目。如图1A所示,提供了元素的矩阵M,例如,用户标识符、概念标识符、信息对象等表示矩阵的索引,从而为了计算输出向量O的条目,矩阵M的行乘以输入向量V的选定条目。例如,在社交网络的实现中,矩阵M的行和列的索引表示社交网络中的用户,行和列的交叉点表示行用户和列用户之间的关系,例如,如果约翰史密斯(行)与迈克约翰逊(列)有关系,那么矩阵M中与这个交叉点对应的条目可以被设置为非零值,例如,指示迈克约翰逊是约翰史密斯朋友。
在这个社交网络的例子中输入向量V可以例如包括,表示个人B(例如简多伊)当前的朋友列表的条目。因此,如果个人B与个人A(例如约翰史密斯)有至少一个共同的朋友,输出向量O的对应条目是非零值,并且个人B与个人A共同的朋友越多,输出向量O的该条目越大。
在另一个例子中,假定矩阵M的行和列的索引表示概念,并且如果概念A和概念B相关,行A和列B的交叉点是非零值,并且它们越相关,该条目越大。例如,假设概念“精神障碍”和概念“精神病医生”密切相关,则由一个非零并且很大的值表示这种关系,而概念“精神障碍”和概念“冰淇淋”无关,则相应的条目是零。假设输入向量表示问题中包含的概念,其中如果问题中包含对应的概念,则条目是非零值,例如,问题“在曼哈顿我可以在哪买冰淇淋?”将导致一个向量,其中概念“冰淇淋”的条目非零,概念“曼哈顿”的条目非零。当且仅当,对应的概念与“冰淇淋”或“曼哈顿”相关,将矩阵M和输入向量V相乘得到的输出向量O中的条目才是非零值。因此,曼哈顿的一家冰淇淋店可能会在输出向量中具有很大的值,因为它与输入向量V的两个概念相关。注意,这只是一个基本的例子,更复杂的矩阵运算(由更多的矩阵向量乘法组成,其中向量变密)会产生更复杂的结果。
可以理解,对于这样的矩阵和向量乘法运算,随着矩阵M和输入向量V变得越大,由于高速缓存存储器的有限大小以及正在处理的矩阵和/或向量的巨大尺寸,矩阵M和输入向量V的选定元素的读入会造成高速缓存未命中。这些高速缓存未命中在执行矩阵乘法运算的运行时成本中占支配地位。
例如,采用图1A的元素为例,将矩阵M的一行与输入向量V相乘需要读入输入向量V的选定条目120,这些选定条目的位置取决于矩阵M的行110中非零条目的列索引。结果被写入到输出向量O的条目130。当处理器读入输入向量V中这些选定条目120中的一个,该条目及其周围的部分输入向量V的被装载到高速缓冲存储器。之所以将选定条目的目标数据周围的部分存储器加载到高速缓冲存储器是希望或猜测未来的数据请求将落入存储器的那部分。这是在具有高速缓冲存储器的所有数据处理系统中计算工作负载的普遍做法。
在稀疏矩阵向量乘法的情况下,是否能够实现这个希望,即将数据猜测加载到高速缓存而导致缓存命中,依赖于矩阵M中下一个非零条目的列索引。即仅当下一列索引正巧落在选定条目120周围被加载的部分时,高速缓存的猜测加载才会导致高速缓存命中。
在社交网络的例子中,假设矩阵M中一行表示汤姆的朋友名单,汤姆有五个朋友。如果这五个朋友被索引为第1000001个人,第1000002个人,…第1000005个人,那么当处理器首先要求第1000001个条目时,输入向量V中它们的条目被一起加载到高速缓存器中,因此没有高速缓存未命中,并且由于高速缓存存储器的猜测加载,后续对输入向量V中第1000002个条目到第1000005个条目的数据请求会被满足,因为数据已经在高速缓存中。另一方面,如果汤姆的朋友被索引为第1000000个人,第2000000个人,……第5000000个人,那么在处理矩阵M的该行时,会发生缓存未命中,并且处理器必须进行单独的请求以从主存储器加载输入向量V的这五个条目的每一个。从主存储器的每个加载的等待时间可以是算术运算时间的几百倍。这些高速缓存未命中发生在矩阵M的每一行的处理中,并且它们的总延迟累加到成为稀疏矩阵向量乘法运行时运算的一个主要组成部分。
图1B是说明具有压缩列存储的矩阵乘法运算的示意图,其中矩阵的列乘以输入向量的单个条目,以对输出向量的条目提供部分贡献。在图1B所示的例子中,矩阵M的列140乘以输入向量V中的单个选定条目150,而不是矩阵M的行110乘以输入向量V中的多个选定条目120,从而计算输出向量O的多个条目160的部分贡献。图1B所示的矩阵乘法运算的输出,即输出向量O,与图1A所示的矩阵乘法运算的输出相同,其不同在于数据在存储器中安排数据以及计算组织的方式。
在图1B的矩阵乘法运算例子中,写入到输出向量O的选定条目160的操作会导致高速缓存未命中,而这又在运行时成本中占支配地位。也就是说,这些选定写操作的输出向量O的条目160的位置取决于矩阵M的选定列140的非零条目的行索引。当处理器向输出向量O中写入这些选定条目160中的一个时,该条目160以及围绕该条目的一部分输出向量O被加载到高速缓冲存储器,之所以加载围绕目标数据的一部分存储器到高速缓冲存储器是希望或猜测未来的数据请求将落入存储器的那部分,即上述讨论的高速缓存器猜测加载。然而,与上文关于图1A描述的例子相比,当处理的下一个索引没有落入被加载到高速缓冲存储器的存储区域中时,高速缓存未命中发生,并且当非零数据稀疏地位于矩阵M中时,这种情况经常发生。
在图1A和1B所示的两种情况下,高速缓存未命中的数目强烈地受到稀疏矩阵的非零数据模式的影响。也就是说,如上所述,如果非零模式以稀疏方式广泛地分布,为了在矩阵M的每一个非零元素上进行运算,必须多次执行部分输入/输出到高速缓冲存储器的读出/写入,也就是说会发生多个高速缓存未命中,进而需要从主存储器读出/写入输入/输出向量的对应元素。因此,如果一个非零元素到下一个非零元素的距离大于高速缓存的大小,则发生高速缓存未命中,并且执行缓存器收回,随后将输入/输出向量的下一部分加载到高速缓冲存储器。如果非零元素更紧凑地、更加非稀疏地分布,大量的非零元素将在同一时间位于高速缓冲存储器中,因而降低高速缓存未命中的数目。
为了把非零元素弄紧密,重新排序算法寻求重新排列元素,使得非零元素模式导致的减少高速缓存未命中的数目并因而提高矩阵乘法操作的运行时性能。试图把非零元素弄紧密以生成非零元素更加非稀疏分布模式的最流行的算法是Cuthill-McKee算法及其变种,如逆Cuthill-McKee算法。Cuthill-McKee算法是一种将具有对称稀疏模式的稀疏矩阵变换成为具有小带宽的带状矩阵形式的算法。逆Cuthill-McKee算法是相同的算法,但矩阵的结果索引数目是反转的。
Cuthill-McKee算法是图论算法中使用标准的广度优先搜索算法的一个变种。Cuthill-McKee算法从外围元素(节点)开始,然后为每个i=1,2,……生成级Ri,直到所有的节点都被耗尽。通过在Ri中列出相邻所有节点的所有顶点由集合Ri创建集合Ri+1。以递增方式列出这些元素(节点)。
图2A是说明Cuthill-McKee矩阵排序算法的理想输出的示意图。如图2A所示,得到的经重新排序的矩阵转化为一个窄带矩阵形式,其中元素的级只与其前级及后级有关联,其中“级”是对角块的列/行索引的集合(在图2A中示有八级,级1包括整个左上角块210大小的索引1,级2包括下一对角块220大小的索引,等等)。这导致在描述的块三对角(block-tri-diagonal)矩阵中非零项只存在于对角块和紧邻对角块的块中(图2a所示的阴影区域)。
虽然Cuthill-McKee适合多种类型的矩阵,但是当将Cuthill-McKee算法应用到具有近似无标度图拓扑结构的矩阵时就发生问题。在近似无标度图中,具有大量连接(非零值)的节点(索引)的存在导致Cuthill-McKee广度优先搜索生成的级呈指数增长。每一级都远远大于前一级,直到某一级包含图中的大多数节点。
图2B是说明在近似无标度(near-scale-free)图上通过Cuthill-McKee算法得到的矩阵条目实际排序的示意图。如图2B所示,将Cuthill-McKee算法应用到近似无标度图拓扑矩阵的结果是生成非零项或元素的主要块230,其仅比随机的非零模式略好,如图1A和1B所示。因此,将Cuthill-McKee应用到具有近似无标度图拓扑的矩阵造成缓存效率只有轻微的改善。例如,在从维基百科网站的内容导出的矩阵上,在执行矩阵运算前将Cuthill-McKee应用到矩阵时,搜索运算的运行时执行只改善了约10%。
另一类聚集非零项或元素的矩阵重新排序算法被称为基于分割的重新排序。使用基于分割的重新排序发现断开的节点集,从而其余节点形成多个非连接的子图。基本原理是,这些子图的每一个只在它的内部以及它与非连接集之间才有连接。这导致如图3A所示的块矩阵的例子,其代表分割矩阵重新排序算法的理想的输出的例子。在图3A中,右下角的块310对应于非连通集,并且其它对角块320-340等的每一个对应于多个非连接子图之一。如图3A所示,非零项只能存在于对角块和某些边界块350中。
对具有近似无标度图拓扑的矩阵应用分割重新排序算法会得到图3B中所示类型的经重新排序的矩阵。如图2b所示,类似于Cuthill-McKee算法的结果,生成非零项或元素的主要块360,又只是比诸如图1A或1B所示的随机非零模式略好。再次,当应用近似无标度图的拓扑结构时,通过这种矩阵重新排序,缓存效率只有轻微改善。
因此,流行的矩阵重新排序方法的每一个中,具有近似无标度图拓扑矩阵的性质使得矩阵重新排序算法不能改进诸如矩阵向量乘法的矩阵运算的运行时执行。在当今世界越来越多的实际的真实生活数据显示了近似无标度的拓扑特征,尤其是操作在大型数据集之上的社交网络环境、自然语言处理机制或任何其他的分析机制。作为结果,由于进行运算的数据的大型尺寸、大型数据集的稀疏性质、大型数据集的近似无标度的拓扑结构以及有限的高速缓存的存储器大小,执行知识提取、推理、社交网络分析、其他大型数据分析等的速度和效率受到限制。
在开始更详细地讨论说明性实施例的各个方面中,首先应当理解,在整个本说明书中的术语“机制”将被用来指执行各种操作、功能等的本发明的元件。“机制”,作为本文中使用的术语,可以是以装置、过程或计算机程序产品的形式的说明性实施例的功能或方面中的实现。在流程的情况下,该流程是由一个或多个设备、装置、计算机、数据处理系统等实现的。在计算机程序产品的情况下,嵌入在计算机程序产品之内或之上的通过计算机代码或指令表示的逻辑是由一个或多个硬件设备执行,以实现与特定的“机制”相关的功能或执行与特定的“机制”相关的操作。因此,本文描述的“机制”可以实现为专用硬件、执行在通用硬件上的软件、存储在介质中的软件指令(诸如可由专用或通用硬件容易执行的指令)、用于执行功能的过程或方法,或上述的任何组合。
本说明书和权利要求中,对关于特定特征和说明性实施例的元件可选用术语“一”、“至少一个”以及“一个或多个”。但是应当理解,这些术语和短语旨在指出在特定说明性实施例中有至少一个特定的特征或元素存在,但也可以存在多于一个的特征或元素。也就是说,这些术语/短语并不旨在将说明书或权利要求书限制为单个特征/元素的存在或需要多个这样的特征/元素的存在。与此相反,这些术语/短语仅要求至少一个特征/元素,具有多个这样的特征/元素的可能性也在说明书和权利要求书的范围内。
此外,应当理解,下面的说明书使用多个用于说明性实施例的各种元件的各种实例以进一步说明本说明性实施例的示例实现,以帮助理解在说明性实施例的机制。这些实施例旨在指出用于实现本说明性实施例的机制的各种可能性是非限制性的,并且非穷尽的。考虑到本说明书中,对这些可被附加或者替换用于本文提供的实施例而不脱离本发明的精神和的范围的不同元件有许多其它的替换的实施例,对本领域普通技术人员来说,将是很明显的。
如上所述,说明性实施例提供一种新的种类的矩阵重新排序机制以在执行诸如矩阵向量乘法之类的矩阵运算中改进缓存效率,其为在大型稀疏矩阵上进行多种分析的基础。说明性的实施例的机制可以被用于任何稀疏矩阵,但特别适合用于展现出近似无标度图拓扑结构的大型矩阵。
说明性实施例的机制通过使用聚类方法来对彼此紧密相连、但在跨集群时弱连接的节点或索引,沿着经重新排序的矩阵的对角线运算来建立非零项或元素的模式进行聚类。也就是说,矩阵M的每个行/列索引对应于图中的节点并且每个非对角、非零项对应于两个节点之间的边。例如,行3和列5中的非零值转换为节点3和节点5之间的边、或“概念3”和“概念5”之间的边、或“人3”和“人5”之间的边。因此,节点之间的“连接”或“关系”是将一个节点连接到另一个节点的非零项。
然后所生成的节点集群被以一种方式排序以便(1)跨群集的连接(或边)被集中于相邻集群,即位于经重新排序的矩阵中彼此相邻的集群,以及(2)相邻集群往往与相同的其它集群或其它相邻集群具有跨群集的连接。以下更详细地讨论,例如在图4中,从左上角到右下角,第二和第三集群412、414都有大量到倒数第二集群416的连接,这些连接(即非零值)形成右侧的两个非对角块422、424。因为第二和第三集群412、414具有大量到相同的其他集群有的连接,将它们如图4所示彼此相邻的放置是有利的,因为以这种方式,两个非对角块422、424在经重新排序的矩阵中仍然彼此相邻。
说明性实施例的这些机制通过识别原矩阵内的团、将团成长为集群、提炼集群以减少跨群集连接、排序集群以最小化跨集群连接的长度,然后在每个集群的内部排序节点以将非零项或元素移动到更接近集群的本地化对角线来进行操作。然后输出经重新排序的矩阵和映射索引的相关查找表,以用于执行如矩阵向量乘法运算的矩阵运算。
图4是一个根据本发明一个说明性实施例,用于示例性图解说明采用基于聚类矩阵重新排序运算得到的矩阵项的排序。如图4所示,作为说明性实施例的机制的运算产生的经重新排序的矩阵具有集中到位于对角线附近的集群410中的非零项或元素,远离对角线的那些非零项被紧密布置到非对角线集群420中。集群410、420的每一个集群(图4中的阴影区域表示)具有非零项,其松散地联系在一起,这意味着节点具有的对应于这些条目或元素的到相同集群410、420中其他节点的连接的数目大于节点具有的到集群410、420外部节点的连接的数目,例如电影明星到其他电影明星的连接比到一般大众多,因此,电影明星可以是一个集群。与其它已知机制要求图1A-3B矩阵的非阴影区域只能用零填充相反,允许矩阵的非阴影区域430包括少量的非零项或元素(以下称为“元素”)。
即使对于具有近似无标度图拓扑结构的大型矩阵,也能实现图4所示的矩阵的排序。从图4与图2b和3b的比较中看出,作为矩阵重新排序运算的结果,没有生成非零元素主要块。因此,上述讨论的已知的Cuthill-McKee和分割算法遇到的对高速缓存效率和运行时执行改善的限制对说明性实施例的矩阵重新排序机制不再是问题。与此相反,矩阵的重新排序机制对大型近似无标度图拓扑的矩阵实现了Cuthill-McKee算法所寻求的理想的重新排序,只是呈现一些非对角线集群420,但这些集群被集中到他们各自的集群中420中。
这种集群410、420的沿对角线组织非零元素的好处是矩阵运算过程中减少了高速缓存未命中。也就是说,当执行矩阵乘法运算时,矩阵乘法运算通常寻找矩阵中的非零元素。由于这些非零元素被集中到集群410,420,当集群被加载到高速缓存存储器中时,将发生更多的高速缓存命中及更少高速缓存未命中,尤其是沿经重新排序的矩阵对角线放置的集群410,其中即使额外的集群被加载到高速缓冲缓存器,集群也彼此紧邻。即使对那些非对角线的非零元素来说,这些非零元素的大部分聚集在非对角线集群420中,从而当这些集群加载到高速缓冲存储器中时,访问输入/输出向量的对应项时,也只有较少的高速缓存未命中。虽然一些非零元素不在集群410、420中,即位于经重新排序的矩阵的非阴影区域430,但通过聚类得到的效率提高仍胜过不在集群410、420中相对较少的非零元素。
相对于更关注于Cuthill-McKee算法中使用的不同的级表示的图的距离的已知Cuthill-McKee算法而言,说明性实施例的机制的聚类方法将非零元素集中于紧密捆绑的集群410、420中。因为Cuthill-McKee更关注的是图的距离,很可能有以上讨论的并不提高缓存效率的非零元素的大块。此外,使用分割算法,关注的是寻找数据的非连接集,这样,如果数据集取之于矩阵,剩余的数据将被连接。同样,如上面所讨论的那样,这可能会导致非零元素的大块而不能提高缓存效率。由于说明性实施例利用紧密捆绑的集群410、420,大幅减少了非零元素的大块的可能性。此外,由于说明性实施例的机制组织集群410、420以减少跨群集连接以及跨集群连接的长度,集群410、420被组织在经重新排序的矩阵内一个紧凑的配置中,从而更有效地将非零元素加载到高速缓冲存储器中,从而减少缓存未命中。
为了说明由说明性实施例机制的实现达到的效率提高的量,考虑下面的表1,其说明了稀疏矩阵向量乘法的结果的基准,用于评估在英特尔Nehalem处理器上使用和不使用说明性实施例的矩阵重新排序机制的高速缓存未命中的数量。
表1–稀疏矩阵向量乘法的基准
表的每一行代表一个硬件计数器。第一行是指令的总数。第二行是存储器加载指令的数目。第三行是L2高速缓存未命中的数目。第四行是L3高速缓存未命中的数目,这是最昂贵、占主导地位的运行时。应该指出的是,通过使用说明性实施例的重新排序机制可以将L3高速缓存未命中减少近一半。通过说明性实施例的重新排序机制测量的运行时执行也减少了近一半,这远远优于通过Cuthill-McKee或分割算法带来的10%的改善。
已经说明了示例性实施例的基于聚类的矩阵重新排序机制得到的结果,下面是一个作为这种基于聚类矩阵重新排序的一部分执行的机制和操作的更详细的讨论。应该理解的是,下面的讨论涉及一个用于实现基于聚类的矩阵重新排序的说明性实施例,并不旨在限制而是说明用于执行此重新排序的一个示例的方法和机制。在本说明书中对说明性实施例所作的许多修改对本领域技术人员来说是显而易见的,不偏离本发明的精神和范围。
图5是根据一个说明性实施例概述基于聚类的矩阵重新排序运算的例子的流程图。如图5所示,基于聚类的矩阵重新排序运算可以在专门配置的配置为实施以下所描述的运算的硬件、在硬件上执行的软件、配置来实现这些运算的硬件或任何专门配置的硬件和在硬件上执行的软件的组合实施。为了结合在图5中所阐述的运算的描述说明说明性实施例的操作,使用了这样一个例子,其中矩阵M由对应于社交网络服务的用户的索引或节点组成,并且其中对应于索引或节点的非零元素是索引或节点代表的用户之间的关系的表示。应该理解,这只是说明性实施例的机制可以被用于执行在具有近似无标度图拓扑的大型矩阵上的任何矩阵运算的一个例子和机制。
如图5所示,操作开始于步骤510,其中通过分析输入矩阵M以识别在矩阵M内的团。输入矩阵M可以是一组收集的数据,表示特定信息对象、概念、实体等之间的连接或关系,被指定为矩阵M的索引。例如,在社交网络环境中,矩阵M的索引可以表示社交网络服务的用户、他们的属性、用户之间交换的通信等。在问答环境或互联网搜索环境中,矩阵M的索引可以表示作为用于进行问题解答或互联网搜索的基础的信息语料库中的文档的特征。因此,输入矩阵M中的索引表示适合于执行知识提取、推理或其他分析操作的任意信息、概念或实体。两个索引的交叉点的条目存储由相交的索引表示的信息、概念或实体之间的关系存在或不存在的值。
团被定义为矩阵的行和列索引(或节点)的集合,从而其子矩阵是由所有非零项组成。例如,如果矩阵M中表示的第一个用户连接到第二个用户,或反之亦然,两个用户可以构成一个团。团可以利用一个起始节点或索引来确定,并确定矩阵M中被连接到的起始节点或索引的其它节点或索引,或反之亦然,也就是说,索引的交点识别矩阵M中的非零值元素。可以对连接到起始节点或索引的每一个节点或索引重复该过程,其中,连接的节点或索引(以下简称为“节点”)的一些可能是团的一部分,而其它节点不是。也就是说,例如,如果约翰是起始节点并且具有一个到皮特约翰逊的“朋友”连接,并且皮特约翰逊具有一个到约翰史密斯的“朋友”连接,那么约翰史密斯和皮特约翰逊可以构成团。如果皮约翰逊没有到约翰史密斯的连接,那么团中可以不包括皮特约翰逊,虽然如后面讨论的那样,他可能会被包括在后续生成的集群中。
可以对输入矩阵M的每个节点重复生成团的过程,以便生成多个团。可以在配置参数中指定最小尺寸要求,指示在团中必须存在的最小数量的节点,该团被维护作为图5其他操作的起点用于其他用途,例如,团至少要有20个节点,其中具有小于20个节点的团被丢弃。
已经生成作为矩阵的连接节点的初始集群的团,从团的每一个执行集群生长操作以生长成集群(步骤520)。将团生长成集群中,已经不再是团的一部分的矩阵的节点被分配到集群。节点到集群的分配是基于相应的行/列所具有的到已经在集群中的节点的连接数。也就是说,节点被添加到这样的集群中,其中该节点到该集群具有最多的连接,即与群集的其它节点关联的非零值元素。如果节点没有到其他节点的任何连接或只有到其他节点相对较少的连接,一些节点可能会没有集群。当节点加入群集时,更新表达集群的数据结构被并且将新加入的节点作为添加额外节点的基础,例如,如果约翰史密斯被添加到代表玛丽梦露的朋友的用户集群,那么可以进一步将约翰史密斯的朋友作为确定是否将这些朋友加入到玛丽梦露的朋友集群的基础。
以这种方式,集群从初始团成长为一个更大尺寸的集群。可以在基于聚类的矩阵重新排序机制的配置参数中设置集群的集群的最大大小。集群的最大大小可以设置为存储器层级结构参数的函数,例如,在实现了基于集群的矩阵重新排序机制的计算机体系架构中的高速缓存的大小。例如,集群的最大大小可以被设置为等于体系结构中一定比例的特定的缓存大小,例如,L3高速缓存大小的X%。
一旦按照以上描述的方式已经处理了矩阵的非零元素的每一个并将对应节点添加到集群中,可以通过允许节点被重新分配到其他集群而提炼集群(步骤530)。例如,可以分析每个群集的节点以确定它们到其他集群的节点的连接是否多于它们到其当前分配集群的节点的连接。如果集群A中的一个节点到集群B中节点的连接(非零元素)更多,那么该节点可以被重新分配到集群B。响应于重新分配的确定将导致跨集群连接(或边)的总数减少而不违反集群的最大大小的限制,基于集群的矩阵重新排序机制可以允许该重新分配。因此,如果集群B已经是处于最大大小,可能会拒绝该重新分配。此外,如果重新分配不会减少跨集群连接的总数,可能会拒绝该重新分配。可以在步骤520中所生成的每个群集的每个节点上执行这一提炼。
在步骤530中已经提炼节点的集群,排序得到的集群以便最小化跨群集连接(或边)的总长度,即使节点项到矩阵对角线的距离最小化(步骤540)。此外,作为此操作的一部分,跨集群连接根据其两端节点分布集中,即连接的两个节点之间的连接长度被最小化。此操作可以以动态规划算法实现,每次优化部分实现,并且逐集群的增加该部分解决方案直到全部集群被排序。
尽管不是必需的,作为一个可选的操作,经排序的集群内的节点可以自己在集群内本地排序(步骤550)。集群的该本地排序在集群内将非零项移动到更靠近对角线并将具有跨集群连接的节点移动到更靠近集群的边界。即,当在集群内排序时,如果集群中的矩阵节点具有到在该集群之前被排序的其它集群的节点的连接(非零元素),那么该节点位于该集群内早期的位置(向“前端”)以便其跨集群非零值更靠近经重新排序的矩阵的对角线。以同样的方式,如果节点具有到在该集群之后被排序的其他集群的连接(非零元素),那么该节点位于该集群内后面的位置(向“后端”)。在本地级别,这种集群内重新排序可以通过在本地集群上执行如上(步骤510-540)讨论的相同的操作来完成,或利用诸如Cuthill-McKee或分割算法的其它已知算法来对非零元素进行重新排序。应该指出的是,已知算法可用于个体集群而用于集群内部重组,这是因为集群相对较小并且具有更强连接的子图(不是稀疏分布的),从而与重新排序算法相比缓存效率没有大的差异。
应该知道,不论是这个重新排序过程是正在执行还是在重新排序过程完成之后执行,都要更新查找表中的向量来代表被移动的元素的新位置。例如,查找表可以包括具有原矩阵M的索引位置的第一向量以及具有执行重新排序之后的新位置的第二向量,指针从一个向量项指向另一个向量项以允许在经重新排序的矩阵中将元素的原始位置映射到新位置。该查找表和经重新排序的矩阵可以是用于执行矩阵运算的输出并且最终用于知识提取运算、推理运算或其他分析运算的输出(步骤560)。
在运行时操作期间,输出的查找表和经重新排序的矩阵可用于执行作为诸如知识提取、推理、分析等的知识运算的一部分的矩阵运算(步骤570)。然后可以输出该知识运算的结果(步骤580)。因此,示例性实施例的机制特别配置的计算设备,其上专门执行这种类型的基于聚类的矩阵排序运算,而不是由通用计算设备执行,并且该机制改进了计算设备的运算和功能。此外,说明性实施例的机制通过在矩阵运算过程中增加计算设备的高速缓存的效率改进了在其上实现该机制的计算设备的功能和性能。
应该知道,在运行时矩阵运算期间可以使用经重新排序的矩阵和查找表之前实施步骤510-560。即,这些步骤510-560可用于矩阵的预处理,将得到的经重新排序的矩阵和查找表输出到运行时系统组件以用于执行其运行时操作。用这种方式,在运行时期间不需要在每次要执行表示为步骤570-580的矩阵运算时重新排序矩阵。
在一些说明性实施例中,如果识别到已经对矩阵做出更新,可以对之前经重新排序的矩阵的部分重新排序。例如,在社交网络环境中,如果将新用户添加至矩阵或从矩阵中删除用户,那么可以执行部分重新排序以调整经重新排序的矩阵和查找表来适应输入矩阵的变化,而无需每次发生变化时再次执行完整的重新排序过程。例如,可以只对受输入矩阵变化影响的那些集群重复步骤510-560,而不是对所有集群或所有集群的所有元素执行这些步骤。以这种方式,可以通过对经重新排序的矩阵和查找表的增量更新来适应输入矩阵的增量变化。
因此,说明性实施例的机制产生经重新排序的矩阵,通过将输入矩阵的节点聚类到集群中将非零元素集中于矩阵对角线以最小化跨集群的连接的长度。由于这些长度被最小化,并且非零元素被紧密堆积在一起,显著减少了高速缓存未命中,从而使得缓存效率和运行性能相应增加。
应该指出,上述说明性实施例假设重新排序是对称地完成的,从而集群被集中于矩阵M的对角线。然而,说明性实施例的机制并不限于对称重新排序,也可以用于实现非对称的重新排序操作。在非对称重新排序的实现中,行节点或索引的变换可以不同于列索引,从而实现非对称重新排序。虽然这可以在一些说明性实施例中完成,非对称重新排序实现的不好的一面是,如果另一个矩阵乘法将要在输出向量O上执行(这在矩阵运算种经常发生),输出向量O也需要改变进行变换。由于需要执行多个变换会导致额外的处理成本。对称变换不涉及额外的处理成本。因此,可以预见,最实际的实现是涉及对称变换。然而,应该理解,本发明的精神和范围包含具有非对称重新排序的说明性实施例的机制。
应该理解本发明可以是系统、方法和/或计算机程序产品。计算机程序产品可以包括计算机可读存储介质,其上载有用于使处理器实现本发明的各个方面的计算机可读程序指令。
计算机可读存储介质可以是可以保持和存储由指令执行设备使用的指令的有形设备。计算机可读存储介质例如可以是――但不限于――电存储设备、磁存储设备、光存储设备、电磁存储设备、半导体存储设备或者上述的任意合适的组合。计算机可读存储介质的更具体的例子(非穷举的列表)包括:便携式计算机盘、硬盘、随机存取存储器(RAM)、只读存储器(ROM)、可擦式可编程只读存储器(EPROM或闪存)、静态随机存取存储器(SRAM)、便携式压缩盘只读存储器(CD-ROM)、数字多功能盘(DVD)、记忆棒、软盘、机械编码设备、例如其上存储有指令的打孔卡或凹槽内凸起结构、以及上述的任意合适的组合。这里所使用的计算机可读存储介质不被解释为瞬时信号本身,诸如无线电波或者其他自由传播的电磁波、通过波导或其他传输媒介传播的电磁波(例如,通过光纤电缆的光脉冲)、或者通过电线传输的电信号。
这里所描述的计算机可读程序指令可以从计算机可读存储介质下载到各个计算/处理设备,或者通过网络、例如因特网、局域网、广域网和/或无线网下载到外部计算机或外部存储设备。网络可以包括铜传输电缆、光纤传输、无线传输、路由器、防火墙、交换机、网关计算机和/或边缘服务器。每个计算/处理设备中的网络适配卡或者网络接口从网络接收计算机可读程序指令,并转发该计算机可读程序指令,以供存储在各个计算/处理设备中的计算机可读存储介质中。
用于执行本发明操作的计算机程序指令可以是汇编指令、指令集架构(ISA)指令、机器指令、机器相关指令、微代码、固件指令、状态设置数据、或者以一种或多种编程语言的任意组合编写的源代码或目标代码,所述编程语言包括面向对象的编程语言—诸如Smalltalk、C++等,以及常规的过程式编程语言—诸如“C”语言或类似的编程语言。计算机可读程序指令可以完全地在用户计算机上执行、部分地在用户计算机上执行、作为一个独立的软件包执行、部分在用户计算机上部分在远程计算机上执行、或者完全在远程计算机或服务器上执行。在涉及远程计算机的情形中,远程计算机可以通过任意种类的网络—包括局域网(LAN)或广域网(WAN)—连接到用户计算机,或者,可以连接到外部计算机(例如利用因特网服务提供商来通过因特网连接)。在一些实施例中,通过利用计算机可读程序指令的状态信息来个性化定制电子电路,例如可编程逻辑电路、现场可编程门阵列(FPGA)或可编程逻辑阵列(PLA),该电子电路可以执行计算机可读程序指令,从而实现本发明的各个方面。
这里参照根据本发明实施例的方法、装置(系统)和计算机程序产品的流程图和/或框图描述了本发明的各个方面。应当理解,流程图和/或框图的每个方框以及流程图和/或框图中各方框的组合,都可以由计算机可读程序指令实现。
这些计算机可读程序指令可以提供给通用计算机、专用计算机或其它可编程数据处理装置的处理器,从而生产出一种机器,使得这些指令在通过计算机或其它可编程数据处理装置的处理器执行时,产生了实现流程图和/或框图中的一个或多个方框中规定的功能/动作的装置。也可以把这些计算机可读程序指令存储在计算机可读存储介质中,这些指令使得计算机、可编程数据处理装置和/或其他设备以特定方式工作,从而,存储有指令的计算机可读介质则包括一个制造品,其包括实现流程图和/或框图中的一个或多个方框中规定的功能/动作的各个方面的指令。
也可以把计算机可读程序指令加载到计算机、其它可编程数据处理装置、或其它设备上,使得在计算机、其它可编程数据处理装置或其它设备上执行一系列操作步骤,以产生计算机实现的过程,从而使得在计算机、其它可编程数据处理装置、或其它设备上执行的指令实现流程图和/或框图中的一个或多个方框中规定的功能/动作。
附图中的流程图和框图显示了根据本发明的多个实施例的系统、方法和计算机程序产品的可能实现的体系架构、功能和操作。在这点上,流程图或框图中的每个方框可以代表一个模块、程序段或指令的一部分,所述模块、程序段或指令的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。在有些作为替换的实现中,方框中所标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个连续的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。也要注意的是,框图和/或流程图中的每个方框、以及框图和/或流程图中的方框的组合,可以用执行规定的功能或动作的专用的基于硬件的系统来实现,或者可以用专用硬件与计算机指令的组合来实现
如上所述,可以在多种不同类型的系统和应用中实现用于执行基于集群的矩阵排序提高矩阵运算过程中高速缓存效率的说明性实施例的机制,用于执行各种不同类型的操作,通常分为知识提取、推理和分析。说明性实施例的机制一种实现是使用矩阵运算来协助执行如IBM watsonTMQA系统的问答(QA)系统的问答。以下图6-8用于说明说明性实施例的机制的QA系统实现的例子。应该知道的是,这些图只是说明性的,并不旨在限制本发明只能实施为QA系统。执行矩阵运算的任何类型的系统都可以实现说明性实施例的机制而不背离本发明的精神和范围。此外,可以在不偏离本发明的精神和范围的前提下对所描述的环境做出许多的修改。
图6-8描述了问答(QA)系统(也称为问题/答案系统或问题与答案系统)的示例、方法以及计算机程序产品,其可以实现说明性实施例的机制。以下将更详细地讨论,示例性实施例被集成、增强以及扩展这些QA机制在执行矩阵运算期间使用的重新排序矩阵方面的功能性,矩阵运算例如作为QA系统功能诸如语料摄取、物证鉴定和评分等的一部分功能性。
由于QA系统被用作说明性实施例的实施环境的一个例子,在描述说明性实施例的机制如何被集成并扩展这样的QA系统之前,首先要了解在QA系统中如何创建问题和答案。应该理解图6-8所描述的QA系统机制只是一个例子,而非意图陈述或暗示对可实现说明性实施例的QA机制的类型的做出任何限制。在不脱离本发明的精神和范围的情况下,可在本发明的各种实施例中实现图6-8中示出的示例性QA系统的许多变型。
作为概述,问答系统(QA系统)是一种执行在数据处理硬件上的人工智能应用,其回答以自然语言提出的有关特定主题领域的问题。QA系统接收来自各种来源的输入,包括通过网络、电子文档或其他数据的语料库、来自内容创建者的数据、来自一个或多个内容用户的信息以及其它来自其它可能输入源的输入。数据存储设备存储数据的语料库。内容创建者在文档中创建内容,作为QA系统的数据语料库的一部分使用。该文档可包括在QA系统中使用的任何文件、文本、物品或数据源。例如,QA系统访问有关领域的知识主体或主题领域,例如金融领域、医疗领域、法律领域等等,其中知识主体(知识库)可以以各种配置组织,例如,诸如本体、或领域相关的非结构化数据或有关该领域的自然语言文档集合的特定领域的结构化的知识库。
内容用户将问题输入到QA系统,QA系统然后通过评估文档、文档的部分、语料库中的部分数据等利用数据语料库的内容回答输入问题。当过程对文档的给定部分对语义内容进行评估时,该过程可以使用各种协议从QA系统查询这样的文档,例如,将查询作为格式化好的问题发送到QA系统,然后由QA系统解释该问题并且提供包含一个或多个该问题答案的响应。语义内容是基于诸如单词、短语、标志、符号的记号之间的关系以及他们代表什么、他们的外延或内涵等的内容。换句话说,语义内容是例如使用自然语言处理来解释表达式的内容。
将在以下更详细描述的,QA系统接收输入的问题,解析问题以提取问题的主要特征,利用提取的特征规划查询,然后将查询应用到数据语料库。基于查询对数据语料库的应用,QA系统对输入问题产生一组的假设或候选答案,通过跨数据语料库寻找数据语料库可能包含输入问题的有价值的响应的部分。然后QA系统对输入问题的语言以及使用各种推理算法(例如,欲知关于IBM WatsonTM深度分析的更多信息,见McCord等人所著“Deep Parsing in Watson(在Watson中的深度解析)”IBM研究与发展J.,卷56,第3/4号五月/七月2012)应用查询的过程中发现的数据的语料库的每一部分使用的语言进行诸如英国位置语法(ESG)和谓词论元结构(PAS)生成器的深度分析。可以应用成千上百种推理算法,其中每一个执行不同的分析,例如比较、自然语言分析、词法分析等并生成得分。例如,一些推理算法可以寻找输入问题的语言中的匹配用语和同义词并发现数据语料库中的部分。其他的推理算法可以寻找语言中的时间或空间特征,而其它算法可以评估数据语料库部分的来源并评估其准确性。
从各种推理算法中得到的得分表明,由输入问题基于推理算法专注的特定领域在一定程度上推断出潜在的响应。然后,针对统计模型加权得到的每个得分。统计模型捕捉推理算法在QA系统的训练期间对特定领域的两个相似段落之间建立推理执行的怎么样。统计模型是用来总结QA系统具有的关于被问题推断出来的可能响应-即候选答案的置信度水平。对每个候选答案重复这个过程,直到QA系统识别显著强于其他答案的候选答案并因此为输入问题产生最终的答案或排名的答案集。
如上所述,QA系统和机制运作是通过访问来自数据语料库的信息或信息(也被称为内容语料库),对其进行分析,然后基于这一数据的分析产生答案结果。从数据语料库访问信息通常包括:数据库查询,回答关于在结构化记录集中有什么的问题,以及检索,响应于针对非结构化数据(文本、标记语言等)集的查询提供文档链接的集。传统的QA系统能够基于数据语料库和输入问题生成答案,针对数据语料库验证问题集的答案,适用数据语料库对数字文本纠正错误,并从可能答案,即候选答案的池中选择问题的答案。
内容创建者(诸如文章作者、电子文档创建者、网页作者、文档数据库创建者等)可在编写他们的内容之前确定在这种内容中描述的产品、解决方案和服务的使用情况。因此,内容创建者可知道内容意图在由内容描述的特定主题中回答什么问题。在数据的语料库的每个文档中诸如根据与问题关联的角色、信息的类型、任务等对问题进行分类,可允许QA系统更快速且高效地识别包含与特定查询相关的内容的文档。内容还可回答内容创建者未想到可能对内容用户有用的其它问题。问题和答案可由内容创建者检验以便被包含在给定文档的内容中。这些能力有助于提高的准确性、系统性能、机器学习和QA系统的置信度。内容创建者、自动化工具等可做注释或以其它方式产生元数据以提供可由QA系统用于识别内容的这些问题和答案属性的信息。
对这种内容进行操作,QA系统使用多个加强分析机构产生输入问题的答案,所述多个加强分析机构评估内容以识别输入问题的最有可能的答案(即,候选答案)。最有可能的答案输出为根据评价侯选回答期间计算的它们的相对得分或置信度测量值排名的候选答案排名的列表、具有最高得分或置信度测量的单个最终答案、或者是对输入问题最好的匹配,或者排名列表与最终答案的组合。
图6描述计算机网络602中的问题/答案创建(QA)系统600的一个说明性实施例的示意图。在第2011/0125734号美国专利申请公开中描述了可结合这里描述的原理使用的问题/答案产生的一个例子,该美国专利申请的全部内容通过引用包含于此。QA系统600可被实现在连接到计算机网络602的一个或多个计算装置604(包括一个或多个处理器和一个或多个存储器,并且可包括本领域通常已知的任何其它计算装置元件,包括总线、存储装置、通信接口等)上。网络602可包括经由一个或多个有线和/或无线数据通信链路彼此通信以及与其它装置或部件通信的多个计算装置604,其中每个通信链路可包括导线、路由器、交换机、发射器、接收器等中的一个或多个。QA系统600和网络602可以启用一个或多个QA系统用户经由他们各自的计算装置610-612的问/答(QA)产生功能。QA系统600的其它实施例可被与除这里描述的部件、系统、子系统和/或装置之外的部件、系统、子系统和/或装置一起使用。
QA系统600可被配置为实现从各种源接收输入的QA系统管道608。例如,QA系统600可从网络602、电子文档的语料库606、QA系统用户或其它数据和其它可能的输入源接收输入。在一个实施例中,可通过网络602对QA系统600的一些或所有的输入进行路由。网络602上的各种计算装置604可包括用于内容创建者和QA系统用户的接入点。一些计算装置604可包括用于存储数据的语料库606的数据库的装置(在图6中,仅为了说明的目的,数据的语料库606被示出为单独的实体)。数据的语料库606的各部分也可布置在一个或多个其它附接于网络的存储装置上,布置在一个或多个数据库或者图6中未明确地示出的其它计算装置中。在各种实施例中,网络602可包括局部网络连接和远程连接,从而QA系统600可在任何大小的环境(包括本地和全球环境(例如,互联网))中操作。
在一个实施例中,内容创建者创建数据的语料库606的文档中的内容以用作QA系统600的数据的语料库的一部分。文档可包括任何文件、文本、文章或用在QA系统600中的数据的源。QA系统用户可经由与网络602的网络连接或互联网连接访问QA系统600,并且可将可由数据的语料库606中的内容回答的问题输入到QA系统600。在一个实施例中,可使用自然语言形成问题。QA系统600解析并解释问题,并且将包含问题的一个或多个答案的响应提供给QA系统用户(例如,QA系统用户610)。在一些实施例中,QA系统600可在候选答案的分级列表中将响应提供给用户。而在其它说明性实施例中,QA系统600提供唯一的最后答案或者唯一的最后答案与其它候选答案的分级列表的组合。
QA系统600实现QA系统管道608,QA系统管道608包括用于处理输入问题、数据的语料库606以及基于数据的语料库606的处理产生输入问题的答案的多个阶段。将在以下参照图3更详细地描述QA系统管道608。
在一些说明性实施例中,QA系统600可以是从纽约阿芒克的国际商业机器公司获得的IBM WatsonTM QA系统,其使用以下描述的说明性实施例的机制进行增强。如前文所述,IBM WatsonTM QA系统接收输入问题,然后问题被解析并提取问题的主要特征,这些特征反过来用于规划应用于数据的语料库的查询。
基于将查询应用于数据的语料库,通过跨数据语料库查找数据语料库可能包含输入问题的有价值的响应的数据语料库的部分生成一组对输入问题的假说或候选答案。WatsonTM QA系统随后使用各种推理算法对输入问题的语言和在查询的应用期间找到的数据的语料库的每个部分中使用的语言执行深入分析。然后从各种分析算法得到的得分被加权,然后将从各推理算法得到的分数针对总结了IBMWatsonTM QA系统具有的关于可能响应置信度的置信度评级的统计模型进行加权,即,由问题推断候选答案。对生成的每个候选的答案重复这个过程以生成候选答案排名的列表,然后可以将该列表呈现给提交输入问题的用户或者从中选择最终答案呈现给用户。可以例如从IBM公司的网站、IBM红皮书等获得关于IBM WatsonTM QA系统的更多信息。例如,有关IBM WatsonTM QA系统的信息可以在Yuan等人所著的,“Watson and Healthcare(沃森和医疗保健)”IBM的developerWorks,2011以及由罗伯高所著“The Era of CognitiveSystems:An Inside Look at IBM Watson and How it Works(认知系统的时代:将深入了解IBM沃森和它是如何工作的)”,IBM红皮书,2012中找到。
如图6所示,根据说明性实施例的机制提供了与QA系统600关联的矩阵重新排序引擎620。尽管在图6中作为一个单独单元示出,在一些说明性实施例中,该矩阵重新排序620引擎可以集成到QA系统600和/或QA系统管道608。矩阵重新排序620引擎包括团生成器622、集群生成器624、集群排序逻辑626以及输出生成器628,它们中的每一个都可以用专门的硬件、在硬件上执行的软件或一个或多个计算设备的专用的硬件和在硬件上执行软件的任何组合实现。矩阵重新排序引擎620的操作可以作为对QA系统管道608例如如在语料库摄入期间使用的矩阵的预处理器。另外,QA系统管道608运行期间可以调用矩阵重新排序引擎620的操作,例如,如在语料库识别证据和证据得分以生成候选答案置信得分的部分。总之,作为QA系统600的操作的部分,可以在矩阵运算要执行的任何时候调用矩阵的重新排序引擎620。
矩阵重新排序引擎620的团生成器622包括操作以在输入矩阵的矩阵节点识别团的逻辑。在生成这些团中,可以处理节点(如由矩阵的非零元素指定)之间的关系并最小化尺寸要求以生成从其可以执行节点及其对应的矩阵的非零元素的聚类的一组团。这对应于如上所述的图5中的步骤510。
集群生成器624包括操作以从初始的一组团生长矩阵节点的集群并提炼这些集群以最小化跨群集连接的逻辑。正如上面所讨论的,聚类可以包括基于节点具有的到集群每一个的连接的数目,将不在团中的每一个矩阵节点分配到集群中。此外,集群的提炼可以包括将节点从一个集群移动到另一个以最小化跨集群连接,同时遵守集群最大尺寸的限制并确保减少跨集群连接(或边)的总数减少。可以反复迭代集群生成器624的过程,直到无法得到进一步明显的改善,例如,跨群集连接的数目不再减少。这些操作例如对应于图5的步骤520-530。
群集排序逻辑626包括操作以将提炼的集群排序从而最小化跨集群连接的总长度,并根据两个端点的节点分布集中跨集群连接的逻辑。此外,集群排序逻辑626可以可选地在每个集群内重新排列元素以便将非零元素移动到更接近集群的对角线。这例如对应于图5的步骤540-550。
输出生成器628负责跟踪由查找表向量中其他元素622-626的重新排序操作造成的矩阵变化并在矩阵维护节点原始位置的向量。可以由输出生成器628以QA系统600执行诸如在输入矩阵上执行矩阵向量乘法运算的矩阵运算可用的格式输出该查找表和经重新排序的矩阵。
图7是可实现说明性实施例的各方面的示例性数据处理系统的方框图。数据处理系统700是计算机(诸如,图6中的服务器604或客户机610)的例子,实现本发明的说明性实施例的各过程的计算机可用代码或指令可位于该计算机中。在一个说明性实施例中,图7代表实现QA系统600和QA系统管道608的服务器计算装置(诸如,服务器604),QA系统600和QA系统管道608被加强以包括以下描述的说明性实施例的另外的机构。
在描述的例子中,数据处理系统700采用集线器架构,该集线器架构包括北桥和内存控制器集线器(NB/MCH)702以及南桥和输入/输出(I/O)控制器集线器(SB/ICH)704。处理单元706、主存储器708和图形处理器710连接到NB/MCH 702。图形处理器710可通过加速图形端口(AGP)连接到NB/MCH 702。
在描述的例子中,局域网(LAN)适配器712连接到SB/ICH 704。音频适配器716、键盘和鼠标适配器720、调制解调器722、只读存储器(ROM)724、硬盘驱动器(HDD)726、CD-ROM驱动器730、通用串行总线(USB)端口和其它通信端口732以及PCI/PCIe装置734通过总线738和总线740连接到SB/ICH 704。PCI/PCIe装置可包括例如以太网适配器、附加卡和用于笔记本计算机的PC卡。PCI使用卡总线控制器,而PCIe不使用卡总线控制器。ROM 724可以是例如闪速基本输入/输出系统(BIOS)。
HDD 726和CD-ROM驱动器730通过总线740连接到SB/ICH704。HDD 726和CD-ROM驱动器730可使用例如集成驱动电子设备(IDE)或串行高级技术附件(SATA)接口。超级I/O(SIO)装置736可连接到SB/ICH 704。
操作系统在处理单元706上运行。操作系统协调并提供图7中的数据处理系统700内的各种部件的控制。作为客户机,操作系统可以是可商购获得的操作系统,诸如面向对象的编程系统(诸如,JavaTM编程系统)可结合操作系统运行并且提供从在数据处理系统700上执行的JavaTM程序或应用对操作系统的调用。
作为服务器,数据处理系统700可以是例如运行高级交互执行操作系统或操作系统的eServerTM System计算机系统。数据处理系统700可以是在处理单元706中包括多个处理器的对称多处理器(SMP)系统。或者,可采用单处理器系统。
用于操作系统、面向对象编程系统和应用或程序的指令位于存储装置(诸如,HDD 726)上,并且可被加载到主内存708中以由处理单元706执行。本发明的说明性实施例的过程可由处理单元706使用计算机可用程序代码执行,该计算机可用程序代码可位于内存(诸如例如,主存储器708、ROM 724)中或者位于例如一个或多个外围装置726和730中。
总线系统(诸如,如图7中所示的总线738或总线740)可包括一个或多个总线。当然,可使用任何类型的通信结构或架构实现该总线系统,所述通信结构或架构提供连接到该结构或架构的不同部件或装置之间的数据传输。通信单元(诸如,图7的调制解调器722或网络适配器712)可包括用于发送和接收数据的一个或多个装置。内存可以是例如主存储器708、ROM 724或诸如在图7中的NB/MCH 702中的高速缓存。
本领域普通技术人员将会理解,图1和7中描述的硬件可根据实现方式而不同。除图1和7中描述的硬件之外或者替代于图1和7中描述的硬件,可使用其它内部硬件或外围装置,诸如闪存、等同的非易失性存储器或光盘驱动器等。此外,在不脱离本发明的精神和范围的情况下,说明性实施例的过程可应用于除前述SMP系统之外的多处理器数据处理系统。
此外,数据处理系统700可采用许多不同数据处理系统中的任何形式,包括客户机计算装置、服务器计算装置、平板计算机、膝上型计算机、电话或其它通信装置、个人数字助手(PDA)等。在一些说明性例子中,数据处理系统700可以是例如便携式计算装置,该便携式计算装置构造为具有提供用于存储操作系统文件和/或用户产生的数据的非易失性存储器的闪存。实质上,数据处理系统700可以是任何已知或者以后开发的数据处理系统而没有架构限制。
图8示出根据一个说明性实施例的用于处理输入问题的QA系统管道。图8的QA系统管道可例如被实现为图6中的QA系统600的QA系统管道608。应该理解,图8中示出的QA系统管道的各级可被实现为利用用于实现归属于特定级的功能的逻辑构成的一个或多个软件引擎、部件等。可使用这种软件引擎、部件等中的一个或多个实现每个阶段。软件引擎、部件等在一个或多个数据处理系统或装置的一个或多个处理器上执行,并且使用或操作存储在一个或多个数据处理系统上的一个或多个数据存储装置、存储器等中的数据。此外,尽管在图8中没有明确示为一个单独的模块,QA系统管道800使用由图中箭头所示的接口访问存储在一个或者多个存储设备上的语料库847或者语料库845。
图8的QA系统管道可例如在一个或多个阶段中被加强以实现以下描述的说明性实施例的改进的机构,可提供另外的级以实现改进的机构,或者可提供与管道800分离的逻辑以与管道800对接并且实现说明性实施例的改进的功能和操作。
如图8中所示,QA系统管道800包括多个阶段810-880,通过所述多个阶段810-880,QA系统进行操作以分析输入问题并且产生最终响应。在初始问题输入阶段810中,QA系统接收以自然语言格式提供的输入问题。也就是说,用户可经由用户界面输入用户希望获得其答案的输入问题,例如,“谁是华盛顿最亲密的顾问?”响应于接收到输入问题,QA系统管道800的下一阶段(即,问题和主题分析阶段820)使用自然语言处理(NLP)技术解析输入问题以从输入问题提取主要特征,根据类型(例如,姓名、日期或大量其它定义的主题中的任何主题)对主要特征进行分类。例如,在以上示例性问题中,项“谁”可与指示正在寻找的人的身份的“人”的主题关联,“华盛顿”可被识别为问题所关联的人的正确姓名,“最亲密的”可被识别为指示接近程度或关系的词语,并且“顾问”可指示名词或其它语言主题。
此外,提取的主要特征包括分类为问题特性的关键词和短语,如问题的重点、问题的词汇答案类型(LAT)等。如本文所指,词汇答案类型(LAT)是在输入问题中或从输入问题推断出的指示答案类型的词,其独立于为该词指定的语义。例如,在问题“在16世纪发明了什么加速游戏的操纵装置,它包括相同颜色的两块?”。LAT是字符串“操纵装置”。问题的焦点是问题的这样一部分,如果用答案取代该部分使得问题成为单独的陈述。例如,在问题“什么药物已经显示出能够减轻ADD的症状并具有相对较少的副作用?”重点是“药物”,因为如果例如用答案“Adderall”替换该词“药物”生成陈述的句子“Adderall已经显示出减轻ADD的症状兵具有相对较少的副作用。”。重点经常但并非总是包含LAT。另一方面,在许多情况下,不可能从重点推断出有意义的LAT。
再次参考图8,识别的主要特征可随后在问题分解阶段830期间被用于将问题分解为一个或多个查询,所述一个或多个查询可被应用于数据/信息的语料库845以便产生一个或多个假设。可按照任何已知的或以后开发的查询语言(诸如,结构查询语言(SQL)等)产生查询。查询可被应用于存储关于构成数据/信息的语料库845的电子文本、文档、文章、网站等的信息的一个或多个数据库。也就是说,这些各种源自己、不同的各批的源等可代表多个语料库845内的不同语料库847。可存在基于各种准则根据特定实现方式为不同的各批文档定义的不同语料库847。例如,可为不同的主题、主题类别、信息源等建立不同的语料库。作为一个例子,第一语料库可与卫生保健文档关联,而第二语料库可与金融文档关联。替代地,一个语料库可以是由美国能源部公布的文档,而另一语料库可以是IBM Redbooks文档。具有某一类似属性的任何一批内容可被视为多个语料库845内的一个语料库847。
查询可被应用于存储关于构成数据/信息的语料库(例如,图6中的数据的语料库606)的电子文本、文档、文章、网站等的信息的一个或多个数据库。查询在假设产生阶段840被应用于数据/信息的语料库以产生能够评估的识别用于回答输入问题的潜在假设的结果。也就是说,查询的应用导致与特定查询的准则匹配的数据/信息的语料库的一部分的提取。语料库的这些部分可随后在假设产生阶段840期间被分析和使用以产生用于回答输入问题的假设。这些假设在这里也被称为输入问题的“候选答案”。对于任何输入问题,在这个阶段840,可产生可能需要评估的数百个假设或候选答案。
QA系统管道800随后在阶段850中执行输入问题的语言和每个假设或“候选答案”的语言的深入分析和比较,以及执行证据评分以评估特定假设是输入问题的正确答案的可能性。如上所述,这可包括使用多个推理算法,每个推理算法执行输入问题的语言和/或语料库的内容的单独类型的分析,所述分析提供支持或不支持假设的证据。每个推理算法基于它执行的分析产生得分,所述得分指示通过查询的应用而提取的数据/信息的语料库的各部分的相关性的量度以及对应假设的正确性的量度(即,假设的置信度的量度)。
根据执行的特定的分析的不同可以有各种方法生成这样的得分。然而,通常这些算法寻找指示感兴趣的用语、短语或文本的特定的用语、短语或文本的模式并确定匹配程度,相对于较低的匹配度,较高的匹配度会被给予相对较高的得分。
因此,例如可以算法配置以从输入问题寻找精确用语或在输入问题中寻找该精确用语的同义词,例如,精确用语“movie(电影)”或其同义词,并基于这些精确用语或同义词的使用频率生成得分。在这种情况下,精确匹配将被给予最高得分,而同义词可以基于同义词的相对排名被给予一个较低得分,同义词的相对排名可以由主题专家(具有特定领域和使用术语的知识的人)指定,或根据对应领域的语料库中同义词的使用频率自动确定。因此,例如在语料库内容中用语“movie(电影)”的精确匹配(也被称为证据,或证据段落)被给了最高得分。电影的同义词,如“motion picture(电影)”可能会给到较低的得分,但仍然高于同义词“film(电影,胶片)”或“moving picture show(电影节目)”的得分。可以将每个证据段落的精确匹配和同义词的实例用定量函数进行编译和使用以生成输入问题证据段落的匹配程度的得分。
因此,例如对输入问题“第一部电影是什么?”的假设或候选答案是“The Horse in Motion(运动中的马)”。如果证据段落包含陈述“第一部电影是由埃德沃德·迈布里奇在1878制作的“运动中的马”。这是一部马奔跑的电影”,并且该算法寻找输入问题焦点-“movie(电影)”的精确匹配或同义词,然后,在证据段落的第二句中找到“movie(电影)”的精确匹配,在证据段落的第一句中发现得分很高的同义词“motion picture(电影)”。这可以与证据段落的进一步分析进行组合以识别候选答案的文本-即“运动中的马”也存在于证据段落。这些因素可以组合以向该证据段落给出赋予一个相对较高的得分作为支持候选答案“运动中的马”是正确答案的证据。
应该理解,这只是如何进行评分的一个简单例子。许多其他各种复杂的算法可以用来为候选答案和证据生成得分,而不背离本发明的精神和范围。
在合成阶段860中,由各种推理算法生成的大量的相关性得分可被合成为各种假的置信度得分。这个过程涉及将权重施加于各种得分,其中已通过由QA系统采用和/或动态地更新的统计模型的训练确定了权重。例如,相对于为证据段落评估出版日期的算法所生成的得分,由识别精确匹配用语和同义词的算法所生成的得分的权重可以被设定成相对较高。权重本身可以由主题专家指定或通过机器学习过程学习,该过程评估证据段落特征的重要性以及他们对整体候选答案生成的相对重要性。
根据通过QA系统的训练生成的统计模型对加权得分进行处理,该训练识别可以将这些得分组合以生成置信度得分或度量单独的假设或候选答案的方式。该置信度得分或度量总结QA系统具有的关于由输入问题推导的候选答案的证据的置信度,即候选答案对输入问题来说是正确答案的置信度。
得到的置信度得分或量度由最终置信度合并和评级级870处理,最终置信度合并和评级阶段870可比较置信度得分和量度,将它们与预定阈值进行比较,或者对置信度得分执行任何其它分析以确定哪些假设/候选答案最有可能是输入问题的答案。可根据这些比较对假设/候选答案进行评级以产生假设/候选答案(以下,简称为“候选答案”)的评级列表。从候选答案的评级列表,在阶段880,最终的答案和置信度得分或者最终的一组候选答案和置信度得分可被产生并且通过图形用户接口或者输出信息的其它机制输出到原始输入问题。
如图8所示,QA系统管道800还与一个或多个在输入矩阵上操作的矩阵重新排序引擎892和896以前面描述的方式相结合操作,以生成经重新排序的矩阵894,898和对应的查找表(未显示)。如图所示,矩阵排序引擎892、896可以是单个引擎或多个引擎。图8示出了多个矩阵排序引擎892、896,只为说明可以使用这种矩阵排序的管道800的不同阶段。在实际中,矩阵排序引擎892可用于在管道800的单一位置,甚至可以是那些不与图8的矩阵排序引擎相关的其它阶段。
如图8所示,在一个说明性实施例中,矩阵排序引擎892可作为语料库摄取引擎890的一部分操作,并可在表示语料库847或语料库845中的文档信息的矩阵上操作。因此,从这个意义上讲,矩阵排序引擎892作为语料库847或语料库845的预处理器操作,并生成可以被假设生成阶段840利用以生成输入问题的候选答案的重新排序矩阵894和查找表。例如,被操作的矩阵可以包括语料库的文档中的概念的节点指示,并可用于识别哪些文件具有相关(如在这些概念节点的交叉点由非零元素指示)的概念。此信息可与从输入问题810所提取的特征以及由问题分解器830所生成的查询一起使用以确定语料库845或语料库847中的可能提供输入问题810的候选答案的文档。
在另一个说明性实施例中,矩阵排序引擎896可以被集成到QA系统管道800中,并可以在运行时操作以协助评估用于各种假设(候选答案)打分的证据。经重新排序的矩阵898可以用来表示文档的证据内容并将这个证据与候选答案关联以确定对每个候选答案来说有多少支持,从而确定候选答案的置信度。可以执行矩阵运算以生成这种置信度的度量,也可以利用经重新排序的矩阵898进行这种矩阵运算。QA系统的其他实施方式可利用矩阵排序引擎和在其他阶段经重新排序的矩阵或其他实现矩阵运算的操作,例如,矩阵向量乘法运算。
因此,示例性实施例通过提供基于聚类的矩阵重新排序提供在计算装置中改善矩阵运算执行的机制。基于集群的重新排序提供了矩阵非零元素紧凑排序,甚至在具有近似无标度图拓扑结构的大型矩阵的情况。非零元素的紧凑排序在矩阵运算过程中增加了缓存的效率,导致矩阵运算的性能地改善。
如上所述,应当理解,示例实施例可以采取完全硬件实施例,完全软件实施例或包含硬件和软件元件的实施例的形式。在一个示例实施例中,说明性实施例的机制在软件或程序代码中实现,其包括但不限于固件,驻留软件,微代码等。
适合于存储和/或执行程序代码的数据处理系统将包括通过系统总线直接或间接耦合到存储器元件的至少一个处理器。所述存储器元件可以包括在程序代码实际执行期间利用的本地存储器,大容量存储器,和提供至少一些程序代码的临时存储,以便减少在执行期间必须从大容量存储器检索的次数的高速缓存存储器。
输入/输出或I/O设备(包括但不限于键盘,显示器,定点设备等)可以直接或通过中间I/O控制器被耦合到系统。网络适配器也可以耦合到系统以使数据处理系统通过介入的私有或公共网络与其他数据处理系统或远程打印机或存储设备相耦合。调制解调器,电缆调制解调器和以太网卡只是几个当前可用类型的网络适配器。
已经为说明和描述的目的介绍了本发明的说明书,并且不旨在穷尽或将本发明限于所公开的形式。对本领域的普通技术人员来说,许多修改和变化将是显而易见的,并且不脱离所描述实施例的范围和精神。为了最好地解释本发明的原理、实际的应用、以及使本领域的其他技术人员能够理解本发明的具有各种修改的各种实施例作为适合于预期的特定用途的说明,选择并描述了实施例。本文所用的用语被选择以最好地解释实施例的原理、实际应用、或者对市场上发现的技术的改进技术、或者使其他本领域的普通技术人员能够理解在此公开的实施例。

Claims (21)

1.一种在包括处理器和存储器的数据处理系统中用于执行矩阵运算的方法,该方法包括:
配置所述数据处理系统的所述处理器以执行输入矩阵的基于集群的矩阵重新排序;
由所述处理器接收该输入矩阵,其中,该输入矩阵包括与所述矩阵中的元素相关联的节点;
由所述处理器基于与聚类内部和聚类之间的其它节点之间的连接的数量,将所述节点聚类成集群;
由所述处理器通过最小化所述集群的节点之间的跨集群连接的总长对集群排序,从而生成经重新排序的矩阵;
由所述处理器生成识别该输入矩阵的节点在经重新排序的矩阵中的新位置的查找表;
在所述数据处理系统的存储器中根据在所述经重新排序的矩阵中节点的所述新位置存储对应于所述节点的数据;以及
由所述处理器至少通过将对应于所述经重新排序的矩阵中节点对应的的数据加载到所述数据处理系统的高速缓冲存储器中,基于所述经重新排序的矩阵和所述查找表执行矩阵运算,其中当执行所述矩阵运算时,对应于所述节点的数据的所述存储器根据在所述经重新排序的矩阵中节点的所述新位置最小化所述高速缓冲存储器中的高速缓存未命中。
2.根据权利要求1所述的方法,其中所述输入矩阵的所述节点表示以下至少之一:信息、概念或实体,并且其中,所述矩阵的所述元素表示所述节点之间的连接或关系,其中非零元素指示与所述元素相关联的所述节点之间的连接。
3.根据权利要求1所述的方法,其中将节点聚类成集群进一步包括:
识别所述输入矩阵中节点的一个或多个团,其中节点的团仅包括彼此具有连接的节点;以及
基于所述其它节点到已经在所述一个团中的节点的连接,通过将所述输入矩阵的已经不在节点的团中的其它节点分配到所述一个团中,将在所述一个或多个节点的团中的至少一个节点的团生长成节点的集群。
4.根据权利要求3所述的方法,其中将节点聚集成集群进一步包括:
将在所述一个或多个节点的团中的每个节点的团的大小与最小的团的大小相比较,其中,所述最小的团的大小指定了需要在团中的节点的最小数量,以用于基于所述团生长成集群;以及
在所述一个或多个节点的团中只在大小满足或者超过所述最小的团的大小的节点的团上执行所述至少一个节点的团的生长。
5.根据权利要求3所述的方法,其中将所述输入矩阵的其它节点分配到所述一个团中包括将在所述一个团中的所述其他节点的每一个分配到各自的团,所述其它节点到其各自的团具有最大数量的连接。
6.如权利要求3的所述方法,其中生长所述至少一个节点的团包括将所述输入矩阵的其它节点分配到所述至少一个团中,直到达到最大的集群大小。
7.根据权利要求6所述的方法,其中所述最大的集群大小与与所述处理器相关联的高速缓冲存储器的高速缓冲存储器的大小成比例。
8.根据权利要求3所述的方法,其中对节点的聚类还包括,对于每个集群以及对于每个集群的每个节点:
通过评估所述集群的所述节点来确定是否该节点到另一个集群的节点比到所述集群内的节点有更多的连接来提炼集群;以及
如果该节点到其它集群的节点比到所述集群内的节点有更多的连接,将该节点迁移到所述其它集群,并且迁移所述节点不违反所述其它集群的最大群集大小的限制。
9.根据权利要求1的所述的方法,其中通过最小化所述集群的节点之间的跨集群连接的总长对集群排序,从而生成经重新排序的矩阵还包括:在所述集群的每个的内部执行节点的本地排序,其中,所述在集群的每个的内部节点的本地排序包括:将所述集群的非零元素移动到更靠近所述集群的子矩阵的对角线,并且将具有到相邻集群中节点的连接的节点移动到更靠近所述集群的所述子矩阵的边界。
10.根据权利要求1所述的方法,其中,所述矩阵运算是所述矩阵乘以向量以生成输出向量,并且其中所述方法进一步包括:
基于该矩阵运算执行分析操作,基于所述经重新排序的矩阵和所述查找表来从所述输入矩阵中提取信息;以及
输出所述分析操作的结果。
11.一种装置,包括:
处理器;
耦合至所述处理器的高速缓冲存储器;和
耦合到所述处理器的存储器,其中该存储器包括指令,当由所述处理器执行所述指令时,配置所述处理器执行:
执行输入矩阵的基于集群的矩阵重新排序;
接收该输入矩阵,其中,该输入矩阵包括与所述矩阵中的元素相关联的节点;
基于与聚类内部和聚类之间的其它节点之间的连接的数量,将所述节点聚类成集群;
通过最小化所述集群的节点之间的跨集群连接的总长对集群排序,从而生成经重新排序的矩阵;
生成识别该输入矩阵的节点在经重新排序的矩阵中的新位置的查找表;
根据在所述经重新排序的矩阵中节点的所述新位置存储对应于所述节点的数据;以及
至少通过将对应于所述经重新排序的矩阵中节点对应的的数据加载到所述高速缓冲存储器中,基于所述经重新排序的矩阵和所述查找表执行矩阵运算,其中当执行所述矩阵运算时,对应于所述节点的数据的所述存储器根据在所述经重新排序的矩阵中节点的所述新位置最小化所述高速缓冲存储器中的高速缓存未命中。
12.根据权利要求11所述的装置,其中所述输入矩阵的所述节点表示以下至少之一:信息、概念或实体,并且其中,所述矩阵的所述元素表示所述节点之间的连接或关系,其中非零元素指示与所述元素相关联的所述节点之间的连接。
13.根据权利要求11所述的装置,其中将节点聚类成集群进一步包括:
识别所述输入矩阵中节点的一个或多个团,其中节点的团仅包括彼此具有连接的节点;以及
基于所述其它节点到已经在所述一个团中的节点的连接,通过将所述输入矩阵的已经不在节点的团中的其它节点分配到所述一个团中,将在所述一个或多个节点的团中的至少一个节点的团生长成节点的集群。
14.根据权利要求13所述的装置,其中将节点聚集成集群进一步包括:
将在所述一个或多个节点的团中的每个节点的团的大小与最小的团的大小相比较,其中,所述最小的团的大小指定了需要在团中的节点的最小数量,以用于基于所述团生长成集群;以及
在所述一个或多个节点的团中只在大小满足或者超过所述最小的团的大小的节点的团上执行所述至少一个节点的团的生长。
15.根据权利要求13所述的装置,其中将所述输入矩阵的其它节点分配到所述一个团中包括将在所述一个团中的所述其他节点的每一个分配到各自的团,所述其它节点到其各自的团具有最大数量的连接。
16.如权利要求13的所述装置,其中生长所述至少一个节点的团包括将所述输入矩阵的其它节点分配到所述至少一个团中,直到达到最大的集群大小。
17.根据权利要求16所述的装置,其中所述最大的集群大小与与所述处理器相关联的高速缓冲存储器的高速缓冲存储器的大小成比例。
18.根据权利要求3所述的装置,其中对节点的聚类还包括,对于每个集群以及对于每个集群的每个节点:
通过评估所述集群的所述节点来确定是否该节点到另一个集群的节点比到所述集群内的节点有更多的连接来提炼集群;以及
如果该节点到其它集群的节点比到所述集群内的节点有更多的连接,将该节点迁移到所述其它集群,并且迁移所述节点不违反所述其它集群的最大群集大小的限制。
19.根据权利要求11的所述的装置,其中通过最小化所述集群的节点之间的跨集群连接的总长对集群排序,从而生成经重新排序的矩阵还包括:在所述集群的每个的内部执行节点的本地排序,其中,所述在集群的每个的内部节点的本地排序包括:将所述集群的非零元素移动到更靠近所述集群的子矩阵的对角线,并且将具有到相邻集群中节点的连接的节点移动到更靠近所述集群的所述子矩阵的边界。
20.根据权利要求1所述的装置,其中,所述矩阵运算是所述矩阵乘以向量以生成输出向量,并且其中所述装置进一步包括:
基于该矩阵运算执行分析操作,基于所述经重新排序的矩阵和所述查找表来从所述输入矩阵中提取信息;以及
输出所述分析操作的结果。
21.一种问答(QA)系统,包括:
至少一个处理器;和
接口,用于访问存储自然语言内容的语料库的一个或多个存储设备,由该QA系统处理该语料库以生成接收的问题的答案,其中,所述至少一个处理器被配置为实现:
QA系统管道,其接收输入问题并通过处理自然语言内容的语料库生成对该输入问题的一个或者多个答案;
矩阵排序引擎,耦合到所述QA系统管道,其中所述矩阵排序引擎被配置为:
接收该输入矩阵,其中,该输入矩阵包括与所述矩阵中的元素相关联的节点,并且其中所述节点表示在所述自然语言内容中发现的概念,并且所述矩阵的所述元素表示在所述自然语言内容中发现的所述概念之间的连接;
基于与聚类内部和聚类之间的其它节点之间的连接的数量,将所述节点聚类成集群;
通过最小化所述集群的节点之间的跨集群连接的总长对集群排序,从而生成经重新排序的矩阵;
生成识别该输入矩阵的节点在经重新排序的矩阵中的新位置的查找表;
在所述存储器中根据在所述经重新排序的矩阵中节点的所述新位置存储对应于所述节点的数据;以及
由所述处理器至少通过将对应于所述经重新排序的矩阵中节点对应的的数据加载到所述数据处理系统的高速缓冲存储器中,基于所述经重新排序的矩阵和所述查找表执行矩阵运算,其中当执行所述矩阵运算时,对应于所述节点的数据的所述存储器根据在所述经重新排序的矩阵中节点的所述新位置最小化所述高速缓冲存储器中的高速缓存未命中。
CN201610073091.0A 2015-02-02 2016-02-02 用于提高缓存效率的矩阵排序的方法和系统 Active CN105843781B (zh)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US14/611,297 US9606934B2 (en) 2015-02-02 2015-02-02 Matrix ordering for cache efficiency in performing large sparse matrix operations
US14/611,297 2015-02-02

Publications (2)

Publication Number Publication Date
CN105843781A true CN105843781A (zh) 2016-08-10
CN105843781B CN105843781B (zh) 2019-05-14

Family

ID=56554384

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201610073091.0A Active CN105843781B (zh) 2015-02-02 2016-02-02 用于提高缓存效率的矩阵排序的方法和系统

Country Status (2)

Country Link
US (2) US9606934B2 (zh)
CN (1) CN105843781B (zh)

Cited By (15)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN108205433A (zh) * 2016-12-19 2018-06-26 英特尔公司 用来加速稀疏矩阵乘密集向量以及稀疏向量乘密集向量乘法的存储器到存储器指令
CN108268933A (zh) * 2016-12-30 2018-07-10 英特尔公司 矩阵处理架构中的最大池化
CN108268425A (zh) * 2016-12-30 2018-07-10 英特尔公司 可编程矩阵处理引擎
CN108268697A (zh) * 2017-12-20 2018-07-10 中国空间技术研究院 一种高效率电推进羽流等离子体并行仿真方法
CN108762718A (zh) * 2018-05-28 2018-11-06 武汉大学 一种提高计算机运算速度的并发筛选排序方法
CN108985815A (zh) * 2018-06-06 2018-12-11 阿里巴巴集团控股有限公司 一种用户识别方法、装置及设备
CN109635238A (zh) * 2018-12-07 2019-04-16 北京字节跳动网络技术有限公司 矩阵运算方法、装置、设备及可读介质
CN109997131A (zh) * 2016-10-26 2019-07-09 谷歌有限责任公司 用于基于内核的机器学习的结构化正交随机特征
CN111030927A (zh) * 2019-11-20 2020-04-17 中国人民解放军国防科技大学 一种顺序感知的片上网络路由方法和网络路由器
CN111124271A (zh) * 2018-10-31 2020-05-08 伊姆西Ip控股有限责任公司 用于针对磁盘系统执行资源重新分配的方法、装置和计算机程序产品
CN111353083A (zh) * 2018-12-20 2020-06-30 中国科学院计算机网络信息中心 一种通过计算集群进行网页排序的方法及装置
CN112346852A (zh) * 2019-08-06 2021-02-09 脸谱公司 矩阵求和运算的分布式物理处理
CN112433760A (zh) * 2020-11-27 2021-03-02 海光信息技术股份有限公司 数据排序方法和数据排序电路
CN112437916A (zh) * 2018-07-17 2021-03-02 斯诺弗雷克公司 数据库表的增量群集
CN112470172A (zh) * 2018-05-04 2021-03-09 国际商业机器公司 使用随机序列嵌入的符号序列分析的计算效率

Families Citing this family (21)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9606934B2 (en) 2015-02-02 2017-03-28 International Business Machines Corporation Matrix ordering for cache efficiency in performing large sparse matrix operations
US11017301B2 (en) 2015-07-27 2021-05-25 International Business Machines Corporation Obtaining and using a distributed representation of concepts as vectors
US9798818B2 (en) 2015-09-22 2017-10-24 International Business Machines Corporation Analyzing concepts over time
CN107122371A (zh) * 2016-02-25 2017-09-01 伊姆西公司 用于数据处理的方法和装置
WO2018018021A1 (en) * 2016-07-21 2018-01-25 Ayasdi, Inc. Scalable topological data analysis using topological summaries of subsets
US10552461B2 (en) * 2016-09-16 2020-02-04 International Business Machines Corporation System and method for scoring the geographic relevance of answers in a deep question answering system based on geographic context of a candidate answer
US10902342B2 (en) 2016-09-16 2021-01-26 International Business Machines Corporation System and method for scoring the geographic relevance of answers in a deep question answering system based on geographic context of an input question
US10304263B2 (en) * 2016-12-13 2019-05-28 The Boeing Company Vehicle system prognosis device and method
US10346944B2 (en) 2017-04-09 2019-07-09 Intel Corporation Machine learning sparse computation mechanism
US10540398B2 (en) * 2017-04-24 2020-01-21 Oracle International Corporation Multi-source breadth-first search (MS-BFS) technique and graph processing system that applies it
US10585944B2 (en) 2017-07-06 2020-03-10 International Business Machines Corporation Directed graph compression
US10783141B2 (en) * 2018-04-19 2020-09-22 International Business Machines Corporation Natural language processing social-based matrix refactorization
US10467141B1 (en) * 2018-06-18 2019-11-05 International Business Machines Corporation Process data caching through iterative feedback
US11068797B2 (en) * 2018-10-31 2021-07-20 International Business Machines Corporation Automatic correction of indirect bias in machine learning models
US10860293B2 (en) * 2019-02-27 2020-12-08 Nvidia Corporation Efficient matrix data format applicable for artificial neural network
US11562239B2 (en) * 2019-05-23 2023-01-24 Google Llc Optimizing sparse graph neural networks for dense hardware
US11442855B2 (en) 2020-09-25 2022-09-13 Apple Inc. Data pattern based cache management
US20220156322A1 (en) * 2021-09-29 2022-05-19 Intel Corporation Graph reordering and tiling techniques
GB2618061A (en) * 2022-03-30 2023-11-01 Advanced Risc Mach Ltd Neural network processing
US11880511B1 (en) * 2023-01-30 2024-01-23 Kiloma Advanced Solutions Ltd Real-time automatic multilingual input correction
TWI823785B (zh) * 2023-02-23 2023-11-21 碩網資訊股份有限公司 一種使用生成人工智能對善意問題的最佳答案進行排名的方法

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN103177125A (zh) * 2013-04-17 2013-06-26 镇江诺尼基智能技术有限公司 一种快速的短文本双聚类方法
CN103810218A (zh) * 2012-11-14 2014-05-21 北京百度网讯科技有限公司 一种基于问题簇的自动问答方法和装置
CN103984527A (zh) * 2014-04-01 2014-08-13 杭州电子科技大学 优化稀疏矩阵向量乘提升不可压缩管流模拟效率的方法

Family Cites Families (15)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5905666A (en) * 1995-01-03 1999-05-18 International Business Machines Corporation Processing system and method for performing sparse matrix multiplication by reordering vector blocks
US9213680B2 (en) * 2005-01-14 2015-12-15 International Business Machines Corporation Method and structure for fast in-place transformation of standard full and packed matrix data formats
WO2006120664A2 (en) * 2005-05-13 2006-11-16 Provost Fellows And Scholars Of The College Of The Holy And Undivided Trinity Of Queen Elizabeth Near Dublin A data processing system and method
GB0524572D0 (en) * 2005-12-01 2006-01-11 Univ London Information retrieval
US8775495B2 (en) * 2006-02-13 2014-07-08 Indiana University Research And Technology Compression system and method for accelerating sparse matrix computations
US8380778B1 (en) * 2007-10-25 2013-02-19 Nvidia Corporation System, method, and computer program product for assigning elements of a matrix to processing threads with increased contiguousness
US8275803B2 (en) 2008-05-14 2012-09-25 International Business Machines Corporation System and method for providing answers to questions
US9037798B2 (en) * 2008-12-10 2015-05-19 Csir System and method of operating a computing device to perform memoization including transforming input/output parameters to reduce redundancies and efficiently cache data
US8280838B2 (en) 2009-09-17 2012-10-02 International Business Machines Corporation Evidence evaluation system and method based on question answering
US20110125734A1 (en) 2009-11-23 2011-05-26 International Business Machines Corporation Questions and answers generation
WO2012047541A1 (en) 2010-09-28 2012-04-12 International Business Machines Corporation Providing answers to questions using multiple models to score candidate answers
EP2622599B1 (en) 2010-09-28 2019-10-23 International Business Machines Corporation Evidence diffusion among candidate answers during question answering
US8601030B2 (en) 2011-09-09 2013-12-03 International Business Machines Corporation Method for a natural language question-answering system to complement decision-support in a real-time command center
US9760538B2 (en) * 2014-12-22 2017-09-12 Palo Alto Research Center Incorporated Computer-implemented system and method for efficient sparse matrix representation and processing
US9606934B2 (en) 2015-02-02 2017-03-28 International Business Machines Corporation Matrix ordering for cache efficiency in performing large sparse matrix operations

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN103810218A (zh) * 2012-11-14 2014-05-21 北京百度网讯科技有限公司 一种基于问题簇的自动问答方法和装置
CN103177125A (zh) * 2013-04-17 2013-06-26 镇江诺尼基智能技术有限公司 一种快速的短文本双聚类方法
CN103984527A (zh) * 2014-04-01 2014-08-13 杭州电子科技大学 优化稀疏矩阵向量乘提升不可压缩管流模拟效率的方法

Non-Patent Citations (2)

* Cited by examiner, † Cited by third party
Title
彭玉青 等: "基于矩阵聚类的页面预测研究", 《计算机工程》 *
高凤荣 等: "一种基于稀疏矩阵划分的个性化推荐算法", 《微电子学与计算机》 *

Cited By (23)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN109997131B (zh) * 2016-10-26 2024-01-12 谷歌有限责任公司 为基于内核的机器学习系统生成输入的方法和电子装置
CN109997131A (zh) * 2016-10-26 2019-07-09 谷歌有限责任公司 用于基于内核的机器学习的结构化正交随机特征
CN108205433A (zh) * 2016-12-19 2018-06-26 英特尔公司 用来加速稀疏矩阵乘密集向量以及稀疏向量乘密集向量乘法的存储器到存储器指令
CN108205433B (zh) * 2016-12-19 2023-07-25 英特尔公司 用来加速稀疏矩阵乘密集向量以及稀疏向量乘密集向量乘法的存储器到存储器指令
CN108268933A (zh) * 2016-12-30 2018-07-10 英特尔公司 矩阵处理架构中的最大池化
CN108268425A (zh) * 2016-12-30 2018-07-10 英特尔公司 可编程矩阵处理引擎
CN108268425B (zh) * 2016-12-30 2023-10-13 英特尔公司 可编程矩阵处理引擎
CN108268933B (zh) * 2016-12-30 2023-07-21 英特尔公司 矩阵处理架构中的最大池化
CN108268697A (zh) * 2017-12-20 2018-07-10 中国空间技术研究院 一种高效率电推进羽流等离子体并行仿真方法
CN112470172A (zh) * 2018-05-04 2021-03-09 国际商业机器公司 使用随机序列嵌入的符号序列分析的计算效率
CN108762718A (zh) * 2018-05-28 2018-11-06 武汉大学 一种提高计算机运算速度的并发筛选排序方法
CN108762718B (zh) * 2018-05-28 2022-03-04 武汉大学 一种提高计算机运算速度的并发筛选排序方法
CN108985815A (zh) * 2018-06-06 2018-12-11 阿里巴巴集团控股有限公司 一种用户识别方法、装置及设备
CN112437916A (zh) * 2018-07-17 2021-03-02 斯诺弗雷克公司 数据库表的增量群集
CN111124271A (zh) * 2018-10-31 2020-05-08 伊姆西Ip控股有限责任公司 用于针对磁盘系统执行资源重新分配的方法、装置和计算机程序产品
CN111124271B (zh) * 2018-10-31 2023-09-08 伊姆西Ip控股有限责任公司 用于针对磁盘系统执行资源重新分配的方法、装置和介质
CN109635238B (zh) * 2018-12-07 2023-08-29 北京字节跳动网络技术有限公司 矩阵运算方法、装置、设备及可读介质
CN109635238A (zh) * 2018-12-07 2019-04-16 北京字节跳动网络技术有限公司 矩阵运算方法、装置、设备及可读介质
CN111353083B (zh) * 2018-12-20 2023-04-28 中国科学院计算机网络信息中心 一种通过计算集群进行网页排序的方法及装置
CN111353083A (zh) * 2018-12-20 2020-06-30 中国科学院计算机网络信息中心 一种通过计算集群进行网页排序的方法及装置
CN112346852A (zh) * 2019-08-06 2021-02-09 脸谱公司 矩阵求和运算的分布式物理处理
CN111030927A (zh) * 2019-11-20 2020-04-17 中国人民解放军国防科技大学 一种顺序感知的片上网络路由方法和网络路由器
CN112433760A (zh) * 2020-11-27 2021-03-02 海光信息技术股份有限公司 数据排序方法和数据排序电路

Also Published As

Publication number Publication date
US9606934B2 (en) 2017-03-28
US20160224473A1 (en) 2016-08-04
US10310812B2 (en) 2019-06-04
CN105843781B (zh) 2019-05-14
US20170147287A1 (en) 2017-05-25

Similar Documents

Publication Publication Date Title
CN105843781B (zh) 用于提高缓存效率的矩阵排序的方法和系统
CN106055549B (zh) 利用加速器的概念分析操作的方法和系统
Holzinger et al. Interactive machine learning: experimental evidence for the human in the algorithmic loop: A case study on Ant Colony Optimization
Wang et al. Exploring graph neural networks for semantic enrichment: Room type classification
CN104516942B (zh) 概念驱动的自动分节标识
Xhemali et al. Naïve bayes vs. decision trees vs. neural networks in the classification of training web pages
Bimba et al. Towards knowledge modeling and manipulation technologies: A survey
Dhaenens et al. Metaheuristics for big data
Shah et al. Sentimental Analysis Using Supervised Learning Algorithms
Baggio et al. Modelling and simulations for tourism and hospitality: An introduction
CN107368521A (zh) 一种基于大数据和深度学习的知识推介方法及系统
Hamouda et al. Ant Lion Optimization algorithm for kidney exchanges
Ma et al. Matching descriptions to spatial entities using a siamese hierarchical attention network
González-Santos et al. Addressing topic modeling with a multi-objective optimization approach based on swarm intelligence
Mo et al. Tbil: A tagging-based approach to identity linkage across software communities
Sun et al. INGCF: an improved recommendation algorithm based on NGCF
Mahajan et al. Modeling individual humans via a secondary task transfer learning method
WO2023272563A1 (zh) 智能分诊方法、装置、存储介质及电子设备
Kumar Python libraries, development frameworks and algorithms for machine learning applications
Fiallos et al. Scientific communities detection and analysis in the bibliographic database: SCOPUS
KR20220101807A (ko) Sns 텍스트 기반의 사용자의 인테리어 스타일 분석 모델 제공 장치 및 방법
Salleh et al. An imputation for missing data features based on fuzzy swarm approach in heart disease classification
Cao et al. Heterogeneous information network embedding with meta-path based graph attention networks
Pradhan et al. Machine learning architecture and framework
Tamrakar et al. Student sentiment analysis using classification with feature extraction techniques

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant