强化学习--DQN

强化学习


一、keywords

DQN(Deep Q-Network): 基于深度学习的Q-learninyang算法,其结合了 Value Function Approximation(价值函数近似)与神经网络技术,并采用了目标网络(Target Network)和经验回放(Experience Replay)等方法进行网络的训练。
State-value Function: 本质是一种critic。其输入为actor某一时刻的state,对应的输出为一个标量,即当actor在对应的state时,预期的到过程结束时间段中获得的value的数值。
State-value Function Bellman Equation: 基于state-value function的Bellman Equation,它表示在状态s_tst下带来的累积奖励 G_tGt的期望。
Q-function: 其也被称为state-action value function。其input 是一个 state 跟 action 的 pair,即在某一个 state 采取某一个action,假设我们都使用 actor \piπ ,得到的 accumulated reward 的期望值有多大。
Target Network: 为了解决在基于TD的Network的问题时,优化目标 \mathrm{Q}^{\pi}\left(s_{t}, a_{t}\right) =r_{t}+\mathrm{Q}^{\pi}\left(s_{t+1},\pi\left(s_{t+1}\right)\right)Qπ(st,at)=rt+Qπ(st+1,π(st+1)) 左右两侧会同时变化使得训练过程不稳定,从而增大regression的难度。target network选择将上式的右部分即 r_{t}+\mathrm{Q}^{\pi}\left(s_{t+1},\pi\left(s_{t+1}\right)\right)rt+Qπ(st+1,π(st+1)) 固定,通过改变上式左部分的network的参数,进行regression,这也是一个DQN中比较重要的tip。
Exploration: 在我们使用Q-function的时候,我们的policy完全取决于Q-function,有可能导致出现对应的action是固定的某几个数值的情况,而不像policy gradient中的output为随机的,我们再从随机的distribution中sample选择action。这样会导致我们继续训练的input的值一样,从而“加重”output的固定性,导致整个模型的表达能力的急剧下降,这也就是探索-利用窘境难题(Exploration-Exploitation dilemma)。所以我们使用Epsilon Greedy和 Boltzmann Exploration等Exploration方法进行优化。
Experience Replay(经验回放): 其会构建一个Replay Buffer(Replay Memory),用来保存许多data,每一个data的形式如下:在某一个 state s_tst,采取某一个action a_tat,得到了 reward r_trt,然后跳到 state s_{t+1}st+1。我们使用 \piπ 去跟环境互动很多次,把收集到的数据都放到这个 replay buffer 中。当我们的buffer”装满“后,就会自动删去最早进入buffer的data。在训练时,对于每一轮迭代都有相对应的batch(与我们训练普通的Network一样通过sample得到),然后用这个batch中的data去update我们的Q-function。综上,Q-function再sample和训练的时候,会用到过去的经验数据,所以这里称这个方法为Experience Replay,其也是DQN中比较重要的tip。

二、questions

为什么在DQN中采用价值函数近似(Value Function Approximation)的表示方法?

答:首先DQN为基于深度学习的Q-learning算法,而在Q-learning中,我们使用表格来存储每一个state下action的reward,即我们前面所讲的状态-动作值函数 Q(s,a)Q(s,a) 。但是在我们的实际任务中,状态量通常数量巨大并且在连续的任务中,会遇到维度灾难的问题,所以使用真正的Value Function通常是不切实际的,所以使用了价值函数近似(Value Function Approximation)的表示方法。

critic output通常与哪几个值直接相关?

答:critic output与state和actor有关。我们在讨论output时通常是对于一个actor下来衡量一个state的好坏,也就是state value本质上来说是依赖于actor。不同的actor在相同的state下也会有不同的output。
基于我们上面说的network(基于MC)的方法,我们怎么训练这个网络呢?或者我们应该将其看做ML中什么类型的问题呢?

答:理想状态,我们期望对于一个input state输出其无误差的reward value。也就是说这个 value function 来说,如果 input 是 state s_asa,正确的 output 应该是_aGa。如果 input state s_bsb,正确的output 应该是value G_bGb。所以在训练的时候,其就是一个典型的ML中的回归问题(regression problem)。所以我们实际中需要输出的仅仅是一个非精确值,即你希望在 input s_asa的时候,output value 跟 G_aGa越近越好,input s_bsb的时候,output value 跟 G_bGb越近越好。其训练方法,和我们在训练CNN、DNN时的方法类似,就不再一一赘述。

基于上面介绍的基于TD的network方法,具体地,我们应该怎么训练模型呢?

答:核心的函数为 V{\pi}\left(s_{t}\right)=V{\pi}\left(s_{t+1}\right)+r_{t}Vπ(st)=Vπ(st+1)+rt。我们将states_tst作为input输入network 里,因为 s_tst丢到 network 里面会得到output V^{\pi}(s_t)Vπ(st),同样将 s_{t+1}st+1作为input输入 network 里面会得到V^{\pi}(s_{t+1})Vπ(s
t+1)。同时核心函数:V{\pi}\left(s_{t}\right)=V{\pi}\left(s_{t+1}\right)+r_{t}Vπ(st)=Vπ(st+1)+rt告诉我们, V^{\pi}(s_t)Vπ(st) 减 V{\pi}(s_{t+1})Vπ(st+1) 的值应该是 r_trt。然后希望它们两个相减的 loss 跟 r_trt尽可能地接近。这也就是我们这个network的优化目标或者说loss function。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值