讲完强化学习的基本概念,来介绍一下价值学习算法;
核心就是用神经网络去近似Q*(s,a)函数;我们把这个神经网络记为Q是Q(s,a;w),神经网络的参数是w,输入是状态s,输出是很多数值,这些数值是每一个动作对应的分数,通过奖励reward学习神经网络,使神经网络打分越来越准;
(以打游戏为例,强化学习的目标是在游戏结束的时候,获得的奖励最大;当有Q*(s,a)函数时,就可以告诉我们每个动作的平均回报,从而做平均回报最高的动作)
问题是我们并不知道Q*(s,a)函数,价值学习的想法就是学习一个函数来近似Q*(s,a)函数;
例子:应用DQN来打游戏
观测到当前的状态st,DQN把st作为输入,给所有的动作打分,选出分数最高的动作作为at;
agent执行动作at后,环境会改变状态,用状态转移函数p随机抽一个新的状态st+1,环境同时也告诉我们这一步的奖励rt;(奖励就是强化学习中的监督信号,DQN靠这些奖励来训练)
同理,观测到当前的状态st+1,DQN把st+1作为输入,给所有的动作打分,选出分数最高的动作作为at+1;
agent执行动作at+1后,环境改变状态,用状态转移函数p随机抽一个新的状态st+2,环境同时也告诉我们这一步的奖励rt+1
一直重复这个过程,一直到游戏结束;
Temporal Difference Learning(TD算法);
TD算法例子理解Td算法:假设现在要开车从纽约到亚特兰大,模型Q(W)可以估计开车的时间,估计Q(W)估计开车要花1000分钟;
到达亚特兰大后,看一下开车所花的真实时间;
计算预测时间与真实时间的差距;(也就是计算损失函数)
求损失函数对模型参数w的梯度;
梯度梯度下降更新模型的参数,使得估计的时间与真实时间越来越接近;
问题:如果我想在到达亚特兰大之前就更新模型的参数w呢?
这时候就需要用TD算法了;(从纽约到亚特兰大要经过DC(华盛顿),我们可以到华盛顿后,估计华盛顿到亚特兰大的时间,假设纽约到亚特兰大要300分钟)
模型估计从纽约到亚特兰大要花1000分钟;
(到华盛顿后发现用了300分钟;(300分钟是真实的观测),模型估计从华盛顿到亚特兰大要花600分钟;)根据模型新的预测,总的时间应该为900分钟,新的估计900分钟叫做TD target,虽然TD target也是估计值,但比原来的1000分钟更可靠,因为里面有事实的成分,300分钟就是真实值,因此当越接近亚特兰大时,TD target越准确;因此到达华盛顿就可以更新模型参数了!
损失函数就是最初的估计与TDtarget的差距的平方,这个差距叫做TD error,然后再做梯度下降更新模型的参数就行了;
TD算法的优点:即使不完成整个旅途,也能更新模型的参数,改进模型;
应用TD算法到DQN的上个例子要用的公式:
整个旅途的时间和第二段时间都是模型的估计,而第一段时间是真实的时间;
TD算法必须等式左边有一项,右边有两项,也右边的两项必须有一项是真实观测到的;
在深度强化学习中,我们要应用的公式为:
简要证明:
应用TD算法到DQN上:
t时刻,DQN输出的值Q(st,at;w)是对Ut作出的估计;
t+1时刻,DQN输出的值Q(st+1,at+1;w)是对Ut+1作出的估计;
Q(st,at;w)类似于出发之前预计的时间,Q(st+1,at+1;w)类似于到达华盛顿后预计的到亚特兰大的时间;
以上就是今天要讲的内容,本文简单介绍了价值学习。