确定执行设备的动作选择方针的制作方法

文档序号:24184855发布日期:2021-03-09 13:24阅读:121来源:国知局
确定执行设备的动作选择方针的制作方法

1.本文涉及确定执行设备的动作选择方针,以在包括执行设备以及一个或多个其他设备的环境中完成任务。


背景技术:

2.两个或更多个参与方之间的策略交互可以通过涉及两个或更多个参与方(也称为玩家)的博弈来建模。在涉及两个或更多个玩家的不完美信息博弈(imperfect information games,iig)中,玩家在做出决定之前只能部分地了解其对手。这类似于现实场景,例如贸易、交通路线规划和公开拍卖。许多现实生活场景可以表示为iig,例如不同公司之间的商业竞争、拍卖场景中的竞标关系、欺诈方和反欺诈方之间的博弈关系。
3.求解iig的方法具有很大的经济和社会效益。由于信息隐藏,因此玩家必须在对其对手信息不确定的情况下下进行推理,并且玩家还需要采取行动以利用其对手对其自己的信息的不确定的优势。


技术实现要素:

4.本文描述了用于确定执行设备的动作选择方针的技术,以在包括执行设备以及一个或多个其他设备的环境中完成任务,例如,在执行设备与一个或多个其他设备之间进行策略交互。例如,执行设备可以执行一种计算机实现的用于寻求执行设备与一个或多个其他设备之间的博弈的纳什均衡(nash equilibrium)的方法。在一些实施例中,这些技术可以包括执行用于求解不完美信息博弈(iig)的虚拟反事实遗憾最小化(cfr)算法,其可以节省存储空间,降低计算复杂性和方差,同时提高cfr算法的收敛速度。
5.本文还描述了耦接到一个或多个处理器并且其上存储有指令的一个或多个非暂态计算机可读存储介质,当所述指令由所述一个或多个处理器执行时,所述指令将促使所述一个或多个处理器按照本文提供的方法的实施例执行操作。
6.本文还描述了用于实现本文所述的方法的系统。该系统包括一个或多个处理器以及耦接到所述一个或多个处理器并且其上存储有指令的计算机可读存储介质,当所述指令由所述一个或多个处理器执行时,所述指令将促使所述一个或多个处理器按照本文提供的方法的实施例执行操作。
7.根据本文所述的方法、系统和计算机介质可以包括本文描述的各个方面和特征的任何组合。也就是说,根据本文所述的方法不限于本文具体描述的各个方面和特征的组合,而是还包括所描述的各个方面和特征的任何组合。
8.在附图和以下描述中阐述了本公开的一个或多个实施例的细节。根据说明书和附图以及权利要求,本文的其他特征和优点将显现。
附图说明
9.图1是示出根据本文的实施例的单牌扑克(one-card poker)中的部分博弈树的示
例的图示。
10.图2a是示出原始cfr和流式cfr的工作流的示例的图示,图2b示出根据本文的实施例的流式cfr的工作流的示例。
11.图3是根据本文的实施例的流式cfr算法的示例的伪代码。
12.图4是根据本文的实施例的用于执行流式cfr以确定软件应用的动作选择方针的处理的示例的流程图。
13.图5是示出根据本文的实施例的在部分博弈树上应用原始cfr算法和虚拟cfr算法的示例的图示。
14.图6是根据本文的实施例的执行虚拟cfr以在两个或更多个参与方之间的策略交互中进行策略搜索的处理的示例的流程图。
15.图7描绘了示出根据本文的实施例的计算机实现的用于提供与所述算法、方法、功能、处理、流程和过程相关联的计算功能的系统的示例的框图。
16.图8是根据本文的实施例的装置的模块的示例的图示。
17.不同的附图中相同的附图标记和名称表示相同的元件。
具体实施方式
18.本文描述了用于确定执行设备的动作选择方针的技术,以在包括执行设备以及一个或多个其他设备的环境中完成任务,例如,在执行设备与一个或多个其他设备之间进行策略交互。例如,执行设备可以执行一种计算机实现的用于寻求执行设备与一个或多个其他设备之间的博弈的纳什均衡(nash equilibrium)的方法。在一些实施例中,这些技术可以包括执行用于求解不完美信息博弈(iig)的虚拟反事实遗憾最小化(cfr)算法,其可以节省存储空间,降低计算复杂性和方差,同时提高cfr算法的收敛速度。
19.iig可以表示一个或多个现实场景,诸如资源分配、产品/服务推荐、网络攻击预测和/或预防、交通路线规划、欺诈管理,其中涉及两个或更多个参与方(也称为玩家),且每个参与方可以具有关于另一参与方的决定的不完全或不完美信息。
20.纳什均衡是涉及两个或更多个玩家的iig的典型解法。反事实遗憾最小化(cfr)是一种旨在近似找到大型博弈的纳什均衡的算法。cfr试图最小化整体的反事实遗憾。事实证明,所有迭代中的多个策略的平均值会收敛到纳什均衡。在求解博弈时,原始形式的cfr(也称为原始cfr、标准cfr、普通cfr或简称cfr)在每次迭代中遍历整个博弈树。因此,原始cfr需要大容量存储器处理大型零和扩展式博弈,例如单挑无限注德州扑克。在一些情况下,原始cfr可能无法用有限存储器处理大型博弈。
21.引入蒙特卡洛cfr(monte carlo cfr,mccfr)以使反事实遗憾最小化。mccfr可以计算反事实值(counterfactual value)的无偏估计,并避免遍历整个博弈树。由于在每次迭代中仅访问所有信息集的子集,因此mccfr所需的存储空间比原始cfr少。
22.可以使用结果采样(outcome sampling)算法或外部采样(external sampling)算法来执行mccfr。mccfr中的结果采样算法的方差大,并且难以在较少的迭代步骤中收敛到近似纳什均衡解。mccfr中的外部采样算法的方差比结果采样算法的方差小,但该方法呈现与cfr类似的缺点。当博弈树很大时,它需要非常大的存储空间,并且不能扩展到复杂的大规模iig。
23.本文公开了一种流式cfr算法。与原始cfr算法相比,在一些实施例中,流式cfr算法的空间复杂度为原始cfr算法的大约一半。在一些实施例中,流式cfr算法只需要一个表格式存储器或单个神经网络来跟踪关键信息,同时收敛到由原始cfr产生的可比较结果。所公开的流式cfr算法可以被用于大型博弈,即使在存在存储器限制的情况下。在一些实施例中,所描述的技术可被用于例如在ai扑克、推荐平台和可由涉及两个或更多个参与方的博弈建模的许多其他应用中。
24.cfr及其变体可以在博弈树上使用遗憾匹配(rm)来求解博弈。rm算法可以基于遗憾的概念来构建策略。例如,rm算法可以试图最小化对于其在博弈每一步的决定的遗憾。与现有rm算法(例如下方针对式(5)所描述的原始rm)相比,本文公开了一种具有新参数的参数化遗憾匹配(prm)算法,以减小原始rm的方差,并降低cfr算法的计算负荷。
25.注意,prm算法不只可以用于原始cfr,还可用于原始cfr的变体,包括但不限于mccfr和流式cfr。在一些实施例中,prm算法不仅可以用于各种cfr算法,还可用于rm适用的任何其他算法或技术。例如,prm可以用在除cfr算法以外的其他算法中用于替代原始rm,以减小原始rm的方差,并降低其他算法的计算负荷。
26.在一些实施例中,具有玩家有限集合n={0,1,...,n-1}的扩展式博弈可以表示如下。定义h
vi
为iig中玩家i的隐藏变量。例如,在扑克游戏中,h
vi
可以指玩家i的私人牌。h指的是历史的有限集合。h的每个成贝表示可能的历史(或状态),该历史包括每个玩家的隐藏变量和玩家所采取的l个动作(包括机会)。对于玩家i,h也可以表示为其中指的是对手的隐藏变量。空序列是h的成员。表达式表示h
j
是h的前提(prefix),其中且0<l’<l。表示终点历史,并且任何成员z∈z不是任何其他序列的前提。a(h)={a:ha∈h}是非终点历史h∈h\z之后的可用动作集合。玩家函数p将n∪{c}的成员分配给每个非终点历史,其中c表示机会玩家标识符(id),其通常可以是例如,-1。p(h)是在历史h之后采取动作的玩家。
27.历史{h∈h:p(h)=i}的i
i
是玩家i的信息分划。集合i
i
∈i
i
是玩家i的信息集。i
i
(h)指的是状态h下的信息集i
i
。在一些实施例中,i
i
只能记住玩家i观察到的信息,包括玩家i的隐藏变量和公开动作。因此,i
i
表示iig中的序列,即h
vi
a0a1...a
l-1
。在一些实施例中,对于i
i
∈i
i
和对于任何h∈i
i
,集合a(h)可以由a(i
i
)表示,并且玩家p(h)由p(i
i
)表示。对于每个玩家i∈n,效用函数u
i
(z)定义终点状态z的收益。下面将讨论这些符号和定义的更详细解释并且将包括图1中所示的示例。
28.图1是根据本文的实施例示出的单牌扑克中的部分博弈树102和部分博弈树104的示例的图100。单牌扑克是双玩家iig扑克。单牌扑克是扩展式博弈的示例。游戏规则定义如下。给每个玩家从一副x张牌中发一张牌。第一玩家可以过牌或下注。如果第一玩家下注,则第二玩家可以跟注或弃牌。如果第一玩家过牌,则第二玩家可以过牌或下注。如果第二玩家下注,则第一玩家可以弃牌或跟注。游戏在两次过牌、跟注或弃牌的情况下结束。弃牌玩家将损失1个筹码。如果游戏在两次过牌的情况下结束,则牌较高的玩家赢得1个筹码。如果游戏在跟注的情况下结束,则牌较高的玩家赢得2个筹码。
29.博弈树是有向图。博弈树的节点表示博弈中的位置(或玩家状态),并且博弈树的
边可以表示博弈的玩家的行动或动作。在图1中,z
i
表示终点节点,表示终点状态,h
i
表示非终点节点。部分博弈树102和104各自具有表示机会的根节点h0。在第一部分博弈树102中存在19个不同的节点,对应于左侧树中的9个非终点节点h
i
(包括机会h0)和10个终点节点z
i

30.在第一部分博弈树102中,如左子树中的“0:q 1:j”所示,将(q,j)发给两个玩家(玩家0和玩家1),以及如右子树中的“0:q 1:k”所示,将(q,k)发给两个玩家。
31.从根节点到每个节点的轨迹是动作的历史。动作由博弈树的边(用箭头表示)旁边的字母(例如,f、c、p和b)或表达式(例如,“0:q1:j”)表示。字母f、c、p、b分别表示弃牌、跟注、过牌和下注。
32.在扩展式博弈中,h
i
指的是动作的历史。例如,如第一部分博弈树102中所示,h3包括动作0:q 1:j和p。h7包括动作0:q 1:j、p和b。h8包括动作0:q 1:k、p和b。在第一部分博弈树102中,即h3是h7的前提。a(h3)={p,b}表示非终点历史h7之后的可用动作的集合是p和b。p(h3)=1表示在历史h3之后采取动作的玩家是玩家1。
33.在该iig中,玩家1的私人牌对于玩家0是不可见的,因此对于玩家0来说h7和h8实际上是相同的。信息集可用于表示这些不可区分状态的集合。类似地,h1和h2在同一信息集中。对于右部分博弈树104,h
′3和h
′5在相同的信息集中;h
′4和h
′6在相同的信息集中。
34.通常,任何i
i
∈i只能记住玩家i观察到的信息,包括玩家i的隐藏变量和公开动作。例如,如第一部分博弈树102中所示,h7和h8的信息集表示0:q、p和b的序列。由于在该iig中玩家0不区分h7和h8,如果i0是h7和h8的信息集,则i0=i0(h7)=i0(h8)。
35.策略分布σ={σ
i

i
∈∑
i
,i∈n}是所有玩家策略的集合,其中∑
i
是玩家i的所有可能策略的集合。σ-i
指的是除了玩家i之外的所有玩家的策略。对于玩家i∈n,策略σ
i
(i
i
)是函数,它将a(i
i
)上的动作分布分配给信息集i
i
。σ
i
(a|h)表示在状态h由玩家i∈n∪{c}采取动作a的概率。在iig中,如果两个或更多个状态具有相同的信息集,则这两个或更多个状态具有相同的策略。即,i
i
=i
i
(h1)=i
i
(h2),σ
i
(i
i
)=σ
i
(h1)=σ
i
(h2),σ
i
(a|i
i
)=σ
i
(a|h1)=σ
i
(a|h2)。例如,i0是h7和h8的信息集,则i0=i0(h7)=i0(h8),σ0(i0)=σ0(h7)=σ0(h8),σ0(a|i0)=σ0(a|h7)=σ0(a|h8)。在图1中,相同的阴影(灰色阴影除外)被用来表示在对应状态下设置的相同信息。
36.对于玩家i,策略分布σ的预期博弈效用被表示为其是所有可能终点节点的预期收益。给定固定策略分布σ-i
,玩家i的针对实现收益最大化的任何策略σ
i*
是最佳回应。对于双玩家的扩展式博弈,纳什均衡是策略分布以使每个玩家的策略是对对手的最佳回应。∈纳什均衡是纳什均衡的近似,其策略分布σ
*
满足:满足:
37.策略σ
i
的可利用性可以定义为如果∈
i

i
)=0,则策略是不可利用的。在像扑克这样的大型双玩家零和游戏中,很难计算。然而,如果玩家交换他们的位置,则一对游戏的值为零,即策略分布σ的可利用性可以定义为
38.对于诸如cfr的迭代方法,σ
t
指的是第t次迭代的策略分布。如果玩家根据σ采取动作,则历史h的状态到达概率可以用π
σ
(h)表示。对于空序列,π
σ
(φ)=1。可以根据每个玩家的贡献将到达概率分解为其中知
39.信息集i
i
的到达概率(也称为信息集到达概率)可以定义为如果从状态h

到h的间隔状态到达概率可以定义为π
σ
(h’,h),则π
σ
(h’,h)=π
σ
(h)/π
σ
(h’)。到达概率和可以被类似地定义。
40.在大型零和iig中,cfr被证明是用于计算纳什均衡的有效方法。可以证明,一个玩家的状态到达概率与对手的隐藏变量的后验概率成比例,即,其中h
vi
和i
i
表示特定h。
41.对于玩家i和策略分布σ,状态h下的反事实值(counterfactual value,cfv)v

(h)可以定义为
[0042][0043]
其中是玩家i相对于对手的隐藏变量的近似后验分布的预期奖励。于是,信息集i
i
的反事实值为
[0044]
采取动作a的动作反事实值可以表示为并且采取该动作的遗憾是
[0045][0046]
类似地,信息集i
i
的cfv可以定义为而其动作a的cfv为给定信息集i
i
的动作a的遗憾可以定义为
[0047][0048]
其中,注意,在不完美信息博弈中,
[0049]
然后,可以根据式(4)计算动作a在t次迭代之后的累计遗憾:
[0050]
其中定义可以例如基于遗憾匹配(rm),根据如下式(5)更新t+1迭代处的当前策略(或迭代策略或行为策略):
[0051][0052]
从迭代1到t的平均策略可以定义为:
[0053][0054]
其中,表示在第t次迭代时i
i
的信息集到达概率,并用于对相应的当前策略进行加权。
[0055]
如果在迭代t中被定义为附加分子,则平均策略的累计分子可以定义为
[0056][0057]
其中s0(a|i
i
)=0。
[0058]
对于流式cfr,不同于原始cfr中的迭代策略增量策略被定义为式(8):
[0059][0060]
其中是初始策略,例如,由诸如均匀随机策略分布的随机方针或其他初始化方针来初始化。
[0061]
在迭代t中流式cfr的迭代策略可由式(9)定义:
[0062][0063]
其中,α
t
(i
i
)是第t次迭代中i
i
的学习率,且σ
i0
(a|i
i
)=0。当t接近无穷大时,学习率α
t
(i
i
)接近0。例如,α
t
(i
i
)可以设置为1/t或其他值。利用式(9),可以获得下一次迭代中的迭代策略。在足够的迭代之后,由流式cfr获得的迭代策略分布可以收敛到近似的纳什均衡。据证明,由式(9)定义的迭代策略分布可以在两玩家零和博弈中收敛到一组纳什均衡。
[0064]
在一些实施例中,在虚拟cfr中,不同于如式(1)中所定义的原始cfr中的cfv,虚拟反事实值(fcfv)可以定义为:
[0065][0066]
在一些实施例中,如式(1)中所定义的原始cfr中的cfv可以改写为:
[0067]
[0068]
即递归地对博弈树从叶节点到根节点进行加权求和。对于式(10)中的fcfv,用于替换即,例如,可用于计算然后式(8)可用于更新增量策略在一些实施例中,只有其子节点都已经被访问过的那些节点的反事实值才可以被fcfv替换。图5示出了与博弈树中的节点的cfv相比,fcfv的示例性更新过程。
[0069]
在一些实施例中,如式(10)中所定义的fcfv可以在i
i
的增量策略,例如,根据式(8),计算出来之后立即计算。此后,即,fcfv用作cfv。因此,对于存储器而言,不需要存储这样,与原始cfr算法相比,虚拟cfr算法的存储效率和空间复杂度可以得到改善。
[0070]
在求解博弈时,原始cfr在每次迭代中遍历整个博弈树。因此,原始cfr可能无法用有限的存储器处理大型博弈。引入蒙特卡洛cfr(mccfr)以使反事实遗憾最小化。mccfr可以计算反事实值的无偏估计并避免遍历整个博弈树。由于在每次迭代中仅访问所有信息集的子集,因此mccfr所需的存储空间比原始cfr少。
[0071]
例如,定义q={q1,q2,...,q
m
},其中qj∈z是每次迭代中的采样终点历史的块,使得q
j
涵盖集合z。通常,根据指定的采样方案,不同的q
j
可能会重叠。可以使用几种采样方案。
[0072]
图2a是示出原始cfr和流式cfr的工作流200的示例的图示,图2b示出根据本文的实施例的流式cfr的工作流205的示例。如图所示,原始cfr和流式cfr两者都可以以迭代的方式执行。图2a和图2b分别示出四次迭代,t=1、2、3或4。上标1、2、3或4表示第t次迭代。原始cfr和流式cfr可以包括更多迭代。为了简化表达式,省略始cfr和流式cfr可以包括更多迭代。为了简化表达式,省略和中的每个下面的下标i。
[0073]
如图2b中流式cfr的工作流205所示,在第一次迭代中,t=1,例如,根据式(8),可以基于初始遗憾值211来计算增量策略213。例如,根据式(9),可以基于增量策略213和初始迭代策略σ0(a|i)=0来计算迭代策略σ1(a|i)215。基于迭代策略σ1(a|i)215,例如,根据式(3),可以基于反事实值通过递归地遍历博弈树来计算迭代策略的更新遗憾值221。
[0074]
迭代策略的更新遗憾值221可被用于在下一次迭代t=2中例如根据式(8)计算更新增量策略223。例如,根据式(9),可以基于增量策略223和第一次迭代中的迭代策略σ1(a|i)215来计算迭代策略σ2(a|i)225。类似地,基于迭代策略σ2(a|i)225,例如,根据式(3),可以基于反事实值通过递归地遍历博弈树来计算迭代策略σ2(a|i)225的更新遗憾值231。
[0075]
类似地,在下一次迭代中,t=3,基于更新遗憾值231,例如,可以根据式(8)来计算更新增量策略233。例如,根据式(9),可以基于增量策略
233和迭代策略σ2(a|i)225来计算迭代策略σ3(a|i)235。基于迭代策略σ3(a|i)235,例如,根据式(3),可以基于反事实值通过递归地遍历博弈树来计算迭代策略σ3(a|i)235的更新遗憾值241。
[0076]
在下一次迭代中,t=4,基于更新遗憾值241,例如,可以根据式(8)来计算更新增量策略243。例如,根据式(9),可以基于增量策略244和迭代策略σ3(a|i)235来计算迭代策略σ4(a|i)245。基于迭代策略σ4(a|i)245,例如,根据式(4),可以基于反事实值通过递归地遍历博弈树来计算迭代策略σ4(a|i)245的更新遗憾值(未示出)。更新遗憾值可被用于计算下一次迭代的增量策略。流式cfr可以重复上述迭代,直到获得收敛。
[0077]
注意,在流式cfr中,如图2b所示,当前迭代中的增量策略(例如,第t次迭代中的)可以基于前一次迭代中动作的遗憾值(例如,第(t-1)次迭代中的)来计算,而不是任何其他先前迭代(例如,第(t-2)次迭代、第(t-3)次迭代)中动作的任何遗憾值。而当前迭代中的迭代策略(例如,第t次迭代中的σ
t
(a|i))可以基于第(t-1)次迭代中动作的迭代策略(例如,第(t-1)次迭代中的σ
t-1
(a|i))和当前迭代中动作的增量策略(例如,第t次迭代中的)来计算。因而,仅当前迭代中的迭代策略(例如,第t次迭代中的σ
t
(a|i))需要被存储来计算下一次迭代中的更新迭代策略(第(t+1)次迭代中的σ
t+1
(a|i))。这与原始cfr不同。例如,对于当前迭代(例如,第t次迭代),原始cfr基于所有t=1,2,...,t迭代中的累计遗憾和平均策略进行。
[0078]
如图2a中原始cfr的工作流200所示,在第一次迭代中,t=1,例如,根据式(5),可以基于初始累计遗憾r0(a|i)212来计算迭代策略σ1(a|i)214。例如,根据式(6),可以基于迭代策略σ1(a|i)214和初始平均策略σ0(a|i)=0来计算平均策略210。基于迭代策略σ1(a|i)214,例如,根据式(3),可以基于反事实值通过递归地遍历博弈树来计算迭代策略的更新遗憾值216。例如,根据式(4),可以基于216的迭代策略和初始累计遗憾r0(a|i)212来计算动作a在第一次迭代后的更新累计遗憾r1(a|i)222。
[0079]
在第二次迭代中,t=2,例如,根据式(5),可以基于更新累计遗憾r1(a|i)222来计算迭代策略σ2(a|i)224。例如,根据式(6),可以基于迭代策略σ2(a|i)224和第一次迭代中的平均策略210来计算平均策略220。基于迭代策略σ2(a|i)224,例如,根据式(3),可以基于反事实值通过递归地遍历博弈树来计算迭代策略的更新遗憾值226。例如,根据式(4),可以基于226的迭代策略和累计遗憾r1(a|i)222来计算动作a在第二次迭代之后的更新累计遗憾r2(a|i)232。
[0080]
在第三次迭代中,t=3,例如,根据式(5),可以基于更新累计遗憾r2(a|i)232来计算迭代策略σ3(a|i)234。例如,根据式(6),可以基于迭代策略σ3(a|i)234和第二次迭代中的平均策略220来计算平均策略230。基于迭代策略σ3(a|i)234,例如,根据式(3),可以基于反事实值通过递归地遍历博弈树来计算迭代策略的更新遗憾值
236。例如,根据式(4),可以基于236的迭代策略和累计遗憾r2(a|i)232来计算动作a在第三次迭代之后的更新累计遗憾r3(a|i)242。
[0081]
在第四次迭代中,t=4,例如,根据式(5),可以基于更新累计遗憾r3(a|i)242来计算迭代策略σ4(a|i)244。例如,根据式(6),可以基于迭代策略σ4(a|i)244和第三次迭代中的平均策略230来计算平均策略240。基于迭代策略σ4(a|i)244,例如,根据式(3),可以基于反事实值通过递归地遍历博弈树来计算迭代策略的更新遗憾值(未示出)。类似地,例如,根据式(4),可以基于的迭代策略和累计遗憾r3(a|i)242来计算动作a在第四次迭代之后的更新累计遗憾r4(a|i)(未示出)。原始cfr可以重复以上迭代,直到获得收敛。
[0082]
如图2a中原始cfr的工作流200所示,原始cfr需要在每次迭代中跟踪至少两个值,即,所有t=1,2,

,t迭代中的累计遗憾和平均策略因为原始cfr的每次迭代不仅取决于前一次迭代的遗憾和策略,而且取决于前一次迭代之前的所有迭代中的遗憾和策略。另一方面,流式cfr的每次迭代可以在不知道前一次迭代之前的任何迭代(例如,第(t-2)次迭代、第(t-3)次迭代)中的任何遗憾值或策略的情况下进行。例如,流式cfr可以仅需要存储迭代策略(例如,σ1(a|i)215、σ2(a|i)225、σ3(a|i)235、σ4(a|i)245,如图2a中的灰色块所示),而原始cfr需要存储每次迭代中的累计遗憾(例如,r0(a|i)212、r1(a|i)222、r2(a|i)232和r3(a|i)242)以及平均策略(例如,210、220、230和240,如图2b中的灰色块所示)。因而,流式cfr比原始cfr需要更少的存储空间(例如,一半的存储空间),从而提高了存储器效率。
[0083]
图3是根据本文的实施例的流式cfr算法的示例的伪代码300。在一些实施例中,流式cfr算法是迭代算法。在每次迭代t中,对于玩家0和玩家1调用函数scfr以更新增量策略和迭代策略分别如伪代码的第25行和第26行所示。增量策略使用如伪代码300的第29行至第33行中定义的函数来calculatestrategy更新。函数calculatestrategy是式(8)的示例性实施方式。迭代策略可根据式(9)来更新。函数scfr返回每个信息集的反事实值作为输出,该反事实值通过递归地遍历博弈树来计算,如伪代码300的第4-27行所示。
[0084]
图4是根据本文的实施例的用于执行流式反事实遗憾最小化(cfr)以确定软件应用的动作选择方针的处理的示例的流程图,例如,用于在两个或更多个参与方之间的策略交互中进行策略搜索。处理400可以是上述关于图2-3的流式cfr算法的示例。在一些实施例中,处理400可以以迭代的方式来执行,例如,通过执行两次或更多次迭代来执行。在一些实施例中,可以为软件应用确定动作选择方针,例如,在两个或更多个参与方之间的策略交互中,可以由涉及两个或更多个玩家的不完美信息博弈(iig)来建模。在一些实施例中,可以执行处理400以求解iig。iig可以表示一个或多个涉及两个或更多个参与方的现实场景,诸如资源分配、产品/服务推荐、网络攻击预测和/或预防、交通路线规划、欺诈管理等,各参与方可能对其他参与方的决定有不完全或不完美信息。例如,iig可以表示至少涉及第一玩家和第二玩家的协作产品服务推荐服务。第一玩家可以是,例如,具有客户(或用户)信息、产品和服务信息、客户的购买历史等的在线零售商。第二玩家可以是,例如,具有客户的社交
网络数据的社交网络平台,拥有客户的财务信息的银行或其他金融机构、汽车经销商或在预测和向该客户推荐产品和服务时可能拥有客户偏好、需求、财务状况、位置等客户信息的任何其他参与方。第一玩家和第二玩家可各自拥有该玩家不想与其他人共享的专有数据。第二玩家只能在不同时间向第一玩家提供部分信息。因此,第一玩家对第二玩家的信息只有有限访问权。在一些实施例中,处理400可以被执行以向具有第二参与方的有限信息的参与方作出推荐,例如,利用有限信息计划路线。
[0085]
为了方便,处理400将被描述为由数据处理装置执行,例如位于一个或多个位置、并根据本文进行适当编程的一个或多个计算机组成的系统来执行。例如,图7的计算机系统700经适当编程后,可以执行处理400。
[0086]
在402,在第一次迭代(即t=1次迭代)中初始化参与方在一个状态下的动作的迭代策略。在一些实施例中,该迭代策略可以被初始化,例如,基于现有策略、均匀随机策略(例如,基于均匀概率分布的策略)或其他策略(例如,基于不同概率分布的策略)来初始化。例如,如果系统从现有cfr方法(例如,原始cfr或mccfr方法)热启动,则可以从现有策略分布初始化迭代策略,以克隆现有遗憾和策略。
[0087]
在一些实施例中,两个或更多个参与方之间的策略交互可以通过不完美信息博弈(iig)来建模。作为示例,iig表示包括参与方和第二参与方的协作产品服务推荐服务。该参与方对第二参与方的信息具有有限访问权。参与方的状态包括由第二参与方提供的信息的历史,参与方的动作包括响应于由第二参与方提供的信息的历史的动作,以向客户提供产品服务推荐。
[0088]
在404,确定是否满足收敛条件。收敛条件可用于确定是否继续或终止迭代。在一些实施例中,收敛条件可以基于策略σ的可利用性。根据可利用性的定义,可利用性应大于或等于0。越小的可利用性表明越好的策略。也就是,在足够的迭代之后,收敛策略的可利用性应该接近0。例如,在扑克中,当可利用性小于1时,时间平均策略被视为良好的策略,并确定满足收敛条件。在一些实施例中,收敛条件可以基于预定次数的迭代。例如,在小型博弈中,迭代可以由可利用性容易地确定。也就是,如果可利用性足够小,则处理400可以终止。在大型博弈中,可利用性是难以识别的,典型地,可以指定用于迭代的较大参数。在每次迭代之后,可以获得新策略分布,其优于旧策略分布。例如,在大型博弈中,处理400可以在足够次数的迭代之后终止。
[0089]
如果满足收敛条件,则不需要进一步迭代。处理400进行至416,其中迭代策略(当前迭代中的最新策略)被输出。如果收敛条件没有得到满足,则t加1,处理400进行至下一次迭代,其中t>1。
[0090]
在当前迭代(例如,第t次迭代)中,在406,在第(t-1)次迭代中参与方在该状态下的动作的迭代策略(例如,在第(t-1)次迭代中由信息集i
i
表示的参与方的状态下,动作a的迭代策略)被识别。在第(t-1)次迭代中参与方在该状态下的动作的迭代策略表示在第(t-1)次迭代中参与方在该状态下采取动作的概率。
[0091]
在408,在第(t-1)次迭代中参与方在该状态下的动作的遗憾值(例如,)是基于在第(t-1)次迭代中参与方在该状态下的动作的迭代策略来计算的。在一些实施例中,基于第(t-1)次迭代中参与方在该状态下的动作的迭代策略来计算第(t-1)次迭代中参
与方在该状态下的动作的遗憾值包括:基于第(t-1)次迭代中参与方在该状态下的动作的迭代策略来计算第(t-1)次迭代中参与方在该状态下的动作的遗憾值,而不是第(t-1)次迭代之前的任何迭代中参与方在该状态下的动作的任何遗憾值。
[0092]
在一些实施例中,基于第(t-1)次迭代中参与方在该状态下的动作的迭代策略来计算第(t-1)次迭代中参与方在该状态下的动作的遗憾值包括:基于参与方在该状态下的动作的反事实值与参与方的状态的反事实值之间的差来计算第(t-1)次迭代中参与方在该状态下的动作的遗憾值(例如,根据式(3)),其中,参与方在该状态下的动作的反事实值与参与方的状态的反事实值是通过递归地遍历表示在第(t-1)次迭代中两个方或更多个参与方之间的策略交互的博弈树来计算的(例如,如图3中伪代码的第4-27行所示)。
[0093]
在410,第t次迭代中参与方在该状态下的动作的增量策略(例如,)基于第(t-1)次迭代中参与方在该状态下的动作的遗憾值来计算,而不是第(t-1)次迭代之前的任何迭代中参与方在该状态下的动作的任何遗憾值。在一些实施例中,在第t次迭代中参与方在该状态下的动作的增量策略是根据式(8)基于在第(t-1)次迭代中参与方在该状态下的动作的遗憾值来计算的,而不是第(t-1)次迭代之前的任何迭代中参与方在该状态下的动作的任何遗憾值。例如,在第t次迭代中参与方在该状态下的动作的增量策略是根据以下式基于在第(t-1)次迭代中参与方在该状态下的动作的遗憾值来计算的,而不是第(t-1)次迭代之前的任何迭代中参与方在该状态下的动作的任何遗憾值:
[0094][0095]
其中,a表示动作,i
i
表示参与方的状态,表示在第t次迭代中参与方在该状态下的动作的增量策略,表示在第(t-1)次迭代中参与方在该状态下的动作的遗憾值,|a(i
i
)|表示参与方在该状态下的总可用动作的数量。
[0096]
在412,在第t次迭代中参与方在该状态下的动作的迭代策略基于在第(t-1)次迭代中参与方在该状态下的动作的迭代策略和在第t次迭代中参与方在该状态下的动作的增量策略的加权和来计算。例如,在第t次迭代中参与方在该状态下的动作的迭代策略是根据式(9)基于在第(t-1)次迭代中参与方在该状态下的动作的迭代策略和在第t次迭代中参与方在该状态下的动作的增量策略的加权和来计算的。在一些实施例中,在第(t-1)次迭代中参与方在该状态下的动作的迭代策略和在第t次迭代中参与方在该状态下的动作的增量策略的加权和包括:由第t次迭代中的第一学习率缩放(scale)的在第(t-1)次迭代中参与方在该状态下的动作的迭代策略和由第t次迭代中的第二学习率缩放的在第t次迭代中参与方在该状态下的动作的增量策略的总和。当t接近无穷大时,第一学习率接近1;当t接近无穷大时,第二学习率接近0。在一些实施例中,第一学习率为(t-1)/t,第二学习率为1/t。
[0097]
在414,第t次迭代中参与方在该状态下的动作的迭代策略被存储,例如,用以计算第(t+1)次迭代中参与方在该状态下的动作的迭代策略。在一些实施例中,第t次迭代中参
与方在该状态下的动作的迭代策略可被存储在存储器中(例如,在存储器中的表格中或者其他数据结构中)。在一些实施例中,在第t次迭代中参与方在该状态下的动作的迭代策略可以被神经网络存储。例如,神经网络可被用以学习在第t次迭代中参与方在该状态下的动作的迭代策略,例如,用以预测第(t+1)次迭代中参与方在该状态下的动作的迭代策略。在一些实施例中,相比于原始cfr,流式cfr算法只需要一半的存储大小或单个神经网络而不是双神经网络来跟踪关键信息,同时收敛到原始cfr产生的可比较结果。
[0098]
在416,响应于确定收敛条件得到满足,第t次迭代中参与方在该状态下的动作的迭代策略被输出。在一些实施例中,在第t次迭代中参与方在该状态下的动作的迭代策略可以被用以近似纳什均衡并且用作cfr算法的输出。在一些实施例中,参与方在该状态下的动作的迭代策略可以包括由iig建模的现实场景中玩家的一系列动作。例如,在协作产品服务推荐场景中,参与方在该状态下的动作的迭代策略可以包括,例如,响应于由第二玩家提供的信息的一系列动作,基于第一玩家的信息的、给客户的相应产品服务推荐,以及由第二玩家提供的信息。参与方在该状态下的动作的迭代策略可以包括由iig建模的其他现实场景中的其他信息。
[0099]
图5是示出根据本文的实施例的在部分博弈树上应用原始cfr算法和虚拟cfr算法的示例500a和500b的图示。在示例500a和500b中,部分博弈树包括节点0、1、2、......和7,其中节点0是根节点,节点6和7是叶节点。节点i对应于信息集i
i

[0100]
示例500a示出了原始cfr算法的cfv更新处理。在每次迭代中,原始cfr需要维护当前策略,并使用当前策略生成cfv(例如,根据式(1)或(11)),并使用遗憾匹配算法(例如,根据式(5))计算下一次迭代的当前策略。所有迭代处理的当前策略的加权平均值可以收敛到纳什均衡。
[0101]
示例500b示出了虚拟cfr算法的fcfv更新处理。在一些实施例中,在每次迭代中,虚拟cfr算法可以遍历整个博弈树,并且使用自下而上的处理来更新树的每个节点的cfv。例如,如500b所示,由于节点6和节点7是叶节点,因此它们的cfv可以被认为是它们各自的fcfv。对于节点5,可以基于策略σ
t
,例如,根据v(i5)=∑
a
v(a|i5)σ(a|i5)=v(a6|i5)σ
t
(a6|i5)+v(a7|i5)σ
t
(a7|i5),计算节点5的cfv,v(i5),其中,v(a6|i5)是导致节点6的动作a6的cfv,而v(a7|i5)是导致节点7的动作a7的cfv。
[0102]
可以基于节点5的cfv,v(i5),计算节点5的遗憾值。例如,可以根据r(a6|i5)=v(a6|i5)-v(i5)来计算在节点5的状态下动作a6的遗憾值。同样,可以根据r(a7|i5)=v(a6|i5)-v(i5)来计算节点5的状态下动作a7的遗憾值。
[0103]
基于节点5的遗憾值,例如,可以根据式(8)中所示的流式cfr算法的遗憾匹配,来计算节点5处的两个动作a6和a7的增量策略。在一些实施例中,节点5处的两个动作a6和a7的增量策略可以被表示为f
t+1
(a6|i5)和f
t+1
(a7|i5),因为增量策略可用于确定下一次迭代(例如,第(t+1)次迭代)中的策略。增量策略可以表示节点5处分别导致节点6和节点7的两个动作a6和a7中的每个动作的概率。
[0104]
可以基于增量策略f
t
,例如,根据,例如,根据来计算节点5的fcfv,节点5的fcfv,可用于替换节点5的cfv,v(i5),即例如,以用于计算节点5的父节
点,即,如500b所示的节点1的fcfv。
[0105]
例如,如500b所示,节点1具有分别导致节点4和节点5的两个动作(表示为a4和a5)。由于节点4是叶节点,因此可以将其cfv视为其fcfv。可以基于更新为节点5的fcfv,的节点5的cfv,v(i5),来计算节点1的遗憾值。例如,可以根据r(a4|i1)=v(a4|i1)-v(i1)来计算节点1的状态下动作a4的遗憾值。同样,可以根据r(a5|i1)=v(a5|i1)-v(i1)来计算节点1的状态下动作a5的遗憾值。
[0106]
基于节点1的遗憾值,节点1处的两个动作a4和a5的增量策略(表示为f
t
(a4|i1)和f
t
(a5|i1)),例如,可根据式(8)所示的流式cfr算法的遗憾匹配来计算。增量策略可以表示节点1处分别导致节点4和节点5的两个动作a4和a5中的每个动作的概率。
[0107]
可以基于增量策略,f
t
,例如,根据v(a4|i1)f
t
(a4|i1)+v(a5|i1)f
t
(a5|i1)来计算节点1的fcfv,节点1的fcfv,可用于替换节点1的cfv,v(i1),例如,以用于计算节点1的父节点,即,如500b所示的节点0的cfv。
[0108]
用于计算博弈树的节点的fcfv的上述自下而上的处理可以继续进行,直到到达根节点为止。在一些实施例中,可以例如通过执行原始cfr、mccfr、流式cfr或cfr算法的任何其他变型来使用节点的fcfv替换它们各自的cfv,以用于确定动作选择方针(例如,策略)。例如,可以将博弈树的节点的fcfv与流式cfr结合使用,其中,可以根据σ
t+1
(a|i
i
)=(1-α)σ
t
(a|i
i
)+αf
t+1
(a|i
i
)基于增量策略f
t
(a|i
i
)来更新下一次迭代中的策略,其中,α是随着t接近无穷大而接近0的学习率。
[0109]
图6是根据本文的实施例的执行虚拟反事实遗憾最小化(cfr)以用于确定软件应用的动作选择方针的处理的示例的流程图。处理600可以是上述关于图5的虚拟cfr算法的示例。
[0110]
在一些实施例中,处理600可以以迭代方式执行,例如,通过执行两次或更多次迭代来执行。在一些实施例中,处理600可以用于自动控制、机器人或任何其他涉及动作选择的应用。在一些实施例中,执行设备可以执行处理600,以生成用于在包括执行设备以及一个或多个其他设备的环境中完成任务(例如寻找纳什均衡)的动作选择方针(例如策略)。在一些实施例中,执行设备可以执行处理600以根据动作选择方针控制执行设备的操作。
[0111]
在一些实施例中执行设备可以包括数据处理装置,例如位于一个或多个位置并根据本文经过适当编程的,由一个或多个电脑组成的系统。例如,图5的计算机系统500经适当编程后,可以执行处理600。执行设备可以与执行方或玩家相关联。执行方或玩家以及一个或多个其他参与方(例如,与一个或多个其他设备相关联的一个或多个其他参与方)可以是环境中的参与者或玩家,例如,用于在执行方与一个或多个其他方之间的策略交互中进行策略搜索。
[0112]
在一些实施例中,环境可以通过涉及两个或更多个玩家的不完美信息博弈(iig)来建模。在一些实施例中,可以执行处理600以求解iig,例如,由受到应用支持的执行方来执行。iig可以表示涉及两个或更多个参与方的一个或多个现实场景,例如资源分配、产品/服务推荐、网络攻击预测和/或预防、交通路线规划、欺诈管理等,各参与方可能对另一参与方的决定有不完全或不完美的信息。例如,iig可以表示至少涉及第一玩家和第二玩家的协作产品服务推荐服务。第一玩家可以是,例如,具有客户(或用户)信息、产品和服务信息、客户的购买历史等的在线零售商。第二玩家可以是,例如,具有客户的社交网络数据的社交网
络平台,拥有客户的财务信息的银行或其他金融机构、汽车经销商或在预测和向该客户推荐产品和服务时可能拥有客户偏好、需求、财务状况、位置等客户信息的任何其他参与方。第一玩家和第二玩家可各自拥有该玩家不想与其他人共享的专有数据。第二玩家只能在不同时间向第一玩家提供部分信息。因此,第一玩家对第二玩家的信息只有有限访问权。在一些实施例中,可以执行处理600以向具有第二参与方的有限信息的参与方作出推荐,利用有限信息计划路线。
[0113]
在602,在第一次迭代,即,t=1迭代中初始化动作选择方针(例如,策略)。在一些实施例中,动作选择方针可以包括或以其他方式指定执行设备从当前状态(例如,状态i)下的多个可能动作中选择一个动作(例如,a
j
)的相应概率(例如,)。当前状态是由执行设备在前一状态下采取的前一动作导致的,并且在执行设备在当前状态下时,多个可能动作中的每个动作如果被执行设备执行,则会导致相应的下一状态。在一些实施例中,状态可以由表示环境的博弈树的节点(例如,具有相应信息集的如500b中所示的节点0~7)表示,并且一个状态(例如,如500b中所示的节点5)下的多个可能动作可以包括导致相应的下一状态(例如,如500b中所示的节点6和节点7)的状态的多个动作(例如,如500b中所示的动作a6和a7)。如500b所示,执行设备的状态(例如,节点5)是由执行设备在前一状态(例如,节点1)下采取的前一动作a5导致的,并且在执行设备在当前状态下(例如,节点5)时,多个可能动作(例如,动作a6和a7)中的每个动作如果被执行设备执行,则会导致相应的下一状态(例如,节点6和7)。
[0114]
在一些实施例中,例如可以基于现有策略、均匀随机策略(例如,基于均匀概率分布的策略)或另一策略(例如,基于不同概率分布的策略)来初始化策略。例如,如果系统从现有的cfr方法(例如,原始cfr或mccfr方法)热启动,则可以根据现有策略分布初始化迭代策略,以克隆现有遗憾和策略。
[0115]
在604处,确定是否满足收敛条件。收敛条件可用于确定是继续还是终止迭代。在一些实施例中,收敛条件可以基于策略σ的可利用性。根据可利用性的定义,可利用性应大于或等于0。越小的可利用性表明越好的策略。也就是,在足够的迭代之后,收敛策略的可利用性应该接近0。例如,在扑克中,当可利用性小于1时,时间平均策略被视为良好的策略,并确定满足收敛条件。在一些实施例中,收敛条件可以基于预定次数的迭代。例如,在小型博弈中,迭代可以由可利用性容易地确定。也就是,如果可利用性足够小,则处理600可以终止。在大型博弈中,可利用性是难以识别的,典型地,可以指定用于迭代的较大参数。在每次迭代之后,可以获得新策略分布,其优于旧策略分布。例如,在大型博弈中,处理600可以在足够次数的迭代之后终止。
[0116]
如果满足收敛条件,则不需要进一步迭代。处理600进行至622,其中当前迭代中的动作选择方针(例如,策略)被输出,例如以根据动作选择方针来控制执行设备的操作。如果收敛条件没有得到满足,则t加1,处理600进行至下一次迭代,其中t>1。
[0117]
在当前迭代(例如,第t次迭代)中,对于执行设备在一个状态下的多个可能动作中的每个动作,在605处,获得当前迭代中的动作选择方针(例如,策略)。
[0118]
在606处,获得针对当前状态下的每个动作的相应的第一奖励。在一些实施例中,针对每个动作的相应的第一奖励表示由该动作带来的有助于完成任务的收益。例如,针对
每个动作的第一奖励可以是每个动作的cfv。在一些实施例中,获得每个动作的相应的第一奖励包括:通过基于前一次迭代中的动作选择方针(例如,策略)遍历表示环境的博弈树来获得每个动作的相应的第一奖励。
[0119]
在一些实施例中,处理600中的每次迭代可以包括用于更新状态的第一奖励的自下而上的处理。例如,处理600可以从终点状态(例如,如500b中所示的叶节点6和节点7)开始并且向上移动到初始状态(例如,如500b中所示的根节点0)。在一些实施例中,对于终点节点,在终点状态下的每个动作的相应的第一奖励可以是终点状态的第一奖励(例如,终点状态z的效用函数u
i
(z)或收益),因为终点状态没有导致任何下一状态的进一步动作。
[0120]
在608,基于各个动作的相应的第一奖励以及当前迭代中的动作选择方针来计算当前状态的第一奖励。在一些实施例中,当前状态的第一奖励表示当前状态带来的有助于完成任务的收益。例如,当前状态的第一奖励可以是当前状态下的cfv。
[0121]
在一些实施例中,基于各个动作的相应的第一奖励以及当前迭代中的动作选择方针来计算当前状态(例如,非终点状态)的第一奖励,包括:例如,根据式(11),基于经在当前迭代中选择各个动作的对应概率加权的各个动作的相应的第一奖励的总和来计算当前状态的第一奖励。
[0122]
例如,如500b中所示,例如,可以根据v(i5)=∑
a
v(a|i5)σ(a|i5)=v(a6|i5)σ
t
(a6|i5)+v(a7|i5)σ
t
(a7|i5),基于动作a6的第一奖励(例如,动作a6的cfv,v(a6|i5))、动作a7的第一奖励(例如,动作a7的cfv,v(a7|i5))以及当前迭代中的动作选择方针σ
t
,诸如,在当前迭代中选择各个动作的概率,来计算当前状态的第一奖励(例如,节点5的cfv,v(i5))。
[0123]
在610,基于动作的相应的第一奖励与当前状态的第一奖励之间的差来计算多个可能动作中每个动作的相应的遗憾值。在一些实施例中,执行设备在状态下的动作的遗憾值表示执行设备在该状态下采取该动作之后的收益或效用与执行设备在该状态下(没有采取该动作)的收益或效用之间的差。例如,如500b中所示,可以根据r(a6|i5)=v(a6|i5)-v(i5)来计算节点5的状态下动作a6的遗憾值。同样,可以根据r(a7|i5)=v(a6|i5)-v(i5)来计算节点5的状态下动作a7的遗憾值。
[0124]
在612,基于当前迭代中每个动作的相应的遗憾值来计算增量动作选择方针。例如,可以根据式(9)将增量动作选择方针用于确定下一次迭代中的动作选择方针(例如,)。增量动作选择方针可以包括或以其他方式指定每个动作的相应概率(例如,)。在一些实施例中,例如,根据式(8),基于当前迭代中每个动作的相应遗憾值而不是当前迭代之前的任何迭代中每个动作的任何遗憾值来计算增量动作选择方针。
[0125]
在614,基于各个动作的相应的第一奖励和增量动作选择方针来计算当前状态的第二奖励,其中,该状态的第二奖励包括下一次迭代中的动作选择方针的部分信息。在一些实施例中,基于每个动作的相应的第一奖励和每个动作的相应概率的加权和来计算执行设备的状态的第二奖励。在一些实施例中,执行设备的状态的第二奖励可以是执行设备的状态下的fcfv。在一些实施例中,可以根据式(10)计算执行设备的状态的第二奖励。例如,如500b中所示,例如可以根据500b中所示,例如可以根据基于每个动作的相应的第一奖励(例如,动
作a6的cfv,v(a6|i5)和动作a7的cfv,v(a7|i5))和每个动作的相应概率(例如,增量策略f
t
)的加权和来计算执行设备的状态的第二奖励(例如,节点5的fcfv,)。
[0126]
在616,将当前状态的第一奖励替换为当前状态的第二奖励。在一些实施例中,将该状态下的第一奖励替换为该状态的第二奖励,以表示由执行设备在前一状态下采取的前一动作的第一奖励,以基于前一状态的第二奖励更新前一状态的第一奖励。例如,如500b中所示,将该状态的第一奖励(例如,节点5的cfv,v(i5))更新为该状态的第二奖励(例如,节点5的fcfv,),以表示由执行设备在前一状态下采取前一动作的第一奖励(例如,在节点1的前一状态下动作a5的cfv,v(a5|i1)),例如,以基于当前状态的第二奖励(例如,节点5的fcfv,)来更新前一状态的第一奖励(例如,节点1的cfv,v(i1))。
[0127]
在一些实施例中,将当前状态的第一奖励替换为当前状态的第二奖励可以简化算法并且提高存储效率,因为不需要分配额外的存储空间即可存储该状态的第二奖励。
[0128]
在618,确定当前状态是否为初始状态。在一些实施例中,这种确定可以用于确定是继续还是终止更新当前迭代中该状态的第一奖励。在一些实施例中,初始状态可以由博弈树的根节点(例如,如500b中所示的节点0)表示。
[0129]
如果当前状态是初始状态,则不需要进一步更新第一奖励。处理600进行至620。如果当前状态不是初始状态,则使用该状态的前一状态(例如,当前节点的父节点,诸如当前节点5的节点1,如500b中所示)来替换当前状态,并且处理600返回至606,以获得前一状态(例如,如500b中所示的节点1)下每个动作(例如,如500b中所示的动作a4和动作a5)的相应的第一奖励。处理600如图6所示进行,例如,通过在608基于前一状态下的每个动作的相应的第一奖励来计算前一状态的第一奖励,在610基于前一状态下的每个动作的相应的第一奖励与前一状态的第一奖励之间的差来计算前一状态下的每个动作的相应的遗憾值,在612基于前一状态下的每个动作的相应的遗憾值来计算前一状态下的每个动作的相应概率,在614基于前一状态下的每个动作的相应的第一奖励和前一状态下的每个动作的相应概率的加权和来计算执行设备的前一状态的第二奖励,以及在616将前一状态的第一奖励更新为前一状态的第二奖励。
[0130]
在620,基于当前状态的第二奖励来确定下一次迭代中的动作选择方针(例如,)。在一些实施例中,确定下一次迭代中的动作选择方针包括基于当前迭代中的动作选择方针(例如,)和增量动作选择方针(例如,或f
t+1
(a|i
i
)),而不是基于当前迭代之前的任何迭代中该设备在该状态下的动作的任何遗憾值,来确定下一次迭代中的动作选择方针。例如,确定下一次迭代中的动作选择方针包括例如,根据式(9),基于当前迭代中的动作选择方针(例如,)和增量动作选择方针(例如,(a|i
i
)或f
t+1
(a|i
i
))的加权和来确定下一次迭代中的动作选择方针。
[0131]
在一些实施例中,如关于500b所讨论的,基于当前状态的第二奖励(例如,节点5的fcfv,)来确定下一次迭代中的动作选择方针包括基于当前状态的第二奖励(例如,节点5的fcfv,)来计算在下一次迭代中从前一状态(例如,节点1)下的多个可能动作中选择前一动作(例如,a5)的概率(例如,)。例如,
其中,(即,在下一次迭代中从前一状态下的多个可能动作中选择前一动作的概率)可以通过以下方式计算:基于当前状态的第二奖励(例如,节点5的fcfv,)来计算前一状态的第一奖励(例如,节点1的cfv);基于前一状态下的前一动作的第一奖励与前一状态的第一奖励之间的差来计算前一动作的遗憾值(例如,r(a5|i4));以及例如,根据式(8),基于前一动作的遗憾值(例如,r(a5|i4))来计算(即,在下一次迭代中从前一状态下的多个可能动作中选择前一动作的概率)。
[0132]
在622处,根据动作选择方针来控制执行设备的各个动作。例如,动作选择方针可以用作软件实现应用的输出,以例如通过基于该动作选择方针从多个可能动作中选择概率最高的动作来自动控制执行设备在每个状态下的动作。例如,环境包括交通路线规划环境,应用支持的执行设备包括计算机辅助车辆,动作选择方针包括用于控制计算机辅助车辆的方向的路线选择方针,并且根据动作选择方针控制执行设备的操作包括根据路线选择方针控制计算机辅助车辆的方向。
[0133]
图7描绘了示出根据本文的实施例的计算机实现的用于提供与所描述的算法、方法、功能、处理、流程和程序相关联的计算功能的系统的示例的框图。图7是示出根据本公开的实施例的计算机实现的用于提供与所描述的算法、方法、功能、处理、流程和程序相关联的计算功能的系统700的示例的框图。在所示的实施例中,系统700包括计算机702和网络730。
[0134]
所示的计算机702旨在包含任何计算设备,例如服务器、台式计算机、膝上型计算机/笔记本计算机、无线数据端口、智能电话、个人数据助理(pda)、平板计算机、这些设备中的一个或多个处理器、另一计算设备或计算设备的组合,包括计算设备的物理或反事实实例、或计算设备的物理或反事实实例的组合。另外,计算机702可以包括输入设备,例如小键盘、键盘、触摸屏,另一输入设备或可以接受用户信息的输入设备的组合,以及传达与计算机702的操作相关联的信息的输出设备,包括图形类型的用户界面(ui)(或gui)或其他ui上的数字数据、视觉、音频、另一种类型的信息或各种类型的信息的组合。
[0135]
计算机702可以在分布式计算系统中充当客户端、网络组件、服务器、数据库的角色或另一持续性设备、另一角色或用于执行本公开中描述的主题的角色的组合。所示的计算机702可通信地与网络730耦接。在一些实施例中,计算机702的一个或多个组件可以被配置为在包括基于云计算的环境、本地环境、全局环境、另一环境或环境组合的环境中操作。
[0136]
在高级别上,计算机702是可操作用于接收、发送、处理、存储或管理与所描述的主题相关联的数据和信息的电子计算设备。根据一些实施例,计算机702还可包括服务器或与服务器可通信地耦接,包括应用服务器、电子邮件服务器、网络服务器、高速缓存服务器、流数据服务器、另一服务器或服务器的组合。
[0137]
计算机702可以通过网络730(例如,来自另一计算机702上执行的客户端软件应用)接收请求,并通过使用软件应用或软件应用的组合处理接收的请求来响应接收的请求。另外,还可以从内部用户(例如,从命令控制台或通过另一内部访问方法)、外部或第三方或者其他实体、个人、系统或计算机向计算机702发送请求。
[0138]
计算机702的每个组件可以使用系统总线703进行通信。在一些实施例中,计算机702的任何或所有组件,包括硬件、软件或者硬件和软件的组合,可以使用应用编程接口(api)712、服务层713、或者api 712和服务层713的组合通过系统总线703进行接口连接。api 712可以包括用于例程、数据结构和对象类的规范。api 712可以是独立于计算机语言的或依赖于计算机语言的,并且是指完整的接口、单个函数或甚至一组api。服务层713向计算机702或可通信地耦接到计算机702的其他组件(无论是否示出)提供软件服务。使用服务层713的所有服务客户可访问计算机702的功能诸如由服务层713提供的软件服务通过定义的接口提供可重用的、定义的功能。例如,该接口可以是用以java、c++、另一种计算语言、或以可扩展标记语言(xml)格式、另一种格式或多种格式的组合提供数据的计算机语言的组合编写的软件。虽然示出为计算机702的集成组件,但是替代实施例可以将api 712或服务层713示出为与计算机702的其他组件有关的独立组件或可通信地耦接到计算机702的其他组件(无论是否示出)。此外,在不脱离本公开的范围的情况下,api 712或服务层713的任何或所有部分可以被实现为另一软件模块、企业应用或硬件模块的子模块(a child or a sub-module)。
[0139]
计算机702包括接口704。尽管示出为单个接口704,但是可以根据计算机702的特定需要、期望或特定实施例使用两个或更多个接口704。接口704被计算机702用来与在分布式环境中通信地链接到网络730的另一计算系统(无论是否示出)进行通信。通常,接口704可操作地与网络730通信,并且包括以软件、硬件或者软件和硬件的组合编码的逻辑。更具体地说,接口704可以包括支持与通信相关联的一个或多个通信协议的软件,以使得网络730或接口704的硬件可操作地在所示计算机702之内和所示计算机702之外通信物理信号。
[0140]
计算机702包括处理器705。尽管示出为单个处理器705,但是可以根据计算机702的特定需要、期望或特定实施例使用两个或更多个处理器705。通常,处理器705执行指令并操纵数据以执行计算机702的操作以及本公开中所描述的任何算法、方法、功能、处理、流程和程序。
[0141]
计算机702还包括数据库706,该数据库706可以保存用于计算机702的数据、通信地链接到网络730的另一组件(无论是否示出)的数据、或者计算机702和另一组件的组合的数据。例如,数据库706可以是存储与本公开一致的存储数据的内存、常规数据库或另一类型的数据库。在一些实施例中,根据计算机702的特定需要、期望或特定实施例以及所描述的功能,数据库706可以是两个或更多个不同数据库类型的组合(例如,混合内存和常规数据库)。尽管被示为单个数据库706,但是可以根据计算机702的特定需求、期望或特定实施例以及所描述的功能来使用相似或不同类型的两个或更多个数据库。尽管数据库706被示为计算机702的集成组件,但在替代实施例中,数据库706可以在计算机702的外部。作为示例,数据库706可以包括上述cfr算法的策略716。
[0142]
计算机702还包括存储器707,该存储器707可以保存用于计算机702的数据、通信地链接到网络730的另一组件(无论是否示出)的数据、或者计算机702和另一组件的组合的数据。存储器707可以存储与本公开一致的任何数据。在一些实施例中,根据计算机702的特定需要、期望或特定实施例以及所描述的功能,存储器707可以是两种或更多种不同类型的存储器的组合(例如,半导体和磁存储设备的组合)。尽管被示为单个存储器707,但是可以根据计算机702的特定需求、期望或特定实施例以及所描述的功能来使用相似或不同类型
的两个或更多个存储器707。尽管存储器707被示为计算机702的集成组件,但在替代实施例中,存储器707可以在计算机702的外部。
[0143]
应用708是算法软件引擎,其提供根据计算机702的特定需要、期望或特定实施例的功能,特别是关于本公开中描述的功能。例如,应用708可以用作一个或多个组件、模块或应用。此外,尽管被示为单个应用708,但是应用708可以被实现为计算机702上的多个应用708。另外,尽管被示为与计算机702集成,但是在替代实施例中,应用708可以在计算机702的外部。
[0144]
计算机702还可以包括电源714。电源714可包括可被配置为用户可更换的可充电电池或用户不可更换的不可充电电池。在一些实施例中,电源714可以包括功率转换或管理电路(包括充电、备用或另一电源管理功能)。在一些实施例中,电源714可以包括电源插头,以允许将计算机702插入壁式插座或另一电源中,从而例如为计算机702供电或为可充电电池充电。
[0145]
可以存在与包含计算机702的计算机系统关联或在其外部的任何数量的计算机702,每个计算机702通过网络730进行通信。此外,在不脱离本公开的范围的情况下,术语“客户端”、“用户”或其他适当的术语可以适当地互换使用。此外,本公开预期许多用户可以使用一个计算机702,或者一个用户可以使用多个计算机702。
[0146]
图8是根据本文的实施例的装置800的模块的示例的图示。在一些实施例中,装置800可以执行计算机实现的方法,以供执行设备生成用于在包括执行设备以及一个或多个其他设备的环境中完成任务的动作选择方针。在一些实施例中,该方法用表示不完美信息博弈(iig)的数据来表示环境、参与方的可能动作以及应用可获得的关于其他参与方的不完美信息,其中,应用通过以迭代的方式(例如,通过执行两次或更多次迭代)执行反事实遗憾最小化(cfr)以在参与方之间的策略交互中进行策略搜索来确定可操作输出。
[0147]
装置800可以对应于上述实施例,装置800包括:第一获得模块801,用于在多次迭代中的当前迭代,获得动作选择方针,其中,动作选择方针指定执行设备从当前状态下的多个可能动作中选择一个动作的相应概率,其中,当前状态是由执行设备在前一状态下采取的前一动作导致的,并且当执行设备在当前状态下时,多个可能动作中的每个动作如果被执行设备执行,则会导致相应的下一状态;第二获得模块802,用于获得当前状态下每个动作的相应的第一奖励,其中,每个动作的相应的第一奖励表示由该动作带来的有助于完成任务的收益;第一计算模块803,用于基于各个动作的相应的第一奖励和当前迭代中的动作选择方针来计算当前状态的第一奖励,其中,当前状态的第一奖励表示由当前状态带来的有助于完成任务的收益;第二计算模块804,用于基于动作的相应的第一奖励与当前状态的第一奖励之间的差来计算多个可能动作中的每个动作的相应遗憾值;第三计算模块805,用于基于当前迭代中每个动作的相应遗憾值而不是当前迭代之前的任何迭代中每个动作的任何遗憾值来计算增量动作选择方针,其中,增量动作选择方针用于确定下一次迭代中的动作选择方针;第四计算模块806,用于基于各个动作的相应的第一奖励和增量动作选择方针来计算当前状态的第二奖励,其中,该状态的第二奖励包括下一次迭代中的动作选择方针的部分信息;确定模块808,用于基于当前状态的第二奖励确定下一次迭代中的动作选择方针;以及控制模块809,用于根据动作选择方针来控制执行设备的各个动作。
[0148]
在可选实施例中,其中,获得每个动作的相应的第一奖励包括:通过基于前一次迭
代中的动作选择方针遍历表示环境的博弈树来获得每个动作的相应的第一奖励。
[0149]
在可选实施例中,其中,基于各个动作的相应的第一奖励以及当前迭代中的动作选择方针来计算当前状态的第一奖励包括:基于经在当前迭代中选择各个动作的对应概率加权的各个动作的相应的第一奖励的总和来计算当前状态的第一奖励。
[0150]
在可选实施例中,其中,确定下一次迭代中的动作选择方针包括:基于当前迭代中的动作选择方针和增量动作选择方针的加权和来确定下一次迭代中的动作选择方针。
[0151]
在可选实施例中,装置800还包括替换模块807,用于将当前状态的第一奖励替换为当前状态的第二奖励。
[0152]
在可选实施例中,其中,基于当前状态的第二奖励来确定下一次迭代中的动作选择方针包括:基于当前状态的第二奖励来计算在下一次迭代中从前一状态下的多个可能动作中选择前一动作的概率。
[0153]
在可选实施例中,其中,基于当前状态的第二奖励来计算在下一次迭代中从前一状态下的多个可能动作中选择前一动作的概率包括:基于当前状态的第二奖励来计算前一状态的第一奖励;基于前一状态下的前一动作的第一奖励与前一状态的第二奖励之间的差来计算前一动作的遗憾值;以及基于前一动作的遗憾值来计算在下一次迭代中从前一状态下的多个可能动作中选择前一动作的概率。
[0154]
在可选实施例中,其中:环境包括交通路线规划环境,应用支持的执行设备包括计算机辅助车辆,动作选择方针包括用于控制计算机辅助车辆的方向的路线选择方针,并且根据动作选择方针控制执行设备的操作包括根据路线选择方针控制计算机辅助车辆的方向。
[0155]
在先前实施例中所示的系统、装置、模块或单元可以通过使用计算机芯片或实体来实现,或者可以通过使用具有特定功能的产品来实现。典型实施例设备是计算机,计算机可以是个人计算机、膝上型计算机、蜂窝电话、摄像电话、智能手机、个人数字助理、媒体播放器、导航设备、电子邮件收发设备、游戏机、平板电脑、可穿戴设备,或这些设备的任何组合。
[0156]
对于装置中每个模块的功能和作用的实施过程,可以参考前述方法中相应步骤的实施过程。为了简单起见,这里省略了细节。
[0157]
由于装置实施例基本上对应于方法实施例,因此对于相关部分,可以参考方法实施例中的相关描述。前面描述的装置实施例仅仅是示例。被描述为独立部分的模块可以是物理上独立的或者不是物理上独立的,显示为模块的部分可以是物理模块或者不是物理模块,可以位于一个位置,或者可以分布在多个网络模块上。部分或全部模块可基于实际需求来选择,以达到本文的解决方案的目的。本领域的普通技术人员无需创造性的努力即可理解和实现本申请的实施例。
[0158]
再次参考图8,图8可被解释为示出数据处理装置的内部功能模块和结构,该数据处理装置用于为软件实现应用生成动作选择方针,该软件实现应用在包括由应用支持的执行方以及一个或多个其他参与方的环境中执行动作。执行主体本质上可以是电子设备,电子设备包括以下:一个或多个处理器以及存储器,该存储器被配置成存储一个或多个处理器的可执行指令。
[0159]
本文中描述的技术产生一种或多种技术效果。在一些实施例中,所描述的技术可
以由执行设备执行,以生成动作选择方针,从而在包括执行设备以及一个或多个其他设备的环境中完成任务。在一些实施例中,所描述的技术可以确定软件实现应用的动作选择方针,该软件实现应用在包括由应用支持的执行方以及一个或多个其他参与方的环境中执行动作。在一些实施例中,所描述的技术可被用于自动控制、机器人或涉及动作选择的任何其他应用中。
[0160]
在一些实施例中,所描述的技术可以帮助以更有效的方式找到例如资源分配、产品/服务推荐、网络攻击预测和/或预防、交通路线规划、欺诈管理等的现实场景的更好策略,所述策略可以由各参与方之间的策略交互(例如,涉及两个或更多个参与方的iig)来建模或表示。
[0161]
在一些实施例中,所描述的技术可以提高反事实遗憾最小化(cfr)算法在寻找纳什均衡以求解表示一个或多个现实场景的博弈时的收敛速度。在一些实施例中,所描述的技术可以在寻找由iig建模的现实场景的最佳策略时提高计算效率并减少cfr算法的计算负荷,例如,在针对cfr算法的每次迭代更新策略和遗憾值时,通过使用增量策略,而不是累计遗憾或平均策略。
[0162]
在一些实施例中,所公开的流式cfr算法和虚拟cfr算法可以节省存储空间。例如,所公开的流式cfr算法和虚拟cfr算法可以仅需要现有cfr算法所需的存储空间的量的一半,同时收敛到由原始cfr产生的可比较结果。公开的流式cfr算法和虚拟cfr算法可以被用于大型博弈,即使有存储限制。
[0163]
在一些实施例中,与原始cfr算法相比,所公开的虚拟cfr算法可以提供更快的收敛。例如,虚拟cfr算法可以通过fcfv来利用在当前迭代中基于cfv计算的更新后的增量策略的优势,而无需等到下一次迭代。这样,虚拟cfr算法可以比原始cfr算法更快地实现收敛。
[0164]
所描述的主题的实施例可以单独地或组合地包括一个或多个特征。
[0165]
例如,在第一实施例中,一种执行设备的计算机实现的方法,用于生成动作选择方针,以在包括执行设备以及一个或多个其他设备的环境中完成任务。该方法包括:在多次迭代中的当前迭代,获得当前迭代中的动作选择方针,其中,动作选择方针指定执行设备从当前状态下的多个可能动作中选择一个动作的相应概率,其中,当前状态是由执行设备在前一状态下采取的前一动作导致的,并且当执行设备在当前状态下时,多个可能动作中的每个动作如果被执行设备执行,则会导致相应的下一状态;获得当前状态下每个动作的相应的第一奖励,其中,每个动作的相应的第一奖励表示由该动作带来的有助于完成任务的收益;基于各个动作的相应的第一奖励和当前迭代中的动作选择方针来计算当前状态的第一奖励,其中,当前状态的第一奖励表示由当前状态带来的有助于完成任务的收益;基于动作的相应的第一奖励与当前状态的第一奖励之间的差来计算多个可能动作中的每个动作的相应遗憾值;基于当前迭代中每个动作的相应遗憾值而不是当前迭代之前的任何迭代中每个动作的任何遗憾值来计算增量动作选择方针,其中,增量动作选择方针用于确定下一次迭代中的动作选择方针;基于各个动作的相应的第一奖励和增量动作选择方针来计算当前状态的第二奖励,其中,该状态的第二奖励包括下一次迭代中的动作选择方针的部分信息;基于当前状态的第二奖励确定下一次迭代中的动作选择方针;以及根据动作选择方针来控制执行设备的各个动作。
[0166]
上述和其他所描述的实施例可以各自可选地包括一个或多个以下特征:
[0167]
第一特征,与以下特征中的任一个特征可组合的,其中,获得每个动作的相应的第一奖励包括:通过基于前一次迭代中的动作选择方针遍历表示环境的博弈树来获得每个动作的相应的第一奖励。
[0168]
第二特征,与以下特征中的任一个特征可组合的,其中,基于各个动作的相应的第一奖励以及当前迭代中的动作选择方针来计算当前状态的第一奖励包括:基于经在当前迭代中选择各个动作的对应概率加权的各个动作的相应的第一奖励的总和来计算当前状态的第一奖励。
[0169]
第三特征,与以下特征中的任一个特征可组合的,其中,确定下一次迭代中的动作选择方针包括:基于当前迭代中的动作选择方针和增量动作选择方针的加权和来确定下一次迭代中的动作选择方针。
[0170]
第四特征,与以下特征中的任一个特征可组合的,还包括将当前状态的第一奖励替换为当前状态的第二奖励。
[0171]
第五特征,与以下特征中的任一个特征可组合的,其中,基于当前状态的第二奖励来确定下一次迭代中的动作选择方针包括:基于当前状态的第二奖励来计算在下一次迭代中从前一状态下的多个可能动作中选择前一动作的概率。
[0172]
第六特征,与以下特征中的任一个特征可组合的,其中,基于当前状态的第二奖励来计算在下一次迭代中从前一状态下的多个可能动作中选择前一动作的概率包括:基于当前状态的第二奖励来计算前一状态的第一奖励;基于前一状态下的前一动作的第一奖励与前一状态的第二奖励之间的差来计算前一动作的遗憾值;以及基于前一动作的遗憾值来计算在下一次迭代中从前一状态下的多个可能动作中选择前一动作的概率。
[0173]
第七特征,与以下特征中的任一个特征可组合的,其中:环境包括交通路线规划环境,应用支持的执行设备包括计算机辅助车辆,动作选择方针包括用于控制计算机辅助车辆的方向的路线选择方针,并且根据动作选择方针控制执行设备的操作包括根据路线选择方针控制计算机辅助车辆的方向。
[0174]
在本文中描述的主题的实施例以及动作和操作可以以数字电子电路、有形实现的计算机软件或固件、计算机硬件(包括本文中公开的结构及其结构等同物)、或者它们中的一个或多个的组合实现。本文中描述的主题的实施例可以实现为一个或多个计算机程序,例如,一个或多个计算机程序指令模块,编码在计算机程序载体上,用于由数据处理装置执行或控制数据处理装置的操作。例如,计算机程序载体可以包括具有编码在其上或者存储在其上的指令的一个或多个计算机存储介质。载体可以是有形的非暂态计算机可读介质,诸如磁盘、磁光盘或者光盘、固态驱动器、随机存储区存储器(ram)、只读存储器(rom)、或者其他类型的介质。可选地或附加地,载体可以是人工生成的传播信号,例如,机器生成的电信号、光信号或电磁信号,其被生成来编码信息用于传输到合适的接收器装置以供数据处理装置执行。计算机存储介质可以是或部分是机器可读存储设备、机器可读存储基板、随机或串行访问存储器设备或它们中的一个或多个的组合。计算机存储介质不是传播信号。
[0175]
计算机程序,也可以被称为或描述为程序、软件、软件应用、应用、模块、软件模块、引擎、脚本或代码,可以以任何形式的编程语言编写,包括编译或演绎性语言、说明或程序性语言;它可以配置为任何形式,包括作为独立程序,或者作为模块、组件、引擎、子程序或
适合在计算环境中执行的其他单元,该环境可包括由数据通信网络互联的在一个或多个位置的一台或多台计算机。
[0176]
计算机程序可以但非必须对应于文件系统中的文件。计算机程序可以存储在:保存其他程序或数据的文件的一部分中,例如,存储在标记语言文档中的一个或多个脚本;专用于所讨论的程序的单个文件;或者多个协调文件,例如,存储一个或多个模块、子程序或代码部分的多个文件。
[0177]
用于执行计算机程序的处理器包括例如通用微处理器和专用微处理器以及任何种类的数字计算机的任一个或多个处理器。通常,处理器将从耦接至该处理器的非暂态计算机可读介质接收用于执行的计算机程序的指令以及数据。
[0178]
术语“数据处理装置”包括用于处理数据的所有类型的装置、设备和机器,包括例如可编程处理器、计算机或者多处理器或计算机。数据处理装置可以包括专用逻辑电路,例如fpga(现场可编程门阵列)、asic(专用集成电路)或gpu(图形处理单元)。除了硬件,该装置还可以包括为计算机程序创建执行环境的代码,例如,构成处理器固件、协议栈、数据库管理系统、操作系统或者它们中的一个或多个的组合的代码。
[0179]
本文中描述的过程和逻辑流程可通过一台或多台计算机或处理器执行一个或多个计算机程序来进行,以通过对输入数据进行运算并生成输出进行操作。过程和逻辑流程也可以由例如fpga、asic、gpu等的专用逻辑电路或专用逻辑电路与一个或多个编程计算机的组合来执行。
[0180]
适合于执行计算机程序的计算机可以基于通用或专用微处理器或者两者,或任何其他种类的中央处理单元。通常,中央处理单元将从只读存储器或随机存取存储器或两者接收指令和数据。计算机的元件可包括用于执行指令的中央处理单元以及用于存储指令和数据的一个或多个存储器设备。中央处理单元和存储器可以补充有专用逻辑电路或集成在专用逻辑电路中。
[0181]
通常,计算机还将包括或可操作地耦接至一个或多个存储设备,以从一个或多个存储设备接收数据或将数据传输到一个或多个存储设备。存储设备可以是例如磁盘、磁光盘或光盘、固态驱动器、或者任何其他类型的非暂态计算机可读介质。但是,计算机不需要具有这样的设备。因此,计算机可以耦接至一个或多个存储设备,诸如本地和/或远程的一个或多个存储器。例如,计算机可以包括作为计算机的组成部件的一个或多个本地存储器,或者计算机可以耦接至处于云网络中的一个或多个远程存储器。此外,计算机可以嵌入在另一个设备中,例如移动电话、个人数字助理(pda)、移动音频或视频播放器、游戏控制台、全球定位系统(gps)接收器或例如通用串行总线(usb)闪存驱动器的便携式存储设备,仅举几例。
[0182]
组件可以通过诸如直接或经由一个或多个中间组件彼此交互性地电连接或光学连接而彼此耦接。如果一个组件集成到另一个组件中,部件也可以耦接至彼此。例如,集成到处理器(例如,l2缓存组件)中的存储组件耦接至处理器。
[0183]
为了提供与用户的交互,本文中描述的主题的实施例可以在计算机上实现或配置为与该计算机通信,该计算机具有:显示设备,例如,lcd(液晶显示器)监视器,用于向用户显示信息;以及输入设备,用户可以通过该输入设备向该计算机提供输入,例如键盘和例如鼠标、轨迹球或触摸板等的指针设备。其他类型的设备也可用于提供与用户的交互;例如,
提供给用户的反馈可以是任何形式的感官反馈,例如视觉反馈、听觉反馈或触觉反馈;并且可以接收来自用户的任何形式的输入,包括声音、语音或触觉输入。此外,计算机可以通过向用户使用的设备发送文档和从用户使用的设备接收文档来与用户交互;例如,通过向用户设备上的web浏览器发送web页面以响应从web浏览器收到的请求,或者通过与例如智能电话或电子平板电脑等的用户设备上运行的应用(app)进行交互。此外,计算机可以通过向个人设备(例如,运行消息应用的智能手机)轮流发送文本消息或其他形式的消息并接收来自用户的响应消息来与用户交互。
[0184]
本文使用与系统、装置和计算机程序组件有关的术语“配置为”。对于被配置为执行特定操作或动作的一个或多个计算机的系统,意味着系统已经在其上安装了在运行中促使该系统执行所述操作或动作的软件、固件、硬件或它们的组合。对于被配置为执行特定操作或动作的一个或多个计算机程序,意味着一个或多个程序包括当被数据处理装置执行时促使该装置执行所述操作或动作的指令。对于被配置为执行特定操作或动作的专用逻辑电路,意味着该电路具有执行所述操作或动作的电子逻辑。
[0185]
虽然本文包含许多具体实施细节,但是这些不应被解释为由权利要求本身限定的对要求保护的范围的限制,而是作为对特定实施例的具体特征的描述。在本文中在多个单独实施例的上下文中描述的多个特定特征也可以在单个实施例中组合地实现。相反,在单个实施例的上下文中描述的各种特征也可以单独地或以任何合适的子组合在多个实施例中实现。此外,尽管上面的特征可以描述为以某些组合起作用并且甚至最初如此要求保护,但是在一些情况下,可以从要求保护的组合中删除来自该组合的一个或多个特征,并且可以要求保护指向子组合或子组合的变体。
[0186]
类似地,虽然以特定顺序在附图中描绘了操作并且在权利要求中叙述了操作,但是这不应该被理解为:为了达到期望的结果,要求以所示的特定顺序或依次执行这些操作,或者要求执行所有示出的操作。在一些情况下,多任务并行处理可能是有利的。此外,上述实施例中的各种系统模块和组件的划分不应被理解为所有实施例中都要求如此划分,而应当理解,所描述的程序组件和系统通常可以一起集成在单个软件产品或者打包成多个软件产品。
[0187]
已经描述了主题的特定实施例。其他实施例在以下权利要求的范围内。例如,权利要求中记载的动作可以以不同的顺序执行并且仍然实现期望的结果。作为一个示例,附图中描绘的过程无需要求所示的特定顺序或次序来实现期望的结果。在一些情况下,多任务和并行处理可能是有利的。
当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1