强化学习是机器学习的一个重要研究方向,强化学习就是让机器人和环境进行交互,环境通过给机器的每一个动作打分,让机器人根据每一个动作的分数,进行重复的尝试,学习,累计经验。目的是通过和环境的交互找到一组状态动作对的序列(机器人在此序列上累计分数最高)。
强化学习的基本分类
Model-free 和 Model-based
Model-free | Model-based |
---|---|
无模型的就是不理解环境 | 有模型的就是理解环境 |
Moder-free就是机器人不知道下一步采取那个动作,也不知道才会那个动作会反馈怎么的分数,只能根据具体不断低反馈进行学习;而Model-based是机器人可以根据模型预判下一步采取那个动作可以得到较高的分数,而不用通过不断的尝试进行学习。
基于概率 和 基于价值
基于概率(policy-based) | 基于价值(value-based) |
---|---|
每个动作对应一个概率(通过概率选取当前状态下的动作) | 每个动作对应一个价值 (选取当前状态下下对应最大价值的动作) |
连续的动作 | 离散的动作 |
基于概率的强化学习是机器人通过概率选取当前状态下的动作,不一定是选取最高概率对应的动作,只是最大概率对应的动作选取到的概率最大,对应的RL算法有 Policy Gradients 等;基于价值的的强化学习是机器人直接选取当前状态对应最大值对应的动作,对应的RL算法有 Q learning, Sarsa 等。最为厉害的有两个模型组合的算法 Actor-Critic, actor 会基于概率做出动作, 而 critic 会对做出的动作给出动作的价值, 这样就在原有的 policy gradients 上加速了学习过程。
回合更新 和 单步更新
回合更新(Monte-carlo update) | 单步更新(Temporal-Difference update) |
---|---|
机器人从开始到停止条件结束的一个回合后进行更新上一回合每个动作对应的概率或者价值 | 机器人每采取一个动作结束到达下一个状态后,进行更新一个每个动作对应的概率或者价值 |
强化学习的回合更新单步更新可以就像游戏中,如果我从一游戏开始到结束这一个回合结束后,更新回合中对应的行为准则,这就是回合更新;如果在游戏中没进行一步,就更新上一步的行为准则就是单步更新。
再来说说方法, Monte-carlo learning 和基础版的 policy gradients 等 都是回合更新制, Qlearning, Sarsa, 升级版的 policy gradients 等都是单步更新制. 因为单步更新更有效率, 所以现在大多方法都是基于单步更新. 比如有的强化学习问题并不属于回合问题.
在线学习 和 离线学习
在线学习 (on-policy) | 离线学习 (off-policy) |
---|---|
机器人的策略是通过实时采样训练策略 | 机器训练模型的训练集可以是已经采集好的数据,也可以是实时采样的数据 |
在线学习和离线学习, 所谓在线学习, 就是指我必须本人在场, 并且一定是本人边玩边学习, 而离线学习是你可以选择自己玩, 也可以选择看着别人玩, 通过看别人玩来学习别人的行为准则, 离线学习 同样是从过往的经验中学习, 但是这些过往的经历没必要是自己的经历, 任何人的经历都能被学习. 或者我也不必要边玩边学习, 我可以白天先存储下来玩耍时的记忆, 然后晚上通过离线学习来学习白天的记忆.
最典型的在线学习就是 Sarsa 了, 还有一种优化 Sarsa 的算法, 叫做 Sarsa lambda, 最典型的离线学习就是 Q learning, 后来人也根据离线学习的属性, 开发了更强大的算法, 比如让计算机学会玩电动的 Deep-Q-Network.
具体强化学习算法简单介绍:
Q-Learning
Q-Learning算法是首先会建一张Q表格,表格的大小是状态数)乘以每个状态下对应的动作数,然后通过每执行一个动作进行一此Q(s,a)的更新(更新对应Q表格中的值)。
具体的Q-Learning算法如下:
上图中的Q真实值为
其中R是在状态s下采取动作a获得的奖励值,gamma 是对未来 reward 的衰减值,maxa’Q(s’,a’),是下一状态采取的最大Q值,对应的下一个状态是s’,最大Q值对应的动作是a‘。
大部分的强化学习都是通过Qlearning算法改进由来的。