Value-Based Reinforcement Learning
Action-Value Functions
公式 中的
都是环境
environment
给的奖励 reward
,每当 agent
做出一个 action
, environment
就会更新状态 state
,并且会给 agent
一个奖励 。每一个奖励
都依赖于前一个状态和动作。所以
Return
依赖于从
时刻开始所有的动作
action
和所有的状态 state
。
未来的状态 和 未来的动作
都是随机变量,动作
action
的随机性来自 policy
函数,动作
action
是根据 函数计算得到的每个动作的概率值,随机抽样得到的。状态
state
的随机性来自于状态转移函数 ,新的状态是根据状态转移函数
随机抽样得到的。
未来的状态 和 未来的动作
都是随机的。
依赖于这些动作和状态,所以
也是随机变量。
的值反映了未来奖励的总和。
所以想了解 的大小,
是随机变量,在
时刻并不知道
的值。所以要对
求期望,消除
中的随机性。期望是对未来的状态
和 未来的动作
求取的,期望消除了这些随机变量,只剩下当前
时刻的状态和动作。通过求取期望我得到了
函数,被称为
action-value function
。 函数跟
policy函数
、变量
和
有关,未来的随机性都被期望消除了,
函数可以反映出当前状态
下,做动作
的好坏程度。
我们想进一步消除 policy函数
的影响,对
函数关于
求最大化,得到
optimal action-value function
最优动作价值函数 。
可以告诉我们,不管用什么
policy函数
,要使
agent
在当前状态下做动作
,回报
的期望最大就是
,不会更好。
跟策略函数无关,只要
agent
在当前状态下做动作
,
就是最好的结果了,哪怕之后
policy函数
改进的更好,获得的期望回报也不可能
更好。
:基于当前状态
,做出动作
的好坏程度。所以
函数可以指导
agent
做决策。 agent
观测到当前状态,
函数给所有的动作打分,比如:马里奥向上跳是3000分,←2000,→1000,
agent
可以根据分数做决策,选择向上跳分数最高,这样才能达到期望和回报的最大化。
Deep Q-Network(DQN)
用神经网络近似函数。游戏中
agent
的目标是:打赢游戏,赢取更多的奖励。
目标订好, agent
就要努力实现目标。如果已知,
agent
该如何做决策呢?什么是最好的动作呢??会给所有的动作打分,每个动作都有个分数。最好的动作是使得
最大的
action
。
就是一个先知,能够预见未来的结果,比如有三只股票,问
应该买哪一只股票。未来是充满随机性的,什么都可能发生。先知没有办法告诉确定的答案,只能告诉一个平均值。
说平均来看,A股票涨了10倍,B涨了2倍,C跌了一半,先知还告诉你实际发生的情况和平均值并不一样。从期望来看,还是A股更好。
如何理解?
可以告诉我们每个动作带来的平均回报,我们应该选择平均回报更多的动作,我们希望有
,指导
agent
做决策,但是实际上我们不知道的。
价值学习的基本思想就是:学习一个函数近似。
DQN是一种价值学习方法,使用神经网络近似函数。该神经网络记做
,其参数为
,输入为状态
,输出为很多数值(针对每个动作的打分)。通过奖励
reward
学习神经网络,神经网络对动作的打分也会越来越准确。
根据当前观测到的状态,用DQN把
作为输入,对每个动作
action
进行打分,选出分数最高的动作作为,
agent
执行这个动作之后,环境会改变状态(使用状态转移函数
随机抽样得到一个新的状态
),环境还会给
agent
奖励。奖励
reward
就是强化学习中的监督信号,DQN要靠这些奖励来训练。有了新的状态,DQN再次对所有的动作进行打分,执行相同的流程,直到游戏结束。
Temporal Difference(TD) Learning
如何训练DQN呢,TD算法是常用的算法,TD算法不好理解,举个例子:
开车从纽约到亚特兰大,模型可以预测时间开销,模型一开始告诉我(预测)从纽约到亚特兰大需要1000mins,一开始模型预测的不准确,或者干脆就是随机的。但是随着数据越来越多,模型训练,其就会越来越准确。
我需要什么数据,得到数据之后如何更新模型?
- 出发之前,模型预测出一个值
(模型预测)
- 我们真实的从NYC到亚特兰大,然后得到一个真实值
(真实的时间开销)
- 将
记做
target
,与
不同,这就说明预测有偏差,所以计算
loss
,进行梯度下降更新参数。
以上流程,必须完成整个旅途,才能对整个模型参数做更新。但是又有一个问题,如果我的目标是从纽约到亚特兰大,但是跑到华盛顿,汽车就坏了,到不了终点,那应该是怎么办呢?
我开车从纽约到DC,发现实际用时300mins,模型进行预测从DC到亚特兰大用时600mins,模型Q(w)=1000,但是根据模型新的预测,从NYC到Atlanta总共花费900mins,在TD算法中,900mins就是TD Target,TD Target虽然也是个估计值(但是有真实值,有事实成分),但是要比纯粹估计的1000mins更加精确可靠。越接近Atlanta,TD Target越准确,越接近真实值。
TD算法的目标:尽可能使得 TD error
接近0,预计时间等于实际时间(最理想情况)
TD Learning for DQN
想要使用TD算法,必须使用上图中相同的格式:等式左边有一项:DQN在 时刻做的估计,未来奖励总和的期望;等式右边有两项:真实观测值奖励
+ DQN在
时刻做的估计。
Summary
本节主要讲解了 Value-Based Reinforcement Learning
,用到了 optimal action-value function
最优动作价值函数,首先对回报求期望,消除未来状态
和未来动作
的随机性,然后再关于
policy
函数 求最大化,去掉了
函数的影响,得到了
函数,基于
函数,可以得到基于当前状态
,对所有动作打分,分数就能反映出每个动作
的好坏。只要有了
函数,就能根据
函数来控制
agent
的动作,获得最高的回报。
然而实际上,我们并没有函数,价值学习的目标:就是学习一个函数来近似出
函数。
DQN就是使用神经网络来近似函数,DQN的输入是状态
,输出就是对每个动作
的打分,如果拿超级玛丽来说,
agent
只会做三个动作,所以输出就是一个向量,
一开始参数都是随机的, agent
会根据DQN的指导,不断的尝试动作,并获得奖励。强化学习就是根据奖励来更新模型参数的。
TD算法是学习DQN最常用的方法:
- 观测当前的状态
和已经执行的动作
;
- 用DQN做计算,输入是状态
,输出是对
的打分,输出记做
;
- 反向传播对DQN求导。
- 由于
agent
已经执行了动作,环境据此改变状态
,并给
agent
做出奖励;
- 有了奖励
,和状态
,就可以计算出
TD Target
;
- 做梯度下降,更新模型参数w