CN113849675A - 使用引导强化学习的相似性搜索 - Google Patents
使用引导强化学习的相似性搜索 Download PDFInfo
- Publication number
- CN113849675A CN113849675A CN202011466307.2A CN202011466307A CN113849675A CN 113849675 A CN113849675 A CN 113849675A CN 202011466307 A CN202011466307 A CN 202011466307A CN 113849675 A CN113849675 A CN 113849675A
- Authority
- CN
- China
- Prior art keywords
- code
- query
- candidate
- graph
- vector
- 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.)
- Pending
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/50—Information retrieval; Database structures therefor; File system structures therefor of still image data
- G06F16/53—Querying
- G06F16/532—Query formulation, e.g. graphical querying
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N3/00—Computing arrangements based on biological models
- G06N3/004—Artificial life, i.e. computing arrangements simulating life
- G06N3/006—Artificial life, i.e. computing arrangements simulating life based on simulated virtual individual or collective life forms, e.g. social simulations or particle swarm optimisation [PSO]
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/24—Querying
- G06F16/248—Presentation of query results
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/30—Information retrieval; Database structures therefor; File system structures therefor of unstructured textual data
- G06F16/33—Querying
- G06F16/3331—Query processing
- G06F16/334—Query execution
- G06F16/3347—Query execution using vector based model
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/90—Details of database functions independent of the retrieved data types
- G06F16/901—Indexing; Data structures therefor; Storage structures
- G06F16/9024—Graphs; Linked lists
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/90—Details of database functions independent of the retrieved data types
- G06F16/903—Querying
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/90—Details of database functions independent of the retrieved data types
- G06F16/907—Retrieval characterised by using metadata, e.g. metadata not derived from the content or metadata generated manually
- G06F16/908—Retrieval characterised by using metadata, e.g. metadata not derived from the content or metadata generated manually using metadata automatically derived from the content
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F18/00—Pattern recognition
- G06F18/20—Analysing
- G06F18/22—Matching criteria, e.g. proximity measures
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F18/00—Pattern recognition
- G06F18/20—Analysing
- G06F18/24—Classification techniques
- G06F18/241—Classification techniques relating to the classification model, e.g. parametric or non-parametric approaches
- G06F18/2413—Classification techniques relating to the classification model, e.g. parametric or non-parametric approaches based on distances to training or reference patterns
- G06F18/24133—Distances to prototypes
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/40—Transformation of program code
- G06F8/41—Compilation
- G06F8/43—Checking; Contextual analysis
- G06F8/433—Dependency analysis; Data or control flow analysis
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N3/00—Computing arrangements based on biological models
- G06N3/02—Neural networks
- G06N3/08—Learning methods
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- Data Mining & Analysis (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Databases & Information Systems (AREA)
- Computational Linguistics (AREA)
- Life Sciences & Earth Sciences (AREA)
- Artificial Intelligence (AREA)
- Evolutionary Computation (AREA)
- Software Systems (AREA)
- Mathematical Physics (AREA)
- Biophysics (AREA)
- Computing Systems (AREA)
- Molecular Biology (AREA)
- General Health & Medical Sciences (AREA)
- Biomedical Technology (AREA)
- Health & Medical Sciences (AREA)
- Bioinformatics & Cheminformatics (AREA)
- Bioinformatics & Computational Biology (AREA)
- Computer Vision & Pattern Recognition (AREA)
- Evolutionary Biology (AREA)
- Library & Information Science (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本公开涉及使用引导强化学习的相似性搜索。系统、装置和方法可以提供如下技术,该技术:识别查询代码;将查询代码转换成查询图形;基于候选图形生成候选向量,其中候选图形与候选代码相关联;基于查询图形生成查询向量;并且确定查询向量和候选向量之间的相似性度量。
Description
技术领域
实施例一般地涉及从存储复杂对象(例如,通常不遵循自然顺序的对象,例如,代码片段、图像、音频)的大型信息存储库中识别相关信息。详细地,一些实施例通过大型且变化的对象语料库提供了快速且有效的相似性搜索。
背景技术
相当大的数据存储库的出现已经使得可访问数据对象的数量大幅增加(例如,跨各种不同编程语言的代码片段)。搜索、分类和充分认识现有数据存储库的能力可能很困难。例如,对象的复杂性可能对现有方法执行和扩展对象的大型集合带来若干挑战。
发明内容
根据本公开的一方面,提供了一种计算设备。该计算设备包括:存储设备,所述存储设备用于存储与计算机代码相关联的多个图形;图形处理器;主处理器;以及存储器,所述存储器包括指令集,所述指令集在由所述图形处理器或所述主处理器中的一个或多个执行时,使得所述计算设备:识别查询代码;将所述查询代码转换成查询图形;基于候选图形生成候选向量,其中所述候选图形与所述计算机代码的候选代码相关联;基于所述查询图形生成查询向量;并且确定所述查询向量和所述候选向量之间的相似性度量。
根据本公开的另一方面,提供了一种半导体装置。该半导体装置包括:一个或多个衬底;以及耦合到所述一个或多个衬底的逻辑,其中所述逻辑以可配置逻辑或固定功能逻辑硬件中的一者或多者来实现,耦合到所述一个或多个衬底的所述逻辑用于:识别查询代码;将所述查询代码转换成查询图形;基于候选图形生成候选向量,其中所述候选图形与候选代码相关联;基于所述查询图形生成查询向量;并且确定所述查询向量和所述候选向量之间的相似性度量。
根据本公开的另一方面,提供了一种计算机可读存储介质。该计算机可读存储介质包括指令的集合,指令在由计算设备执行时使得所述计算设备:识别查询代码;将所述查询代码转换成查询图形;基于候选图形生成候选向量,其中所述候选图形与候选代码相关联;基于所述查询图形生成查询向量;并且确定所述查询向量和所述候选向量之间的相似性度量。
根据本公开的另一方面,提供了一种方法。该方法包括:识别查询代码;将所述查询代码转换成查询图形;基于候选图形生成候选向量,其中所述候选图形与候选代码相关联;基于所述查询图形生成查询向量;并且确定所述查询向量和所述候选向量之间的相似性度量。
附图说明
通过阅读以下说明书和所附权利要求并参考以下附图,实施例的各种优点对于本领域技术人员将变得清晰可见,在附图中:
图1是根据实施例的计算架构的示例的框图;
图2是根据实施例的搜索和识别方法的示例的流程图;
图3是根据实施例的代码相似性搜索的示例的图示;
图4是根据实施例的人工智能训练过程的示例的图示;
图5是根据实施例的搜索和修剪的示例的图示;
图6是根据实施例的计算系统的示例的框图;
图7是示出根据实施例的半导体装置的示例的图示;
图8是根据实施例的处理器的示例的框图;以及
图9是根据实施例的基于多处理器的计算系统的示例的框图。
具体实施方式
图1示出了计算架构100。计算架构100可以包括对应于数据存储库的代码语料库102。详细地,一些数据存储库可以针对特定主题。例如,一些存储库可以是代码存储库,例如代码语料库102,其包括各种编程语言的可访问代码片段。
程序员可以搜索代码语料库102以识别可以使能特定功能或增强现有代码(例如,优化现有代码)的代码。一些实施例可以提供增强的搜索过程,以通过基于搜索查询有效地识别相关代码,来提供减轻程序员的一些编程负担的机会,在这种情况下,该搜索查询对应于查询代码片段112。
例如,软件开发者可能已编写代码来处理音频文件。软件开发者可能会寻求了解其他开发者实施解决相同问题的类似方法的方式,其他开发者如何优化其代码,如何处理异常和错误,或任何其他有助于软件开发者避免编写代码的最佳实践,在生产期间编写代码可能会使软件应用崩溃(例如,移动应用、在线系统等)。为了找到相似的代码片段,软件开发者可以基于查询代码片段112执行代码相似性搜索以搜索代码语料库102,该代码语料库102允许用户基于由软件开发者编撰的查询代码片断112(例如,代码语法)对代码语料库102进行搜索查询。
例如,解决相似问题的代码片段在代码结构和/或语义二者上都可以相似。因此,一些实施例实现了智能学习系统,其自适应地搜索、学习并表示软件代码的语义和结构。如图所示,架构100从代码语料库102提取第一代码语义104。例如,可以分析每个代码主体(例如,代码片段)以提取第一代码语义106。第一代码语义106可以是不可知的代码表达(例如,不是用特定的高级编程语言和/或硬件编写的)。
第一代码语义106可以包括语义的多个表示,每个表示对应于不同的代码。值得指出的是,代码语料库102的代码可以与不同的高级编程语言(例如,Java、C++等)相关联,而第一代码语义106可以是该代码的表示,而没有对高级编程语言的特定引用或关联。例如,第一代码语义106可以与高级编程语言和机器语言之间的中间语言相关联。类似地,架构100可以分析查询代码片段112以提取代码语义114并生成第二代码语义116(例如,代码表达)。
系统100可以基于第一代码语义106提取流图(flow graph)108以生成第一流图110。在一些实施例中,第一流图110表示代码的代码表达式之间的依赖关系。例如,在每个流图110中,节点可以表示变量、函数、运算,并且边缘可以表示这些节点之间的流或依赖关系。一些实施例可以进一步区分各种依赖关系类型,例如,数据依赖关系(检索要利用的数据)和执行依赖关系(例如,在运行时确定的条件语句)。类似地,架构100从第二代码语义116提取流图118以生成第二流图120。第二流图120是查询代码片段112的表示。
架构100还可以在第一流图110和第二流图120之间进行成对相似性搜索122。如此,架构100可以从代码语料库102输出被识别为与查询代码片段112相似的代码。例如,架构100可以基于第一流图110与第二流图120的比较来识别与查询代码片段112类似的代码片段124。如果第一流图110中的一个图形被识别为与第二流图120相似(例如,可以计算表示相似度的相似性分数),则代码语料库102中的与该一个图形相关联的代码可以被输出作为例如第一代码124a。同样地,第二代码124b可以与第一流图110中的被发现与第二流图120相似的图形相关联,并且第N代码124n可以与第一流图110中的被发现与第二流图120相似的图形相关联。
可以将代码片段124提供给用户(例如,被显示)。因此,架构100可以进行代码相似性搜索;该相似性搜索接收查询代码片断112,基于查询代码片断112搜索代码片断的代码语料库102(例如,大型语料库),识别成对的代码相似性度量,并执行搜索和导航算法以有效且高效地导航代码语料库102。
因此,计算架构100可以利用有效的人工智能(AI)导航和搜索来实现用于代码相似性搜索的有效系统。计算架构100可能能够学习和表示代码语句之间的语义和关系,并跨不同的编程语言和硬件架构生成表示(例如,硬件和语言不可知的表示)。
图2示出了搜索和识别相关对象的方法300。方法300通常可以在本文描述的任何实施例中实现,比如,例如在已经讨论的计算架构100(图1)中实现。在实施例中,方法300在一个或多个模块中作为存储在诸如随机存取存储器(RAM)、只读存储器(ROM)、可编程ROM(PROM)、固件、闪存等机器或计算机可读存储介质中的逻辑指令集实现;在诸如可编程逻辑阵列(PLA)、现场可编程门阵列(FPGA)、复杂可编程逻辑器件(CPLD)等可配置逻辑装置中实现;在使用诸如专用集成电路(ASIC)、互补金属氧化物半导体(CMOS)或晶体管-晶体管逻辑(TTL)技术等电路技术的固定功能逻辑硬件中实现;或者在其任意组合中实现。
例如,可以以一种或多种编程语言的任意组合来编写用于执行方法300中所示的操作的计算机程序代码,该一种或多种编程语言包括面向对象的编程语言,例如,JAVA、SMALLTALK、C++,以及常规过程编程语言,例如,“C”编程语言或类似的编程语言。另外,逻辑指令可以包括汇编程序指令、指令集架构(ISA)指令、机器指令、机器相关指令、微代码、状态设置数据、集成电路的配置数据、个性化硬件(例如,主处理器、中央处理器/CPU、微控制器等)固有的电子电路和/或其他结构组件的状态信息。
所示的处理块302识别查询代码。所示的处理块304将查询代码转换成查询图形。所示的处理块306基于候选图形生成候选向量,其中候选图形将与候选代码相关联。所示的处理块308基于查询图形生成查询向量。所示的处理块310确定查询向量和候选向量之间的相似性度量。
在一些实施例中,处理块304将查询代码从源语言转换成中间表示,该中间表示是该查询代码的硬件不可知的表示,从该中间表示生成代码表达式,并基于该代码表达式生成查询图形,其中查询图形表示代码表达式之间的依赖关系。
在一些实施例中,方法300包括基于相似性度量确定是否将候选图形添加到相似性列表。在一些实施例中,方法300包括:识别分别对应于不同候选代码的多个图形;针对多个图形生成多个候选向量;生成多个候选向量与查询向量之间的相似性分数;并且基于似性分数从多个图形中识别出最终图形。在一些实施例中,方法300还包括基于最终图和多个图形的数量来生成函数。在一些实施例中,查询代码对应于第一用户的搜索查询(例如,第一用户编撰的查询代码),查询图形表示查询代码的语义和结构,候选代码与第二用户相关联(例如,由第二用户编撰),候选图形表示候选代码的语义和结构,查询向量是第一稀疏二进制特征向量,候选向量是第二稀疏二进制特征向量,并且相似性度量表示查询代码和候选代码之间的相似度。
因此,方法300可以从大型的对象语料库中有效地识别感兴趣的对象。方法300可以实现有效搜索以找到例如代码片段的更正确、完整或高性能的版本。因此,方法300可以在搜索时结合准确性和效率。
图3示出了在代码推荐应用中实现代码相似性搜索过程350,以从存储库中识别相似的代码片段。过程350可以首先识别查询代码图形356(例如,由用户提供的)。
输入查询代码352经过预处理354,该预处理354包括代码语义提取354a和流图提取354b。预处理354的输出可以是在图3中象征性地表示的查询代码图形356。查询代码图形356表示输入查询代码352的语义和结构。查询代码图形356可以被给出作为代码相似性搜索器358的输入。代码相似性搜索器358可以基于查询代码图形356生成向量。代码相似性搜索器358可以包括高效的AI导航代理362,该AI导航代理362导航代码语料库360中所有代码片断的较大组合空间,以生成与输入查询代码352相似的前K个相似代码364。前K个相似代码364可以被存储在代码语料库360中,并且基于前K个相似代码364的图形和/或向量从代码语料库360识别出。例如,前K个相似代码364的图形和/或向量可以与查询代码图形356和/或基于查询代码图形356的向量进行比较。
代码相似性搜索器358可以在AI导航代理362执行的迭代过程中对前K个相似代码364进行修剪和重新排序。在代码语料库360已经被完成搜索与输入查询代码352相似的代码后,并且基于查询代码图形356,可以输出366前K个相似代码364。因此,AI导航代理362向用户提供前K个代码推荐(例如,前K个相似代码片段)。如下所述,AI导航代理362可以被训练以存储表示前K个相似代码364的多个稀疏二进制特征向量,并将稀疏二进制特征向量与表示查询代码图形356的稀疏二进制特征向量进行比较。
例如,代码相似性搜索器358可以通过减少存储器读取(读取代表查询代码的向量中只有1的列)以及主机和存储器之间的数据传输,以潜在地利用随机关联搜索技术的高效查询性能来进一步加速导航和搜索。
尽管在本文中讨论了代码作为示例性示例,但是应当理解,本文所述的实施例可以应用于除编程代码之外的各种应用,例如,药物发现、图像相似性搜索、图形相似性搜索,以使得查询输入和语料库中的项目二者都被表示为图形和/或向量。
图4示出了AI导航代理402训练过程400。AI导航代理402可以经历训练阶段以学习模型,并且可以学习如何导航搜索空间并且还索引语料库中的每个代码片段以进行有效导航。AI导航代理402通过在训练期间针对每个代码片段学习稀疏二进制特征向量来做到这一点,这将在下面讨论。AI导航代理402可以对应于本文描述的任何实施例,例如,AI导航代理362和/或架构100。
一些编译器可以在源编程语言(例如,C++)、(一个或多个)可以被优化的中间代码表示、以及被映射到目标硬件的机器代码之间实施清晰的分离。源代码可以采用许多不同的高级编程语言。因此,提取一种特定语言的代码语义可能会影响特征提取的普遍性。另一方面,机器代码可以是针对某些硬件,并且包含目标硬件的特定特征,因此会影响特征提取的普遍性。因此,AI导航代理402可以基于中间表示(例如,语言)操作,因为中间表示可以能够支持多种高级编程语言,从而允许AI导航代理402做出跨语言代码片段建议,而不是避免由硬件架构细节呈现的负担。
在提取步骤中,AI导航代理402接收代码片段作为输入,并输出在中间表示中出现的代码表达式的列表。每个代码表达式表示代码语句或指令,该代码语句或指令以某种方式(例如,通过将两个数字相乘或分配存储器资源)来修改计算机架构的状态。一些实施例可以进一步包括生成代码表达式,该代码表达式枚举导致某个变量的所有可能输出,这些输出例如出现在诸如“如果(if)条件成立”、循环、比较之类的某些编程语句中。更详细的示例可以包括变量x乘以3的代码表达式:%id=fmul double%x,3.0(%id=(%x,3.0)的双精度浮点乘)。
在提取所有代码表达式之后,AI导航代理402生成流图,该流图表示代码的代码表达式之间的依赖关系。在流图中,节点可以表示变量、函数、运算,而边缘表示这些节点之间的流或依赖关系。此外,AI导航代理402区分两种类型的依赖关系:数据依赖关系(例如,使两个数字相加)和执行依赖关系,其取决于运行时执行流(例如,如果条件成立的输出、或与阈值的比较,等等)。因此,AI导航代理402可以逐一地读取代码表达式,然后将节点和边缘添加到流图以表示它们的关系。这些代码片段的图形表示可以捕获代码中存在的远近关系和复杂结构依赖关系。因此,可以通过预处理和表示步骤来处理所有代码(包括查询代码和语料库中存在的代码)。
AI导航代理402有效地导航组合搜索空间。AI导航代理402可以是与环境(例如,一组候选代码)交互的强化学习代理(例如,引导强化学习代理),以便采取使奖励最大化的动作(例如,通过发现最相似的代码来实现目标)。
AI导航代理402与环境交互,更新状态、TOP-K列表404,并计算预期奖励。AI导航代理402可以是预测在TOP-K列表404中保留和丢弃哪个候选代码片段的神经网络模型。AI导航代理402获得环境的状态和策略网络406(例如,图4的左侧的过程),以预测哪些代码片段与查询代码相似,并将这些代码片段保存在环境的TOP-K列表404中。
可以在给定的代码语料库上训练AI导航代理402。语料库中的每个代码片段都可以被视为查询代码,并且AI导航代理402通过使用策略网络406主动地搜索可能相似的代码的空间。更具体地,AI导航代理402使用策略网络406预测语料库中哪些其他候选代码片段(表示为学习的特征向量)与查询代码最相似,而应保留在TOP-K列表404中。
AI导航代理402可以实现搜索和修剪策略。例如,给定表示为图形Q(例如,查询图形)的查询代码,代码片段的数据库D={d1,…,dn},则可以调整AI导航代理402的策略网络406。对于语料库中的每个代码片段,可以识别(例如,通过用户或另一过程)与该代码片段最相似的代码的预计算的列表,以进行监督式学习来训练AI导航代理402。在一些实施例中,可能存在为现有代码语料库预计算的底层相似性图形,并且AI导航代理402基于底层相似性图形来导航和增强相似性图形(例如,在训练和推理期间)。
为了搜索和修剪空间,AI导航代理402以来自数据库D的被称为“dtop”的代码片段开始。AI导航代理402检索与dtop最相似的代码并使用策略模型M来预测要保留哪些代码,因为其与查询代码Q的相似性,如“P(action ai|State s)”所示,并将相似的代码添加到按其相似性分数排名的TOP-K列表404。然后,AI导航代理402从TOP-K列表404中选出最前面的候选者(其可以被称为“dtop”),然后再次检索与dtop最相似的代码,并使用策略模型M预测要保留的代码且将它们添加到TOP-K列表404。搜索过程继续进行,直到结束为止(例如,当没有额外的候选代码要探索时)。
AI导航代理402获取查询和候选代码图形并预测空间中每个动作的概率。例如,AI导航代理402预测P(a|s),其中a是所有可能动作的动作空间中的动作(例如,动作空间可以是{保留候选代码,丢弃候选代码}),并且状态是正被评估的候选代码。在一些实施例中,由于动作空间是二进制的(例如,保留或丢弃),所以AI导航代理402可以使用策略网络406来仅预测将候选代码保留在TOP-K列表404中的概率。
在一些实施例中,TOP-K列表404可以是类似于优先级队列的数据结构,该优先级队列由RL代理连续维持以基于候选代码的相似性分数对候选代码进行排名(即,P(保留|候选代码))。如此,例如,在TOP-K列表404中,AI导航代理402连续地去除和修剪非相似代码并且仅维持最相似的代码。可以并行地计算该过程以加速AI导航代理402。可以在上面关于上述代码相似性搜索过程350(图3)描述的相似性搜索期间参考TOP-K列表404来识别相似的代码。
可以在会话中训练AI导航代理402,每个会话包含针对输入查询的完整搜索过程(即,直到搜索结束为止)。一旦搜索结束,代理将获得该会话的奖励。奖励可以是在准确性和计算之间取得平衡的复合函数。更具体地,奖励可以是关于代理是否能够找到目标(例如,最相似的代码)以及代理在搜索过程中必须计算的候选代码评估的数量的函数。因此,AI导航代理402可以被训练以从语料库中识别相关对象,并且可以在未来针对所分析的语料库进行搜索时实现该功能。
训练阶段可以在具有基础事实的训练数据集上执行,其是以系统从现有代码语料库创建的相似代码片段对的形式执行。一旦被训练以收敛,则AI导航代理402可以包括训练的策略和模型,该策略和模型在推理阶段期间针对看不见的输入查询代码推荐相似的代码。
因此,在一些实施例中,AI导航代理402学习给定当前状态下的最优策略并预测要采取的最佳动作。AI导航代理402可以将一对图形作为输入:查询图形和候选图形,其分别表示输入查询代码和来自语料库的候选代码的图形。这两个图形都是先前讨论的预处理步骤的输出。AI导航代理402包括位于策略网络406上的两个分支来处理该对图形。如图所示,每个分支都包含以下元素:神经消息传递、注意力机制、池化(pooling)函数和二进制编码器。策略网络406可以接收输入图形G=(V,E)(图形对中的任意图形),其中输入图形G中的每个节点“V”与表示其初始属性和元数据的初始特征向量“hv”相关联。
例如,在神经消息传递步骤期间,使用以下函数来更新图形中每个节点处的特征向量:
在函数1中,N(v)是图形G中节点v的邻居的集合,而auv是可学习的选择性注意力权重,其用于学习并编码代码图形中依赖关系的重要性。策略网络406使用选择性注意力机制来省略处理图形中的不相关关系,以学习更准确的表示。
此外,函数1可以是可学习的微分函数(例如,多层感知器)。如此,神经消息传递可以跨整个图形传播相关信息和特征。
在执行神经消息传递的预定义次数的迭代之后,AI导航代理402实现池化函数,以获取节点表示并将其汇总,以针对图形G和图形G’二者计算整个图形的单个特征向量表示:
池化函数可以输出非二进制潜在图形表示。为加快AI导航代理402的搜索过程,策略网络406包含二进制编码器,该二进制编码器采用非二进制表示hG并输出随机二进制向量yG,这是通过对条件伯努利(Bernoulli)分布进行建模来完成的:
p(yG(j)=1|hG)
yG=Encoder(hG)
函数3
此外,AI导航代理402具有动作预测函数,该动作预测函数采用两个图形表示(查询图形和候选图形),并基于向量空间相似性(例如,基于查询图形的池化向量是否与候选图形的池化向量相似)输出是丢弃还是保留候选图形的概率。该预测函数可以通过计算向量空间中的相似性分数来识别是保留还是丢弃该图形。函数4可以对应于动作预测函数:
P{Keep|Candidate G′}=M(yG,yG′)
函数4
基于动作,AI导航代理402可以更新TOP-K列表404。此外,向量空间相似性可以被存储在TOP-K列表404的右列中,并且可以根据向量空间相似性来对图形进行分类。
一些实施例可以进一步利用随机关联搜索。例如,可以使用条件伯努利分布模型来训练AI导航代理402以针对被表示为语料库中的图形的每个代码片段生成稀疏的二进制表示向量。一旦AI导航代理402被训练并收敛,则整个语料库中的代码片段的二进制表示向量可以被预计算并被存储在存储器中,且在代码相似性搜索期间被参考(例如,基于查询代码的查询代码向量与代码片段的向量进行比较)。
图5示出了根据本文描述的任何实施例的由AI导航代理实现的搜索和修剪过程450。AI导航代理通过预测要采取的下一个动作来在可能的候选代码的空间内导航,并找到最优方案。搜索空间可以被表示为相似性图形,其中AI导航代理导航该图形。
现在转向图6,示出了使能增强搜索的计算系统158(例如,计算设备)。计算系统158通常可以是具有如下功能的电子设备/平台的一部分:计算功能(例如,个人数字助理/PDA、笔记本计算机、平板计算机、可转换平板电脑、服务器);通信功能(例如,智能电话);成像功能(例如,相机、便携式摄像机);媒体播放功能(例如,智能电视/TV);可穿戴功能(例如,手表、眼镜、头饰、鞋类、珠宝);车辆功能(例如,汽车、卡车、摩托车)等;或其任何组合。在所示的示例中,系统158包括主处理器160(例如,具有一个或多个处理器核的CPU),该主处理器160具有耦合到系统存储器164的集成存储器控制器(IMC)162。主处理器160还包括加速器A1-A3(但是可以提供任何数量的加速器)以实现用于搜索和分析的神经网络。在一些实施例中,系统158可以进一步通过网络控制器174与还实现神经网络的其他电子设备通信,和/或基于神经网络的输出(例如,响应水平)控制其他电子设备。
所示的系统158还包括图形处理器168(例如,图形处理单元/GPU)和输入输出(IO)模块166,它们与处理器160(例如,作为微控制器)一起在半导体晶片170上被实现为片上系统(SOC),其中IO模块166可以与例如显示器172(例如,触摸屏、液晶显示器/LCD、发光二极管/LED显示器)、网络控制器174(例如,有线和/或无线)、以及大容量存储装置176(例如,HDD、光盘、SSD、闪存或其他NVM)通信。在一些实施例中,SoC 170可以进一步包括专用于人工智能(AI)和/或神经网络(NN)处理的处理器(未示出)和/或AI加速器152。例如,系统SoC170可以包括视觉处理单元(VPU,未示出)和/或其他AI/NN特定的处理器等。在一些实施例中,本文所述实施例的任何方面可以在专用于AI和/或NN处理的处理器和/或加速器中实现,例如,AI加速器152、图形处理器168和/或主处理器160。
所示的SOC 170包括具有逻辑指令的ROM 178,逻辑指令在由主处理器160或图形处理器168执行时,使计算系统158实现和/或执行已经讨论的计算架构100(图1)、方法300(图2)、过程350(图3)、过程400(图4)、和/或修剪过程450(图5)中的一个或多个方面。
因此,所示的系统158可以执行搜索和修剪过程。系统158可以利用高效的AI导航和搜索来实现用于代码相似性搜索的有效系统。系统158可能能够学习并表示代码语句之间的语义和关系,并跨不同的编程语言和硬件架构生成表示(例如,硬件和语言不可知的表示)以识别相似的代码。
在一些实施例中,系统158可以通过输入设备154(例如,键盘和/或其他外围设备)接收代码。可以将该代码与存储器164的代码156进行比较,以从代码156中识别最相似的代码,并且例如通过显示器172向用户提供最相似的代码。
图7示出了半导体封装装置180。所示的装置180包括一个或多个衬底184(例如,硅、蓝宝石、砷化镓)和耦合至(一个或多个)衬底184的逻辑182(例如,晶体管阵列和其他集成电路/IC组件)。在一个示例中,逻辑182至少部分地以可配置逻辑或固定功能逻辑硬件来实现。逻辑182可以实现和/或执行已经讨论的计算架构100(图1)、方法300(图2)、过程350(图3)、过程400(图4)和/或修剪过程450(图5)的一个或多个方面。在一个示例中,逻辑182包括被定位(例如,嵌入)在(一个或多个)衬底184内的晶体管沟道区域。因此,逻辑182和(一个或多个)衬底184之间的接口可以不是突变结。逻辑182也可以被认为包括在(一个或多个)衬底184的初始晶圆上生长的外延层。
在一些实施例中,逻辑182可以进一步包括专用于AI和/或NN处理的处理器(未示出)和/或加速器(未示出)。例如,逻辑182可以包括VPU和/或其他AI/NN特定的处理器等。在一些实施例中,可以在专用于AI和/或NN处理的处理器和/或加速器中实现本文描述的实施例的任何方面。
图8示出了根据一个实施例的处理器核心200。处理器核心200可以是用于任何类型的处理器(例如,微处理器、嵌入式处理器、数字信号处理器(DSP)、网络处理器、或其他执行代码的设备)的核心。尽管在图8中仅示出了一个处理器核心200,但是处理元件可以替代地包括不止一个图8中所示的处理器核心200。处理器核心200可以是单线程核心,或者对于至少一个实施例,处理器核心200可以是多线程的,因为它可以包括每核心不止一个硬件线程上下文(或“逻辑处理器”)。
图8还示出了耦合至处理器核心200的存储器270。存储器270可以是本领域技术人员已知或以其他方式可获得的各种各样的存储器中的任何一个(包括存储器层级的各种层)。存储器270可以包括要由处理器核心200执行的一个或多个代码213指令,其中代码213可以实现和/或执行已经讨论的计算架构100(图1)、方法300(图2)、过程350(图3)、过程400(图4)和/或修剪过程450(图5)中的一个或多个方面。处理器核心200遵循由代码213指示的指令的程序序列。每个指令可以进入前端部分210,并且由一个或多个解码器220处理。解码器220可以生成微操作作为其输出,例如,具有预定义格式的固定带宽微操作,或者可以生成其他指令、微指令或反映原始代码指令的控制信号。所示的前端部分210还包括寄存器重命名逻辑225和调度逻辑230,它们通常分配资源并将与转换指令相对应的操作排队以供执行。
处理器核心200被示为包括具有一组执行单元255-1至255-N的执行逻辑250。一些实施例可以包括专用于特定功能或功能集的多个执行单元。其他实施例可以仅包括一个执行单元或能够执行具体功能的一个执行单元。所示的执行逻辑250执行由代码指令指定的操作。
在完成由代码指令指定的操作的执行之后,后端逻辑260退出代码213的指令。在一个实施例中,处理器核心200允许无序执行,但是要求按顺序退出指令。退出逻辑265可以采用本领域技术人员已知的各种形式(例如,重新排序缓冲器等)。以这种方式,至少依据由解码器生成的输出、寄存器重命名逻辑225所利用的硬件寄存器和表、以及通过执行逻辑250修改的任何寄存器(未示出),处理器核心200在代码213的执行期间被转换。
尽管在图8中未示出,但是处理元件可以在具有处理器核心200的芯片上包括其他元件。例如,处理元件可以包括与处理器核心200一起的存储器控制逻辑。处理元件可以包括I/O控制逻辑和/或可以包括与存储器控制逻辑集成在一起的I/O控制逻辑。处理元件还可以包括一个或多个缓存。
现在参考图9,示出了根据实施例的计算系统1000的实施例的框图。图9所示的是包括第一处理元件1070和第二处理元件1080的多处理器系统1000。虽然示出了两个处理元件1070和1080,但是应当理解,系统1000的实施例也可以仅包括一个这种处理元件。
系统1000被示为点对点互连系统,其中第一处理元件1070和第二处理元件1080经由点对点互连1050耦合。应当理解,图9中所示的互连中的任何一个或全部可以被实现为多点分支总线而不是点对点互连。
如图9所示,每个处理元件1070和1080可以是多核处理器,包括第一处理器核心和第二处理器核心(即,处理器核心1074a和1074b以及处理器核心1084a和1084b)。此种核心1074a、1074b、1084a、1084b可以被配置为以与上面结合图8所讨论的方式相似的方式来执行指令代码。
每个处理元件1070、1080可以包括至少一个共享缓存1896a、1896b。共享缓存1896a、1896b可以存储由处理器的一个或多个组件(例如,核心1074a、1074b和1084a、1084b)分别利用的数据(例如,指令)。例如,共享缓存1896a、1896b可以本地缓存存储在存储器1032、1034中的数据,以供处理器的组件更快地访问。在一个或多个实施例中,共享缓存1896a、1896b可以包括一个或多个中间级缓存,例如,第2级(L2)、第3级(L3)、第4级(L4)、或其他级缓存、最后一级缓存(LLC)、和/或其组合。
尽管仅示出了两个处理元件1070、1080,但是应当理解,实施例的范围不限于此。在其他实施例中,在给定处理器中可以存在一个或多个附加处理元件。可替代地,处理元件1070、1080中的一个或多个可以是除处理器之外的元件,例如,加速器或现场可编程门阵列。例如,(一个或多个)附加处理元件可以包括与第一处理器1070相同的(一个或多个)附加处理器、与第一处理器1070异构或不对称的(一个或多个)附加处理器、加速器(例如,图形加速器或数字信号处理(DSP)单元)、现场可编程门阵列或任何其他处理元件。在包括架构、微架构、热、功耗特性等的一系列品质指标方面,处理元件1070、1080之间可以有各种差异。这些差异可以有效地将其自身表现为处理元件1070、1080之间的不对称性和异质性。对于至少一个实施例,各种处理元件1070、1080可以驻留在相同的晶片封装中。
第一处理元件1070可以进一步包括存储器控制器逻辑(MC)1072以及点对点(P-P)接口1076和1078。类似地,第二处理元件1080可以包括MC 1082以及P-P接口1086和1088。如图9所示,MC 1072和1082将处理器耦合到相应的存储器,即存储器1032和存储器1034,它们可以是本地附着到相应处理器的主存储器的部分。尽管MC 1072和1082被示为集成到处理元件1070、1080中,但是对于替代实施例,MC逻辑可以是处理元件1070、1080外部的分立逻辑,而不是集成在其中。
第一处理元件1070和第二处理元件1080可以分别经由P-P互连1076、1086耦合到I/O子系统1090。如图9所示,I/O子系统1090包括P-P接口1094和1098。此外,I/O子系统1090包括用于将I/O子系统1090与高性能图形引擎1038耦合的接口1092。在一个实施例中,可以使用总线1049来将图形引擎1038耦合到I/O子系统1090。替代地,点对点互连可以耦合这些组件。
继而,I/O子系统1090可以经由接口1096耦合到第一总线1016。在一个实施例中,第一总线1016可以是外围组件互连(PCI)总线、或者诸如快速PCI(PCI Express)总线之类的总线、或另一第三代I/O互连总线,但是实施例的范围不限于此。
如图9所示,各种I/O设备1014(例如,生物特征识别扫描器、扬声器、相机、传感器)可以耦合到第一总线1016以及总线桥1018,该总线桥1018可以将第一总线1016耦合到第二总线1020。在一个实施例中,第二总线1020可以是低引脚数(LPC)总线。在一个实施例中,各种设备可以耦合到第二总线1020(包括例如键盘/鼠标1012)、(一个或多个)通信设备1026和数据存储单元1019,例如,盘驱动器或其他大容量存储设备,其可以包括代码1030。所示的代码1030可以实现和/或执行已经讨论的计算架构100(图1)、方法300(图2)、过程350(图3)、过程400(图4)和/或修剪过程450(图5)的一个或多个方面。此外,音频I/O 1024可以耦合到第二总线1020,并且电池1010可以向计算系统1000供电。注意,可以想到其他实施例。例如,代替图9的点对点架构,系统可以实现多点分支总线或另一这种通信拓扑结构。另外,可以替代地使用比图9中所示的更多或更少的集成芯片来对图9的元件进行分区。
附加注释和示例:
示例1包括一种计算设备,该计算设备包括:存储设备,所述存储设备用于存储与计算机代码相关联的多个图形;图形处理器;主处理器;以及存储器,所述存储器包括指令集,所述指令集在由所述图形处理器或所述主处理器中的一个或多个执行时,使得所述计算设备:识别查询代码;将所述查询代码转换成查询图形;基于候选图形生成候选向量,其中所述候选图形与所述计算机代码的候选代码相关联;基于所述查询图形生成查询向量;并且确定所述查询向量和所述候选向量之间的相似性度量。
示例2包括示例1的计算设备,其中,所述指令在被执行时使得所述计算设备:将所述查询代码从源语言转换为中间表示,所述中间表示是所述查询代码的硬件不可知的表示;从所述中间表示生成代码表达式;并且基于所述代码表达式生成所述查询图形,其中所述查询图形表示所述代码表达式之间的依赖关系。
示例3包括示例1的计算设备,其中,所述指令在被执行时使得所述计算设备:基于所述相似性度量确定是否将所述候选图形添加到相似性列表。
示例4包括示例1的计算设备,其中,所述指令在被执行时使得所述计算设备:识别分别各自与不同候选代码相对应的多个图形;针对所述多个图形生成多个候选向量;生成所述多个候选向量与所述查询向量之间的相似性分数;并且基于所述相似性分数从所述多个图形中识别出最终图形。
示例5包括示例4的计算设备,其中,所述指令在被执行时使得所述计算设备:基于所述最终图形和所述多个图形的数量生成函数。
示例6包括示例1至5中任一项的计算设备,其中所述查询代码对应于第一用户的搜索查询;所述查询图形表示所述查询代码的语义和结构;所述候选代码与第二用户相关联;所述候选图形表示所述候选代码的语义和结构;所述查询向量是第一稀疏二进制特征向量;所述候选向量是第二稀疏二进制特征向量;以及所述相似性度量表示所述查询代码和所述候选代码之间的相似程度。
示例7包括一种半导体装置,该半导体装置包括:一个或多个衬底;以及耦合到所述一个或多个衬底的逻辑,其中所述逻辑以可配置逻辑或固定功能逻辑硬件中的一者或多者来实现,耦合到所述一个或多个衬底的所述逻辑用于:识别查询代码;将所述查询代码转换成查询图形;基于候选图形生成候选向量,其中所述候选图形与候选代码相关联;基于所述查询图形生成查询向量;并且确定所述查询向量和所述候选向量之间的相似性度量。
示例8包括示例7的装置,其中,耦合到所述一个或多个衬底的所述逻辑用于:将所述查询代码从源语言转换为中间表示,所述中间表示是所述查询代码的硬件不可知的表示;从所述中间表示生成代码表达式;并且基于所述代码表达式生成所述查询图形,其中所述查询图形表示所述代码表达式之间的依赖关系。
示例9包括示例7的装置,其中,耦合到所述一个或多个衬底的所述逻辑用于:基于所述相似性度量确定是否将所述候选图形添加到相似性列表。
示例10包括示例7的装置,其中,耦合到所述一个或多个衬底的所述逻辑用于:识别各自与不同候选代码相对应的多个图形;针对所述多个图形生成多个候选向量;生成所述多个候选向量与所述查询向量之间的相似性分数;并且基于所述相似性分数从所述多个图形中识别出最终图形。
示例11包括示例10的装置,其中,所述逻辑用于:基于所述最终图形和所述多个图形的数量生成函数。
示例12包括示例7至11中任一个的装置,其中所述查询代码对应于第一用户的搜索查询;所述查询图形表示所述查询代码的语义和结构;所述候选代码与第二用户相关联;所述候选图形表示所述候选代码的语义和结构;所述查询向量是第一稀疏二进制特征向量;所述候选向量是第二稀疏二进制特征向量;以及所述相似性度量表示所述查询代码和所述候选代码之间的相似程度。
示例13包括示例7至11中任一项的装置,其中,耦合到所述一个或多个衬底的所述逻辑包括位于所述一个或多个衬底内的晶体管沟道区域。
示例14包括至少一种计算机可读存储介质,所述至少一种计算机可读存储介质包括指令的集合,所述指令在由计算设备执行时使得所述计算设备:识别查询代码;将所述查询代码转换成查询图形;基于候选图形生成候选向量,其中所述候选图形与候选代码相关联;基于所述查询图形生成查询向量;并且确定所述查询向量和所述候选向量之间的相似性度量。
示例15包括示例14的至少一种计算机可读存储介质,其中,所述指令在被执行时使得所述计算设备:将所述查询代码从源语言转换为中间表示,所述中间表示是所述查询代码的硬件不可知的表示;从所述中间表示生成代码表达式;并且基于所述代码表达式生成所述查询图形,其中所述查询图形表示所述代码表达式之间的依赖关系。
示例16包括示例14的至少一种计算机可读存储介质,其中,所述指令在被执行时使得所述计算设备:基于所述相似性度量确定是否将所述候选图形添加到相似性列表。
示例17包括示例14的至少一种计算机可读存储介质,其中,所述指令在被执行时使得所述计算设备:识别各自与不同候选代码相对应的多个图形;针对所述多个图形生成多个候选向量;生成所述多个候选向量与所述查询向量之间的相似性分数;并且基于所述相似性分数从所述多个图形中识别出最终图形。
示例18包括示例17的至少一种计算机可读存储介质,其中,所述指令在被执行时使得所述计算设备:基于所述最终图形和所述多个图形的数量生成函数。
示例19包括示例14至18中任一项的至少一种计算机可读存储介质,其中:所述查询代码对应于第一用户的搜索查询;所述查询图形表示所述查询代码的语义和结构;所述候选代码与第二用户相关联;所述候选图形表示所述候选代码的语义和结构;所述查询向量是第一稀疏二进制特征向量;所述候选向量是第二稀疏二进制特征向量;以及所述相似性度量表示所述查询代码和所述候选代码之间的相似程度。
示例20包括一种方法,该方法包括:识别查询代码;将所述查询代码转换成查询图形;基于候选图形生成候选向量,其中所述候选图形与候选代码相关联;基于所述查询图形生成查询向量;并且确定所述查询向量和所述候选向量之间的相似性度量。
示例21包括示例20的方法,还包括:将所述查询代码从源语言转换为中间表示,所述中间表示是所述查询代码的硬件不可知的表示;从所述中间表示生成代码表达式;并且基于所述代码表达式生成所述查询图形,其中所述查询图形表示所述代码表达式之间的依赖关系。
示例22包括示例20的方法,还包括:基于所述相似性度量确定是否将所述候选图形添加到相似性列表。
示例23包括示例20的方法,还包括:识别各自与不同候选代码相对应的多个图形;针对所述多个图形生成多个候选向量;生成所述多个候选向量与所述查询向量之间的相似性分数;并且基于所述相似性分数从所述多个图形中识别出最终图形。
示例24包括示例23的方法,还包括:基于所述最终图形和所述多个图形的数量生成函数。
示例25包括示例20至24中任一项的方法,其中,所述查询代码对应于第一用户的搜索查询;所述查询图形表示所述查询代码的语义和结构;所述候选代码与第二用户相关联;所述候选图形表示所述候选代码的语义和结构;所述查询向量是第一稀疏二进制特征向量;所述候选向量是第二稀疏二进制特征向量;以及所述相似性度量表示所述查询代码和所述候选代码之间的相似程度。
示例26包括一种半导体装置,该半导体装置包括:用于识别查询代码的部件;用于将所述查询代码转换成查询图形的部件;用于基于候选图形生成候选向量的部件,其中所述候选图形与候选代码相关联;用于基于所述查询图形生成查询向量的部件;并且用于确定所述查询向量和所述候选向量之间的相似性度量的装置。
示例27包括示例26的装置,还包括:用于将所述查询代码从源语言转换为中间表示的部件,所述中间表示是所述查询代码的硬件不可知的表示;用于从所述中间表示生成代码表达式的部件;以及用于基于所述代码表达式生成所述查询图形的部件,其中所述查询图形表示所述代码表达式之间的依赖关系。
示例28包括示例26的装置,还包括用于基于所述相似性度量确定是否将所述候选图形添加到相似性列表的部件。
示例28包括示例26的装置,还包括:用于识别各自与不同候选代码相对应的多个图形的部件;用于针对所述多个图形生成多个候选向量的部件;用于生成所述多个候选向量与所述查询向量之间的相似性分数的部件;以及用于基于所述相似性分数从所述多个图形中识别出最终图形的部件。
示例29包括示例28的装置,还包括用于基于所述最终图形和所述多个图形的数量生成函数的部件。
示例30包括示例26至29中任一项的装置,其中,所述查询代码对应于第一用户的搜索查询;所述查询图形表示所述查询代码的语义和结构;所述候选代码与第二用户相关联;所述候选图形表示所述候选代码的语义和结构;所述查询向量是第一稀疏二进制特征向量;所述候选向量是第二稀疏二进制特征向量;以及所述相似性度量表示所述查询代码和所述候选代码之间的相似程度。
因此,本文描述的技术实现了用于使用AI导航和搜索进行代码相似性搜索的有效系统。该技术可能能够学习和表示代码语句之间的语义和关系,并跨不同的编程语言和硬件架构生成表示(例如,硬件和语言不可知的表示)。
实施例适用于与所有类型的半导体集成电路(“IC”)芯片一起使用。这些IC芯片的示例包括但不限于处理器、控制器、芯片组组件、可编程逻辑阵列(PLA)、存储器芯片、网络芯片、片上系统(SoC)、SSD/NAND控制器ASIC等。另外,在一些附图中,信号导线用线表示。一些可以是不同的,以指示更多的组成信号路径,具有数字标记以指示组成信号路径的数量,和/或在一个或多个端部具有箭头以指示主要信息流方向。然而,这不应以限制性方式来解释。而是,这些增加的细节可以与一个或多个示例性实施例结合使用,以促进更容易地理解电路。任何表示的信号线,无论是否具有附加信息,实际上可以包括可以在多个方向上行进的一个或多个信号,并且可以利用任何适当类型的信号方案来实现,例如,利用差分对实现的数字或模拟线、光纤线和/或单端线。
可能已经给出示例尺寸/模型/值/范围,但是实施例不限于此。随着制造技术(例如,光刻)的日趋成熟,期望可以制造更小尺寸的器件。另外,为了简化图示和讨论,并从而不使实施例的某些方面模糊,在图中可能会或可能不会显示与IC芯片和其他组件的众所周知的电源/接地连接。此外,可以以框图形式示出布置,以避免使实施例模糊,并且还鉴于以下事实:关于实现此种框图布置的实现方式的细节高度依赖于要在其内实现该实施例的计算系统;即,此类细节应该完全在本领域技术人员的能力范围内。在阐述特定细节(例如,电路)以便描述示例实施例的情况下,对于本领域技术人员应当显而易见的是,可以在没有这些特定细节的情况下或使用这些特定细节的变体来实践实施例。因此,该描述应被认为是说明性的而不是限制性的。
术语“耦合”在本文中可以用来指所讨论的组件之间的任何类型的关系,直接的或间接的,并且可以应用于电、机械、流体、光学、电磁、机电或其他连接。另外,术语“第一”、“第二”等在本文中仅用于促进讨论,并且不具有特定的时间或先后意义,除非另外指明。
如在本申请和权利要求书中使用的,由术语“中的一个或多个”连接的项目的列表可以指所列出术语的任何组合。例如,短语“A、B或C中的一个或多个”可以指A;B;C;A和B;A和C;B和C;或A、B和C。
根据前面的描述,本领域技术人员将意识到,可以以各种形式来实现实施例的广泛技术。因此,尽管已经结合实施例的具体示例描述了实施例,但是实施例的真实范围不应受到如此限制,因为在研究附图、说明书和所附权利要求书之后,其他修改对本领域技术人员将变得清晰可见。
Claims (25)
1.一种使能增强搜索的计算设备,包括:
存储设备,所述存储设备用于存储与计算机代码相关联的多个图形;
图形处理器;
主处理器;以及
存储器,所述存储器包括指令集,所述指令集在由所述图形处理器或所述主处理器中的一个或多个执行时,使得所述计算设备:
识别查询代码;
将所述查询代码转换成查询图形;
基于候选图形生成候选向量,其中所述候选图形与所述计算机代码的候选代码相关联;
基于所述查询图形生成查询向量;并且
确定所述查询向量和所述候选向量之间的相似性度量。
2.根据权利要求1所述的计算设备,其中,所述指令在被执行时使得所述计算设备:
将所述查询代码从源语言转换为中间表示,所述中间表示是所述查询代码的硬件不可知的表示;
从所述中间表示生成代码表达式;并且
基于所述代码表达式生成所述查询图形,其中所述查询图形表示所述代码表达式之间的依赖关系。
3.根据权利要求1所述的计算设备,其中,所述指令在被执行时使得所述计算设备:
基于所述相似性度量确定是否将所述候选图形添加到相似性列表。
4.根据权利要求1所述的计算设备,其中,所述指令在被执行时使得所述计算设备:
识别各自与不同候选代码相对应的多个图形;
针对所述多个图形生成多个候选向量;
生成所述多个候选向量与所述查询向量之间的相似性分数;并且
基于所述相似性分数从所述多个图形中识别出最终图形。
5.根据权利要求4所述的计算设备,其中,所述指令在被执行时使得所述计算设备:
基于所述最终图形和所述多个图形的数量生成函数。
6.根据权利要求1到5中任一项所述的计算设备,其中:
所述查询代码与第一用户的搜索查询相对应;
所述查询图形表示所述查询代码的语义和结构;
所述候选代码与第二用户相关联;
所述候选图形表示所述候选代码的语义和结构;
所述查询向量是第一稀疏二进制特征向量;
所述候选向量是第二稀疏二进制特征向量;以及
所述相似性度量表示所述查询代码和所述候选代码之间的相似程度。
7.一种半导体装置,包括:
一个或多个衬底;以及
耦合到所述一个或多个衬底的逻辑,其中所述逻辑以可配置逻辑或固定功能逻辑硬件中的一者或多者来实现,耦合到所述一个或多个衬底的所述逻辑用于:
识别查询代码;
将所述查询代码转换成查询图形;
基于候选图形生成候选向量,其中所述候选图形与候选代码相关联;
基于所述查询图形生成查询向量;并且
确定所述查询向量和所述候选向量之间的相似性度量。
8.根据权利要求7所述的装置,其中,耦合到所述一个或多个衬底的所述逻辑用于:
将所述查询代码从源语言转换为中间表示,所述中间表示是所述查询代码的硬件不可知的表示;
从所述中间表示生成代码表达式;并且
基于所述代码表达式生成所述查询图形,其中所述查询图形表示所述代码表达式之间的依赖关系。
9.根据权利要求7所述的装置,其中,耦合到所述一个或多个衬底的所述逻辑用于:
基于所述相似性度量确定是否将所述候选图形添加到相似性列表。
10.根据权利要求7所述的装置,其中,耦合到所述一个或多个衬底的所述逻辑用于:
识别各自与不同候选代码相对应的多个图形;
针对所述多个图形生成多个候选向量;
生成所述多个候选向量与所述查询向量之间的相似性分数;并且
基于所述相似性分数从所述多个图形中识别出最终图形。
11.根据权利要求10所述的装置,其中,所述逻辑用于:
基于所述最终图形和所述多个图形的数量生成函数。
12.根据权利要求7到11中任一项所述的装置,其中:
所述查询代码与第一用户的搜索查询相对应;
所述查询图形表示所述查询代码的语义和结构;
所述候选代码与第二用户相关联;
所述候选图形表示所述候选代码的语义和结构;
所述查询向量是第一稀疏二进制特征向量;
所述候选向量是第二稀疏二进制特征向量;以及
所述相似性度量表示所述查询代码和所述候选代码之间的相似程度。
13.根据权利要求7到11中任一项所述的装置,其中,耦合到所述一个或多个衬底的所述逻辑包括位于所述一个或多个衬底内的晶体管沟道区域。
14.一种增强搜索的方法,包括:
识别查询代码;
将所述查询代码转换成查询图形;
基于候选图形生成候选向量,其中所述候选图形与候选代码相关联;
基于所述查询图形生成查询向量;并且
确定所述查询向量和所述候选向量之间的相似性度量。
15.根据权利要求14所述的方法,还包括:
将所述查询代码从源语言转换为中间表示,所述中间表示是所述查询代码的硬件不可知的表示;
从所述中间表示生成代码表达式;并且
基于所述代码表达式生成所述查询图形,其中所述查询图形表示所述代码表达式之间的依赖关系。
16.根据权利要求14所述的方法,还包括:
基于所述相似性度量确定是否将所述候选图形添加到相似性列表。
17.根据权利要求14所述的方法,还包括:
识别各自与不同候选代码相对应的多个图形;
针对所述多个图形生成多个候选向量;
生成所述多个候选向量与所述查询向量之间的相似性分数;并且
基于所述相似性分数从所述多个图形中识别出最终图形。
18.根据权利要求17所述的方法,还包括:
基于所述最终图形和所述多个图形的数量生成函数。
19.根据权利要求14到18中任一项所述的方法,其中:
所述查询代码与第一用户的搜索查询相对应;
所述查询图形表示所述查询代码的语义和结构;
所述候选代码与第二用户相关联;
所述候选图形表示所述候选代码的语义和结构;
所述查询向量是第一稀疏二进制特征向量;
所述候选向量是第二稀疏二进制特征向量;以及
所述相似性度量表示所述查询代码和所述候选代码之间的相似程度。
20.一种半导体设备,包括:
用于识别查询代码的装置;
用于将所述查询代码转换成查询图形的装置;
用于基于候选图形生成候选向量的装置,其中所述候选图形与候选代码相关联;
用于基于所述查询图形生成查询向量的装置;以及
用于确定所述查询向量和所述候选向量之间的相似性度量的装置。
21.根据权利要求20所述的设备,还包括:
用于将所述查询代码从源语言转换为中间表示的装置,所述中间表示是所述查询代码的硬件不可知的表示;
用于从所述中间表示生成代码表达式的装置;以及
用于基于所述代码表达式生成所述查询图形的装置,其中所述查询图形表示所述代码表达式之间的依赖关系。
22.根据权利要求20所述的设备,还包括:
用于基于所述相似性度量确定是否将所述候选图形添加到相似性列表的装置。
23.根据权利要求20所述的设备,还包括:
用于识别各自与不同候选代码相对应的多个图形的装置;
用于针对所述多个图形生成多个候选向量的装置;
用于生成所述多个候选向量与所述查询向量之间的相似性分数的装置;以及
用于基于所述相似性分数从所述多个图形中识别出最终图形的装置。
24.根据权利要求23所述的设备,还包括:
用于基于所述最终图形和所述多个图形的数量生成函数的装置。
25.根据权利要求20到24中任一项所述的设备,其中:
所述查询代码与第一用户的搜索查询相对应;
所述查询图形表示所述查询代码的语义和结构;
所述候选代码与第二用户相关联;
所述候选图形表示所述候选代码的语义和结构;
所述查询向量是第一稀疏二进制特征向量;
所述候选向量是第二稀疏二进制特征向量;以及
所述相似性度量表示所述查询代码和所述候选代码之间的相似程度。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US16/914,302 US20200327118A1 (en) | 2020-06-27 | 2020-06-27 | Similarity search using guided reinforcement learning |
US16/914,302 | 2020-06-27 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN113849675A true CN113849675A (zh) | 2021-12-28 |
Family
ID=72749296
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202011466307.2A Pending CN113849675A (zh) | 2020-06-27 | 2020-12-14 | 使用引导强化学习的相似性搜索 |
Country Status (3)
Country | Link |
---|---|
US (1) | US20200327118A1 (zh) |
EP (1) | EP3929767A1 (zh) |
CN (1) | CN113849675A (zh) |
Families Citing this family (12)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112328743A (zh) * | 2020-11-03 | 2021-02-05 | 北京嘀嘀无限科技发展有限公司 | 代码搜索方法、装置、可读存储介质和电子设备 |
CN112328578B (zh) * | 2020-11-26 | 2023-03-28 | 电子科技大学 | 一种基于强化学习和图注意力网络的数据库查询优化方法 |
US11513774B2 (en) * | 2021-01-03 | 2022-11-29 | Microsoft Technology Licensing, Llc. | Multi-lingual code generation with zero-shot inference |
US11487533B2 (en) * | 2021-01-13 | 2022-11-01 | Tata Consultancy Services Limited | Method and system for inferencing logic out of an application source |
US20220244952A1 (en) * | 2021-02-01 | 2022-08-04 | Microsoft Technology Licensing, Llc. | Source code generation using code templates with neural transformers |
CN112800172B (zh) * | 2021-02-07 | 2022-07-12 | 重庆大学 | 一种基于两阶段注意力机制的代码搜索方法 |
US11847446B2 (en) * | 2021-03-18 | 2023-12-19 | Dell Products, L.P. | Predictive build quality assessment |
US12045592B2 (en) * | 2021-03-25 | 2024-07-23 | Microsoft Technology Licensing, Llc. | Semi-supervised translation of source code programs using neural transformers |
US12073195B2 (en) * | 2022-05-09 | 2024-08-27 | Microsoft Technology Licensing, Llc. | Retrieval-augmented code completion |
CN114625844B (zh) * | 2022-05-16 | 2022-08-09 | 湖南汇视威智能科技有限公司 | 一种代码搜索方法、装置及设备 |
US20230394021A1 (en) * | 2022-06-07 | 2023-12-07 | Oracle International Corporation | Computing similarity of tree data structures using metric functions defined on sets |
US20240119055A1 (en) * | 2022-10-05 | 2024-04-11 | Western Digital Technologies, Inc. | Computational SSD Supporting Rapid File Semantic Search |
Family Cites Families (15)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6915290B2 (en) * | 2001-12-11 | 2005-07-05 | International Business Machines Corporation | Database query optimization apparatus and method that represents queries as graphs |
US7146352B2 (en) * | 2003-06-23 | 2006-12-05 | Microsoft Corporation | Query optimizer system and method |
US7707566B2 (en) * | 2003-06-26 | 2010-04-27 | Microsoft Corporation | Software development infrastructure |
US9110769B2 (en) * | 2010-04-01 | 2015-08-18 | Microsoft Technology Licensing, Llc | Code-clone detection and analysis |
US9122490B2 (en) * | 2012-10-17 | 2015-09-01 | Microsoft Technology Licensing, Llc | Code dependency calculation |
US9411558B2 (en) * | 2012-10-20 | 2016-08-09 | Luke Hutchison | Systems and methods for parallelization of program code, interactive data visualization, and graphically-augmented code editing |
KR102130162B1 (ko) * | 2015-03-20 | 2020-07-06 | 프라운호퍼 게젤샤프트 쭈르 푀르데룽 데어 안겐반텐 포르슝 에. 베. | 인공 신경망들에 대한 관련성 스코어 할당 |
US9940394B1 (en) * | 2016-10-14 | 2018-04-10 | Slack Technologies, Inc. | Messaging search and management apparatuses, methods and systems |
US10048945B1 (en) * | 2017-05-25 | 2018-08-14 | Devfactory Fz-Llc | Library suggestion engine |
US20190114561A1 (en) * | 2017-10-13 | 2019-04-18 | Ca, Inc. | Reinforcement learning system for recommended associations |
US11537719B2 (en) * | 2018-05-18 | 2022-12-27 | Deepmind Technologies Limited | Deep neural network system for similarity-based graph representations |
US11238306B2 (en) * | 2018-09-27 | 2022-02-01 | International Business Machines Corporation | Generating vector representations of code capturing semantic similarity |
US11271876B2 (en) * | 2019-08-22 | 2022-03-08 | Adobe Inc. | Utilizing a graph neural network to identify supporting text phrases and generate digital query responses |
US11481418B2 (en) * | 2020-01-02 | 2022-10-25 | International Business Machines Corporation | Natural question generation via reinforcement learning based graph-to-sequence model |
US11294664B2 (en) * | 2020-06-05 | 2022-04-05 | CrossVista, Inc. | Version control system |
-
2020
- 2020-06-27 US US16/914,302 patent/US20200327118A1/en not_active Abandoned
- 2020-12-14 CN CN202011466307.2A patent/CN113849675A/zh active Pending
- 2020-12-15 EP EP20214019.0A patent/EP3929767A1/en not_active Withdrawn
Also Published As
Publication number | Publication date |
---|---|
EP3929767A1 (en) | 2021-12-29 |
US20200327118A1 (en) | 2020-10-15 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
EP3929767A1 (en) | Similarity search using guided reinforcement learning | |
CN112101083B (zh) | 使用神经网络进行弱监督的对象检测方法及系统 | |
US11640295B2 (en) | System to analyze and enhance software based on graph attention networks | |
CN111950695A (zh) | 使用一个或更多个神经网络进行语法迁移 | |
CN114254752A (zh) | 使用神经网络的知识发现 | |
US11798549B2 (en) | Generating action items during a conferencing session | |
US20230139623A1 (en) | Data path circuit design using reinforcement learning | |
US11853766B2 (en) | Technology to learn and offload common patterns of memory access and computation | |
Andri et al. | Going further with winograd convolutions: Tap-wise quantization for efficient inference on 4x4 tiles | |
Rodriguez | Deep Learning Systems: Algorithms, Compilers, and Processors for Large-Scale Production | |
Ma et al. | Accelerating deep neural network filter pruning with mask-aware convolutional computations on modern CPUs | |
Wang | Efficient algorithms and hardware for natural language processing | |
Han et al. | Energy-efficient DNN training processors on micro-AI systems | |
JP2024029119A (ja) | 再粒状化されたタイル実行のための統合されたプログラミングインタフェース | |
US20240029836A1 (en) | System and method for retrieval-based controllable molecule generation | |
Solis et al. | Domain specific architectures, hardware acceleration for machine/deep learning | |
US11507773B2 (en) | Large-scale similarity search with on-chip cache | |
WO2021087841A1 (en) | Interleaved data conversion to change data formats | |
US20240296668A1 (en) | Sample-adaptive cross-layer norm calibration and relay neural network | |
US20220391710A1 (en) | Neural network based power and performance model for versatile processing units | |
US20240233379A1 (en) | Methods and apparatus to enhance action segmentation model with causal explanation capability | |
Shi | Machine Learning for Prediction Problems in Computer Architecture | |
Feng et al. | AttMEMO: Accelerating Transformers with Memoization on Big Memory Systems | |
KR20230076754A (ko) | 포인트 클라우드 인접 맵 및 해시 맵 가속기 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination |