上一次的强化学习简介中我们提到了强化学习是一种试错学习,没有直接的指导信息,需要用户不断地与环境进行交互,通过试错的方式获得最佳策略。这一节我们将从一个简单的单步强化学习模型进行进一步理解。
K摇臂赌博机简介
K-armed Bandit(也叫Multi-Armed Bandit)是赌场里的一种赌具。如下图所示:
游戏设定:有K个摇臂,投币后摇动任一摇臂,会有一定的概率吐出金币。每个摇臂的吐币概率和数量有所不同。
目标:在有限的摇臂次数下,使得获得的金币累积奖励最大。
两种简单思路:
由于总的摇臂次数是有限的,所以“利用”和“探索”之间是存在矛盾的,这就是强化学习中所面临的“探索—利用窘境” (Exploration-Exploitation Dilemma)。所以,想要最后得到最多的累积金币,我们需要在“利用”和“探索”之间寻找一个平衡。
ε-贪心算法
可以从图中看出,ε-贪心算法的最终表现相对greedy算法更好。在利用的过程中探索可以提高智能体识别最佳行为的机会。
UCB(Upper-Confidence-Bound)算法
总体来说,在这问题上UCB相对表现更好。但UCB方法相对存在局限性,在处理不稳定问题(奖励概率随时间变化)以及状态空间很大的情况时,UCB动作选择通常是不实用的(我们后面介绍的函数近似中提到)。
上述的两种方法是按照估算行动对应奖励并使用这些估算值来选择行动的方法。下面将介绍两种按照概率选择行动的方法。
Soft-max方法
Gradient-Bandit算法
同样是通过概率选择行为,可以看作Soft-max算法的变形。表示在第t步选择行为a的概率。表示对行为a的偏好,偏好越大,采取行动a的次数越多。
在每个步骤中,在选择动作并接收奖励之后,动作偏好被更新。,表示时间t内时行为的平均奖励;,为步长参数。
小结
本文介绍了四种简单的平衡探索和利用的方法。那么问题来了,这些方法中哪个最好呢?实际上很难说哪个方法最优,对比的难点在于参数。下图显示了每种算法和参数设置随时间学习的过程,即参数学习。
可以看出,所有算法在其参数的中间值上表现最佳,然而我们不仅应该评估其在最优参数下的表现,还要看其对参数的敏感度。所有这些算法对参数值都相当不敏感,在一系列参数值上表现良好,这些参数值变化大约一个数量级。总的来说,在这个问题上,UCB策略表现最佳。
参考:
[1]R.Sutton et al. Reinforcement learning:An introduction,1998
[2]https://blog.csdn.net/lanlian123/article/details/79180324
[3]https://blog.csdn.net/antkillerfarm/article/details/79441890
转载自 | 公众号 老薛带你学Python
还有更多算法学习课件分享哟