目录
3.上限置信区间(Upper Confidence Bound,UCB)
1.单一状态蒙特卡洛规划(以多臂赌博机为例)
特点:
-
单一状态,k种行动(既有k个摇臂)
-
在摇臂赌博机问题中,每次以随机采样形式采取一种行动a,好比随机拉动第k个赌博机的臂膀,得到R(s, )的回报
问题:
下一次拉动哪个赌博机的臂膀,才能获得最大回报呢?
多壁赌博机问题是一种序列决策问题,这种问题需要在利用和探索之间选择平衡。
利用:保证在过去决策中得到最大回报
探索:寄希望在未来能够得到更大回报
2.多臂赌博机
如果有k个赌博机,这k个赌博机产生的操作序列为 ,,...(i = 1,...,k) 。在时刻t = 1,2...,选择第 个赌博机后,可得到奖赏 ,则在n次操作 ,..., 后,可如下定义悔值函数
悔值函数表示了如下意思:在第t次对赌博机操作时,假设知道哪个赌博机能够给出最大奖赏(虽然在现实生活中这是不存在的),则将得到的最大奖赏减去实际操作第 个赌博机所得到的奖赏。将n次操作的差值累加起来,就是悔值函数的结果。
很显然,一个良好多臂赌博机操作的策略是在不同人进行了多次玩法后,能够让悔值函数的方差最小。
3.上限置信区间(Upper Confidence Bound,UCB)
在多臂赌博机的研究过程中,上限置信区间(UCB)成为一种较为成功的策略学习方法,因为其在探索-利用之间取得平衡。
在UCB方法中,使 来记录第i个赌博机在过去t-1时刻内的平均奖赏,则在第t时刻,选择使如下具有最佳上限置信区间的赌博机:
其中取值定义如下:
为在过去时刻(初始时刻到t时刻)过程中选择第i个赌博机的次数总和。也就是说,在第t时刻,UCB算法一般会选择具有如下最大值的第j个赌博机:
是第j个赌博机在过去时间内所获得的平均奖赏值, 是过去时间内拉动第j个赌博机臂膀的总次数,n是过去时间内拉动所有赌博机臂膀的总次数。C是一个平衡因子,其决定着在选择时偏重探索还是利用。
从这里可以看出UCB算法如何在探索-利用之间寻找平衡。既需要拉动在过去时间内获得最大平均奖赏的赌博机,又希望去选择拉动臂膀次数最少的赌博机。
4.蒙特卡洛树搜索
蒙特卡洛树搜索是一种将上限置信区间算法UCB应用于游戏树的搜索方法,包括了四个步骤:选举(selection),扩展(expansion),模拟(simulation),反向传播(BackPropagation)
- 选举
从根节点R开始,向下递归选择子节点,直至选择一个叶子节点L。具体来说,通常用UCB(Upper Confidence Bound,上限置信区间)选择最具有"潜力"的后续节点
-
扩展
如果L不是一个终止节点,则随机创建其后的一个未被访问节点,选择该节点作为后续子节点C。
-
模拟
从扩展节点开始,运行一个模拟的输出,直到博弈游戏结束。比如,从该扩展节点出发,模拟了十次,最终胜利九次,那么该扩展节点的得分就会比较高,反之则比较低。这里也给出一个模拟过程的伪代码:
def Rollout(S_i): ## S_i:当前状态 loop forever: ## 无限循环 if S_i a terimal state: ## 如果当前状态是博弈的终止状态 ## 则返回对 S_i 这个状态的价值,跳出循环 return value(S_i) ## 如果还没到终止状态 ## 随机选取当前状态下能够采取的一个动作 A_i = random(available_action(S_i)) ## 通过当前状态 S_i 与随机选取的动作 A_i 来计算出下一步的状态并赋值给 S_i S_i = transform(A_i, S_i)
-
回溯
使用第三步模拟的结果,反响传播以更新当前动作序列。
5.蒙特卡洛树搜索示例
(1)初始化
最初有一个根节点 ,树中每个节点都有两个值,节点的价值T和该节点的访问次数N。
(2)第一次迭代
节点 为根节点也是叶节点,并且不是终止节点,因此对其进行扩展。假设 后有两个策略,转移后分别为 和
随后,可以使用 UCB 公式来选择对 扩展还是 扩展。这里 与 均为0,因此两个节点的UCB值都是无穷大,因此选哪个节点都可以,假设这里选择进行模拟,模拟后,发现最终值为20,于是回溯更新,此时 。
(3)第二次迭代
从出发进行选择,此时的UCB值已经不是无穷大了,而 的UCB值仍是无穷大,因此选择 进行扩展。到了 后发现 为叶子节点,并且没有被探索过,因此对其进行模拟。模拟的结果假设为10,那么进行回溯,则 。
4)第三次迭代
从出发进行选择,计算和 的UCB值,选择较大的进行扩展。
因此,选择 进行扩展。到了后,发现它是叶节点,并且已经被探索过,那么就枚举出当前节点的所有可能的动作,并添加到树中。然后就像之前一样,随机选择或者进行扩展,以此类推。