CN112148274A - 用于改善代码特性的方法、系统、制品和装置 - Google Patents

用于改善代码特性的方法、系统、制品和装置 Download PDF

Info

Publication number
CN112148274A
CN112148274A CN202010201134.5A CN202010201134A CN112148274A CN 112148274 A CN112148274 A CN 112148274A CN 202010201134 A CN202010201134 A CN 202010201134A CN 112148274 A CN112148274 A CN 112148274A
Authority
CN
China
Prior art keywords
code
state
objective function
reward
candidate
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
Application number
CN202010201134.5A
Other languages
English (en)
Inventor
陈理
J·高茨克里奇
A·海内克
Z·张
S·周
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.)
Intel Corp
Original Assignee
Intel 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 Intel Corp filed Critical Intel Corp
Publication of CN112148274A publication Critical patent/CN112148274A/zh
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/30Creation or generation of source code
    • G06F8/33Intelligent editors
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/30Creation or generation of source code
    • G06F8/31Programming languages or programming paradigms
    • G06F8/316Aspect-oriented programming techniques
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/70Software maintenance or management
    • G06F8/77Software metrics
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/004Artificial life, i.e. computing arrangements simulating life
    • G06N3/006Artificial 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]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/04Architecture, e.g. interconnection topology
    • G06N3/045Combinations of networks
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/08Learning methods

Abstract

公开了用于改善代码特性的方法、装置、系统和制品。示例装置包括:权重管理器,该权重管理器用于将第一权重值应用于第一目标函数;状态标识器,该状态标识器用于标识与候选代码相对应的第一状态;以及动作标识器,该动作标识器用于标识与所标识的第一状态相对应的候选动作。示例装置还包括:奖励计算器,该奖励计算器用于确定与以下各项相对应的奖励值:(a)所标识的第一状态,(b)候选动作中的一个候选动作和(c)第一权重值;以及质量函数定义器,该质量函数定义器用于基于奖励值中的各个奖励值来确定相对最高状态和动作对奖励值。

Description

用于改善代码特性的方法、系统、制品和装置
技术领域
本公开总体上涉及代码开发活动,更具体地涉及用于改善代码特性的方法、系统、制品和装置。
背景技术
近年来,许多不同的编程语言、算法、数据类型和/或编程目标已使代码开发者(例如,人类编程者、编程者、软件开发者等)不胜负荷。此类代码开发者也具有大量的集成开发环境(IDE)选择,诸如微软Visual
Figure BDA0002419421320000011
Figure BDA0002419421320000012
等。各种IDE向代码开发者提供适合个人偏好的开发环境,并且各种IDE包括不同类型的代码开发特征(诸如拼写检查和代码格式化)。
附图说明
图1是改善代码特性的示例代码更新系统的示意图。
图2是用于改善代码特性的图1的示例代码更新器的示意图。
图3-图6描绘了根据本公开的教导的表示可被执行以实现用于改善代码特性的图1和图2的示例代码更新器的示例计算机可读指令的流程图。
图7是根据本公开的教导的被构造用于执行图3-图6的指令以实现用于改善代码特性的图1和图2的示例代码更新器的示例处理平台的框图。
这些图并未按比例绘制。一般来说,在整个附图和所附书面描述中将使用相同的附图标记来指代相同或相似的组件。
当标识多个要素或组件时,本文使用描述符“第一”、“第二”、“第三”等。除非基于它们的使用上下文另有规定或理解,否则此类描述符并非旨在赋予优先级或时间顺序的任何含义,而仅仅是为了便于理解所公开的示例而分别指代多个要素或组件的标签。在一些示例中,描述符“第一”可以用于指代详细描述中的元素,而在权利要求中可以使用诸如“第二”或“第三”之类的不同描述符来指代相同的元素。在此类情况下,应当理解,此类描述符仅用于易于引用多个要素或组件。
具体实施方式
尽管有各种各样的集成开发环境(IDE)和与此类IDE相关的对应的特征,但是代码开发者有责任在编程任务的许多不同方面成为专家。此类不同且众多的编程任务包括、但不限于,以不同的计算机语言编写代码、为不同类型的计算机系统编写代码、编写代码以促进不同的存储器管理算法,以及鉴于安全性考虑而编写代码,其中的一些任务在一个或多个安全漏洞(例如,零售商客户数据盗窃和/或非自愿披露)的情况下涉及备受关注的风险。
虽然代码开发者必须编写针对特定任务的代码,但用于完成该任务所得到的代码具有任意数量的相关联的目标函数。如本文所使用,目标函数是代码的与特定代码开发者的偏好相对应的参数或特性。示例目标函数包括、但不限于,代码性能特性、代码正确性特性、代码原始性特性、代码漏洞特性、安全性特性和编程风格特性。
在一些示例中,行业标准代码对于代码开发者是可用的。如本文所使用,行业标准代码表示完成特定任务并且已经被一个或多个代码开发社区测试并且在特定任务中被认为是异常的代码。在一些示例中,行业标准代码完成了特定的任务,但展现了与代码开发者的一个或多个偏好不一致的一个或多个目标函数。换言之,虽然某些行业标准代码非常擅长某一特定任务,但可能不是特别擅长以最大化相关联的目标函数的方式来执行该任务(例如,代码可能无法有效地利用平台资源,但非常安全,或者代码在使用平台资源时可能非常有效,但不太安全)。例如,代码开发者可能具有特别强的偏好,或者需要创建安全的代码(例如,代码段)。在一些示例中,代码语料库(例如,具有能够完成特定任务的候选代码段(包括行业标准代码的部分)的一个或多个本地和/或远程存储位置(例如,云存储))包括能够完成特定任务的两个或更多个代码段。在这些候选代码段中的一个候选代码段具有特别适合稳健安全性能的相关联的目标函数的情况下,则该代码段可能是代码开发者的最主要偏好。然而,代码开发者具有对于特定的代码开发任务要被满足的多于一个目标函数。
当对于特定的代码开发任务要满足多于一个目标函数时,本文所公开的示例学习和/或以其他方式适配代码开发者的偏好,以便以基于经加权的向量和奖励考虑(例如奖励函数)来满足目标函数的方式生成被优化的代码。如本文所使用,奖励表示可以响应于特定状态/动作对/组合来测量的反馈或结果。例如,虽然代码开发者可以对与代码性能相关联的目标函数设置相对权重(偏好),并对与代码安全性相关联的目标函数设置另一相对权重,但此类所选择的目标函数可能在不同程度上彼此冲突。
例如,考虑在相对高的程度上满足代码性能目标函数但以无需考虑代码安全性的方式操作的候选代码。在添加与代码安全性目标函数相关联的代码方面时,此类安全性算法和/或代码技术通常会增加用于完成代码的改善的安全性行为的计算资源的负担。由此,一些目标函数以其他目标函数为代价展现出减少的效果。换言之,某些目标函数不能简单地不考虑对其他目标函数的影响而被最大化(例如,最大化所有目标函数的努力之间存在矛盾)。
本文所公开的示例以考虑的两个或更多个目标函数和/或代码开发者偏好的方式来开发被优化的代码。在一些示例中,本文公开的方法、装置、系统和/或制品以特定方式应用强化学习技术来动态地调整与两个或更多个目标函数相关联的相对权重,其中相对权重从(多个)代码开发者观察和/或反馈中习得。在一些示例中,代码开发者标识相对权重和/或以其他方式将相对权重与特定的目标函数进行关联,以使代码优化努力标识最符合目标函数(例如,目标函数的整体考虑和/或总计考虑)的最佳代码样本。在一些示例中,强化学习技术结合奖励策略算法(例如,质量(Q)值技术)来被应用并由神经网络(例如,卷积神经网络(CNN))来估计。
包括机器学习(ML)、深度学习(DL)和/或其他人工机器驱动的逻辑在内的人工智能(AI)使机器(例如计算机、逻辑电路等)能够使用模型来处理输入数据以便基于由该模型经由训练过程先前学习的模式和/或关联来生成输出。例如,可以利用数据来训练模型以识别模式和/或关联,并且在处理输入数据时遵循这样的模式和/或关联,使得(多个)其他输入导致与所识别的模式和/或关联一致的(多个)输出。
存在许多不同类型的机器学习模型和/或机器学习架构。在本文所公开的示例中,使用强化模型(强化学习)。使用强化模型可以使任意行为表现出场景,以使代理可以标识如何进行动作/执行以力图最大化奖励(或最小化惩罚)。如本文所使用,代理是作出改变的影响的表示,诸如代码函数在被执行时使活动和状态改变。在本文所公开的一些示例中,代理被称为子代理。一般而言,适于在本文所公开的示例方法中使用的机器学习模型/架构将是强化学习技术。然而,其他类型的机器学习模型/技术可以附加地或替代地使用。
一般而言,实现ML/AI系统涉及两个阶段:学习/训练阶段和推断阶段。在学习/训练阶段,训练算法被用于训练模型以根据基于例如训练数据的模式和/或关联来操作。通常,模型包括引导如何将输入数据变换成输出数据(诸如通过模型内的一系列节点和连接来将输入数据变换成输出数据)的内部参数。另外,在一些示例中,超参数被用作训练过程的一部分,以控制学习的执行方式(例如,学习率、机器学习模型中要使用的层数、折扣因子等)。例如,超参数被定义为是在发起训练过程之前确定的训练参数。
可以基于ML/AI模型/技术的类型和/或预期输出来执行不同类型的训练。例如,监督训练使用输入和对应的期望(例如,标记的)输出来选择用于ML/AI模型的参数(例如,通过迭代多个选择参数的组合),以减少模型误差。一般来说,当基于被标记的数据来预测值时,监督学习/训练特别有用。如本文所使用的,标记是指机器学习模型的预期输出(例如,分类、预期输出值等)。替代地,无监督训练/学习(例如,用于深度学习、机器学习的子集等)涉及从输入推断模式来选择用于ML/AI模型的参数(例如,没有预期(例如,标记的)输出的益处)。一般来说,当试图标识未被标记的数据中的关系时,无监督学习特别有用。
在本文所公开的示例中,使用强化学习来训练ML/AI模型。然而,可附加地或替代地使用任何其他训练算法/技术。在本文所公开的示例中,执行训练直到收敛,这是通过使用神经网络来辅助。使用控制如何执行学习的超参数来执行训练(例如,学习率、要在机器学习模型中使用的层数等)。在本文所公开的示例中,控制折扣因子的超参数能够实现不同程度的学习实验并试图“尝试”。例如,通过经验观察、时间限制等来选择此类超参数。在一些示例中,可以执行重新训练。
对于一些ML方法,使用训练数据来执行训练。在本文所公开的示例中,训练数据源自被认为特别有用且无错误(例如,行业标准代码)的代码样本的代码语料库。因为可以使用监督训练,所以训练数据被标记。然而,被标记的数据在用于提供特定代码函数的附加状态和/或相应动作的强化学习中也是有用的。
在一些示例中,一旦训练完成,就将该模型部署为用作可执行构造,该可执行构造基于模型中定义的节点和连接的网络来处理输入并提供输出。模型被存储在本地存储设备(例如,数据库)和/或网络可访问的存储设备(例如基于云的存储服务)中。
一旦被训练,就可以在推断阶段中操作所部署的模型来处理数据。在推断阶段,将要分析的数据(例如,实时数据)输入到模型,并且执行该模型以产生输出。该推断阶段可以被认为是AI“思考”以便基于其从训练中学习到的内容来生成输出(例如,通过执行模型以将所学习的模式和/或关联应用于实时数据)。在一些示例中,输入数据在被用作机器学习模型的输入之前经历预处理。此外,在一些示例中,在由AI模型生成输出数据之后,可以对该输出数据进行后处理,以将输出变换成有用的结果(例如,数据显示、由机器执行的指令,等等。)。
在一些示例中,可以捕获所部署模型的输出并将其作为反馈来提供。通过分析该反馈,能够确定所部署模型的准确性。如果反馈指示所部署的模型的准确性低于阈值或其他标准,则可以使用反馈和更新的训练数据集、超参数等来触发对更新的模型的训练,以生成更新的部署模型。
图1是以与本公开一致的方式构造的用于改善候选代码的代码特性的示例代码更新系统100的示意图。在图1所图示的示例中,代码更新系统100包括用于改善代码开发者在一个或多个示例用户界面110处开发的候选代码(例如,代码样本、代码段、算法、伪代码等)的代码特性。示例用户界面110经由示例网络106通信地连接至示例代码更新器102。在一些示例中,示例代码更新器102从示例代码数据库108而不是从一个或多个示例用户界面110处的一个或多个代码开发者传送、检取和/或以其他方式接收候选代码。例如,由特定代码开发者(先前)编写的候选代码的一个或多个样本被存储在示例代码数据库108中、存储在示例用户界面110中的一个示例用户界面的存储器中、和/或存储在示例服务器104的存储器中,所有这些都经由示例网络106进行通信连接。图1的所图示的示例还包括示例代码语料库数据库112。在一些示例中,代码语料库数据库112存储行业标准和/或其他方式的经审查的代码的不同代码样本。
在操作中,并且如下文进一步详细描述的,示例代码更新器102检取、接收和/或以其他方式获得候选代码(例如,原始代码),诸如由代码开发者编写的候选代码。示例代码更新器102结合两个或更多个目标函数来评估代码。在一些示例中,代码更新器102评估与代码开发者相关联的模式和/或行为,以将权重值指派给两个或更多个目标函数中的各个目标函数。在一个或多个反馈回路中,代码起草者进一步评估此类自适应权重确定技术,以确认它们同意不同的改变和/或替代的代码选择活动。在一些示例中,代码开发者以与代码开发偏好一致的方式将特定权重值(例如,代替代码开发者偏好的行为分析)提供给代码更新器102。在另一些示例中,代码更新器102基于任务类型将特定权重值指派给目标函数的各个目标函数。例如,在与消费者数据、财务数据、健康数据等相关联的编程任务的情况下,示例代码更新器102将相对权重值指派给安全相关的目标函数,该目标函数大于其他目标函数(诸如代码性能)。示例代码更新器102检查候选代码以标识其中的一个或多个函数,并开发不同的状态和动作对,其中一些状态和动作对是从存储在示例代码语料库数据库112中的可用代码导出。示例代码更新器102确定特定的加权奖励值,并进一步将特定的状态和动作对映射到那些奖励以力图标识优化的代码以替换和/或以其他方式扩充原始候选代码。
图2是图1的示例代码更新器102的示意图。在图2所图示的示例中,代码更新器102包括示例代码检取器202和示例权重管理器204。示例权重管理器204包括示例状态选择器206、示例目标函数选择器208、示例动作选择器210和示例奖励计算器212。图2的示例代码更新器102还包括示例状态/动作确定器214,该示例状态/动作确定器214包括示例状态标识器216、示例动作标识器218、和示例对验证器220。图2的示例代码更新器102还包括示例奖励映射器222,该示例奖励映射器222包括示例机器学习管理器224、示例质量函数定义器226和示例策略更新器228。
在操作中,示例代码检取器202检取、接收和/或以其他方式获得要被示例代码更新器102评估以改善该候选代码的一个或多个代码特性的候选代码(本文有时称为“原始代码”)。如上文所述,在一些示例中,代码检取器202从与特定集成开发环境(IDE)交互的代码开发者(用户)检取代码。在此类IDE中输入的代码可以被存储在本地设备(例如,各个示例用户界面110的存储器)上、被存储在示例代码数据库108中和/或被存储在示例服务器104的存储器中。示例代码更新器102标识正在调用和/或以其他方式访问示例代码更新器102以开始分析候选代码的相关联的用户。如上文所述,对正在调用代码更新器102的服务的特定用户的知识允许以与用户期望和/或偏好一致的方式发生代码修改。然而,在一些例子中,鉴于正在被分析的特定代码开发任务,可能会置用户偏好于不顾。例如,尽管特定用户具有维持代码原始性的强烈愿望,但与安全性相对应的编码任务可以优先以在安全性方面支持、增强和/或以其他方式改善候选代码的方式强调和/或以其他方式修改候选代码。
在示例代码检取器202不标识已知用户或标识新用户的情况下,示例权重管理器204为各个目标函数设置默认权重值。在一些示例中,权重管理器204向用户提示各个目标函数的优选的权重值。换言之,因为对于代码生成有许多不同的目标(例如,执行时间改善、缺陷减少改善、风格遵循、安全性考虑等),代码开发者可以输入或以其他方式提供特定的权重向量。例如,如果代码开发者将应用执行时间视为关键改善目标,并且将唯一编码风格视为要维持的另一目标,则示例权重管理器204可以以与示例等式1一致的方式应用权重向量。
w=[0.6,0.4,0,0] 等式1。
在等式1所图示的示例中,w表示权重向量,并且示出四个单独的标量权重值占位符。标量权重值中的每一个由逗号隔开,并且第一个占位符与具有值0.6的第一目标函数相对应,第二个占位符与具有值0.4的第二目标函数相对应,而最后两个占位符与具有值0的第三目标函数和第四目标函数相对应。为了便于讨论,如果第一个标量权重值占位符与唯一的编码风格相对应,则值0.6表示针对所有考虑的目标函数的相对最高权重,而值0.4表示第二最重要的目标函数。虽然等式1的所图示的示例包括四个标量权重值占位符,但本文所公开的示例不限于此。任何数量的不同目标函数都可以用对应的(多个)权重值表示。
在代码检取器202标识特定用户的情况下,则权重管理器204检取先前存储的(例如,先前确定的、先前观察到的、与各个目标函数相关联的行为或偏好等)目标函数权重值,以被应用于候选代码的分析。随着时间的推移,示例代码更新器102利用代码开发者观察到的行为来产生和/或以其他方式更新具以与特定目标函数影响一致的优化的候选代码,特定目标函数影响包括来自代码开发者的反馈。
在建立强化学习代理以确定如何结合(多个)奖励计算(例如,成本函数)来修改和/或以其他方式优化候选代码之前,示例状态/动作确定器214采用一种或多种试探法技术从候选代码提取状态和动作信息。如本文所使用,状态表示代理的即时情况。例如,读这句话的代理的状态是“坐在办公桌旁”。如本文所使用,动作表示在被执行时会导致状态改变的可能活动中的一个可能活动。例如,动作“吃(eating)”导致代理处于状态“饱(full)”。示例试探法技术(例如,聚类、基于主题模型的聚类、词袋建模等)标识与给定状态相对应的动作。作为简单的示例,如果当前状态是“饥饿(hungry)”,那么动作“吃(eating)”将建立交替的状态“饱(full)”。
类似地,要被优化的候选代码包括被认为是不同的状态的函数(例如,函数调用)。取决于函数调用的一个或多个类似于动作的参数,代码可以处于交替状态(例如,函数调用跳转到处于交替状态的代码的不同部分)。在特定的状态(例如,来自候选代码的函数)下可能发生的动作包括指派、调用其他函数(例如,要跳转到的函数)、建立函数之间的关系等。另外,在一些示例中,状态标识器216评估语法特性检测技术以验证候选代码(在候选代码内)的各个状态(函数),并且示例动作标识器218使用词袋建模来标识例如特定函数的候选变量指派(例如,变量值、变量类型等)、嵌套的函数调用(例如,相关的函数)、跳转指令、和/或转移指令(例如,调用图形处理单元(GPU)的指令、调用现场可编程门阵列(FPGA)的指令等)。
通过试探法建模,可以标识任何数量的状态和动作,但并非所有动作都与特定的状态正确地相关联。例如,试探法建模可以标识状态“饥饿”、“饱”、“迷路”和“在目的地”。动作“吃”是状态“饥饿”的适当的相关联的动作,而不是状态“迷路”的适当选择。可替代地,动作“使用GPS”会是与状态“迷路”相对应的适当动作,以最终达到(期望的)状态“在目的地”。由此,示例动作标识器218标识与所选择的感兴趣的状态相关联的候选动作,并且示例对验证器220标识可针对对应的奖励(例如,由奖励函数计算的奖励值)被测试的有效状态和对应动作的一个或多个有效对,如下文进一步详细所描述。
在一些示例中,试探法建模标识候选代码的特定函数,并且示例状态标识器216在示例代码语料库数据库112中搜索可以在候选代码的评估期间被考虑的类似函数。例如,由于本文所公开的示例寻求与特定状态相关联的使奖励函数最大化的特定动作(例如,结合偏好加权的奖励函数),因此,对示例代码语料库数据库112中的类似候选函数的分析提供了关于可以如何修改所提供的候选代码的进一步探索机会。一般来说,(a)状态和(b)每个状态对应的动作的数量对于人工跟踪来说太多了,因为当试图在大型的输入数据的集合中检测模式时,可能的排列组合表现出复杂且耗时的努力。因此,本文所公开的示例鉴于在优化候选代码时一起考虑的任何数量的感兴趣的目标函数来促进此类分析。
示例权重管理器204鉴于所收集的状态和动作组合(对)信息来确定加权的奖励函数值。如下文所公开的,通过迭代任意数量的不同的感兴趣状态、结合相关联的权重值对其进行优化的对应的对象函数、以及鉴于所选择的目标函数而表现出不同程度的奖励幅度的任何数量的不同动作,从而以递归的方式确定奖励函数值。具体而言,示例状态选择器206选择一个感兴趣的状态(例如,来自候选代码的函数),该状态有时利用变量“s”来标记。示例目标函数选择器208选择感兴趣的目标函数中的一个目标函数进行评估,并生成与所选择的目标函数相对应的子代理。如本文所使用,子代理是对特定目标函数和所选择的状态的影响的表示(例如,数学表示)。每个子代理都具有它试图要最大化的对应的目标函数。取决于针对所选择的状态的对应的动作,可能会产生不同的奖励值(幅度值),这些奖励值中的一些奖励值(例如,更大、更高的奖励值等)对促进感兴趣的目标函数具有更强的益处。总计而言,子代理对经修改的代码产生对应的总优化效果或总奖励值。
示例动作选择器210选择对所选择的状态有效的候选动作(“a”)中的一个候选动作。换言之,本文中公开的示例将状态和动作的代码置换建模为最大化奖励函数的动作的序列,该奖励函数可结合任何数量的感兴趣目标(例如,减少代码的运行时间、减小代码大小、执行速度更快、减少代码错误、减少代码漏洞,等等)来构造。本文所公开的示例采用深度强化学习来建模代码段之间的此类交互(例如,特定状态和动作以及此类状态和动作的特定序列)。例如,如果候选代码的目标是最大地减少运行时间,则在本文所公开的示例将运行时间的减少建模为强化学习技术期间的奖励函数。随着奖励函数值的增加,然后这表示在减少特定状态和动作序列的运行时间的相对更近的实现。换言之,产生最高奖励函数值的特定状态和动作序列表示候选代码应采用的对应的执行路径。
示例奖励计算器212结合所选择的感兴趣的目标函数来计算奖励。在一些示例中,奖励计算器212以与示例等式2一致的方式确定奖励。
Rt=rt+γRt+1′ 等式2。
在等式2所图示的示例中,Rt表示在时间t时的总奖励,rt表示在时间t时选择动作a(at)的奖励(例如,代码执行时间的减少)。变量伽马(γ)表示用于控制较长期内奖励相比于即时奖励的相对重要性的折扣因子。如果折扣因子(γ)设置为1,则相同的动作将产生相同的奖励(例如,不会发生探索)。每个子代理可以针对给定的感兴趣的目标函数的给定状态评估任意数量的不同的候选动作。所得到的奖励值可以被存储和/或以其他方式被总计,以便示例奖励计算器212可以为针对候选代码要被最大化的多个目标函数创建整体奖励函数。另外,由于每个奖励函数都包含对应的权重值,因此整体奖励函数以总计的方式考虑两个或更多个奖励函数的影响,以生成反映所有感兴趣的目标函数的影响的优化的代码。换言之,在确定鉴于所有感兴趣的目标函数而被最大化的总计奖励时,单个目标函数不会在封闭状态中分析或与一个或多个附加目标函数分开分析。
然而,鉴于大量可能的状态,其中每个状态具有大量候选动作,并且每个状态/动作组合具有可得到不同奖励值的可能的序列,示例机器学习管理器224由示例奖励映射器222调用。如下文进一步详细地所描述,示例奖励映射器222有助于确定用于映射状态/动作对的优化策略,该优化策略在被实现时展现满足目标函数的特定代码优化。一般来说,策略是代理(子代理)采用以(基于当前状态)得到后续状态的计策或状态/动作对的集合。优选地,该策略得到最大的奖励。在一些示例中,以与示例等式3一致的方式表示策略。
π(at|st) 等式3。
在等式3所图示的示例中,at表示在时刻t的动作,以及st表示在时刻t的状态。示例质量函数定义器226定义动作质量函数(Q),以力图映射先前所确定的状态/动作对的可能奖励。具体而言,Q函数将代理的状态和动作(例如,上文所确定的状态/动作对和对应的奖励)作为其输入,并以概率方式将这些对映射成奖励。Q函数(或Q因子)是指鉴于候选策略(π)的当前状态的长期返回,其中Q函数将状态/动作对映射成奖励。具体而言,示例质量函数定义器以与示例等式4一致的方式定义Q函数。
Q*(s,a)=maxπQπ(s,a) 等式4。
在等式4所图示的示例中,建立了启动策略(π),该启动策略结合神经网络收敛性,揭示了用于标识被优化的代码的被优化的状态/动作对。数量Qπ(s,a)表示基于策略π的状态/动作对(s,a)的奖励。Q*(s,a)表示给定状态/动作对的最大可实现奖励。示例策略更新器228以与示例等式5一致的方式更新策略(π)迭代。
π*=argmaxaQ*(s,a) 等式5。
在等式5所图示的示例中,策略更新器228确定下一个(例如,迭代)最优动作,该动作将得到针对给定状态s的最大奖励。示例质量函数定义器226以与示例等式6和等式7一致的方式确定该特定迭代的最优值函数。
Figure BDA0002419421320000121
在等式6所图示的示例中,策略更新器228通过最大化所有(当前尝试的)决策来确定最优值。另外,示例策略更新器228以与示例等式7一致的方式采用Bellman技术。
Q*(s,a)=E[r+γ*maxa′Q*(s′,a′|s,a] 等式7。
在等式7所图示的示例中,自状态/动作对(s,a)得到的最大Q值由即时奖励r(在状态s和动作a时)的统计期望(E)和可能来自此后下一个所得到的状态(s’)的经折扣的最大Q值来进行估计,其中γ表示折扣值/比率。因此,在该迭代期间,最高的Q值来自于还选择和/或以其他方式选择该后续状态s’的结果。例如,此类后续动作的重要性由对应的伽马(γ)值选择来引导以促进交替的状态/动作选择排列组合。换言之,示例Bellman技术(例如,如示例等式7所标识)促进来自未来状态(例如,s’)的奖励来以递归方式传播到其他状态。例如,如上文所述,总计结合个别的奖励函数来发生。在一些示例中,与感兴趣的第一目标函数相对应的第一子代理(例如,子代理1)具有状态/动作对(s11,a11)、(s21,a21)、…(sn1,an1)。示例奖励映射器222生成、计算和/或以其他方式估计第一子代理的对应的第一奖励函数(R1)。示例质量函数定义器226通过逼近奖励R1来学习对应的Q函数。然而,因为本文所公开的示例不限于感兴趣的单个目标函数,而是考虑任意数量的目标函数与其整体效果之间的相互影响,因此第二(或更多)子代理(例如,子代理2)被视为与具有状态/动作对(s12,a12)、(s22,a22)、…(sn2,an2)的感兴趣的第二目标函数相对应。类似地,示例奖励映射器222估计第二子代理的对应的第二奖励函数(R2)。然后,示例奖励计算器212将整体奖励函数确定为R=w1*R1+w2*R2+…,该整体奖励函数随后被优化。
另外,由于示例Bellman技术是递归的,因此初始值不一定是已知的,但在递归应用期间将会收敛。因此,示例奖励映射器222调用示例机器学习管理器224来实现神经网络以协助收敛。响应于标识收敛程度(例如,阈值收敛差分值)的示例奖励映射器222,示例策略更新器228发布被优化的策略,被优化的策略包括将候选代码修改为被优化的代码的状态/动作对和/或状态/动作对的序列(例如,为候选代码中的各个状态(函数)指派特定动作选择)。换言之,所得到的策略被确定为得到最高总体奖励的一个或多个路径或状态/操作对。
在一些示例中,代码更新器102调用一个或多个静态安全性分析器以促进沙箱技术。由代码更新器102调用的示例沙箱技术验证机器生成的程序(例如,由前述示例技术优化的代码)是否包含任何(例如,已知的)漏洞。一般来说,两个或更多个目标函数的联合优化并不一定意味着所得到的代码优化适合于每个用例,那么一个或多个目标函数可能被“强调”。例如,如果安全性是重要的感兴趣的目标函数,那么示例代码更新器102在沙箱环境中执行被优化的代码,并测量动态运行时度量(例如,存储器性能开销、模糊测试、和/或其他程序行为)。在使一个或多个阈值失效的代码崩溃实例和/或度量的情况下,示例代码更新器102可以拒绝被优化的代码,并利用指派给各个目标函数的一个或多个替代的权重值来重新优化。
虽然图2图示了实现图1和图2的代码更新器102的示例方式,但图1和图2所图示的元件、过程和/或设备中的一个或多个可以被组合、拆分、重新布置、省略、消除和/或以任何方式被实现。进一步地,示例代码检取器202、示例权重管理器204、示例状态选择器206、示例目标函数选择器208、示例动作选择器210、示例奖励计算器212、示例状态/动作确定器214、示例状态标识器216、示例动作标识器218,示例对验证器220、示例奖励映射器222、示例机器学习管理器224、示例质量函数定义器226、示例策略更新器228和/或更一般地图1和图2的示例代码更新器102可以通过硬件、软件、固件和/或硬件、软件和/或固件的任何组合来实现。因此,例如,示例代码检取器202、示例权重管理器204、示例状态选择器206、示例目标函数选择器208、示例动作选择器210、示例奖励计算器212、示例状态/动作确定器214、示例状态标识器216、示例动作标识器218、示例对验证器220、示例奖励映射器222、示例机器学习管理器224、示例质量函数定义器226、示例策略更新器228和/或更一般地图1和图2的示例代码更新器102中的任何一个可通过一个或多个(多个)模拟或数字电路、逻辑电路、(多个)可编程处理器、(多个)可编程控制器、(多个)图形处理单元(GPU)、(多个)数字信号处理器(DSP))、(多个)专用集成电路(ASIC)、(多个)可编程逻辑器件(PLD)和/或(多个)现场可编程逻辑器件(FPLD)来实现。当阅读本专利的装置权利要求或系统权利要求中的任一项以涵盖纯软件和/或固件实现时,示例代码检取器202、示例权重管理器204、示例状态选择器206、示例目标函数选择器208、示例动作选择器210、示例奖励计算器212、示例状态/动作确定器214、示例状态标识器216、示例动作标识器218、示例对验证器220、示例奖励映射器222、示例机器学习管理器224、示例质量函数定义器226、示例策略更新器228和/或更一般地图1和图2的示例代码更新器102中的至少一者由此被明确地限定为包括包含软件和/或固件的非暂态计算机可读存储设备或存储盘,诸如,存储器、数字多功能盘(DVD)、紧凑盘(CD)、蓝光盘,等等。更进一步地,图1和图2的示例代码更新器102可包括附加于或替代图1和/或图2中所图示的那些元件、过程和/或设备的一个或多个元件、过程和/或设备,和/或可包括所示出的元件、过程和设备中的任何元件、过程和设备或全部元件、过程和设备中的多于一个。如本文使用的,短语“通信”包括其各种变体,包含直接通信和/或通过一个或多个中间组件的间接通信,并且不需要直接物理(例如,有线)通信和/或持续通信,而是附加地包括以周期性间隔、预定间隔、非周期性间隔、和/或一次性事件来进行的选择性通信。
在图3-图6中示出了表示用于实现图1和图2的代码更新器102的示例硬件逻辑、机器可读指令、硬件实现的状态机和/或其任何组合的流程图。机器可读指令可以是由计算机处理器执行的一个或多个可执行程序或可执行程序的(多个)部分,计算机处理器诸如结合图7在下文中所讨论的示例处理器平台700中示出的处理器712。(多个)程序能具体化在存储于诸如CD-ROM、软盘、硬驱动器、DVD、蓝光盘或与处理器712关联的存储器之类的非暂态计算机可读存储介质上的软件中,但是整个(多个)程序和/或其部分可替代地由除处理器712之外的设备执行,和/或具体化在固件或专用硬件中。进一步,尽管参考图3-图6中所图示的流程图描述了示例程序,但是可以替代地使用实现示例代码更新器102的许多其他方法。例如,可改变框的执行次序,和/或可改变、消除或组合所描述的框中的一些框。附加地或替代地,任何或所有框可以由被构造成在不执行软件或固件的情况下执行对应的操作的一个或多个硬件电路(例如,分立的和/或集成的模拟和/或数字电路、FPGA、ASIC、比较器、运算放大器(op-amp)、逻辑电路等)来实现。
本文中描述的机器可读指令可以以压缩格式、加密格式、片段格式、编译格式、可执行格式、封装格式等中的一种或多种来存储。本文描述的机器可读指令可以作为可用于创建、制造和/或产生机器可执行指令的数据(例如,指令的部分、代码、代码表示等)来存储。例如,机器可读指令可以被分段并被存储在一个或多个存储设备和/或计算设备(例如,服务器)上。机器可读指令可能需要安装、修改、适配、更新、组合、补充、配置、解密、解压缩、拆包、分发、重新指派、编译等中的一项或多项,以使得它们由计算设备和/或其他机器直接可读取、可解释、和/或可执行。例如,机器可读指令可以存储在多个部分中,这些部分被单独压缩、加密并存储在单独的计算设备上,其中,这些部分在被解密、解压缩和组合时形成实现如本文所述的程序的一组可执行指令。
在另一示例中,机器可读指令可以以它们可被计算机读取的状态被存储,但是需要添加库(例如,动态链接库(DLL))、软件开发工具包(SDK)、应用编程接口(API)等,以便在特定的计算设备或其他设备上执行指令。在另一个示例中,在可整体或部分地执行机器可读指令和/或对应的(多个)程序之前,可能需要配置机器可读指令(例如,存储的设置、数据输入、记录的网络地址等)。因此,所公开的机器可读指令和/或对应的(多个)程序旨在包含此类机器可读指令和/或(多个)程序,而不管机器可读指令和/或(多个)程序在被存储时或以其他方式处于静态或在传输中时的特定格式或状态如何。
本文所描述的机器可读指令可以由任何过去、现在或将来的指令语言、脚本语言、编程语言等表示。例如,机器可读指令可以用以下中任何一种语言来表示:C、C++语言、Java、C#、Perl、Python、JavaScript、超文本标记语言(HTML)、结构化查询语言(SQL)、SWIFT等。
如上文所提及,可使用存储于非暂态计算机和/或机器可读介质上的可执行指令(例如,计算机和/或机器可读指令)来实现图3-图6的示例过程,非瞬态计算机和/或机器可读介质诸如,硬盘驱动器、闪存、只读存储器、紧凑盘、数字多功能盘、高速缓存、随机存取存储器和/或在其中存储信息达任何时长(例如,达扩展的时间段、永久地、达简短的实例、用于临时缓冲和/或用于对信息进行高速缓存)的任何其他存储设备或存储盘。如本文中所使用,术语非暂态计算机可读介质被明确地限定为包括任何类型的计算机可读存储设备和/或存储盘,并且排除传播信号并排除传输介质。
“包含”和“包括”(及其所有形式和时态)在本文中用作开放式术语。因此,每当权利要求将任何形式的“包含”或“包括”(例如,包括、包含、具有等)用作前言或用于任何种类的权利要求叙述内时,要理解的是,附加的要素、项等可以存在而不超出对应权利要求或叙述的范围。如本文所使用的,当短语“至少”被用作例如与权利要求同步使用的过渡术语时是和术语“包含”和“包括”一样的开放式的。当例如以诸如A、B和/或C之类的形式使用术语“和/或”时,指的是A、B、C的任何组合或子集,诸如(1)单独的A、(2)单独的B、(3)单独的C、(4)A与B、(5)A与C、(6)B与C、以及(7)A与B与C。如本文在描述结构、组件、项目、对象和/或事物的上下文中所使用的,短语"A和B中的至少一个"旨在表示包括(1)至少一个A(2)至少一个B和(3)至少一个A和至少一个B中的任何一个的实现。类似地,如本文在描述结构、组件、项目、对象和/或事物的上下文中所使用的,短语“A或B中的至少一个”旨在表示包括(1)至少一个A(2)至少一个B和(3)至少一个A和至少一个B中的任何一个的实现。如本文在描述过程、指令、动作、活动和/或步骤的处理或执行的上下文中所使用的,短语“A和B中的至少一个”旨在表示包括(1)至少一个A(2)至少一个B和(3)至少一个A和至少一个B中的任何一个的实现。类似地,如本文在描述过程、指令、动作、活动和/或步骤的处理或执行的上下文中所使用的,短语“A或B中的至少一个”旨在表示包括(1)至少一个A、(2)至少一个B和(3)至少一个A和至少一个B中的任何一个的实现。
如本文所用,单数引用(例如,“一个(a)”、“一个(an)”、“第一”、“第二”等)不排除复数。本文所使用的术语“一个(a,an)”实体是指该实体中的一个或多个。术语“一个(a)”(或“一个(an)”)、“一个或多个”和“至少一个”可以在本文中互换使用。此外,尽管单独列出,但多个装置、元件或方法动作可由例如单个单元或处理器来实现。另外,虽然各个特征可以被包括在不同的示例或权利要求中,但是这些特征可能被组合,并且在不同的示例或权利要求中的包含并不意味着特征的组合是不可行和/或有利的。
图3##的程序300包括示例代码检取器202在其中检取候选代码的框302以及标识与候选代码相关联的对应的用户(框304)。如果示例代码检取器202没有标识与候选代码相关联的对应用户(框306),则示例权重管理器204设置一个或多个目标函数的默认值,或提示用户提供权重值(框310)。在一些示例中,权重管理器204基于任务类型(诸如与敏感隐私考虑相关的代码任务/目标)为目标函数指派对应的权重。如果示例代码检取器202标识与候选代码相关联的对应的用户(框306),则示例权重管理器204检取用于对应的感兴趣的目标权重的目标权重值(框308),诸如存储在示例代码数据库108、用户界面110的本地存储器,或与示例服务器104相关联的存储器中的权重。
示例状态/动作确定器214确定(标识)与候选代码相关联的一个或多个代码状态,以及标识与每个所标识的状态相关联的对应的动作(框312),如上文和下文结合图4进一步详细描述。示例权重管理器204确定与(a)状态、(b)对应的动作和(c)目标函数的不同组合及其相关权重的组合相关联的加权奖励函数值(框314)。基于此类组合的所总计的奖励分数,示例奖励映射器222以概率方式将状态和动作对映射到奖励,使得这些状态/动作对可用于选择对候选代码进行哪些代码修改(框316)。示例代码更新器102将经更新的代码释放给代码开发者(框318),使得经更新的代码可以在对应的代码开发项目中被实现。示例代码检取器202确定是否需要反馈循环(框320),如果不需要,则控制返回到框302以检取结合两个或更多个目标函数针对优化要被分析的新的/替代地候选代码。另一方面,在要发生反馈的事件中(框320),则示例权重管理器204鉴于检取到的和/或以其他方式接收到的反馈信息更新与目标函数相关联的一个或多个权重值(框322)。例如,代码开发者可能确定与安全性相关联的权重值过高并且不利地影响代码性能。由此,可以调整一个或多个权重值以考虑对特定目标函数的相对强调。
图4图示了与确定框312的候选代码的代码状态和动作相关联的附加细节。在图4所图示的示例中,示例状态标识器216来自候选代码的代码状态中的一者(框402)。如上文所述,代码状态是指候选代码中的函数,诸如函数调用。示例动作标识器218标识与所选择的状态相关联的一个或多个候选动作(框404)。如上文所述,每个代码状态可以具有任意数量的相关联的动作,当所述相关联的动作被选择和/或以其他方式被利用时(例如,由函数调用的特定跳转指令)时,所述相关联的动作使得从当前状态到下一状态的改变。
然而,虽然特定动作可能是状态的有效输入(例如,由函数调用的特定参数),但并非所有状态和动作对都是针对当前状态的适当选择。例如,考虑当前状态(例如,候选代码的当前函数)与CPU卸载请求相关联的事件,在该事件中,动作可以包括卸载到GPU的请求、卸载到FPGA的请求或卸载到不同处理器核的请求。还考虑到,感兴趣的当前的平台只能访问GPU资源,而不能访问FPGA资源或替代的处理器核。由此,唯一有效的状态/动作对对应于卸载到GPU的动作。示例对验证器220标识此类有效的状态和动作对组合(框406)。在一些示例中,对验证器220针对类似的状态搜索示例代码语料库数据库112。由于代码语料库数据库112包含任何数量的先前所标识的和/或以其他方式“审查”的函数,因此它是尝试针对给定状态的替代动作的机会的来源。例如,虽然代码开发者可能没有考虑针对给定状态的附加候选动作,但是示例对验证器220可以标识一个或多个要尝试的替代的候选动作,诸如卸载到虚拟机(VM)的动作。在确定特定状态/动作组合及其进一步序列的对应的奖励值时,稍后考虑此类附加的机会。示例状态标识器216确定是否有附加的感兴趣的状态要评估(框408),如果有,则控制返回到框402。
图5图示了与确定图3的框314的加权奖励函数值相对应的附加细节。在图5所图示的示例中,示例状态选择器206选择先前所标识的状态中的一个状态(框502),以及示例目标函数选择器208选择感兴趣的目标函数中的一个目标函数(框504)。由于每个目标函数具有对应的权重,其中每个目标函数将对整体奖励函数展现特定的加权影响,示例目标函数选择器208生成与所选择的目标函数相对应的子代理(框506)。特别地,图5的示例程序314将对任意数量的感兴趣的状态“s”、对应的感兴趣的目标函数以及与各个感兴趣的状态相关联的对应的动作执行迭代。虽然对于每个加权目标函数都将产生奖励函数值,但在完成任意数量的迭代时,将针对状态/动作组合确定整体(总计)奖励函数,以考虑优化策略。
示例动作选择器210选择针对所选择的状态“s”可发生的候选动作“a”中的一个候选动作(框508),并且示例奖励计算器212鉴于所选择的目标函数计算奖励(框510)。示例性权重管理器204将权重因子应用于计算出的奖励(框512),并且示例动作选择器210确定是否存在鉴于所选择的状态“s”用于评估的附加动作“a”(框514)。如果是,则控件返回到框508以执行至少一个附加的迭代。如果否,则示例目标函数选择器208确定是否存在结合候选状态和动作要被评估的附加目标函数(框516)。如果是,则控件返回到框508以执行至少一个附加的迭代。然而,在鉴于候选状态/动作对已经考虑了所有感兴趣的目标函数以计算奖励度量(框516),则示例奖励计算器212计算状态/动作组合的整体奖励函数(框518))。考虑到候选代码可以具有任意数量的要被评估的状态,示例状态选择器206确定一个或多个尚未被评估的状态(框520)。如果存在附加的状态要评估,则控制返回到框502。
图6图示了与将状态/动作对映射到图3的框316的奖励的附加的细节。在图6所图示的示例中,示例机器学习管理器224对神经网络进行初始化(框602),这在确定特定模型和/或函数的收敛性时是有帮助的。示例质量函数定义器226定义动作质量函数(框604),诸如等式4的示例所图示。示例策略更新器228更新策略(π)(框606),该策略最初在第一次迭代期间可以包含随机值,但将借助于示例神经网络来收敛。示例质量函数定义器226(诸如通过示例等式6和等式7中所示的Bellman技术)确定当前迭代的最优值函数(框608)。示例奖励映射器222确定是否已经发生收敛(框610),并且如果没有,则控制返回到框606以利用神经网络来推进收敛尝试。否则,示例策略更新器228释放所总计的策略(π),以允许示例代码更新器102利用特定的状态/动作对及其序列更新候选代码,这些特定的状态/动作对及其序列总的来说是以与期望权重一致的方式最大化目标函数(框612)。
图7是被构造用于执行图3-图6中的指令以实现图1和图2中的示例代码更新器102的示例处理器平台700的框图。处理器平台700可以是例如服务器、个人计算机、工作站、自学习机(例如,神经网络)、移动设备(例如,蜂窝电话、智能电话、诸如iPadTM之类的平板设备)、个人数字助理(PDA)、互联网设备、游戏控制台、可穿戴设备或任何其他类型的计算设备。
所图示示例的处理器平台700包括处理器712。所图示示例的处理器712是硬件。例如,处理器712可以由来自任何所需要的系列或制造商的一个或多个集成电路、逻辑电路、微处理器、GPU、DSP或控制器实现。硬件处理器可以是基于半导体的(例如,硅基)器件。在该示例中,处理器实现示例代码更新器102以及其中的结构。
所图示示例的处理器712包括本地存储器713(例如,高速缓存)。所图示示例的处理器712经由总线714与包括易失性存储器716和非易失性存储器718的主存储器进行通信。易失性存储器714可由同步动态随机存取存储器(SDRAM)、动态随机存取存储器(DRAM)、
Figure BDA0002419421320000201
动态随机存取存储器
Figure BDA0002419421320000202
和/或任何其他类型的随机存取存储器设备实现。非易失性存储器716可由闪存和/或任何其他所期望类型的存储器设备实现。由存储器控制器控制对主存储器714、主存储器716的访问。
所图示示例的处理器平台700还包括接口电路720。接口电路720可由任何类型的接口标准实现,诸如以太网接口、通用串行总线(USB)、
Figure BDA0002419421320000203
Figure BDA0002419421320000204
接口、近场通信(NFC)接口和/或PCI快速接口。
在所图示示例中,一个或多个输入设备722被连接至接口电路720。(多个)输入设备722准许用户将数据和/或命令输入至处理器712中。(多个)输入设备可以由例如音频传感器、麦克风、相机(静止的或视频)、键盘、按钮、鼠标、触摸屏、轨迹板、轨迹球、等点鼠标和/或语音识别系统实现。
一个或多个输出设备724也被连接至所图示示例的接口电路720。输出设备724可例如由显示设备(例如,发光二极管(LED)、有机发光二极管(OLED)、液晶显示器(LCD)、阴极射线管显示器(CRT)、面内切换(IPS)显示器、触摸屏等)、触觉输出设备、打印机和/或扬声器实现。因此,所图示示例的接口电路720典型地包括图形驱动器卡、图形驱动器芯片和/或图形驱动器处理器。
所示出的示例的接口电路720还包括诸如发射机、接收机、收发机、调制解调器、住宅网关、无线接入点、和/或网络接口之类的通信设备,以促进经由网络726与外部机器(例如,任何种类的计算设备)交换数据。通信可经由例如以太网连接、数字订户线路(DSL)连接、电话线连接、同轴电缆系统、卫星系统、直线对传式无线系统、蜂窝电话系统等。
所图示示例的处理器平台700还包括用于存储软件和/或数据的一个或多个大容量存储设备728。此类大容量存储设备728的示例包括软盘驱动器、硬驱动器盘、光盘驱动器、蓝光盘驱动器、独立磁盘冗余阵列(RAID)系统和数字多功能盘(DVD)驱动器。
图3-6的机器可执行指令732可以被存储在大容量存储设备728中,存储在易失性存储器714中,存储在非易失性存储器716中,和/或存储在诸如CD或DVD的可移除非暂态计算机可读存储介质上。
从前述内容将理解,已公开了示例方法、装置和制品,这些示例方法、装置和制品,其在确定对由代码开发者提供的候选代码进行优化改变时考虑了两个或更多个感兴趣的特性(例如,目标函数)。而不是依赖于代码开发者的自由裁量权或代码开发者试图标识状态和动作的特定组合,该特定组合最大化特定的目标函数,本文所公开的示例标识状态和动作的有效的候选组合,并基于多个加权的目标函数值来确定各个奖励分数。另外,本文所公开的示例对具有特定状态/动作组合的总计奖励值进行格式化,以用于应用神经网络来促进质量函数的收敛。由此,通过本文所公开的示例来标识此类状态/动作对的特定状态/动作对和序列,以优化例如由代码开发者提供的候选代码。此类被优化的代码以与其他目标函数总计的方式来改善候选代码的各个目标函数(特性),不同于在封闭状态中处理来自一个或多个替代的特性修改的特定特性修改的传统的优化技术。
本文公开了用于改善代码特性的示例方法、装置、系统和制品。进一步的示例和其组合包括以下内容:
示例1包括用于修改候选代码的装置,该装置包括权重管理器,该权重管理器用于将第一权重值应用于第一目标函数;状态标识器,该状态标识器用于标识与候选代码相对应的第一状态;动作标识器,该动作标识器用于标识与所标识的第一状态相对应的候选动作;奖励计算器,该奖励计算器用于确定与以下各项相对应的奖励值:(a)所标识的第一状态,(b)候选动作中的一个候选动作和(c)第一权重值;以及质量函数定义器,该质量函数定义器用于基于奖励值中的各个奖励值来确定相对最高状态和动作对奖励值。
示例2包括如示例1中所限定的装置,进一步包括机器学习引擎,该机器学习引擎用于通过将奖励值中的各个奖励值应用于神经网络来估计质量函数。
示例3包括如示例2中所限定的装置,其中,质量函数定义器用于将质量函数定义为Bellman估计。
示例4包括如示例1中所限定的装置,进一步包括选择第二目标函数的目标函数选择器,并调用权重管理器以将第二权重值应用于第二目标函数。
示例5包括如示例4中所限定的装置,其中,奖励计算器用于基于第一目标函数和第二目标函数来计算奖励值的总计奖励。
示例6包括如示例1中所限定的装置,其中,状态标识器用于迭代地标识与候选代码相对应的附加状态,该动作标识器用于标识与各个附加状态相对应的附加候选动作。
示例7包括如示例1中所限定的装置,其中,权重管理器用于基于与候选代码相关联的代码开发者的行为观察来确定第一目标函数的第一权重值和第二目标函数的第二权重值。
示例8包括一种非暂态计算机可读存储介质,包括计算机可读指令,指令在被执行时使至少一个处理器至少用于:将第一权重值应用于第一目标函数,标识与候选代码相对应的第一状态;标识与所标识的第一状态相对应的候选动作;确定与以下各项相对应的奖励值:(a)所标识的第一状态,(b)候选动作中的一个候选动作和(c)第一权重值;并且基于奖励值中的各个的奖励值来确定相对最高的状态和动作对奖励值。
示例9包括如示例8中所限定的非暂态计算机可读存储介质,其中,指令在被执行时使至少一个处理器用于通过将奖励值中的各个奖励值应用于神经网络来估计质量函数。
示例10包括如示例9中所限定的非暂态计算机可读存储介质,其中,指令在被执行时使至少一个处理器用于将质量函数定义为Bellman估计。
示例11包括如示例8中所限定的非暂态计算机可读存储介质,其中,指令在被执行时使至少一个处理器用于选择第二目标函数,并调用权重管理器以将第二权重值应用于第二目标函数。
示例12包括如示例11中所限定的非暂态计算机可读存储介质,其中,指令在被执行时使至少一个处理器用于基于第一目标函数和第二目标函数来计算奖励值的总计奖励。
示例13包括如示例12中所限定的非暂态计算机可读存储介质,其中,指令在被执行时使至少一个处理器用于迭代地标识与候选代码相对应的附加状态,动作标识器用于标识与各个附加的状态相对应的附加候选动作。
示例14包括如示例8中所限定的非暂态计算机可读存储介质,其中,指令在被执行时使至少一个处理器用于基于与候选代码相关联的代码开发者的行为观察来确定第一目标函数的第一权重值和第二目标函数的第二权重值。
示例15包括一种用于修改候选代码的计算机实现的方法,该方法包括通过利用至少一个处理器执行指令来将第一权重值应用于第一目标函数,通过利用至少一个处理器执行指令来标识与候选代码相对应的第一状态,通过利用至少一个处理器执行指令来标识与所标识的第一状态相对应的候选动作,通过利用至少一个处理器执行指令来确定与以下各项相对应的奖励值:(a)所标识的第一状态,(b)候选动作中的一个候选动作和(c)第一权重值;以及通过利用至少一个处理器执行指令来基于奖励值中的各个奖励值来确定相对最高状态和动作对奖励值。
示例16包括如示例15中所限定的方法,进一步包括通过将奖励值中的各个奖励值应用于神经网络来估计质量函数。
示例17包括如示例16中所限定的方法,进一步包括将质量函数定义为Bellman估计。
示例18包括如示例15中所限定的方法,进一步包括选择第二目标函数,并调用权重管理器以将第二权重值应用于第二目标函数。
示例19包括示例18中所限定的方法,进一步包括基于第一目标函数和第二目标函数来计算奖励值的总计奖励。
示例20包括如示例15中所限定的方法,进一步包括迭代地标识与候选代码相对应的附加状态,动作标识器用于标识与各个附加状态相对应的附加候选动作。
示例21包括如示例15中所限定的方法,进一步包括基于与候选代码相关联的代码开发者的行为观察来确定第一目标函数的第一权重值和第二目标函数的第二权重值。
尽管本文中已公开了某些示例方法、装置和制品,但本专利涵盖的范围并不限于此。相反,本专利涵盖落入本专利权利要求范围内的全部方法、装置和制品。
所附的权利要求由此通过本参考被并入到具体实施方式中,其中每一项权利要求其本身作为本公开的单独的实施例。

Claims (21)

1.一种用于修改候选代码的装置,所述装置包括:
权重管理器,所述权重管理器用于将第一权重值应用于第一目标函数;
状态标识器,所述状态标识器用于标识与所述候选状态相对应的第一状态;
动作标识器,所述动作标识器用于标识与所述所标识的第一状态相对应的候选动作;
奖励计算器,所述奖励计算器用于确定与以下各项相对应的奖励值:(a)所述所标识的第一状态,(b)所述候选动作中的一个候选动作和(c)所述第一权重值;以及
质量函数定义器,所述质量函数定义器用于基于所述奖励值中的各个奖励值来确定相对最高状态和动作对奖励值。
2.如权利要求1所述的装置,进一步包括机器学习引擎,所述机器学习引擎用于通过将所述奖励值中的所述各个奖励值应用于神经网络来估计质量函数。
3.如权利要求2所述的装置,其特征在于,所述质量函数定义器用于将所述质量函数定义为Bellman估计。
4.如权利要求1所述的装置,进一步包括目标函数选择器,所述目标函数选择器用于:
选择第二目标函数;以及
调用所述权重管理器以将第二权重值应用于所述第二目标函数。
5.如权利要求4所述的装置,其特征在于,所述奖励计算器用于基于所述第一目标函数和所述第二目标函数来计算所述奖励值的总计奖励。
6.如权利要求1所述的装置,其特征在于,所述状态标识器用于迭代地标识与所述候选代码相对应的附加状态,所述动作标识器用于标识与所述各个附加状态相对应的附加候选动作。
7.如权利要求1所述的装置,其特征在于,所述权重管理器用于基于与所述候选代码相关联的代码开发者的行为观察来确定所述第一目标函数的所述第一权重值和第二目标函数的第二权重值。
8.一种非暂态计算机可读存储介质,包括计算机可读指令,当所述指令被执行时使至少一个处理器至少用于:
将第一权重值应用于第一目标函数;
标识与候选代码相对应的第一状态;
标识与所述所标识的第一状态相对应的候选动作;
确定与以下各项相对应的奖励值:(a)所述所标识的第一状态,(b)所述候选动作中的一个候选动作和(c)所述第一权重值;并且
基于所述奖励值中的各个的奖励值来确定相对最高的状态和动作对奖励值。
9.如权利要求8所述的非暂态计算机可读存储介质,其特征在于,所述指令在被执行时使所述至少一个处理器用于通过将所述奖励值中的所述各个奖励值应用于神经网络来估计质量函数。
10.如权利要求9所述的非暂态计算机可读存储介质,其特征在于,所述指令在被执行时使所述至少一个处理器用于将所述质量函数定义为Bellman估计。
11.如权利要求8所述的非暂态计算机可读存储介质,其特征在于,所述指令在被执行时使所述至少一个处理器用于:
选择第二目标函数;以及
调用所述权重管理器以将第二权重值应用于所述第二目标函数。
12.如权利要求11所述的非暂态计算机可读存储介质,其特征在于,所述指令在被执行时使所述至少一个处理器用于基于所述第一目标函数和所述第二目标函数来计算所述奖励值的总计奖励。
13.如权利要求8所述的非暂态计算机可读存储介质,其特征在于,所述指令在被执行时使所述至少一个处理器用于迭代地标识与所述候选代码相对应的附加状态,所述动作标识器用于标识与所述各个附加的状态相对应的附加候选动作。
14.如权利要求8所述的非暂态计算机可读存储介质,其特征在于,所述指令在被执行时使所述至少一个处理器用于基于与所述候选代码相关联的代码开发者的行为观察来确定所述第一目标函数的所述第一权重值和第二目标函数的第二权重值。
15.一种用于修改候选代码的计算机实现的方法,所述方法包括:
通过利用至少一个处理器执行指令来将第一权重值应用于第一目标函数;
通过利用所述至少一个处理器执行指令来标识与候选代码相对应的第一状态;
通过利用所述至少一个处理器执行指令来标识与所述所标识的第一状态相对应的候选动作;
通过利用所述至少一个处理器执行指令来确定与以下各项相对应的奖励值:(a)所述所标识的第一状态,(b)所述候选动作中的一个候选动作和(c)所述第一权重值;以及
通过利用所述至少一个处理器执行指令来基于所述奖励值中的各个奖励值来确定相对最高状态和动作对奖励值。
16.如权利要求15所述的方法,进一步包括通过将所述奖励值中的所述各个奖励值应用于神经网络来估计质量函数。
17.如权利要求16所述的方法,进一步包括将所述质量函数定义为Bellman估计。
18.如权利要求15所述的方法,其特征在于,进一步包括:
选择第二目标函数;以及
调用所述权重管理器以将第二权重值应用于所述第二目标函数。
19.如权利要求18所述的方法,进一步包括基于所述第一目标函数和所述第二目标函数来计算所述奖励值的总计奖励。
20.如权利要求15所述的方法,进一步包括迭代地标识与所述候选代码相对应的附加状态,所述动作标识器用于标识与所述各个附加状态相对应的附加候选动作。
21.如权利要求15所述的方法,进一步包括基于与所述候选代码相关联的代码开发者的行为观察来确定所述第一目标函数的所述第一权重值和第二目标函数的第二权重值。
CN202010201134.5A 2019-06-28 2020-03-20 用于改善代码特性的方法、系统、制品和装置 Pending CN112148274A (zh)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US16/456,984 2019-06-28
US16/456,984 US20190317734A1 (en) 2019-06-28 2019-06-28 Methods, systems, articles of manufacture and apparatus to improve code characteristics

Publications (1)

Publication Number Publication Date
CN112148274A true CN112148274A (zh) 2020-12-29

Family

ID=68161608

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202010201134.5A Pending CN112148274A (zh) 2019-06-28 2020-03-20 用于改善代码特性的方法、系统、制品和装置

Country Status (3)

Country Link
US (1) US20190317734A1 (zh)
CN (1) CN112148274A (zh)
DE (1) DE102020110805A1 (zh)

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11860769B1 (en) * 2019-12-04 2024-01-02 Amazon Technologies, Inc. Automatic test maintenance leveraging machine learning algorithms
US10817264B1 (en) * 2019-12-09 2020-10-27 Capital One Services, Llc User interface for a source code editor

Also Published As

Publication number Publication date
DE102020110805A1 (de) 2020-12-31
US20190317734A1 (en) 2019-10-17

Similar Documents

Publication Publication Date Title
US11816561B2 (en) Methods, systems, articles of manufacture and apparatus to map workloads
US10867242B2 (en) Selecting actions to be performed by a reinforcement learning agent using tree search
US11113585B1 (en) Artificially intelligent systems, devices, and methods for learning and/or using visual surrounding for autonomous object operation
US11861474B2 (en) Dynamic placement of computation sub-graphs
US20180032863A1 (en) Training a policy neural network and a value neural network
CN110520871A (zh) 训练机器学习模型
US10339919B1 (en) Task-independent conversational systems
KR20220066163A (ko) 머신 러닝 기술의 예측 정확도 향상을 위한 최적의 가중치 식별
US11797839B2 (en) Training neural networks using priority queues
US11907821B2 (en) Population-based training of machine learning models
US11741371B2 (en) Automatically generating diverse text
CN111598253A (zh) 使用教师退火来训练机器学习模型
JP7059458B2 (ja) 生成的敵対神経網ベースの分類システム及び方法
CN109155005A (zh) 使用伪计数的增强学习
CN112148274A (zh) 用于改善代码特性的方法、系统、制品和装置
CN112149117A (zh) 用于分析计算机系统攻击机制的方法和装置
US20200302270A1 (en) Budgeted neural network architecture search system and method
US20210383243A1 (en) Stable and efficient training of adversarial models by an iterated update operation of second order or higher
JP7466702B2 (ja) プロトタイプオプションの発見による解釈可能な模倣学習
US20220008826A1 (en) Strand Simulation in Multiple Levels
US11876681B2 (en) Topology recommendation platform for application architecture
US20230214453A1 (en) Training an environment generator of a generative adversarial network (gan) to generate realistic environments that incorporate reinforcement learning (rl) algorithm feedback
US20230050247A1 (en) Latency prediction method and computing device for the same
US20210125086A1 (en) Multimodal knowledge consumption adaptation through hybrid knowledge representation
KR20220039136A (ko) GAN을 이용한 웨이브 폼(waveform) 생성 학습 장치, GAN을 이용한 웨이브 폼(waveform) 생성 학습 방법, GAN을 이용한 웨이브 폼(waveform) 생성 장치 및 GAN을 이용한 웨이브 폼(waveform) 생성 방법

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