首页 / 批量强化学习

批量强化学习有效专利 发明

技术内容

批量强化学习 [0001] 相关申请的交叉引用 [0002] 本申请要求2017年8月25日提交的题为“动作选择神经网络的批量训练”的美国专利申请第62/550,513号的权益,其全部内容通过引用合并于此。 背景技术 [0003] 本说明书涉及强化学习。 [0004] 在强化学习系统中,代理通过执行强化学习系统响应于接收表征环境当前状态的观察值(observation)而选择的动作来与环境交互。 [0005] 一些强化学习系统根据神经网络的输出、响应于接收到给定观察值,选择要由代理执行的动作。 [0006] 神经网络是机器学习模型,其采用一层或多层的非线性单元来预测所接收的输入的输出。一些神经网络是深度神经网络,该深度神经网络除了输出层之外还包括一个或多个隐藏层。每一个隐藏层的输出被用作网络中的下一层(即下一隐藏层或输出层)的输入。 网络的每一层根据相应的参数集的当前值根据所接收的输入生成输出。 发明内容 [0007] 本说明书描述了在一个或多个位置处在一个或多个计算机上被实施为计算机程序的系统,该系统选择要由与环境交互的代理来执行的动作。更具体地,本说明书描述了批量强化学习技术,该批量强化学习技术允许神经网络以更短的时间和更高效的计算方式进行训练,其中该神经网络用于选择要由代理执行的动作。本说明书中描述的技术特别适用于在具有多个CPU(central processing unit,中央处理器)内核和/或硬件加速器(诸如,图形处理单元(graphics processing units,GPU)和/或张量处理单元(tensor processing unit,TPU)的计算装置上执行。此外,本说明书中描述的技术特别适用于用于训练神经网络,然后该神经网络用于控制机器人(或其他机械代理)。特别地,使用所描述的技术,可以在模拟中学习机器人的控制策略,即,通过使用神经网络选择动作来控制机器人的策略,然后将其应用于真实世界环境。 [0008] 可以实施本说明书中描述的主题的特定实施例,以便实现以下优点中的一个或多个。 [0009] 所描述的系统的实施方式有助于改进动作选择神经网络的训练。特别地,通过并行模拟多个环境副本(replica)并执行如本说明书中所述的并行选择动作所需的神经网络推理,提高了训练过程的计算效率,并且可以利用多个CPU内核上的并行化。此外,本说明书中描述的技术可以允许在模拟中更有效地学习机器人的控制策略,并且当所学习的策略应用于真实世界时,可以产生更高性能的机器人。 [0010] 更具体地,强化学习技术通常包含重复执行两个步骤:(1)使代理与环境交互,以便收集训练数据,即,过渡元组,用于训练动作选择神经网络,以及(2)在所收集的过渡元组上训练动作选择神经网络。常规强化学习技术的性能受到从环境中收集过渡元组所需的时间和计算资源的限制,这些过渡元组然后被用于训练神经网络。也就是说,与在所收集的过渡元组上训练网络相比,收集过渡元组需要更大的时间量和更大的计算资源量,并因此减缓和降低了训练过程的计算效率。 [0011] 训练数据收集步骤依次包括两个阶段(两者是时间和资源密集型的):(1)在环境中进行动作,即,使代理执行动作,观察执行动作对环境的影响,并且生成对应的训练数据,以及(2)执行神经网络推理以选择将由代理执行的动作。 [0012] 所描述的系统通过并行化这两个时间密集型阶段来缓解瓶颈并减少训练神经网络所需的计算资源,例如时间、计算能力或两者。特别地,所描述的系统允许以下两者:(i)执行神经网络推理以并行地为多个环境副本选择动作,以及(ii)在环境中针对多个环境副本中的每一个并行地进行动作。结果,相对于常规技术,训练动作选择神经网络所需的训练时间量和计算资源量显著减少。 [0013] 在附图和以下描述中阐述了本说明书的主题的一个或多个实施例的细节。从说明书、附图和权利要求书中,主题的其他特征、方面和优点将变得显而易见。 附图说明 [0014] 图1是示例强化学习系统的框图。 [0015] 图2是批量强化学习的示例过程的流程图。 [0016] 图3是使用计算图的批量强化学习的示例过程的流程图。 [0017] 不同附图中相同的附图标记和标示指示相同的元件。 具体实施方式 [0018] 图1示出了示例强化学习系统100。强化学习系统100是在一个或多个位置处在一个或多个计算机上被实施为计算机程序的系统的示例,其中实施了下面描述的系统、组件和技术。 [0019] 强化学习系统100训练动作选择神经网络140,该动作选择神经网络140用于在多个时间步骤中的每一个时间步骤处选择要由与环境交互的代理来执行的动作,以便使代理执行指定的任务。 [0020] 在每一个时间步骤处,系统100接收表征环境当前状态的数据,例如环境的图像,并且使用动作选择神经网络140响应于所接收的数据选择要由代理执行的动作。表征环境状态的数据将在本说明书中称为观察值。在每一个时间步骤处,时间步骤处的环境状态(以观察值表征)取决于在前一时间步骤处的环境状态和代理在前一时间步骤处执行的动作。 [0021] 在每一个时间步骤处,代理可以基于环境的当前状态和代理在该时间步骤处的动作来接收(或环境可以生成)奖励。一般而言,奖励是数值,并且可以基于环境的任何事件或方面。例如,奖励可以指示代理是否已经完成任务(例如,导航到环境中的目标位置)或者代理朝向完成任务的进度。 [0022] 通常,环境是模拟环境,并且代理被实施为与模拟环境交互的一个或多个计算机程序。例如,环境可以是真实世界环境的模拟版本,并且代理是与真实世界环境交互的机械代理的模拟版本。例如,代理可以是与环境交互以完成指定任务(例如,导航到环境中的特定位置,定位环境中的特定对象,或将对象移动到特定位置)的机器人的模拟版本。作为另一个示例,代理可以是自主或半自主交通工具的模拟版本,其在真实世界环境的模拟版本(例如运动模拟环境)中导航,例如驾驶模拟或飞行模拟,以完成指定的任务,例如以导航到特定位置,同时满足安全或乘客舒适性的目标。在这些示例中,动作可以是用于控制机器人或自主交通工具的控制输入。例如,在机器人的情况下,输入可以包括用于控制机器人关节的扭矩。 [0023] 在一些情况下,观察值是模拟环境的图像、由模拟代理的模拟传感器捕获的传感器数据或其他高维数据。在其他情况下,观察值是由另一系统从高维数据中导出的低维特征。 [0024] 为了响应于给定观察值选择要由代理执行的动作,系统100使用动作选择神经网络140处理包括给定观察值的输入,以生成对于该观察值的网络输出,并且然后使用该网络输出选择动作。 [0025] 在一些情况下,动作选择神经网络140生成网络输出,该网络输出对于可以由代理执行的一组可能动作中的每一个动作包括相应的Q值,即,对于在强化学习代理响应于观察值执行动作的情况下接收的回报的估计。在这些情况下,系统100可以选择具有最高Q值的动作,或者可以选择概率为1-ε的最高Q值和概率为ε的随机动作。 [0026] 在一些其他情况下,网络输出定义了一组可能动作中的动作的可能性分布。例如,当该组动作精细化的(fine)时,网络输出可以包括该组中每一个动作的相应可能性。当该组动作是连续的时,网络输出可以包括该组动作上的分布参数,例如平均值和方差。在这些情况下,系统100可以通过从可能性分布中采样动作来选择动作。 [0027] 在其他情况下,网络输出从一组可能的动作中识别动作。例如,当动作是连续动作空间中的点时,动作可以是该空间中的点。在这些情况下,系统100可以通过选择所识别的动作或者通过向所识别的动作添加噪声并选择有噪声的动作来选择动作。 [0028] 为了允许神经网络140有效地用于选择要由代理执行的动作,即,用于使代理成功地完成指定的任务,系统100训练神经网络140以更新神经网络的参数值。 [0029] 一旦神经网络140已经被训练,系统100可以使用训练后的神经网络来选择要由代理执行的动作,可以向另一系统提供指定训练后的神经网络的数据,或者可以使用训练后的神经网络来选择要由与不同环境交互的不同代理执行的动作。 [0030] 在特定示例中,当环境是真实世界环境的模拟版本并且代理是真实世界代理的模拟版本时,系统100可以使用训练后的神经网络(或者在训练后的参数值已经被微调之后的训练后的神经网络)来选择要由与真实世界环境交互以执行指定任务的真实世界代理执行的动作。也就是说,系统100可以训练动作选择神经网络140来在模拟中学习机器人的控制策略,并且然后可以使用或提供训练后的动作选择神经网络140以用于控制与真实世界环境交互的机器人。在这种上下文中,控制策略是指使用由动作选择神经网络140生成的输出来选择要由机器人执行的动作。当动作选择神经网络140被训练时,控制策略被改进,即,由于网络参数值方面的变化使得机器人在指定任务上表现出改进的性能。 [0031] 特别是,系统100通过执行利用多个环境副本120A-N的迭代训练过程来训练神经网络140。每一个环境副本是环境的实例,每一个环境副本与其他环境副本彼此一致,但是可以在任何给定时间处于与其他副本不同的状态,即,作为代理执行不同的动作的结果,作为副本被初始化为不同的状态的结果,或者两者皆有。例如,环境副本可以各自是被维持在特定平台中的模拟环境的实例,例如DeepMind实验室或OpenAI Gym。 [0032] 每一个环境副本120A-N被维持在分离的进程130A-N中,通过在分离的进程中维持副本,系统100允许每一个环境副本独立操作,而不受全局解释器锁或任何其他线程同步机制的限制。例如,每一个进程130A-N可以在特定平台内发动(launch)和维持相同环境的独立实例。通过为每一个环境生产分离的进程,所有可用的CPU内核可以并行对环境进行步骤化处理(step)。当在GPU上训练时,系统可以在CPU和GPU的全载(full load)之间切换。这一阶段可以通过引入动作延迟来并行化,以使得环境可以与算法一起进行步骤化处理。 [0033] 在训练过程期间,系统100重复地从维持每一个环境副本的进程中获得观察值 190A-N和奖励180A-N,使用动作选择神经网络140响应于每一个观察值选择要由相应代理执行的动作,并且向相对应的进程提供所选择的动作170A-N。系统100还使用奖励、所选择的动作和观察值来训练动作选择神经网络140。 [0034] 特别地,强化学习系统100包括批量推理引擎110和训练引擎150。 [0035] 在训练过程的每次迭代处,批量推理引擎110从进程130A-N中的每一个中接收相应的观察值。每一个观察值表征由从其接收观察值的进程维持的环境副本的当前状态。批量推理引擎110然后生成观察值批,该观察值批包括在迭代中接收的观察值中的每一个,并且使用动作选择神经网络140并根据网络参数的当前值并行处理该批中的观察值,以生成动作批,该动作批对于每一个环境副本包括要由代理响应于表征环境副本的当前状态的当前观察值而执行的相应动作。也就是说,如上所述,动作选择神经网络140并行生成每一个观察值的网络输出,并且批量推理引擎110根据每一个网络输出选择相应的动作。因此,系统100在训练过程的每次迭代中并行化神经网络推理,即,使得为每一个环境副本并行选择动作。并行化神经网络推理以根据一批观察值中产生一批动作允许利用批量推理引擎110的内部线程池,例如TensorFlow会话,或者硬件加速器(诸如图形处理单元和/或张量处理单元)。 [0036] 批量推理引擎110然后向维持环境副本的进程130A-N提供每一个环境副本的动作。每一个进程使代理并行执行相对应的动作,并向强化学习系统100提供相应的后续观察值和相应的奖励。后续观察值是表征作为代理在动作批中执行环境副本的动作的结果,环境副本所过渡到的后续状态的观察值,并且奖励是作为环境副本过渡到后续状态的结果而生成的奖励。因此,在训练过程的每次迭代中,系统100跨环境副本并行化在环境中进行的动作。 [0037] 训练引擎150生成训练元组批,该训练元组批包括每一个环境副本的相应训练元组。给定环境副本的训练元组通常,除了迭代时环境副本的当前观察值和迭代时环境副本的所选动作之外,至少还包括迭代时环境副本的后续观察值和迭代时环境副本的奖励。 [0038] 然后,训练引擎150使用强化学习技术在训练元组批上训练动作选择神经网络,以更新网络参数的当前值。强化学习技术可以是适于动作选择神经网络的任何技术,即,其可以用于训练神经网络(该神经网络生成由动作选择神经网络140生成的那种输出),以及可以是同策略(on-policy)或离策略(off-policy)技术。可以使用的强化学习技术的示例包括逼近策略优化(proximal policy optimization,PPO)算法、深度确定性策略梯度(deep deterministic policy gradients,DDPG)算法、异步动作评价(A3C)算法、深度Q网络(deep Q-networks,DQN)算法和双DQN算法。 [0039] 这完成了迭代训练过程的迭代。强化学习系统100可以重复执行这一训练过程的迭代,以继续更新网络参数的值。 [0040] 从上面的描述中可以看出,并且如下面将更详细描述的,在训练过程的每次迭代中,系统100将通常作为常规强化学习过程的瓶颈的两个阶段并行化:使用动作选择神经网络140处理输入以选择动作,并且在环境中做出动作以收集训练元组。相比于传统系统,这允许系统100训练动作选择神经网络140以能够以更少的时间在指定任务上实现高质量的代理性能,同时消耗更少的计算资源。 [0041] 在一些实施方式中,强化学习系统100在将神经网络操作表示为计算图的框架中执行动作选择神经网络140的推理和训练。特别地,图中的节点表示操作,并且边表示操作的输入和输出数据流。这样的框架的示例是在M.Abadi、A.Agarwal、P.Barham、E.Brevdo、Z.Chen、C.Citro、G.S.Corrado、A.Davis、J.Dean、M.Devin等人的Tensorflow:Large-scale machine learning on heterogeneous distributed systems.arXiv preprint arXiv: 1603.04467,2016中描述的TensorFlow框架。在这样的框架中,每一个操作被分配给由系统 100管理的相应设备,并且动作选择神经网络140的训练通过执行计算图(即,通过使设备执行它们相应的分配的操作)来执行。硬件设备通常是异构的,并且可以包括任何合适的硬件设备,例如,任何CPU、GPU、ASIC或者其他专用硬件、FPGA等的组合。 [0042] 在这些实施方式中,系统可以将批量推理引擎110和训练引擎150执行的操作实施为计算图的不同子图。例如,批量推理引擎110执行的操作可以被实施为计算图的推理子图,并且训练引擎150执行的操作可以被实施为计算图的训练子图。下面参考图3更详细地描述使用计算图训练神经网络。 [0043] 图2是批量强化学习的示例过程的流程图。为了方便起见,过程200将被描述为由位于一个或多个位置的一个或多个计算机的系统执行。例如,根据本说明书适当编程的强化学习系统,例如图1的强化学习系统100,可以执行过程200。 [0044] 系统可以重复执行过程200来训练动作选择神经网络。也就是说,过程200对应于上述迭代训练过程的迭代。 [0045] 系统获得观察值批(步骤202)。观察值批包括多个当前观察值,其中每一个当前观察值表征不同环境副本的当前状态。 [0046] 系统使用动作选择神经网络处理观察值批中的观察值,以生成动作批(步骤204)。 动作批包括基于从环境副本接收的观察值而生成的每一个环境副本的相应动作。特别地,系统使用动作选择神经网络并行处理观察值批中的观察值,生成一批网络输出,然后使用每一个网络输出选择相应的动作。 [0047] 系统获得过渡元组批(步骤206)。特别地,系统将动作批中的相应动作的每一个提供给维持对应于该动作的环境副本的进程,以使环境副本并行地过渡到相应的后续状态,并且从进程中的每一个获得在该进程内被维持的环境副本的后续观察值和奖励。在已经从所有进程中获得后续观察值和奖励之后,系统根据从进程中获得的数据生成过渡元组批。 [0048] 为了确保训练过程的有效性,系统可以将维持环境副本的进程中的每一个限制为响应于由系统提供的给定动作,仅对由环境副本维护的环境副本进行步骤化处理。也就是说,系统指导每一个进程使代理做出动作以引起从一种状态到另一种状态的单次过渡,然后冻结环境副本,以使得在从系统接收到另一动作之前不会发生另外的过渡。 [0049] 系统在过渡元组批上训练动作选择神经网络(步骤208)。也就是说,系统在过渡元组批上执行上述强化学习技术的迭代,以更新网络参数的值。 [0050] 图3是用于使用计算图来批量强化学习的示例过程的流程图。为了方便起见,过程 300将被描述为由位于一个或多个位置的一个或多个计算机的系统执行。例如,根据本说明书适当编程的强化学习系统,例如图1的强化学习系统100,可以执行过程300。 [0051] 系统在分离的进程中初始化多个环境副本(步骤302)。也就是说,每一个环境副本在与每一个其他环境副本分离的进程中进行初始化。如上所述,每一个环境副本是相同的环境,但是潜在地以不同于其他环境的初始状态(例如随机选择的初始状态)初始化。例如,系统可以生产N个新进程,并在N个进程的每一个进程中实例化分离的环境副本。如果该进程已经生产,则系统可以执行重置操作(其可以在计算图中表示为节点),该重置操作使每一个进程将由该进程维持的环境重新初始化为相应的初始状态。 [0052] 系统然后可以重复过程300的步骤304-312,直到训练事件(training episode)完成。例如,系统可以重复这些步骤达固定迭代次数,或者直到环境中出现一些其他终止标准,例如,代理在环境副本中的一个或多个中完成任务。 [0053] 系统从每一个进程中接收相应的观察值(步骤304)。每一个观察值是表征在进程中维持的环境副本的当前状态的观察值。因为每一个环境副本可能已经在不同的状态下初始化,并且因为可以为不同的环境选择不同的动作,所以,即使代理在每一个环境副本中已经执行了相同数量的动作,在任何给定时间,每一个环境副本可能处于与任何其他环境副本不同的状态。 [0054] 系统执行计算图的推理子图,以选择每一个环境副本的相应的动作(步骤306)。特别地,推理子图包括从所接收的观察值生成观察值批的节点。观察值批是单个张量,其是从进程接收的观察值的组合(例如级联)。推理子图还包括节点集合,这些节点表示对观察值批张量执行的动作选择神经网络以生成每一个观察值的相应网络输出的正向传递。推理子图还包括节点,该节点使用从环境副本接收的观察值的网络输出来选择每一个环境副本的相应动作,即,如上参考图1所述。 [0055] 系统向对应的进程提供每一个动作(步骤308),并从进程获得后续观察值和奖励(步骤310)。也就是说,系统将为给定环境副本选择的动作提供给在其中维持给定环境副本的进程。反过来,该进程使代理执行所选择的动作,以使环境改变状态,并向系统提供结果奖励和后续观察值。然后,系统从每一个进程获得作为代理执行所提供的动作的结果而生成的奖励和后续观察值。 [0056] 特别地,系统可以通过执行计算图中的节点向对应的进程提供动作,该节点表示接收一批动作作为输入,和环境副本的动作一起向外部进程中的每一个并行发出相应的调用,然后等待,直到响应于相应的调用从每一个进程获得后续观察值和奖励。 [0057] 系统执行训练子图来更新动作选择神经网络的参数值(步骤312)。 [0058] 特别地,训练子图包括生成一批训练元组的节点、针对该批训练元组确定强化学习技术的损失函数梯度的一个或多个节点、以及通过动作选择神经网络执行反向传递以更新网络参数值的一个或多个节点。 [0059] 本说明书结合系统和计算机程序组件使用术语“配置”。对于要被配置为执行特定的操作或动作的一个或多个计算机的系统,意味着该系统已经在其上安装了软件、固件、硬件或它们的组合,这些软件、固件、硬件或它们的组合在操作中使系统执行操作或动作。对于要被配置为执行特定操作或动作的一个或多个计算机程序,意味着该一个或多个程序包括指令,当这些指令由数据处理装置执行时,使装置执行操作或动作。 [0060] 本说明书中描述的主题和功能操作的实施例可以在数字电子电路系统、有形体现的计算机软件或固件、计算机硬件(包括本说明书中公开的结构和它们的结构等同物)中实施,或者在它们中的一个或多个的组合中实施。本说明书中描述的主题的实施例可以实施为一个或多个计算机程序,即编码在有形的非暂时性存储介质上的计算机程序指令的一个或多个模块,这些指令用于由数据处理装置执行或控制数据处理装置的操作。计算机存储介质可以是机器可读存储设备、机器可读存储基底、随机或串行存取存储器设备或者它们中的一个或多个的组合。可替换地或附加地,程序指令可以被编码在人工生成的传播信号上,例如机器生成的电信号、光信号或电磁信号,该传播信号被生成以编码信息,用于传输到合适的接收器装置,以供数据处理装置执行。 [0061] 术语“数据处理装置”是指数据处理硬件,并且涵盖用于处理数据的所有种类的装置、设备和机器,例如包括可编程处理器、计算机、或多个处理器或计算机。该装置还可以是或另外包括专用逻辑电路系统,例如,FPGA(field programmable gate array,现场可编程门阵列)或ASIC(application-specific integrated circuit,专用集成电路)。除了硬件之外,该装置可以可选地包括为计算机程序创建运行环境的代码,例如构成处理器固件、协议栈、数据库管理系统、操作系统或它们中的一个或多个的组合的代码。 [0062] 计算机程序也可以被称为或描述为程序、软件、软件应用程序、app、模块、软件模块、脚本或代码,可以以任何形式的编程语言编写,包括编译或解释语言,或者声明或过程语言,并且其可以以任何形式部署,包括作为独立程序,或者作为模块、组件、子例程或适合在计算环境中使用的其他单元。程序可以但不必需对应于文件系统中的文件。程序可以存储在保存其他程序或数据的文件的一部分(例如存储在标记语言文档中的一个或多个脚本)中,存储在专用于所讨论的程序的单个文件中,或者存储在多个协调文件(例如存储一个或多个模块、子程序或部分代码的文件)中。计算机程序可以被部署为在一个计算机上执行,或者在位于一个站点或分布在多个站点上并通过数据通信网络互连的多个计算机上执行。 [0063] 在本说明书中,术语“引擎”广泛用于指代被编程为执行一个或多个指定功能的基于软件的系统、子系统或进程。通常,引擎将被实施为安装在位于一个或多个位置的一个或多个计算机上的一个或多个软件模块或组件。在一些情况下,一个或多个计算机将专用于特定的引擎;在其他情况下,可以在相同的一个或多个计算机上安装和运行多个引擎。 [0064] 本说明书中描述的过程和逻辑流程可以由一个或多个可编程计算机执行,这些计算机执行一个或多个计算机程序,以通过操作输入数据和生成输出来执行功能。过程和逻辑流程也可以由专用逻辑电路系统(例如,FPGA或ASIC)、或者由专用逻辑电路系统和一个或多个编程计算机的组合来执行。 [0065] 适用于执行计算机程序的计算机可以基于通用微处理器或专用微处理器或两者,或任何其他种类的中央处理单元。通常,中央处理单元将从只读存储器或随机存取存储器或两者接收指令和数据。计算机的基本元件是用于执行或运行指令的中央处理单元和用于存储指令和数据的一个或多个存储器设备。中央处理单元和存储器可以由专用逻辑电路系统补充或合并到专用逻辑电路系统中。通常,计算机还将包括或可操作地耦合到一个或多个用于存储数据的大容量存储设备(例如磁、磁光盘或者光盘),以从其接收数据,或将数据传送到其中,或者两者。然而,计算机不需要这样的设备。此外,计算机可以嵌入到另一个设备中,例如移动电话、个人数字助理(personal digital assistant,PDA)、移动音频或视频播放器、游戏控制台、全球定位系统(Global Positioning System,GPS)接收器或便携式存储设备,例如通用串行总线(universal serial bus,USB)闪存驱动器,仅列举少数示例。 [0066] 适用于存储计算机程序指令和数据的计算机可读介质包括所有形式的非易失性存储器、介质和存储器设备,包括例如半导体存储器设备,例如EPROM、EEPROM和闪存设备; 磁盘,例如内部硬盘或可移动磁盘;磁光盘;CD-ROM和DVD-ROM盘。 [0067] 为了提供与用户的交互,本说明书中描述的主题的实施例可以在计算机上实施,该计算机具有用于向用户显示信息的显示设备,例如,阴极射线管(cathode ray tube,CRT)监控器或者液晶显示器(liquid crystal display,LCD)监控器,以及用户可以通过其向计算机提供输入的键盘和指示设备,例如鼠标或轨迹球。也可以使用其他种类的设备来提供与用户的交互;例如,提供给用户的反馈可以是任何形式的感觉反馈,例如视觉反馈、听觉反馈或触觉反馈;并且可以以任何形式接收来自用户的输入,包括声音、语音或触觉输入。此外,计算机可以通过向用户使用的设备发送文档和从用户使用的设备接收文档来与用户交互;例如,通过响应于从网络浏览器接收的请求,向用户设备上的网络浏览器发送网页。此外,计算机可以通过向个人设备(例如,运行消息传送应用的智能手机)发送文本消息或其他形式的消息,并且作为回应,从用户接收响应消息来与用户交互。 [0068] 用于实施机器学习模型的数据处理装置还可以包括例如专用硬件加速器单元,用于处理机器学习训练或生产的共有和计算密集型部分,即推理、工作负载。 [0069] 机器学习模型可以使用机器学习框架来实施和部署,例如TensorFlow框架、Microsoft Cognitive Toolkit框架、Apache Singa框架或Apache MXNet框架。 [0070] 本说明书中描述的主题的实施例可以在计算系统中实施,该计算系统包括后端组件(例如作为数据服务器,或者包括中间件组件,例如应用服务器),或者包括前端组件(例如具有图形用户界面、网络浏览器或应用(用户可以通过其与本说明书中描述的主题的实施方式进行交互)的客户端计算机),或者一个或多个这样的后端组件、中间件组件或前端组件的任意组合。系统的组件可以通过任何形式或介质的数字数据通信(例如通信网络)相互连接。通信网络的示例包括局域网(local area network,LAN)和广域网(wide area network,WAN),例如因特网。 [0071] 计算系统可以包括客户端和服务器。客户端和服务器通常彼此远离,并且通常通过通信网络进行交互。客户端和服务器之间的关系是借助于在相应的计算机上运行的并且彼此之间具有客户端-服务器关系的计算机程序而产生的。在一些实施例中,服务器将数据(HTML页面)传输到用户设备,例如,为了向与充当客户端的设备交互的用户显示数据和从该用户接收用户输入的目的。在用户设备处生成的数据,例如用户交互的结果,可以在服务器处从设备接收。 [0072] 虽然本说明书包含许多指定的实施方式细节,但这些细节不应被解释为对任何发明的限制或者对所要求保护的范围的限制,而是对指定于特定发明的特定实施例的特征的描述。本说明书中,在分离的实施例的上下文中描述的某些特征也可以在单个实施例中组合实施。相反,在单个实施例的上下文中描述的各种特征也可以在多个实施例中分离地实施或以任何合适的子组合方式实施。此外,尽管特征可以在上面被描述为在某些组合中起作用,并且甚至最初是这样要求保护的,但是在一些情况下,可以从组合中删除所要求保护的组合中的一个或多个特征,并且所要求保护的组合可以指向子组合或子组合的变体。 [0073] 类似地,尽管在附图中以特定次序描绘操作,并且以特定次序列举权利要求,但这不应理解为要求以所示的特定次序或顺序执行这样的操作,或者要求执行所有示出的操作,以获得期望的结果。在某些情形下,多任务处理和并行处理可能是有利的。此外,上述实施例中的各种系统模块和组件的分离不应理解为在所有实施例中都需要这样的分离,并且应当理解,所描述的程序组件和系统通常可以集成在单个软件产品中或者打包到多个软件产品中。 [0074] 已经描述了主题的特定实施例。其他实施例也在以下权利要求的范围内。例如,权利要求中列举的动作可以以不同的次序执行,并且仍然获得期望的结果。作为一个示例,附图中描绘的过程不一定要求示出的特定次序或顺序次序来获得期望的结果。在某些情况下,多任务处理和并行处理可能是有利的。