强化学习应用场景与主流算法

本文已参与「新人创作礼」活动,一起开启掘金创作之路。

什么是强化学习

与监督学习和无监督学习一样,强化学习并不是某一种特定的算法,而是一类算法的统称。代理、目标、环境、动作、奖励。代理执行的角色,代理需要根据环境状态来采取动作以获得奖励,最后达成目标。

强化学习和监督学习、无监督学习最大不同就是:不需要大量的数据集,而是通过自己不停的尝试来学会某些技能。

应用场景

强化学习目前还不成熟,应用场景比较局限,主要是游戏。比如AIphaGo Zero就是下围棋的,AIphaStar是打《星际争霸2》的。OpenAI是打《Dota2》的。

强化学习主流算法

Model-Free(免模型)和Model-Based(有模型)。这是强化学习算法的2大类。有模型是对环境有提前的认知,可以提前考虑规划,但是缺点是如果模型跟真实世界不一致,那么在实际使用场景下会表现的不好。

免模型则放弃模型学习,在效率上不如有模型,但这种方式更加容易实现,也容易在真实场景下调整到很好的状态。免模型更受欢迎,得到了更广泛的开发和测试。

image.png

可以看到,免模型主要分2大类:策略优化和Q学习。

Model-Free 策略优化

这个系列的方法将策略表示为: π θ ( a s ) \pi_\theta(a|s) 。它们直接对性能目标 J ( π θ ) J(\pi_\theta) 进行梯度下降优化,或者间接地对性能目标局部近似函数进行优化。优化基于同策略,即每一步更新只会用最新的策略执行时采集到的数据。策略优化还包括学习出 V ϕ ( s ) V_\phi(s) ,作为 V π ( s ) V^\pi(s) 的近似,该函数用于确定如何更新策略。

  • A2C/A3C,通过梯度下降直接最大化性能
  • PPO,不直接最大化性能更新,而是最大化“目标估计”函数,该函数是目标函数 J ( π θ ) J(\pi_\theta) 的近似估计。

Q-Learning

该系列的算法学习最优行动值函数 Q ( s , a ) Q^* (s,a) 的近似函数: Q θ ( s , a ) Q_\theta (s,a) 。它们通常使用基于贝尔曼方程的目标函数。优化过程属于异策略,意味着每次更新可以使用任意时间点的训练数据,不管获取数据时智能体选择如何探索环境。对应的策略是通过 Q Q^* π \pi^* 之间的联系得到的。智能体的行动由下面的式子给出: a ( s ) = a r g m a x a Q θ ( s , a ) a(s)=arg\,\underset{a}{max}\,Q_\theta (s,a)

基于Q-Learning的方法:

  • DQN:一个让深度强化学习得到发展的经典方法
  • C51:学习关于回报的分布函数,期望是 Q Q^*

有模型学习——纯规划

这种最基础的方法,从来不显示的表示策略,而是纯使用规划技术来选择行动,例如 模型预测控制 (model-predictive control, MPC)。在模型预测控制中,智能体每次观察环境的时候,都会计算得到一个对于当前模型最优的规划,这里的规划指的是未来一个固定时间段内,智能体会采取的所有行动(通过学习值函数,规划算法可能会考虑到超出范围的未来奖励)。智能体先执行规划的第一个行动,然后立即舍弃规划的剩余部分。每次准备和环境进行互动时,它会计算出一个新的规划,从而避免执行小于规划范围的规划给出的行动。

有模型学习 – Expert Iteration 纯规划的后来之作,使用、学习策略的显示表示形式 [公式] 。智能体在模型中应用了一种规划算法,类似蒙特卡洛树搜索(Monte Carlo Tree Search),通过对当前策略进行采样生成规划的候选行为。这种算法得到的行动比策略本身生成的要好,所以相对于策略来说,它是“专家”。随后更新策略,以产生更类似于规划算法输出的行动。

至于为什么强化学习没有深度学习那么流行,我个人认为在很多现实场景中,强化学习不是唯一的解决办法,很多问题都可以用强化学习之外的方法去解决。另一方面,强化学习本身还有很多问题没有解决,例如,sample Efficiency,reward function如何定义,exploration-exploitation,可能会过度适应环境中的怪异模型导致generalization差等等问题,这些问题可能导致强化学习在现实任务中很难work。

猜你喜欢

转载自juejin.im/post/7088675537798823967