课程视频地址: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算法“