用马里奥推导RL基础理论
AI摘要: 本文通过马里奥游戏实例,深入浅出地介绍了强化学习(RL)的基础理论,包括策略函数、价值函数、优势函数等核心概念。详细阐述了蒙特卡洛方法和时间差分方法在策略优化中的应用,并探讨了PPO算法如何解决训练不稳定的问题。
基础定义
-
: 在状态下,做出策略的概率分布,这就是一个策略函数,采样选择策略;在马里奥游戏中,就是只当前状态下,是选择左右移动还是选择跳;
-
: 价值函数,指在状态下,之后所能累计取得收益的期望;在游戏中,指当前位置下,到游戏结束,所能拿到的分数总和;
-
On Policy: 在收集数据的同时优化当前策略。在游戏中,指当前游戏还没结束,就开始根据历史分数奖励优化策略;
-
Off Policy:在收集完整的一组数据后才开始优化策略。在游戏中,就是指一定要玩完一整局游戏,拿到最终的分数之后,才把历史数据汇总,优化策略;
-
优势函数:: 表示在状态下采用策略,进入下一个状态后,未来所能累计取得的收益的期望,那么明显,如果当前采取的策略,比当前状态的平均未来收益更高,那就是个好策略。比如,马里奥的头顶有个金币,选择跳能在未来提供更多分数,选择不跳就错过了,未来分数就少,那肯定是跳更好。
RL的所有理论推导,都在围绕一件事,如何优化策略函数,让在每个状态都能选择对未来最有利的策略。
假如存在全知全能的价值函数, 知道每个状态下的价值,那就好办了,在当前状态下,遍历所有可能的策略,看哪个策略进入的下一个状态,所能带来的优势增量最多就好了。可惜,是很难直接定义的, 每人可以预知未来。
蒙特卡洛方法
基于蒙特卡洛方法进行RL训练,就是希望找到一个策略,可以最大化奖励分数。
在S状态下,采用a动作后,未来所能获得的收益分数的总和:
在马里奥玩完一整局游戏后,得到序列 ,游戏的每一时刻的奖励都记录在案,那么某一状态下的未来累计收益期望也就好算了:
下面就是用蒙特卡洛方法来优化策略函数了:
解释:
- 原来的是预估出来的,预估未来能拿到这么多的累计收益;
- 是游戏结束后,真真实实算出来的,在状态,采用动作,未来拿到的累计收益
- 那么按照差值去更新,拟合真实值就好啦
- 为学习步长
这样就完成了一次策略函数的更新。那么下一步呢?再玩一局马里奥,再拿到一轮的序列和每一个过程的分数。
不过,为了保证模型不陷入局部最优解,可以考虑让马里奥再状态下,按照 的概率取最大值,确保可以有一定概率尝试新动作。
时间差分方法
蒙特卡洛方法虽好,但是玩一整局游戏才能训练一次,在大型游戏中,玩完一局不知道要耗时多久,所以希望有一种方式,在游戏中,就能根据历史状态序列进行策略函数的优化,这里就是时间差分。
一样滴,也是希望找到一个能够使能够最大
更新策略:
训练过程:在状态, 采用动作, 获取奖励, 进入下一个状态, 那么就能对进行更新
注意:都是随机初始化的,但即使是随机初始化的,用来更新也是合理的,在足够长时间的训练,的更新是依赖真是环境的奖励函数和状态转移概率的,是可以收敛的。
更严谨的证明是贝尔曼期望方程的递归性质,由于这个推导复杂了,这里就不再深入。
在训练一轮完成后,下一轮采样动作的时候,依然和蒙特卡洛方法类似,需要进行贪心策略,确保仍然有机会探索新策略
PPO(Proximal Policy Optimization)
在解决了训练慢的问题,RL的训练依然存在很多其他问题,比如训练不稳定,策略梯度更新过大时,就很容易让模型策略崩塌,从一个极端走向另外一个极端。举个例子,马里奥发现不动就不会死,干脆直接摆烂,这样分数至少不是负数。
现象理解了,那么解决办法也就浮出水面了,限制策略函数的更新幅度,步子不能太大,那么可以采用KL散度来量化两个分布的差异,限制到一定范围即可。
推导: