CN112771554A - 编程中的预测变量 - Google Patents

编程中的预测变量 Download PDF

Info

Publication number
CN112771554A
CN112771554A CN201880098131.4A CN201880098131A CN112771554A CN 112771554 A CN112771554 A CN 112771554A CN 201880098131 A CN201880098131 A CN 201880098131A CN 112771554 A CN112771554 A CN 112771554A
Authority
CN
China
Prior art keywords
computer
machine learning
learning system
variables
implemented method
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
CN201880098131.4A
Other languages
English (en)
Inventor
J.亚格尼克
A.达林
T.科佩
T.德塞拉尔斯
V.卡尔布恩
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.)
Google LLC
Original Assignee
Google LLC
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 Google LLC filed Critical Google LLC
Publication of CN112771554A publication Critical patent/CN112771554A/zh
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N5/00Computing arrangements using knowledge-based models
    • G06N5/04Inference or reasoning models
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N20/00Machine learning
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N5/00Computing arrangements using knowledge-based models
    • G06N5/01Dynamic search techniques; Heuristics; Dynamic trees; Branch-and-bound

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • Data Mining & Analysis (AREA)
  • Evolutionary Computation (AREA)
  • Physics & Mathematics (AREA)
  • Computing Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Mathematical Physics (AREA)
  • Artificial Intelligence (AREA)
  • Medical Informatics (AREA)
  • Computer Vision & Pattern Recognition (AREA)
  • Computational Linguistics (AREA)
  • Management, Administration, Business Operations System, And Electronic Commerce (AREA)

Abstract

本公开针对一种能够将符号编程与机器学习相结合的新框架,其中程序员保持对功能映射的整体架构的控制以及注入领域知识的能力,同时允许他们的程序通过从示例中学习来进化。在一些实例中,本文提供的框架可以被称为“预测编程”。

Description

编程中的预测变量
技术领域
本公开一般涉及机器学习和计算机编程的交叉。更具体地,本公开涉及使用机器学习系统来预测在计算机程序中定义的变量。
背景技术
在过去的十年里,机器学习作为一个领域经历了飞速的发展,无论是在技术和系统方面,还是在依赖于它们的应用的不断增长方面。它涉及到大量的领域和每个领域中一些最关键的系统。它工作的基本前提是从真实世界范例(example)中学习,或者通过在真实世界中做出决策并观看其结果来学习。虽然这些系统可以被制作来很好地工作,但是除了构建实际的机器学习系统之外,它们还需要大量复杂的工作,以便使其结果可作为正在构建的更大产品/系统的一部分进行消费。
具体地,现代机器学习在一种模型中操作,在该模型中,现代机器学习从范例中学习,从非线性优化中推导其技术,并隐式地执行数值推理。随着该领域的影响范围不断增大,它最终与基于以符号逻辑(例如,编程语言)编码的显式(例如,确定性的/预定义的)操作/变换的构建计算机系统的传统方法相冲突。这种冲突具有根本性的含义:虽然机器学习系统可以学习映射输入/输出行为的非常复杂的函数,但是在理解这些函数是什么以及如何调整它们以实现领域知识/环境约束所需的特定行为方面没有太大进展。
另一方面,符号逻辑提供完全控制和可理解性,但是将构建函数的责任完全放在程序员身上导致系统被构建在试探法(heuristics)的层上。具体地,通过当今最先进的实践,大型计算机/计算系统用符号逻辑来构建,这些符号逻辑通常对应于引导数据流并通过它们进行控制的预先指定的手写指令集。这使得程序员能够精确地控制计算机制及其结果。这些系统也是可理解的,因为操作是用显式符号表示的。完全控制方面允许系统开发者显式地表达领域约束和环境限制。然而,相同的控制成为一个缺点,因为不可能在有限的手写指令集中优化所有的情况。
因此,机器学习领域和传统的基于符号逻辑的计算机编程领域呈现出方法的二分,每种方法都有各自的局限性和优势。针对这种二分(dichotomy)提出的一个解决方案是构建生成可以稍后被程序员编辑的代码的机器学习系统。然而,这给机器学习系统带来了太多的负担,因为它们需要在它们能够甚至开始产生任何有用的东西之前学习编程和代码结构的基本语义,并且机器代码的人类可读性问题也暴露出来。
发明内容
本公开的实施例的方面和优点将在以下描述中部分阐述,或者可以从描述中获知,或者可以通过实施例的实践获知。
本公开的一个示例方面针对计算机实施的方法。该方法包括由一个或多个计算设备获得包括计算机可执行指令集的计算机程序。计算机程序定义用作用于存储数据的占位符的变量。该方法包括由一个或多个计算设备向机器学习系统提供观察数据。该方法包括由一个或多个计算设备接收由机器学习系统至少部分基于观察数据产生的变量的预测值。该方法包括由一个或多个计算设备将变量设置为等于预测值。该方法包括,在由一个或多个计算设备将变量设置为等于预测值之后,由一个或多个计算设备执行计算机程序。执行该计算机程序包括实施计算机可执行指令集中的至少一个指令,该至少一个指令至少部分基于该变量来控制一个或多个计算设备的操作。
这样,本文描述的各种示例将机器学习技术应用于计算机实施(即,在计算机上实施)的技术目的。本文描述的各种示例使得能够实现关键应用中的安全部署,这使得能够实现存在更少错误(例如,内存泄漏和/或其他运行时间错误)的部署。本公开的其他方面针对各种系统、装置、非暂时性计算机可读介质、用户界面和电子设备。
参考以下描述和所附权利要求,本公开的各种实施例的这些和其他特征、方面和优点将变得更好理解。并入本说明书并构成其一部分的附图示出了本公开的示例实施例,并与描述一起用于解释相关原理。
附图说明
参考附图,在说明书中阐述了针对本领域普通技术人员的对实施例的详细讨论,在附图中:
图1描绘了根据本公开的示例实施例的示例计算架构的框图。
图2描绘了二分搜索(binary search)的不同示例变体的成本、与普通二分搜索(vanilla binary search)相比的累积遗憾(regret)以及初始函数使用的曲线图。
图3A和图3B描绘了在快速排序(Quicksort)中使用示例预测变量(predictedvariable)来选择轴心(pivot)数量的结果的曲线图。
图4描绘了在5000个事件期(episode)之后在快速排序中通过示例预测变量选择的轴心的分数(fraction)的图形图。
图5描绘了用于具有键(key)嵌入网络的TD3的示例神经网络的架构的框图。
图6A-图6D描绘了幂律访问模式(power law access pattern)的示例高速缓存(cache)性能的曲线图。
图7A描绘了根据本公开的示例实施例的示例计算系统的框图。
图7B描绘了根据本公开的示例实施例的示例计算设备的框图。
图7C描绘了根据本公开的示例实施例的示例计算设备的框图。
跨多个附图重复的附图标记旨在标识各种实施方式中的相同特征。
具体实施方式
概述
一般地,本公开针对一种能够将符号编程与机器学习相结合的新框架,其中程序员保持对功能映射的整体架构的控制以及注入领域知识的能力,同时允许他们的程序通过从示例中学习来进化。在一些实例中,本文提供的框架可以被称为“预测编程”。
具体地,本公开提供了一种将符号计算和数值计算混合的框架。具体来说,这可以表示为定义程序中的“预测的”变量的能力。预测变量类似于带有一些重要区别的本地变量,诸如,例如一些预测变量的值可以在被评估(evaluated)时使用机器学习来确定。
这些变量可以绑定到由程序员显式提供或由底层机器学习系统/引擎隐式确定的特定上下文。这允许程序员仍然支配程序的整体流程并保持控制,同时将做决策的特定方面外包(out-sourcing)给预测变量,并驾驭从大量数据集或真实世界用户流量中学习的能力。其还允许将提供这些预测能力的底层机器学习系统作为整个系统的一部分来观察其决策的效果,这正是它将在该领域中被使用的方式,从而最小化所谓的在线-离线偏差。
预测变量包括到机器学习的新接口,该新接口旨在使机器学习像“if”语句一样简单。预测变量提供了一种接口,该接口允许将机器学习应用于传统上没有使用机器学习的领域中,从而使得例如机器学习能够帮助提高依赖于试探法的“传统”算法的性能。可以使用最小预测变量接口来使用预测变量来替换和增强传统算法中的现有试探法(诸如高速缓存中的LRU试探法)。
具体地,与将机器学习应用于算法问题的先前工作相反,预测变量具有可以在现有框架内使用并且不需要将被替换的现有领域知识的优势。因此,开发者可以像使用任何其他变量一样使用预测变量,将预测变量与试探法、领域特定知识、问题约束等以完全在开发者的控制之下的方式相结合。与机器学习系统通常是如何构建的相比,这代表了控制的反转:预测变量允许机器学习紧密集成到算法中,而传统的机器学习系统是围绕模型构建的。
在一些实施方式中,内部预测变量可以基于标准强化学习方法。例如,标准化的API调用可以用于提供观察数据(例如,当前状态的描述)到机器学习系统,然后机器学习系统可以基于当前状态实施当前策略来执行动作(例如,对预测变量的值进行预测)。此外,标准化的API调用可以用于基于动作的结果提供奖励,机器学习系统可以使用该奖励来优化或以其它方式更新当前策略。因此,强化学习方案可以用于优化对预测变量进行预测的策略。
在一些实施方式中,为了学习得更快,预测变量可以使用它们正在替换的试探法函数作为初始策略或初始函数。因此,预测变量可以替换现有的试探法,并且现有的试探法可以用作预测变量的初始函数。这允许预测变量在关键应用中最小化遗憾,并允许安全部署。事实上,本文进一步包括的实验结果表明,预测变量快速选取初始策略的行为,然后提高性能,除此之外不会显著降低性能——允许在关键应用中的安全实时部署。因此,使用初始函数可以有助于使机器学习更稳定和/或更健壮,和/或可以使得系统提供性能几乎不比试探法差的保证。
这里描述的概念可以在几乎所有的编程语言中实施,并且在大多数情况下可以在不需要对语言本身进行任何工作的情况下完成(尽管将本文描述的概念合并到语言本身中可以使学习系统更加强大)。例如,这可以采取提供预测层的附加(add-on)库的形式。为了说明特定示例,使用了一种看起来更像伪代码的简化编程语言,以便将焦点放在主要概念上。
虽然接下来的几个章节在假设预测变量是确定性的的情况下描述了预测变量,但随机变量将在后续章节中覆盖。
因此,本公开提供了预测变量,一种使机器学习成为编程语言中的头等公民、使得机器学习在编程中像“if”语句一样简单的方案。在接下来的章节中,通过用预测变量来丰富和替换常用的试探法,在三个算法问题上展示了该方案的可行性:二分搜索(Binarysearch)、快速排序(Quicksort)和高速缓存(Caches)。实验结果表明,预测变量能够比常用的试探法有所改进,并导致比传统算法更好的性能。
利用预测变量的软件开发的介绍
预测变量旨在通过避免经历完整的机器学习开发工作流程的开销,使在软件开发中使用机器学习变得更容易,该机器学习开发工作流程包括(1)收集和准备训练数据,(2)定义训练损失,(3)训练初始模型,(4)调整和优化模型,(5)将模型集成到他们的产品中,以及(6)不断更新和改进模型,以适应所处理数据的分布的漂移。预测变量可以提供简单的API,允许开发者从中读取、为其提供关于其上下文的足够信息、以及提供关于其决策结果的反馈。
在一些实施方式中,为了创建预测变量,开发者可以选择其输出数据类型(例如,浮点(float)、整型(int)、类(category)...)、形状和期望的输出范围,定义预测变量能够观察哪个观察,并可选地传递进初始策略。在下面的示例中,浮点预测变量被实例化为在0到1之间的标量值上取值,它可以观察三个标量浮点,并且使用简单的(常量)初始策略:
Figure BDA0002994494140000051
一个思路是,预测变量可以像通常的变量一样使用,但是开发者不需要给它分配值。相反,预测变量在读取时使用底层机器学习模型中的推理来确定其值,这由开发者通过调用Predict()来触发:
value=pvar.Predict()
这种行为使得将预测变量用作任何程序的天然部分成为可能。具体地,开发者可以只使用预测变量,而不是任何试探法或任意选择的常量。预测变量也可以采取随机变量的形式,保护开发者免受推理、采样和探索/利用对策(strategy)的潜在复杂度的影响。
预测变量可以使用关于开发者传递进的上下文的观察来确定其值:
pvar.Observe(’low’,0.12)
pvar.Observe({’high’:0.56,’target’:0.43})
在一些实例中,开发者还可以将工程化的试探法不会使用但强大的模型能够使用的附加的边信息(side-information)提供到预测变量中,以便提高性能。
一旦该信息变得可用,开发者就可以提供关于先前预测质量的反馈。在该示例中,提供了数值反馈:
pvar.Feedback(reward=10)
该框架的一些实施方式可以遵循常见的强化学习实践:预测变量旨在最大化随着时间的推移而接收的奖励值之和(可能有折扣)。在其他实施方式中,计算机程序或相关联的系统可能在后视情况下(in hindsight)意识到正确的值,并提供“基础事实(groundtruth)”答案作为反馈,将学习任务转变为有监督学习问题。一些问题可能有多个度量(metric)需要优化(例如,运行时间、内存、网络带宽),并且开发者可能想要给出针对每个维度的反馈。其他机器学习技术也可以附加地或可替换地被合并,例如包括强盗(bandit)技术(例如,多臂强盗)、黑盒优化和进化对策。
除了上面描述的API调用,开发者还可以使用附加的配置参数来指定预测变量使用的模型。例如,可以指定模型超参数,并且其可以被独立调整。预测变量的定义通常仅确定其接口(例如,输入和输出的类型和形状)。
该API允许以很少的开发开销容易和透明地将预测变量集成到现有应用中。
示例预测变量
变量是大多数编程语言的一部分,并且充当用于存储数据(并且最常见的是随着时间的推移而改变的数据)的占位符。在某些语言中,变量和函数可以互换地考虑。虽然该框架在这里是以预测变量来呈现的,但是它们也可以替代地被认为是预测函数或预测类。
变量捕捉关键计算的结果,并且最常见的也是关于下一步将执行哪个指令集的控制决策的基础。然而,获得期望结果所需的计算通常并不清楚,而是由程序员想到的试探法规则来指定的。示例包括关于以下方面的确定:用户想要红色主题的UI还是蓝色主题的UI,将该问题路由到哪种支持技术;或者估计该作业运行所需的时间量,以便可以相应地调度。通过对变量进行预测,程序员获得其中他们可以将该控制流的部分交给学习系统的抽象(abstraction)。
让我们对此举一个简单的示例,预测编程中的Hello World程序:
Figure BDA0002994494140000071
上面的示例也包括反馈的概念。反馈来自预测变量做出的决策/预测的优度(goodness)的一些测量。例如,在上面的If语句中,对变量进行评估的每个地方都等于变量的评估,并影响程序上下文中的某些内容。反馈允许我们将其真实世界结果连接回导致这些结果的变量。如果运行上述程序,输出应为:
Still need to improve the predictor<may be printed multiple times ifthe initial decision is false>
Hello World
在hello world程序中,常量BAD只是用于负反馈的符号,它可以被定义为任何负数。
hello world程序的另一特性是,它的预测变量不取决于任何东西,一旦它学习到值,它就会保持这种状态。换句话说,存在预测常量。它的值在反馈被完全吸收之后不会改变。
然而,在许多情况下,开发者将想要编写不是常量的预测器(predictor),也就是说,它们取决于一些上下文。为了表达对预测表达上下文的语义,可以使用观察的概念。也就是说,预测变量可以用来观察其他变量(从非预测的开始,稍后覆盖预测的情况)。
一个示例如下:
//在地图导航上下文中。GPS不够精确,无法告诉我们是在高速公路上还是在高速公路旁边的路上。
Figure BDA0002994494140000081
采取合适的路由动作。
//稍后在车辆继续向前行驶之后,我们意识到车辆是否实际上在高速公路上。
Figure BDA0002994494140000082
Figure BDA0002994494140000091
这里,变量on_freeway取决于车辆的当前速度,因此观察其值。每次对on_freeway进行评估时,其值可以取决于它被允许观察的变量的值。为了允许on_freeway在其评估中更加优化,可以允许其观察环境中的更多变量,诸如,例如地理位置、当前交通等。该基本语法允许我们通过在我们的上下文中简单地添加其他因素来扩展观察的跨度。
预测变量可以采用像任何其他类型一样的类型,并且可用类型的范围将从基本类型跨度到复杂/派生类型。在一些情况下,可以以更好地适用于该上下文的方式修改基本类型,例如,除了浮点类型之外或者可替换地,预测变量也可以是值在(0,1)中的n浮点(nfloat)或归一化浮点类型。
预测变量的一些示例基本类型包括:布尔(bool)、枚举(enum)、短整型(shortint)、浮点(float)。预测变量的一些示例修改类型包括:n浮点(归一化浮点范围(0,1))、r_int(范围int,取范围(1,n))序列类型:字符串、向量(vec)、基本或修改类型列表等。一些示例复杂类型包括:结构体(struct)(上述类型的组合)。
示例预测变量和持久性
预测变量的初始示例使得变量只存在于运行程序的上下文中。现在,该框架被扩展以允许它们有全局命名空间,并允许跨运行的持久性。为此,每个预测变量可以有全局名称。
一个示例如下:
//我们要解决的问题是做出一堆取决于用户的UI决策。UX团队已经识别了3种类型的用户,那些花大量时间探索页面内容的用户、那些在采取动作之前只是快速浏览一下页面内容的用户、以及介于两者之间的用户。
Figure BDA0002994494140000092
Figure BDA0002994494140000101
这里的ui_choice变量被赋予了全局名称,使其具有持久性。这意味着使用该变量的任何数量的程序实际上都在使用该变量的一个副本(例如,其预测器)。它确实是一个底层模型,具有统一的命名空间和反馈语句意味着模型可以以分布式方式进行训练,并且可以在一种设置中进行训练并在另一种设置中进行适配(可能利用实时流量)。
请注意,上面的全局名称的概念也可以扩展到包括组名。例如,在特定上下文中一起使用的变量可以成为一个组的一部分,允许它们共享可观察的事物,并相互传递学习,以获得最佳联合结果。这可以通过创建预测组并将变量作为成员添加到其中来实现。
这些组可以具有两个目的:
第一,它们使开发者更容易将反馈传递给多个变量,同时使向所有涉及的变量给出正确反馈的过程更不容易出错。
第二,它们允许模型显式地学习组中的变量之间的关系。组中的每个变量也可以观察组中的所有其他变量,这可能使他们能够学习“无效”组合。在上面的示例中,特定的选择可能使对其他变量的一些赋值变得无用(例如,single_glance模式可能没有变量来控制在探索者(explorer)模式中显示的选项的数量)。
一个示例如下:
//声明预测组
PredictionGroup ui_vars
ui_vars.(“Watch Page UI Vars”)//组的全局名称。
//声明第一预测变量
Predicted enum ui_choice{explorers,moderate,single_glance}
ui_choice.set_global_name(“Watch Page UI Choice”)
//将ui_choice设为ui_vars组的一部分
ui_vars.add_variable(ui_choice)
//添加它可以观察的上下文
ui_choice.observes(user_click_rate)
ui_choice.observes(user_id)
//向组中添加其他ui变量,例如,font_size、缩略图大小等。使用变量来绘制UI
Compute engagement//基于用户如何对UI进行反应
//现在给整个组反馈
feedback(ui_vars,engagement)
预测变量中的初始函数
为了开始采用预测变量,允许提供可以在学习到良好值之前用作默认值的初始值(或函数)可能是有帮助的。
预测变量的一个应用范围是替换现有代码中的试探法。在许多情况下,这些试探法将在很长一段时间内都会管用,并且对“用机器学习解决方案来替换它”将存在的一定阻力。
因此,在许多情况下,一个起点可能是利用旧的解决方案继续工作,同时开始学习预测变量的良好模型。
这样,在一些实施方式中,开发者能够将初始函数传递给预测变量。在许多情况下,初始函数将是预测变量正要替换的试探法。理想情况下,它是预测变量返回什么样的值为好的一个合理的猜测。预测变量可以使用该初始函数来避免初始预测中非常差的性能,并观察初始函数的行为来指导其自己的学习过程,类似于模仿学习。然而,与其中智能体(agent)试图变得像专家一样优秀的模仿学习相反,预测变量显式地旨在尽可能快地优于初始函数。
初始函数的存在应当严格提高预测变量的性能。在最坏的情况下,预测变量可以选择完全忽略它,但理想情况下,它将允许预测变量探索从随机起点开始不容易到达的解。
具体地,具有初始策略将以三种不同的方式帮助预测变量:i)在初始步骤中使用它将帮助在预测变量学习到有效模型之前限制遗憾;ii)为我们的离线策略(off-policy)训练算法提供相关的训练经验。在假设初始策略执行得相当好的情况下,预期比纯随机策略生成更好的训练数据;iii)作为安全网(safety net)。如果预测变量没有学习到良好的策略,则初始策略可以用来缓解非常高的遗憾。
在一些实施方式中,预测变量还可以允许监控与原始值相比的改变,并且它将理想地允许通过与原始试探法相比对预测变量进行实验来测量改变。预测变量可以导出度量,该度量允许对针对两种模式(默认值和预测值)获得的反馈进行容易地仪表显示(dashboarding)。
在一些实施方式中,为了预测变量使用初始试探法,以及在学习良好策略和初始函数的安全性之间进行平衡,它依赖于策略选择对策。该对策在利用学到的策略、探索替代值、和使用初始函数之间进行切换。它可以取决于需求而应用于动作或事件期级别。策略选择可以比较观察到的累积奖励,以决定在随机探索、初始策略和学到的策略当中执行哪个策略,以及以哪些比率执行。
作为一个示例,在一些实施方式中,在开始时,仅使用初始策略,仅允许少量探索。可以累积初始策略奖励来估计其性能。在许多(例如,固定数字的)步骤之后,可以以小的百分比来使用学到的策略。如果学到的策略的累计奖励远远不如初始策略,则其被再次禁用,并且仅在稍后重新测试。然而,如果学到的策略的至少与初始策略执行得一样好,则它的使用就会增加,直到初始策略可以完全被逐步淘汰。
示例解决方案对策
给定上述框架,本章节现在描述一些潜在的解决方案对策。首先,请注意概述框架的方式,它确保在不依赖于特定解算器的情况下,可以对各种方法进行适当的记账(bookkeeping)/日志记录(logging)。在一些实施方式中,每次评估变量时,控制流都落在预测编程(Predictive Programming)栈中,这允许我们查看正在被观察的所有变量的状态以及从观察到的变量推断出的变量的当前状态。该信息可以用于记账或日志记录,以便当稍后接收到反馈时,反馈的信用(credit)可以追溯到在该点之前做出的所有预测,并且可以生成特定的学习信号,以在给定观察到的上下文的情况下改进用于评估变量的模型。
上述用于日志记录的框架还抽象出今天构建机器学习系统的另一重要因素。在预测编程的一些实施方式中,日志记录完全由系统来处理,而这可以由超级用户(poweruser)来专门处理,对于普通程序员来说,他们不需要考虑要日志记录什么来训练机器学习系统的概念,相反,他们仅通过预测变量来表达他们的意图,其余的已为他们处理。
如果底层编程语言被视为黑盒,仍然有似乎合理的解决方案对策。基于问题的类型,下面概述了一些示例解决方案。使用的解决方案可以由用户或程序员指定。
预测常量:运筹学(Operations research)、黑盒优化、强化学习。
单一使用变量:强盗解算器、黑盒优化、强化学习和有监督学习(在显式真实信号的情况下,稍后讨论)。
顺序决策作出:黑盒优化,诸如,例如进化对策、强化学习。
即使没有显式说明,样本运行可以提供关于变量属于上述类中的哪一类的信息,并且可以为其引入适当复杂度/效率的解算器。
因此,本公开的一些实施方式利用深度强化学习的最近进展来实现预测变量,因为它将允许将预测变量应用于最一般的使用场景。本文描述的接口的各方面确实自然地转化为强化学习,其中观察调用(Observe-call)的输入是组合到状态中的观察,预测调用(Predict-call)的输出是动作,并且反馈被转化为奖励。然而,预测变量明确地可以与其他学习方法一起使用,诸如有监督学习方法或基于强盗的方法。
关于有监督学习的特殊情况,对于在后视情况下某些真值可用的问题,诸如,例如用户交互预测中的点击,或者系统优化中的实际系统性能等。此信息可能在不是同一程序上下文的部分的地方可用。这些额外信息可以如下在反馈中传递:
Predicted float predicted_variable
predicted_variable.set_global_name(“global name of this variable”).
predicted_variable.set_instance_id(instance_id_from_logs)
//预测变量可以为它们做出的每个预测日志记录一个实例id,它可以在日志中被访问,并用于在任何特定的时间点或向特定的实例提供反馈。
feedback(predicted_variable,feedback_value,TRUTH)
这将使系统意识到它在这里有完整的监督信号,并能使这些解算器发挥作用。
后台随机(Stochastic Under the Hood)的示例变量
到目前为止,预测变量被描述成好像它们总是确定性的。但是,即使是被预测或估计的确定性量也总是有一些不确定性围绕它们,不确定性的程度受到数据的数量和质量、约束和先验知识等的影响。此外,一些量可以被最好地建模为显式随机的,例如要由单个用户做出的特定决策,或者在汽车到达山区时是否需要防滑链。由于这两个原因,预测变量可以在背景中被视为基本随机的量。在通常情况下,这种随机性不需要完全暴露给用户,例如,当在算法中需要使用简单的数值估计时。这保持了界面的整洁,并且不需要程序员考虑对随机性的处理。在其他情况下(例如,对于超级用户),可能需要估计(estimate)周围的误差条,或者甚至是完全后验预测概率分布。所提出的框架允许这种访问,并且允许在这样做有用时用概率术语表达约束或先验知识。因此,预测变量可以进入类似随机化算法、基于置信/方差的优化等领域,从而在许多使用场景下为程序员保持简单的界面,同时在需要时提供完全的后台控制。
算法中预测变量的示例应用
本章节描述预测变量可以被如何用于三个不同的算法问题,以及开发者可以如何通过仅几行代码容易地利用机器学习的能力。实验结果表明使用预测变量如何帮助提高算法性能。
上述示例界面自然转化为强化学习设置:观察调用的输入可以组合到状态中,预测调用的输出可以是动作,并且反馈可以是奖励。
为了评估预测变量的影响,在训练事件期上测量了累积遗憾。遗憾测量的是一种方法与另一种方法相比表现差多少(或者当它为负时表现好多少)。累积遗憾捕捉在所有先前决策上一种方法是否比另一种方法更好。对于一些实际的使用场景,我们对两个属性感兴趣:(1)遗憾应当永远不会很高,以保证在所有情况下预测变量的可接受的性能。(2)累积遗憾应当尽早成为永久为负。这对应于尽快获得比基线模型更好的性能的期望。
与区分训练和评估模式的通常设置不同,评估是从开发者的视角进行的,没有这种区分。开发者只插入预测变量,并像往常一样开始运行程序。由于预测变量正在其中运行的在线学习设置,过拟合不会引起问题。因此,(累积的)遗憾数确实包含了由于探索噪声而导致的潜在性能退化。这种影响可以通过只进行一小部分探索运行来缓解。
对于可行性研究,不考虑模型中的推理的计算成本。预测变量将适用于各种各样的问题,即使这些成本很高。
示例实验设置
图1提供了用于本文所述实验的示例架构的框图。图1示出了客户端代码如何与预测变量通信,以及如何经由机器学习系统来训练和更新预测变量的模型。程序二进制文件包括小型库(在图1中示出为“PVar”),它向客户端应用暴露预测变量接口。预测变量将观察、动作和反馈汇集到事件期日志中,其中该事件期日志被传递到重放缓冲区。模型是异步训练的。当新的检查点变得可用时,预测变量加载它,以便在连续的步骤中使用。
为了支持预测变量,强化学习的最近进展被用于建模和训练。它允许将预测变量应用到最一般的使用场景中。
示例实验模型建立在用于分类输出的DDQN(Hasselt等,2016)和用于连续输出的TD3(Fujimoto等,2018)。自从DDQN在AlphaGo中取得成功以来,它是强化学习中事实上的标准。TD3是对DDPG(Lillicrap等,2015)的最近修改,其使用第二评判网络来避免高估预期的奖励。
紧接在下面的表1提供了针对下述不同实验的参数(FC=全连接层,LR=学习率)。
Figure BDA0002994494140000161
实验中使用的示例策略选择对策由仅评估初始函数开始,然后逐渐开始增加学到的策略的使用。它跟踪这些策略的收到的奖励,并根据其性能调整学到的策略的使用。图2的底部窗格示出了初始函数被使用时的使用率,展示了该对策的有效性。
类似于许多建立在强化学习技术上的工作,本文描述的实验面临Henderson等,2018描述的再生性问题。在任何实验的多次运行中,只有一些运行表现出期望的行为,这些被报告。然而,在“失败的”运行中,观察到基线性能,因为初始函数充当安全网。因此,实验表明,所提出的系统能够优于基线试探法,而没有很大的风险会严重失败。
对二分搜索的示例应用
二分搜索(Williams 1976)是一种标准算法,用于在大小为N的排序数组A={a0,a1,…,aN-1}中找到目标值x的位置lx。当没有关于数据分布的进一步知识可用时二分搜索具有
Figure BDA0002994494140000172
步的最坏情况运行时间复杂度。更多地了解数据的分布可以帮助减少预期的运行时间。例如,如果数组值遵循均匀分布,则可以使用线性插值lx≈(N-1)(x-a0)/(aN-1-a0)来近似x的位置。我们示出预测变量可以如何通过学习在更一般的情况下估计位置lx来加速二分搜索。
使用预测变量的最简单方法是直接估计位置lx,并通过用相同的负奖励惩罚每一步来激励搜索以尽可能少的步骤这样做(例如,参见下面提供的列表1)。在每一步,预测变量观察搜索区间两端的值aL、aR以及目标x。预测变量输出q用作下一读取索引m的相对位置,使得m=qL+(1-q)R。
列表1(上部是标准二分搜索,下部是在二分搜索中使用预测变量的简单方法):
Figure BDA0002994494140000171
Figure BDA0002994494140000181
为了给模型更强的学习信号,开发者可以将特定于问题的知识合并到奖励函数中,或者合并到如何使用预测变量中。形成奖励的一个方法是考虑问题简化。对于二分搜索,减小剩余搜索空间的大小将成比例地加快搜索速度,并应相应地获得奖励。通过将列表1(第9行)中的计步(step-counting)奖励替换为搜索范围简化(Rt-Lt)/(Rt+1-Lt+1),我们直接奖励缩小搜索空间的大小。通过像这样形成奖励,我们能够将反馈信号归因于当前预测,并且能够将问题从强化学习简化为上下文相关的强盗(我们通过使用折扣因子0来实施)。
可替换地,我们可以改变使用预测的方式,来以预测变量学习得更快并且无法预测非常差的值的方式解决问题。对于许多算法(包括二分搜索),可以预测几个现有试探法的组合(或其中的选择),而不是直接对值进行预测。我们使用两种试探法:(a)普通二分搜索,其使用分割位置lv=(L+R)/2来将搜索范围{aL,…,aR}分割成两个同样大的部分,以及(b)插值搜索,其将分割位置插值为li=((aR-v)L+(v-aL)R)/(aR-aL)。然后,我们使用预测变量的值q来在这些试探法之间进行混合,以获得预测的分割位置lq=qlv+(1-q)li。因为在实践中这两种试探法在许多分布上都工作得很好,所以中间的任何点也将工作得很好。这降低了预测变量选取非常差的值的风险,进而有助于学习。一个缺点是,不可能找到具有lv和li之间的区间以外的值的最优对策。
为了评估所提出的方法,使用了一个测试环境,在这个测试环境中,在每个事件期中,我们从随机选择的分布(均匀(uniform)分布、三角(triangular)分布、正态(normal)分布、帕累托(pareto)分布、幂(power)分布、伽玛(gamma)分布和卡方(chisquare)分布)中采样具有5000个元素的数组,对其进行排序,缩放到[-104,104],并搜索随机元素。
图2示出了二分搜索的不同变体的成本(左上)、与普通二分搜索相比的累积遗憾(右)和初始函数使用(下方)。具体地,图2示出了使用预测变量的二分搜索的不同变体的结果,并将它们与普通二分搜索基线进行比较。结果表明,最简单的情况(位置,简单,没有初始函数),其中我们用简单奖励直接预测相对位置而不使用初始函数,最初表现不佳,但然后变得几乎与基线一样好(累积遗憾在最初的糟糕时段后变得几乎恒定)。下一种情况(位置,简单奖励)具有相同的设置,但我们使用初始函数,并且我们看到初始遗憾要小得多。通过使用有形(shaped)奖励(位置,有形奖励),预测变量能够快速学习基线的行为。混合试探法的两种方法都明显优于基线。
Figure BDA0002994494140000191
表2:对于预测、奖励和初始函数的使用的所有组合,累积遗憾变为永久为负(与所有基线相比)所需的训练事件期(“–”:在5000个事件期内没有发生)。
紧接在上面的表2比较了在二分搜索中使用预测变量的不同变体达到损益平衡(break-even)的时间。这些数字指示累积遗憾变成永久为负需要多少个事件期,这意味着对于在那之后的任何附加评估,与根本不使用ML相比,用户从使用预测变量中获得了净收益。该表表明,奖励形成和巧妙地使用预测提高了性能,但它也表明,即使是简单的方法也能够带来改进。请注意,在均匀分布上,没有任何模型优于插值搜索,因为它是该分布的最佳近似。
示例快速排序应用
快速排序(Hoare 1962)通过递归地将数组分成两个集合(小于/大于轴心),直到数组完全排序,从而对数组进行在位(in-place)排序。快速排序是最常用的排序算法之一,其中已经提出了许多试探法来选择轴心元素。虽然快速排序的平均时间复杂度是θ(Nlog(N)),但是当轴心元素被很差地选择时,可以发生最坏情况的时间复杂度O(N2)。轴心的最佳选择是范围的中值,它将该范围分割成大小相等的两部分。
为了使用预测变量改进快速排序,一个示例方法旨在调整轴心选择试探法。为了允许对任意类型进行排序,我们决定使用预测变量来确定从要排序的数组中采样的元素的数量,然后从这些样本中选取中值作为轴心(例如,参见列表2)。
具体地,列表2提供了一个快速排序实现,它使用预测变量来选择计算下一轴心的样本数。作为反馈,我们使用与最优分区相比的步骤成本。
列表2:
Figure BDA0002994494140000201
Figure BDA0002994494140000211
作为递归步骤的反馈信号,可以使用其对计算成本的影响的估计Δc:
Figure BDA0002994494140000212
其中n是数组的大小,a和b是分区的大小,n=a+b,cpivot=cmedian+cpartition是计算样本的中值和对数组进行分区的成本。Δcrecursive考虑了当前分区与理想情况(中值)的接近程度。成本是读取、写入和比较次数的加权和。类似于二分搜索中的有形奖励,该奖励允许我们将强化学习问题简化为上下文相关的强盗问题,并且我们使用折扣0。
为了评估,我们使用了一个测试环境,在这个测试环境中,我们对随机打乱的数组进行排序。在快速排序中使用预测变量选择轴心数量的实验结果如图3A和图3B所示。具体地,图3A示出了不同基线方法以及利用预测变量的变体随着训练事件期的总体成本。图3B示出了预测变量方法与每一个基线相比,随着训练事件期的累积遗憾。
图4示出了在5000个事件期之后在快速排序中通过预测变量选择的轴心的分数。中值的预期近似误差在图例中给出,在样本数旁边。图4示出了预测变量学习了一个非微不足道的(non-trivial)策略。预测变量学习在更大的数组大小上选择更多的样本,这类似于我们在自适应基线中手工编码的行为,但是在这种情况下,不需要手动试探法工程,并且学到了更好的策略。此外,请注意,基于预测变量的方法能够适应不断变化的环境,而工程化的试探法并非如此。一个令人惊讶的结果是,预测变量在大数组大小上更喜欢13个样本,而不是15个样本。我们假设发生这种情况是因为在训练期间很少看到大数组的示例(每个事件期一个,而更小大小的数组每个事件期可以看到多次)。
示例高速缓存应用
高速缓存是加速计算系统的常用组件。当高速缓存已满且需要存储新的元素时,它们使用高速缓存替换策略(cache replacement policy,CRP)来确定驱逐哪个元素。可能最流行的CRP是最近最少使用(least recently used,LRU)试探法,它驱逐具有最早访问时间戳的元素。已经提出了许多使用机器学习来提高高速缓存性能的方法。本公开提供了可以如何在CRP中使用预测变量来提高高速缓存性能的两种不同的示例方法。
离散(例如,下面的列表3):预测变量直接预测驱逐哪个元素或者选择根本不驱逐(通过预测无效的索引)。也就是说,预测变量进行学习以自己成为CRP。虽然这是使用预测变量的最简单的方法,但是它使得学习比LRU更好的CRP变得更加困难(事实上,在这种情况下,即使学习到与LRU比肩也不是小事)。
列表3(高速缓存替换策略直接预测驱逐决策):
Figure BDA0002994494140000231
连续(例如,下面的列表4):预测变量用于通过预测到最后访问时间戳的偏移来增强LRU。这里,预测变量学习哪些项要在高速缓存中保存更久,哪些项要更快驱逐。在这种情况下,通过预测零偏移,变得像LRU一样好是微不足道的。(-1,1)中的预测变量值被缩放以获得偏移的合理值范围。也可以通过预测一个足够负的得分来选择不存储元素。
列表4(使用优先级队列的高速缓存替换策略):
Figure BDA0002994494140000241
在这两种方法中,给预测变量的反馈是在高速缓存中是找到项(+1)还是没有找到项(-1)。在离散方法中,如果驱逐确实发生,我们也给出-1的奖励。
在示例实施方式中,观察是访问、存储器内容和被驱逐的元素的历史。预测变量可以观察(1)作为分类输入的键或(2)键的特征。
观察作为分类输入的键允许避免特征工程,并且能够直接学习特定键的属性(例如,哪些键被访问得最多),但这使得难以处理稀有和未看到的键。为了将键作为输入来处理,一个示例方法是训练在行动器(actor)网络和评判网络之间共享的嵌入层。具体地,图5示出了具有键嵌入网络的TD3的示例神经网络的架构。
作为键的特征,我们观察在固定大小的窗口上计算的历史频率。这种方法需要开发者付出更多的努力来实现这样的特征,但是以更好的性能和模型不依赖于特定键值的事实来回报。
实验采用了这些选项的三种组合来进行:(1)离散高速缓存观察键,(2)连续高速缓存观察键,(3)连续高速缓存观察频率。为了评估,使用了大小为10的高速缓存和从1到100的整数键。使用了长度为1000的两个合成访问模式,从α=0.1和α=0.5的幂律分布中进行独立同分布(i.i.d.)采样。
图6A-图6D示出了预测高速缓存的三种变体、标准LRU高速缓存和甲骨文(oracle)高速缓存的结果,给出了理论的、不可实现的性能上限。具体地,图6A-图6D显示了幂律访问模式的高速缓存性能。对于图6A和图6B:α=0.1,而对于图6C和图6D:α=0.5。图6A和图6C示出了命中率(无探索),并且图6B和图6D示出了累积遗憾(有探索)。
一旦学习已经收敛,我们查看无探索的命中率以理解模型的潜在性能。然而,累积遗憾仍是在探索噪声下报告的。
两种直接在键嵌入上工作的实施方式都学习在没有探索的情况下表现得类似于LRU基线(相当的命中率)。然而,连续变体为探索付出了更高的惩罚(更高的累积遗憾)。请注意,这意味着连续变体学会了预测常量偏移(这是微不足道的),然而离散实施方式实际上学会了成为非微不足道的LRU CRP。有频率的连续实施方式很快优于LRU基线,使成本/收益是长期值得的(几百个事件期之后的负累积遗憾)。
附加的示例使用
示例上下文无关的预测变量,例如,Hello World
上下文无关的变量仍然可以从它们自己的评估的过去历史中学习。它们也可以是后台随机的,所以虽然变量可能是布尔类型的,但在内部它可以保持更多的状态,以便无论何时被评估都提供最佳的布尔答案。
不观察任何上下文、不使用过去历史、并且不随机的变量等价于常量。主要不同在于,这个“常量”值是由预测系统学习的,以最大化在反馈中接收的得分,并且每次读取它时可能会不同(如果变量是后台随机的)。
一些示例问题包括:
试探法调谐公式的学习系数;
针对近似的学习系数;
确定良好的阈值;和
学习配置中的最佳参数。
可以证明这类变量在替换大量的试探法公式和临时(ad-hoc)选择时很有用,这些临时选择通常是在构建完整的堆栈软件系统时利用会意识到选择的下游影响的选择做出的(因为变量最大化了我们关心的一些最终数量)
仅使用一次的示例上下文相关变量
使用上下文的预测变量可以进一步分为在接收到反馈之前恰好使用一次的变量和可以使用多次的变量两部分。
单个用户变量的示例问题包括:
做出类别决策;
推断用户的属性;
交易被欺诈的概率;
用户喜欢这个项的可能性有多大;
智能UI元素,诸如,例如可以使它们自己适应用户、设备、地理、其内部的内容等给定的上下文的UI元素;和
针对最佳吞吐量的分布式系统配置。
该类别覆盖了一次性做出并执行决策的所有情况。在该决策之后,仍然可以有任意的领域知识和真实世界交互。将该情况分开的原因是为了示出在幕后实施像这样的系统所需的复杂度的逐步增加。
示例顺序决策作出
接下来,一个更复杂的示例示出了变量是如何被重复调用来做出一系列决策的。为此,请考虑负载平衡问题。请求进入API端点,它必须将其转发到n个副本之一。目标是在第90个百分点实现尽可能好的延迟。(大多数产品都要处理的一个非常实际的问题)。就上下文而言,让我们假设每个副本的当前负载及其对最近30个请求的平均响应时间是已知的。因此,在这个简单的示例中,每个副本具有两个特征。
变量将决策将该查询发送到哪个副本,并将被重复调用用于每个查询。反馈将是延迟的第90个百分点。一个示例如下:
//假设这些变量已经包含了关于副本的相关信息
Figure BDA0002994494140000261
Figure BDA0002994494140000271
这里,副本选择变量在循环中被重复调用。每次决策都是基于该变量做出的,并且我们得到关于这些决策的总结果的反馈。此外,与前一种情况不同,预测变量没有单一的最优值——在负载平衡系统中,一次又一次为chosen_replica返回相同的值会有问题。
这将系统开放用于处理一大类问题,包括例如:
组合搜索和优化;
系统优化,如高速缓存、负载平衡、调度等;
基于图的问题,诸如,例如TSP、路径寻找、导航等;
市场算法,寻找市场效率的最佳参数;和
作为试探法或学到的对策的任何集合的外部循环,诸如,例如搜索/快速索引、分治法(divide and conquer method)等。
示例高级用法
上面的大部分描述是面向对机器学习没有先验知识或深度接触的程序员的。然而,如果用户对ML有深入的知识,这种抽象对他们来说仍然可以是有用的,同时维护干净的界面,并给他们对过程的足够(或完全)的控制。
对于每个预测变量,我们可以暴露FullConfig对象,该对象具有机器学习系统的所有不同方面的规格和控制,该机器学习系统被后台用于该变量。
在一个示例中,我们希望将本地事件和天气信息合并到我们用于地图导航的路径查找算法中:
Figure BDA0002994494140000281
这里,我们打算训练一个系统来决定下一步访问哪个节点,以便快速获得良好的路径,并且也考虑其他边信息,如天气、本地事件等。上面的伪代码提供了简单的抽象,它巧妙地将机器学习组件从程序的整体结构中分离出来,同时将控制权保持在程序员手中。
如果超级用户想要调整解算器的细节,则他们可以执行以下操作:
FullLearningSpec spec=next_node.FullLearningSpec()
spec.set_learning_rate(0.001)
spec.set_network_depth_for_observer(current_path,[100 20])
spec.set_network_depth_for_observer(current_graph,[1000 200])
spec.set_network_depth_for_observer(local_events,[30 20])
spec.set_network_depth_for_observer(local_weather,[100 20])
spec.set_fusion_level(FullLearningSpec.LateFusion())
等等。
对于超级用户来说,留在抽象中的一个主要好处是易于演进他们的系统。作为一个示例,如果他们得到一个以上的边带信息,他们不需要编写大量的Flume作业和数据转换器来合并它们,他们只需要在他们的主程序的上下文中读取它,并让变量依赖于它。如果他们想要预测整条路径的优度值,则他们可以只需要再加一个变量就可以了。如果他们想要下一个节点预测器和优度度量共享参数,则他们可以将这两个变量添加到组中,等等。
在进一步的实施方式中,该框架可以提供附加的高级特征,诸如多个反馈度量、自动A/B实验、分布式日志聚合和效率、和/或其他特征。
附加的示例计算机科学问题应用
以下是可以使用提供的框架解决的示例问题。
高速缓存(LRU高速缓存等)
1.从高速缓存中驱逐什么,而不是使用LRU对策。LRU作为一种试探法在很多情况下都工作得很好,但可能并不完美,并且在一些情况下可能会严重失败。
预测变量可以旨在学习“oracle”从高速缓存中驱逐什么。
2.高速缓存大小:当高速缓存太大时会浪费内存,而当高速缓存太小时表现不好。确定良好的高速缓存大小作为预测变量。
搜索算法(A*等)
A*使用试探法来估计剩余成本,以指导其搜索。学习良好的试探法函数作为预测变量,以使A*表现良好,并消除手动指定试探法的需要。
分支定界算法
使用预测变量来确定良好的分支对策。
请注意,分支定界(Branch and Bound)算法常用于近似NP困难问题。这里的一个良好目标是使用预测变量获得更好的近似。
分治算法
使用预测变量来确定良好的划分对策(例如,比较下面的二分搜索&快速排序)。
搜索算法
改善二分搜索,其中“二分”分割点可由预测变量确定。
排序算法
通过使用预测变量选取轴心来改进快速排序。这可能只会对非常大的排序问题产生影响。
合并排序:确定分支因子作为预测变量。
近似TSP
总体思路:通过使用预测变量来提高经验近似质量。
一些附加的思路:
贪婪算法:最近邻选取:使用预测变量来计算邻域距离——旨在使其比使用实际最近邻更好
成对交换:使用预测变量来选取要交换的边+使用预测变量来选取要插入的边
蚁群优化:用少的预测变量替换蚂蚁;)
在UX中替换小试探法
许多应用都内置了小试探法——用预测变量替换它们。
在梯度下降/优化器中确定学习率/步长
许多优化器只有在你算出正确的学习率时才能工作——不同的优化器之间可能会有很大的不同。此外,许多优化器有一个以上的元参数(Adam中是beta1、beta2、epsilon),它们很少被调整。将这些学习率设置为预测变量,并随着时间的推移而改进它们。
示例设备和系统
图7A描绘了根据本公开的示例实施例的示例计算系统100的框图。系统100包括通过网络180通信耦合的用户计算设备102、服务器计算系统130和训练计算系统150。
用户计算设备102可以是任何类型的计算设备,诸如,例如个人计算设备(例如,膝上型或台式)、移动计算设备(例如,智能手机或平板电脑)、游戏控制台或控制器、可穿戴计算设备、嵌入式计算设备或任何其他类型的计算设备。
用户计算设备102包括一个或多个处理器112和存储器114。一个或多个处理器112可以是任何合适的处理设备(例如,处理器内核、微处理器、ASIC、FPGA、控制器、微控制器等)并且可以是一个处理器或者可操作地连接的多个处理器。存储器114可以包括一个或多个非暂时性计算机可读存储介质,诸如RAM、ROM、EEPROM、EPROM、闪存设备、磁盘等、以及它们的组合。存储器114可以存储由处理器112执行以使用户计算设备102执行操作的数据116和指令118。
在一些实施方式中,用户计算设备102可以存储或包括一个或多个经机器学习的模型120。例如,经机器学习的模型120可以是或可以以其他方式包括各种经机器学习的模型,诸如神经网络(例如,深度神经网络)或其他类型的经机器学习的模型,包括非线性模型和/或线性模型。神经网络可以包括前馈神经网络、递归神经网络(例如,长短期记忆递归神经网络)、卷积神经网络或其他形式的神经网络。
在一些实施方式中,一个或多个经机器学习的模型120可以通过网络180从服务器计算系统130接收,存储在用户计算设备存储器114中,然后由一个或多个处理器112使用或以其他方式实施。在一些实施方式中,用户计算设备102可以实施单个整体(OVERALL)模型120的多个并行实例。
附加地或可替换地,一个或多个经机器学习的模型140可以被包括在服务器计算系统130中,或者以其他方式存储在服务器计算系统130中,并由服务器计算系统130实施,其中该服务器计算系统130根据客户端-服务器关系与用户计算设备102通信。例如,经机器学习的模型140可以由服务器计算系统140实施为网络服务的一部分。因此,一个或多个模型120可以在用户计算设备102处存储和实施,和/或一个或多个模型140可以在服务器计算系统130处存储和实施。
用户计算设备102还可以包括接收用户输入的一个或多个用户输入组件122。例如,用户输入组件122可以是对用户输入对象(例如,手指或触笔)的触摸敏感的触敏组件(例如,触敏显示屏或触摸板)。触敏组件可以用来实施虚拟键盘。其他示例用户输入组件包括麦克风、传统键盘或用户可以通过其提供用户输入的其他装置。
服务器计算系统130包括一个或多个处理器132和存储器134。一个或多个处理器132可以是任何合适的处理设备(例如,处理器内核、微处理器、ASIC、FPGA、控制器、微控制器等)并且可以是一个处理器或者可操作地连接的多个处理器。存储器134可以包括一个或多个非暂时性计算机可读存储介质,诸如RAM、ROM、EEPROM、EPROM、闪存设备、磁盘等、以及它们的组合。存储器134可以存储由处理器132执行以使服务器计算系统130执行操作的数据136和指令138。
在一些实施方式中,服务器计算系统130包括一个或多个服务器计算设备或者以其他方式由一个或多个服务器计算设备来实施。在服务器计算系统130包括多个服务器计算设备的实例中,这种服务器计算设备可以根据顺序计算架构、并行计算架构或它们的某种组合来操作。
如上所述,服务器计算系统130可以存储或以其他方式包括一个或多个经机器学习的模型140。例如,模型140可以是或者可以以其他方式包括各种经机器学习的模型。示例经机器学习的模型包括神经网络或其他多层非线性模型。示例神经网络包括前馈神经网络、深度神经网络、递归神经网络和卷积神经网络。
用户计算设备102和/或服务器计算系统130可以经由与通过网络180通信耦合的训练计算系统150的交互来训练模型120和/或140。训练计算系统150可以与服务器计算系统130分离,或者可以是服务器计算系统130的一部分。
训练计算系统150包括一个或多个处理器152和存储器154。一个或多个处理器152可以是任何合适的处理设备(例如,处理器内核、微处理器、ASIC、FPGA、控制器、微控制器等)并且可以是一个处理器或者可操作地连接的多个处理器。存储器154可以包括一个或多个非暂时性计算机可读存储介质,诸如RAM、ROM、EEPROM、EPROM、闪存设备、磁盘等、以及它们的组合。存储器154可以存储由处理器152执行以使训练计算系统150执行操作的数据156和指令158。在一些实施方式中,训练计算系统150包括一个或多个服务器计算设备或者以其他方式由一个或多个服务器计算设备实施。
训练计算系统150可以包括模型训练器160,其使用各种训练或学习技术(诸如,例如错误的反向传播)来训练存储在用户计算设备102和/或服务器计算系统130中的经机器学习的模型120和/或140。在一些实施方式中,执行错误的反向传播可以包括随着时间执行截断的反向传播。模型训练器160可以执行多种泛化技术(例如,权重衰退、弃除等)来提高被训练模型的泛化能力。在一些实施方式中,模型训练器160可以执行有监督学习技术。在一些实施方式中,模型训练器160可以执行强化学习技术。在一些实施方式中,模型训练器160可以执行无监督学习技术。在一些实施方式中,模型训练器160可以执行黑盒优化技术。
具体地,在一些实例中,模型训练器160可以基于训练数据162的集合来训练经机器学习的模型120和/或140。训练数据162可以包括例如由计算机程序提供的反馈数据。
在一些实施方式中,如果用户已经提供同意,则训练示例可以由用户计算设备102提供。因此,在这样的实施方式中,提供给用户计算设备102的模型120可以由训练计算系统150在从用户计算设备102接收的用户特定数据上训练。在一些实例中,这个过程可以称为个性化模型。
模型训练器160包括用于提供期望功能的计算机逻辑。模型训练器160可以用控制通用处理器的硬件、固件和/或软件来实施。例如,在一些实施方式中,模型训练器160包括存储在存储设备上、加载到存储器中并由一个或多个处理器执行的程序文件。在其他实施方式中,模型训练器160包括一个或多个计算机可执行指令集,这些指令集存储在有形计算机可读存储介质中,诸如RAM硬盘或光学或磁性介质。
网络180可以是任何类型的通信网络,诸如局域网(例如,内联网)、广域网(例如,互联网)或它们的某种组合,并且可以包括任何数量的有线或无线链路。通常,网络180上的通信可以经由任何类型的有线和/或无线连接、使用各种各样的通信协议(例如,TCP/IP、HTTP、SMTP、FTP)、编码或格式(例如,HTML、XML)和/或保护方案(例如,VPN、安全HTTP、SSL)来承载。
图7A示出了可用于实施本公开的一个示例计算系统。也可以使用其他计算系统。例如,在一些实施方式中,用户计算设备102可以包括模型训练器160和训练数据集162。在这样的实施方式中,模型120可以在用户计算设备102处被本地训练和使用。在一些这样的实施方式中,用户计算设备102可以实施模型训练器160,以基于用户特定的数据来个性化模型120。
图7B描绘了根据本公开的示例实施例执行的示例计算设备10的框图。计算设备10可以是用户计算设备或服务器计算设备。
计算设备10包括多个应用(例如,应用1至N)。每个应用都包含其自己的机器学习库和(多个)经机器学习的模型。例如,每个应用可以包括经机器学习的模型。示例应用包括文本消息应用、电子邮件应用、听写应用、虚拟键盘应用、浏览器应用等。
如图7B所示,每个应用可以与计算设备的多个其他组件通信,诸如,例如一个或多个传感器、上下文管理器、设备状态组件和/或附加组件。在一些实施方式中,每个应用可以使用API(例如,公共API)与每个设备组件通信。在一些实施方式中,每个应用使用的API特定于该应用。
图7C描绘了根据本公开的示例实施例执行的示例计算设备50的框图。计算设备50可以是用户计算设备或服务器计算设备。
计算设备50包括多个应用(例如,应用1至N)。每个应用都与中央智能层进行通信。示例应用包括文本消息应用、电子邮件应用、听写应用、虚拟键盘应用、浏览器应用等。在一些实施方式中,每个应用可以使用API(例如,跨所有应用的共同API)与中央智能层(以及存储在其中的(多个)模型)通信。
中央智能层包括许多经机器学习的模型。例如,如图7C所示,可以为每个应用提供相应的经机器学习的模型(例如,模型),并由中央智能层管理。在其他实施方式中,两个或更多个应用可以共享单个经机器学习的模型。例如,在一些实施方式中,中央智能层可以为所有应用提供单个模型(例如,单个模型)。在一些实施方式中,中央智能层被包括在计算设备50的操作系统中或者以其他方式由计算设备50的操作系统来实施。
中央智能层可以与中央设备数据层通信。中央设备数据层可以是计算设备50的集中式数据仓库。如图7C所示,中央设备数据层可以与计算设备的多个其他组件通信,诸如,例如一个或多个传感器、上下文管理器、设备状态组件和/或附加组件。在一些实施方式中,中央设备数据层可以使用API(例如,私有API)与每个设备组件通信。
附加公开
本文讨论的技术涉及服务器、数据库、软件应用和其他基于计算机的系统,以及所采取的动作和发送到这些系统以及从这些系统发送的信息。基于计算机的系统的固有灵活性允许各种可能的配置、组合以及任务和功能在组件之间的划分。例如,本文讨论的过程可以使用单个设备或组件或者组合工作的多个设备或组件来实施。数据库和应用可以在单个系统上实施,也可以跨多个系统分布。分布式组件可以顺序或并行操作。
虽然已经针对本发明的各种具体示例实施例详细描述了本主题,但是每个示例都是以解释的方式提供的,而不是对本公开的限制。本领域的技术人员在理解前述内容后,可以容易地对这些实施例生成变更、变化和等同物。因此,本主题公开不排除对本主题的这种修改、变化和/或添加的包括,这对于本领域的普通技术人员来说是显而易见的。例如,作为一个实施例的一部分示出或描述的特征可以与另一个实施例一起使用,以产生又一个实施例。因此,本公开旨在覆盖这些变更、变化和等同物。

Claims (37)

1.一种计算机实施的方法,所述方法包括:
由一个或多个计算设备获得包括计算机可执行指令集的计算机程序,其中,所述计算机程序定义用作用于存储数据的占位符的变量;
由所述一个或多个计算设备向机器学习系统提供观察数据;
由所述一个或多个计算设备接收由所述机器学习系统至少部分基于所述观察数据产生的对所述变量的预测值;
由所述一个或多个计算设备将所述变量设置为等于所述预测值;以及
在由所述一个或多个计算设备将所述变量设置为等于所述预测值之后,由所述一个或多个计算设备执行所述计算机程序,其中,执行所述计算机程序包括实施所述计算机可执行指令集中的至少一个指令,所述至少一个指令至少部分基于所述变量来控制所述一个或多个计算设备的操作。
2.根据权利要求1所述的计算机实施的方法,其中,由所述一个或多个计算设备接收由所述机器学习系统产生的对所述变量的预测值包括由所述一个或多个计算设备经由预定义的应用编程接口接收由所述机器学习系统产生的对所述变量的预测值。
3.根据任一前述权利要求所述的计算机实施的方法,其中,所述机器学习系统将所述观察数据组合到当前状态中,并且其中,所述变量包括状态化的变量。
4.根据任一前述权利要求所述的计算机实施的方法,其中,由所述一个或多个计算设备向所述机器学习系统提供所述观察数据包括由所述一个或多个计算设备经由预定义的应用编程接口向所述机器学习系统提供所述观察数据。
5.根据任一前述权利要求所述的计算机实施的方法,其中,所述由所述一个或多个计算设备向所述机器学习系统提供所述观察数据是由包括在所述计算机程序中的至少一个指令的执行引起的并且是其结果。
6.根据任一前述权利要求所述的计算机实施的方法,其中,所述观察数据描述由所述计算机程序定义的一个或多个其他变量的当前值。
7.根据任一前述权利要求所述的计算机实施的方法,还包括:
由所述一个或多个计算设备向所述机器学习系统提供反馈数据,其中,所述反馈数据用于训练所述机器学习系统来预测所述变量。
8.根据权利要求7所述的计算机实施的方法,其中,由所述一个或多个计算设备向所述机器学习系统提供所述反馈数据包括由所述一个或多个计算设备经由预定义的应用编程接口向所述机器学习系统提供所述反馈数据。
9.根据权利要求7或8所述的计算机实施的方法,其中,所述由一个或多个计算设备向所述机器学习系统提供所述反馈数据是由包括在所述计算机程序中的至少一个指令的执行引起的并且是其结果。
10.根据权利要求7-9中任一项所述的计算机实施的方法,其中,所述反馈数据描述至少部分基于所述变量来控制的所述一个或多个计算设备的操作的结果。
11.根据权利要求7-10中任一项所述的计算机实施的方法,还包括:
由所述机器学习系统至少部分基于所述反馈数据来确定奖励值;以及
由所述机器学习系统至少部分基于所述奖励值来修改由所述机器学习系统实施来产生所述变量的预测值的策略。
12.根据权利要求7-11中任一项所述的计算机实施的方法,其中,所述反馈数据描述了在接收到对所述变量的预测值之后观察到的所述变量的基础事实值。
13.根据权利要求7-12中任一项所述的计算机实施的方法,还包括:
由所述机器学习系统至少部分基于损失函数来执行有监督学习,所述损失函数将对所述变量的预测值与所述变量的基础事实值进行成对比较。
14.根据权利要求7-13中任一项所述的计算机实施的方法,还包括:
由所述机器学习系统至少部分基于所述反馈数据来确定适合度值;以及
由所述机器学习系统至少部分基于所述适合度值来确定是选择由所述机器学习系统实施来产生对所述变量的预测值的突变模型,还是选择替代模型。
15.根据权利要求7-14中任一项所述的计算机实施的方法,其中,由所述一个或多个计算设备向所述机器学习系统提供所述反馈数据包括由所述一个或多个计算设备向预测组提供所述反馈数据,其中,所述预测组包括所述变量和一个或多个附加变量,使得同时为多个变量提供反馈。
16.根据任一前述权利要求所述的计算机实施的方法,其中,所述机器学习系统包括产生对所述变量的预测值的软件智能体。
17.根据任一前述权利要求所述的计算机实施的方法,其中,所述机器学习系统包括产生对所述变量的预测值的经机器学习的模型。
18.根据任一前述权利要求所述的计算机实施的方法,其中,所述机器学习系统包括产生对所述变量的预测值的经机器学习的神经网络。
19.根据任一前述权利要求所述的计算机实施的方法,其中,所述变量包括以下类型之一:
布尔;
枚举;
短整型;
浮点;
归一化浮点;
限定范围内的整型;
字符串序列;
上述任何一项的向量;
向量的向量;
上述任何一项的列表;或
它们的组合。
20.根据任一前述权利要求所述的计算机实施的方法,其中,所述变量仅存在于所述计算机程序的单个运行实例中。
21.根据权利要求1-19中任一项所述的计算机实施的方法,其中,所述变量跨所述计算机程序的多个运行实例持久存在。
22.根据权利要求1-19或21中任一项所述的计算机实施的方法,其中,所述变量跨所述计算机程序和一个或多个附加计算机程序持久存在。
23.根据任一前述权利要求所述的计算机实施的方法,其中,所述计算机程序由第一计算设备执行,并且所述机器学习系统由不同于和有别于所述第一计算设备的第二计算设备执行。
24.根据权利要求23所述的计算机实施的方法,其中,所述第一计算设备包括用户计算设备,并且所述第二计算设备包括服务器计算设备。
25.根据任一前述权利要求所述的计算机实施的方法,其中,所述计算机程序和所述机器学习系统由同一单个设备执行。
26.根据权利要求25所述的计算机实施的方法,其中,所述机器学习系统包括已经被添加到所述计算机程序的库。
27.根据任一前述权利要求所述的计算机实施的方法,其中,包括在所述计算机程序中的所述计算机可执行指令集编码符号逻辑,并且其中,所述机器学习系统执行数值推理以产生对所述变量的预测值。
28.根据任一前述权利要求所述的计算机实施的方法,其中,所述机器学习系统的初始策略包括用户定义的试探法。
29.一种计算机实施的方法,所述方法包括:
由机器学习系统经由第一应用编程接口从计算机程序接收观察数据;
由所述机器学习系统至少部分基于所述观察数据来确定对计算机程序的变量的预测值;以及
由所述机器学习系统经由第二应用编程接口向所述计算机程序提供对所述变量的预测值。
30.根据权利要求29所述的计算机实施的方法,还包括:
由所述机器学习系统经由第三应用编程接口从所述计算机程序接收反馈数据;以及
由所述机器学习系统至少部分基于所述反馈数据来修改经机器学习的模型或策略,所述经机器学习的模型或策略至少部分基于所述观察数据来产生对所述计算机程序的所述变量的预测值。
31.根据任一前述权利要求所述的计算机实施的方法,其中,所述计算机程序包括移动应用。
32.一种计算机系统,包括:
一个或多个处理器;和
一个或多个非暂时性计算机可读介质,其共同存储指令,所述指令当由所述一个或多个处理器执行时,使得所述计算机系统执行根据权利要求1-31中任一项所述的方法。
33.一个或多个非暂时性计算机可读介质,其共同存储指令,所述指令当由一个或多个处理器执行时,使得所述一个或多个处理器执行根据权利要求1-31中任一项所述的方法。
34.一个或多个非暂时性计算机可读介质,其共同存储指令,所述指令当由一个或多个处理器执行时,使得所述一个或多个处理器使用应用编程接口进行通信,所述应用编程接口使得客户端代码集能够与机器学习系统对接,以接收对在所述客户端代码集内定义的预测变量的预测值。
35.根据权利要求34所述的一个或多个非暂时性计算机可读介质,其中,所述应用编程接口还使得所述客户端代码集能够将观察数据传递给所述机器学习系统,其中,所述机器学习系统至少部分基于所述观察数据来推理对所述预测变量的预测值。
36.根据权利要求34或35所述的一个或多个非暂时性计算机可读介质,其中,所述应用编程接口还使得所述客户端代码集能够将反馈数据传递给所述机器学习系统,其中,所述机器学习系统使用所述反馈数据来更新经学习的推理模型,所述经学习的推理模型预测对所述预测变量的预测值。
37.根据权利要求34-36中任一项所述的一个或多个非暂时性计算机可读介质,其中,所述应用编程接口体现在库中,其中,所述库被合并到也包括所述客户端代码集的计算机程序中。
CN201880098131.4A 2018-09-26 2018-11-20 编程中的预测变量 Pending CN112771554A (zh)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US201862737048P 2018-09-26 2018-09-26
US62/737,048 2018-09-26
PCT/US2018/062050 WO2020068141A1 (en) 2018-09-26 2018-11-20 Predicted variables in programming

Publications (1)

Publication Number Publication Date
CN112771554A true CN112771554A (zh) 2021-05-07

Family

ID=64664829

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201880098131.4A Pending CN112771554A (zh) 2018-09-26 2018-11-20 编程中的预测变量

Country Status (3)

Country Link
US (1) US20220036216A1 (zh)
CN (1) CN112771554A (zh)
WO (1) WO2020068141A1 (zh)

Families Citing this family (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2020167785A1 (en) * 2019-02-11 2020-08-20 Bitmovin, Inc. Chunk-based prediction adaptation logic
US11663522B2 (en) * 2020-04-27 2023-05-30 Microsoft Technology Licensing, Llc Training reinforcement machine learning systems
CN112286203B (zh) * 2020-11-11 2021-10-15 大连理工大学 一种基于蚁群算法的多智能体强化学习路径规划方法
CN112512003B (zh) * 2020-11-19 2021-11-05 大连理工大学 一种水声传感网中基于长短时记忆网络的动态信任模型
CN112836852B (zh) * 2020-12-31 2024-05-31 中国电子科技集团公司信息科学研究院 一种基于强化学习的无人平台路径规划方法及装置
CN113064422B (zh) * 2021-03-09 2022-06-28 河海大学 基于双神经网络强化学习的自主水下航行器路径规划方法
US20230029024A1 (en) * 2021-07-21 2023-01-26 Big Bear Labs, Inc. Systems and Methods for Failed Payment Recovery Systems
CN113342700B (zh) * 2021-08-04 2021-11-19 腾讯科技(深圳)有限公司 一种模型评估方法、电子设备及计算机可读存储介质
US11967200B2 (en) 2022-01-12 2024-04-23 Lnw Gaming, Inc. Chip tracking system

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2016004063A1 (en) * 2014-06-30 2016-01-07 Amazon Technologies, Inc. Feature processing recipes for machine learning
CN106250986A (zh) * 2015-06-04 2016-12-21 波音公司 用于机器学习的高级分析基础构架
CN106663037A (zh) * 2014-06-30 2017-05-10 亚马逊科技公司 特征处理权衡管理
US20180082172A1 (en) * 2015-03-12 2018-03-22 William Marsh Rice University Automated Compilation of Probabilistic Task Description into Executable Neural Network Specification
CN107851031A (zh) * 2015-05-08 2018-03-27 佛罗乔有限责任公司 数据发现节点

Family Cites Families (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8990785B2 (en) * 2010-07-29 2015-03-24 Robert Durand System and method for efficiently deploying massively diverse program instances to resist differential attacks
US8229864B1 (en) * 2011-05-06 2012-07-24 Google Inc. Predictive model application programming interface
DE102016216950A1 (de) * 2016-09-07 2018-03-08 Robert Bosch Gmbh Modellberechnungseinheit und Steuergerät zur Berechnung eines mehrschichtigen Perzeptronenmodells mit Vorwärts- und Rückkopplung
US10839329B2 (en) * 2016-10-25 2020-11-17 Sap Se Process execution using rules framework flexibly incorporating predictive modeling
CN110462684B (zh) * 2017-04-10 2023-08-01 赫尔实验室有限公司 对对象移动进行隐式预测的系统、计算机可读介质与方法
US10474709B2 (en) * 2017-04-14 2019-11-12 Salesforce.Com, Inc. Deep reinforced model for abstractive summarization
US11568271B1 (en) * 2018-06-19 2023-01-31 Meta Platforms, Inc. Machine learning in resource-constrained environments

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2016004063A1 (en) * 2014-06-30 2016-01-07 Amazon Technologies, Inc. Feature processing recipes for machine learning
CN106663037A (zh) * 2014-06-30 2017-05-10 亚马逊科技公司 特征处理权衡管理
US20180082172A1 (en) * 2015-03-12 2018-03-22 William Marsh Rice University Automated Compilation of Probabilistic Task Description into Executable Neural Network Specification
CN107851031A (zh) * 2015-05-08 2018-03-27 佛罗乔有限责任公司 数据发现节点
CN106250986A (zh) * 2015-06-04 2016-12-21 波音公司 用于机器学习的高级分析基础构架

Also Published As

Publication number Publication date
WO2020068141A1 (en) 2020-04-02
US20220036216A1 (en) 2022-02-03

Similar Documents

Publication Publication Date Title
CN112771554A (zh) 编程中的预测变量
Mai et al. {KungFu}: Making training in distributed machine learning adaptive
US7493300B2 (en) Model and system for reasoning with N-step lookahead in policy-based system management
Lyu et al. An empirical study of the impact of data splitting decisions on the performance of AIOps solutions
Chen et al. Reinforcement Learning‐Based Genetic Algorithm in Optimizing Multidimensional Data Discretization Scheme
Dhavakumar et al. An efficient parameter optimization of software reliability growth model by using chaotic grey wolf optimization algorithm
Liu et al. Blockchain-based task offloading for edge computing on low-quality data via distributed learning in the internet of energy
Vasudevan et al. Learning semantic representations to verify hardware designs
Audet et al. A general mathematical framework for constrained mixed-variable blackbox optimization problems with meta and categorical variables
Gursoy et al. Utility-optimized synthesis of differentially private location traces
Bruns et al. Bat4CEP: A bat algorithm for mining of complex event processing rules
Abnane et al. Evaluating ensemble imputation in software effort estimation
CN117539648A (zh) 一种电子政务云平台的服务质量管理方法及装置
Buczak et al. Using sequential statistical tests for efficient hyperparameter tuning
CN116992253A (zh) 与目标业务关联的目标预测模型中超参数的取值确定方法
Vieira et al. Dyna: Toward a self-optimizing declarative language for machine learning applications
Wang et al. Discovering Lin-Kernighan-Helsgaun heuristic for routing optimization using self-supervised reinforcement learning
Chugh et al. Towards better integration of surrogate models and optimizers
KR102259945B1 (ko) 인공지능 기반의 예측을 활용하는 a/b 테스팅 시스템 및 방법
Honari et al. Deep reinforcement learning-based framework for constrained any-objective optimization
Ben Slimane et al. Mjolnir: A framework agnostic auto-tuning system with deep reinforcement learning
Bettker et al. Understanding sample generation strategies for learning heuristic functions in classical planning
Renggli et al. Automatic feasibility study via data quality analysis for ml: A case-study on label noise
Srivani et al. Theoretical analysis and comparative study of top 10 optimization algorithms with DMS algorithm
Chen et al. Container cascade fault detection based on spatial–temporal correlation in cloud environment

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