要想驾驭一个机器学习算法,我认为需要思考其四个方面:应用场景、目标变量、损失函数及学习过程。
深度强化学习也不例外:
- 应用场景
上图是强化学习的交互示意图,Agent给出动作(Action),环境更新状态并返回奖赏(Reward)。
我认为只要能满足以下两点,就可尝试使用强化学习框架:
a, 数据流满足示意图的这种交互方式,注意Reward可以有延迟;
b, 可以清晰地表示Action、State及Reward的空间,并能完整地描述需求。 -
目标变量
知道了目标变量,才能知道算法到底在学习什么,也就是设计的神经网络具体在近似什么。
深度强化学习的目标变量需要能表达最大化累计奖赏(cumulative reward),包括直接表达最大累积奖赏(Value)的Q(s,a)、V(s)及表达最优策略(Policy)的π(a|s),或者能表达Value/Policy的其他相关统计量(变化的部分). -
损失函数
损失函数决定着神经网络能学多好,用来衡量相对于事实(真值/y/label/ground truth)的误差,起着引导和指挥棒的作用。
认识损失函数分为两部分:
事实表达和误差表示,这里的误差是数学形式上的,不管实际代表什么物理量,最终转化为最小化形式的即是误差。
注意:本段以下提到的reward表示环境返回的即时reward(r_t);
a,深度强化学习的Value事实:
或是直接累加的reward,可以是带折扣因子(discount)的累加reward,
或者是结合reward 、折扣因子、最优化的贝尔曼方程(Bellman Equations)及目标网络(Target Network, Temporal-Difference思想)的事实近似;
或者采用优势函数(Advantage Function)代表Q-Value;
整个强化学习的精髓就在事实表达上,或者包含来自环境的直接反馈(reward),或者反映已知的假设(target network);它虽然是动态的,但总能表达比现在的近似(目标变量)更好。
关于Policy的假设是马尔可夫过程(MDP):
b,深度强化学习的误差表示一般包括:
表示Value误差的均方误差(mean square error),二次凸优化(Quadratic convex optimization);
表示Policy最优的负对数似然(log-likelihood),似然最大化,log函数可微;
表示分布距离的KL散度(Kullback-Leibler divergence),可转变为负对数似然或交叉熵;
保留探索能力的负的最大熵(Maximizing Entropy),最大熵学习; -
学习过程
深度强化学习的最优化方法一般还是基于梯度下降的,这里需要重点关注的是数据的有效性(Data-Efficient).
深度强化学习的每一段学习过程,都是基于与环境交互产生的新鲜的数据;一方面这些数据只服务于当前学习,会造成数据的大量浪费,另一方面统一批次的数据又有很强的相关性,这些都给学习带来了困难。为了解决这两个问题,一是建立经验回放池(experience replay),随机采样历史数据,避免数据强相关;二是独立采样,通过大量的并行采样,保持数据的多样性。