CNN笔记(CS231N)——强化学习(Reinforcement Learning)

强化学习

我们之前讲了监督学习跟无监督学习,这一讲我们采用一种全新的思路来解决问题叫做强化学习。强化学习的目标是让代理学会采取动作来最大化奖励函数

下面是强化学习的一些例子

我们怎么样对这个问题进行建模呢?我们可以把这个问题看做一个马尔科夫链

目标函数是从头到尾的奖励加权相加

对于π是固定的,那么怎么解决随机性的问题呢?方案就是采用数学期望来平均这些随机性

由于我们可以定义价值函数,来代表特定状态的的好坏,以及Q价值函数来代表状态-动作对的好坏

对于最优的Q-value,它满足Bellman等式

我们可以尝试用Bellman等式来解这个优化问题但是问题是由于状态空间太大,我们无法完全遍历整个状态空间来求最大值,因此我们的想法是对Q进行逼近

Q是一个非常复杂的函数,那么我们需要计算Q的近似值,自然而然会想到用神经网络

这个网络的损失函数就是输出值跟Q值平方差的期望

这样我们就能训练出一个网路,只通过一次前向传播就能计算出Q值了

但是这样有个问题,那就是这些样本具有很大的相关性,某一帧会参与今后四个样本的训练,存在冗余性,为了解决这个问题我们可以采用经验回放的方法解决

以下是具体算法过程

Q-learning的问题就是Q函数非常复杂,就算利用神经网络也很难获得一个很好的拟合值,那么我们想的就是我们是否能直接学习一个策略,而不是学习Q函数

既然要对策略进行优化,那么我们就想对策略求梯度,采用梯度上升来最大化价值函数的值

这种方法叫做强化学习,下面是对策略求导的过程

其中p跟转移概率有关,那我们能否在不知道转移概率的情况下求出梯度值呢

我们的直觉就是当奖励很大的时候提高这种动作出现的概率;很小的时候降低这种动作的出现概率。这里的价值函数相当于是轨迹中所有动作的价值函数的平均,这种方法很容易导致过拟合,那么我们能做什么改进呢?

主要有以下两种方法

原始的价值函数并不是非常必要的,因为如果我们的价值函数对于每个状态都应该有一个期望值,我们希望对比的是当前值与期望值的差,如果当前值在我们期望以下,那我们希望减小动作出现的概率;如果当前值在期望值以上,那我们希望增大动作出现的概率。因此我们引入基线的概念,原本的价值函数就变为了价值函数与基线的差

一个选择基线的简单方法就是把之前出现过的所有轨迹的奖励函数平均起来

如果我们深入思考当前奖励与基线,那我们自然就会想到当前奖励是状态-动作对的奖励函数,也就是我们之前提到的Q价值函数;基线是状态的奖励函数,也就是价值函数。

这样就将策略梯度与之前的Q价值函数结合在一起了。我们只需要不断迭代训练Q价值函数与策略就可以了

以下是算法的伪代码

我们看一个强化学习在图像识别中的例子。我们输入一副含数字的图像,输入网络的是一个个小的图块,动作是下一个图块的坐标,奖励函数是最后的分类结果正确与否

我们利用强化学习结合RNN就能得到最终的结果,这种方法的好处是我们可以重点关注图像的某些特殊区域来获取局部信息特征,除此以外我们每次读入的图块都很小,减小了计算量

另一个例子就是AlphaGo,AlphaGo采用的方法中就包含了强化学习

下面是本讲的总结

 

 

  • 3
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值