CS231 第十四讲 深度强化学习
课程视频地址:https://study.163.com/courses-search?keyword=CS231
课程主页:http://cs231n.stanford.edu/2017/
这一讲介绍了深度强化学习。
参考资料:https://www.cnblogs.com/coldyan/p/9034192.html
强化学习
强化学习解决智能体(agent)与环境(environment)交互的问题,过程如下:
图中的过程描述如下:智能体在状态$s_t$采取行动$a_t$,环境反馈奖励$r_t$,智能体转移到下一个状态$s_{t+1}$。
这么说比较抽象,来看两个具体例子:
马尔可夫决策过程
现在我们要对强化学习进行建模,这里利用经典的马尔可夫决策过程来进行建模,定义为
其中
马尔可夫决策过程的运行步骤如下:
策略$\pi $是从$S$到$A$的函数,它指定在每个状态中要采取的动作,我们的目标是找到最大化折扣奖励$\sum_{t\ge 0}\gamma^t r_t$的策略$\pi^*$,正式的表达式为
来看一个简单的例子,如下图所示:
我们的目标是用最少的步数走到灰色区域,随机策略和最优策略如下:
价值函数和Q-值函数
价值函数和Q-值函数是评估状态以及状态-行动对好坏的函数,定义如下:
状态$s$的价值函数是从状态$s$开始,遵循策略的累计奖励的期望:
状态$s$和行动$a$的Q-值函数为在状态$s$采取行动$a$然后遵循策略的累计奖励的期望:
贝尔曼方程
按如下方式定义最优Q-值函数$Q^* $:
$Q^* $满足贝尔曼方程:
Q-learning
一般求解$Q^* $的方式为值迭代:
但是这个方法不具有可扩展性,因为每次要遍历每个状态-行动对。一个简单的思路是用函数近似估计$Q(s,a)$,于是就产生了Q-learning算法。
Q-learning:使用函数逼近来估计动作-价值函数
如果我们的近似函数为深度神经网络,那么就会产生深度Q-learning,于是我们的算法如下:
来看一个网络架构:
上图中的输入为游戏每隔几帧的游戏画面。
注意到在实际中,上述算法的效果不太好,这是因为
- 样本的相关性太高,这会导致不高效的学习。
- 当前的Q-网络参数确定下一个训练样本(例如,如果最大化动作是向左移动,训练样本将由来自左边),这可能导致错误的反馈循环.
解决的方法是experience replay,具体做法如下
- 当我们在运行游戏时,不断将元组$(s_t,a_t,r_t,s_{t+1})$存入replay memory。
- 从replay memory抽取随机小批量样本来训练Q网络。
最终算法如下:
策略梯度
Q-learning的一个问题是Q-function可能非常复杂,与之对应的是策略可能非常简单,所以现在的目标是直接学习策略。
正式的,让我们定义一类参数化策略:
对每个策略,定义其价值
我们现在想找到最优策略,即
这里采取的方式为关于策略参数采取梯度上升算法,注意到
求梯度可得
注意到
因此
注意到
所以
因此我们可以通过取样估计$\nabla_{\theta}J(\theta)$:
实际中,上述方法的方差很大,更好的方法如下:
通过累积某状态之后的未来奖励来增加某个行动的概率
使用折扣因子$\gamma$来忽略延迟效应
实际中,我们关注的是奖励是否比我们期望的更好或更差,所以引入依赖状态的baseline函数:
$\sum_{t’\ge t}\gamma^{t’-t} r_{t’} -b(s_t)$让我们联想到Q-函数和价值函数,所以算法修改为
实际中,$Q,V$都不知道,所以我们结合策略梯度和Q-learning,得到Actor-Critic算法“