强化学习读书笔记 - 02 - 多臂老O虎O机问题
强化学习读书笔记 - 02 - 多臂老O虎O机问题
学习笔记:
Reinforcement Learning: An Introduction, Richard S. Sutton and Andrew G. Barto c 2014, 2015, 2016
数学符号的含义
-
通用
\(a\) - 行动(action)。
\(A_t\) - 第t次的行动(select action)。通常指求解的问题。 -
在老O虎O机问题中
\(q_*(a)\) - 行动 a 的真实奖赏(true value)。这个是(实际中)不可知的。期望计算的结果收敛(converge)与它。
\(N_t(a)\) - 在第t次之前,行动a被选择的次数。
\(R_t\) - 第t步的实际奖赏(actual reward)。
\(Q_t(a)\) - 行动 a 在第t次前(不包括第t次)的实际平均奖赏。
\(H_t(a)\) - 对于行动a的学习到的倾向。
\(\epsilon\) - 在ε-贪婪策略中,采用随机行动的概率\([0, 1)\)。
多臂老O虎O机问题
一般的老O虎O机只有一个臂(杆)。你塞10个硬币,拉一下杆,老O虎O机可能会吐出来一两个硬币,或者100个硬币。
多臂老O虎O机有多个杆(象征着多个行动(action),每个杆有自己特有的吐钱逻辑)。
注意:每个杆的吐钱概率可能是固定的(stationary),也可能是不固定的(non-stationary)。不固定在现实中更常见。
多臂老O虎O机问题就是在许多次尝试后,找到一个有效收益的策略。
多臂老O虎O机问题是统计学、工程、心理学的一个经典问题。不要小看了这个问题,很多权威都研究过。
在强化学习方面,我们通过这个问题,可以了解强化学习的基本概念和算法的思路。其中包括:
- 探索(exploration)和采用(exploitation)的权衡
- 贪婪(greedy)
- 收敛(convergence)
- 参数初始化的重要性
- 梯度递减(gradient descent)
(注:梯度递增和梯度递减的意思一样,只是看问题的方向不一样。)
等等。
如何判断算法的好坏
在讨论算法前,我们先考虑判断算法好坏的标准。
-
建立模型
建立一个10臂老O虎O机。
每个臂的真实行动价值\(q_*(a), a = 1, \dots, 10\)是一个符合(平均值=0, 方差=1)的正态分布。
每个臂的每次行动的估值\(R_t(a)\)是一个符合(平均值=\(q_*(a)\), 方差=1)的正态分布。 -
测试标准
- 平均奖赏 - 奖赏越多越好
- 最优行动 - 和实际最优行动一致的比率越大越好
解决方法
行动-价值方法 (action-value method)
在决定第t次的行动\(A_t\)时,使用下面的算法。
- 贪婪方法(greedy method)
总是选择当前取得最大收益的行动。
特点:最大化采用(exploitation)。
算法的过程如下:
初始: \(Q_0(a), a = 1, \cdots, 10\) 都为0;
每个杆(action)都拉一下。 \(Q_0(a), a = 1, \cdots, 10\) 有了新值。
根据当前平均收益最大的杆,当做本次选择的杆。
- ε - 贪婪方法(ε-greedy method)
ε - 读作epsilon。有弹性的意思。
一般情况下选择当前取得最大收益的行动,但是有一定比例ε的行动是随机选择的。
特点:增强了探索(exploration)性。
算法的过程如下:
初始: \(Q_0(a), a = 1, \cdots, 10\) 都为0;
每个杆(action)都拉一下。 \(Q_0(a), a = 1, \cdots, 10\) 有了新值。
根据当前平均收益最大的杆,当做本次选择的杆。
同时根据\(ε\)的值,随机选择一个杆。(比如:\(ε=0.1\),每十次随机选择一个杆)
增值实现(incremental implementation)
如何计算\(Q_t\)。
算法
带权值步长的增值实现(incremental implementation with weighted step size)
一个替代算法。用步长\(\alpha\) 代替$ \frac{1}{t-1}$。
算法
解释
这个算法利于解决非稳定(non-stationary)问题。
非稳定(non-stationary)问题意味着\(q_*(a)\)是会发生变化的。因此,最近几次的奖赏更具代表性。
\(\alpha\)越大,意味着最近奖赏的权重越大。
这里也可以看到梯度计算的影子。
优化初始值(Optimistic initial values)
优化初始值\(Q_1(a)\),如果赋值越大,会鼓励探索。
初始值为0时,ε - 贪婪方法(ε=0.1) 好于 ε - 贪婪方法(ε=0.01) 好于 贪婪方法。
看来冒一定风险还是有好处的。
初始值为5的贪婪方法 好于 ε - 贪婪方法(ε=0.1)。
有钱人更容易成功。
置信上界选择算法 (Upper-Confidence-Bound action selection)
可理解为求每个行动的最大可信值,选择最大可信值最大的行动。
算法
算法理解
这个算法在计算:第t次的行动应该是什么?
我们没有说:“第t次的最优行动应该是什么?”。为什么不说最优呢?
因为,强化学习的目的是总体最优,不是局部最优,因此“第t次的最优行动”不是强化学习最求的目标。
\(c\)是一个可调的参数。我们在理解中不用太关心它,当它是\(1\)好了。
在机器学习中,算法一般都有几个参数可以调节。不同环境中,调节参数最优化可以很大的提高算法的质量。
\(Q_t(a)\) - 行动a当前的奖赏。
\(t\) - 第t次。
\(\log{t}\) - 求t的指数。随着t变大,\(\log{t}\)变大的速度变慢。
\(N_t(a)\) - 行动a被选择的次数。
\(\left [ \sqrt{\frac{\log{t}}{N_t(a)}} \right ]\) - 由于\(\frac{\log{t}}{N_t(a)} < 1 \text{, when x > 7 }\), 求平方根,反而是起了一个放缓、放大的作用。
在没有奖赏的情况下:\(Q_t(a)\) 不变。\(\log{t}\)比\(N_t(a)\)变化的慢,因此总结果会变小。
- 梯度老O虎O机算法 (Gradient Bandit Algorithms)
之前的算法,主要是通过发生的事件,根据行动的估计奖赏,来决定选择哪个行动。
梯度算法是:通过发生的事件,根据行动的倾向\(H_t(a)\),来决定选择哪个行动。
(个人没看出有什么不同)。
softmax是一个激活函数。通常用于输出的概率计算,就是现在看到的例子。
参照
请“推荐”本文!