深度强化学习-DQN 算法及 Actor-Critic 算法-笔记(五)

本文详细介绍了深度强化学习中的DQN算法,包括Q-learning的基本概念、状态价值函数、目标网络、探索策略以及经验重放。此外,还探讨了DQN的优化技巧,如Double DQN、Dueling DQN和优先经验回放。随后,文章转向连续动作下的Q-learning,并引入了Actor-Critic算法,解释了其基本原理、优势和实现策略,如A3C和Pathwise Derivative Policy Gradient。
摘要由CSDN通过智能技术生成

DQN

Q-learning

状态价值函数 State Value Function

状态价值函数的贝尔曼方程

记策略 π 的状态值函数为 Vπ(st) ,它表示在状态 st 下带来的累积奖励 Gt 的期望,具体公式为:
在这里插入图片描述

如何衡量状态价值函数?

有两种做法:

  1. 基于蒙特卡洛的方法Monte-Carlo(MC):critic 观察 π 进行游戏的整个过程, 直到该游戏回合结束再计算累积收益(通过比较期望收益和实际收益G,来训练critic)。有时一个游戏回合可能会很长,这个等到游戏回合结束再计算收益的方法训练起来会很慢,因此引入另外一种方法 Temporal-difference(TD)
  2. 时序差分的方法Temporal-difference (TD):时序分差算法计算的是两个状态之间的收益差(通过比较期望差异与实际差异r之间的差别来训练critic)。
    在这里插入图片描述
MC vs. TD

在这里插入图片描述

  • MC:方差大。因为MC的方法收集的是每个完整的回合,而对于某个状态的累计收益G也是集合了很多步。
  • TD:方差小,但是可能不准确。在TD的方法中,用前一步的状态价值与下一步的状态价值之差r来更新,所以单步更新大大减小了方差,但是同样因为r的随机性(因为在同一个状态下采取同一个动作,计算出来的reward也不一定相同),但是这个随机性比MC方法中多步的r合计的随机性要小。

其实,目前来看,使用TD的方法是比较常见的,MC方法现在比较少用。
举个例子说明蒙特卡洛方法和时序差分方法的区别:
在这里插入图片描述

状态-动作价值函数 State-action Value Function

对于给定的actor π, 在状态s采取行动a预计能够得到的累计收益在这里插入图片描述

state value function 与 state-action value function
  1. state value function 的 input 是一个 state,它是根据 state 去计算出,看到这个state 以后的 expected accumulated reward 是多少。
  2. state-action value function 的 input 是一个 state 跟 action 的 pair,它的意思是说,在某一个 state 采取某一个action,假设我们都使用 actor π,得到的 accumulated reward 的期望值有多大。
    注意:actor π 在 state s 时采取的动作不一定是action a,但是Q-function是规定只有在state s 下才强制采取action a,接下来就进入自动模式, 让actor π 继续玩下去, 得到的expected reward 才是 Qπ(s,a)。

Q-function 有两种写法:

  • input 是 state 跟action,output 就是一个 scalar; (连续动作)
  • input 是一个 state s,output 就是好几个 value。(离散动作)

在这里插入图片描述
这里要知道两点:

  • 什么叫做better?
    不管在哪个state,用π’跟环境做交互得到的expected reward一定大于π。
    证明:
    在这里插入图片描述

  • 怎么找这个π’?
    在这里插入图片描述
    π’是根据Q-function推出来的。上式的右边要求arg max ,如果这里的动作是离散的,可以一个个带进去看谁的Q大就行,但是如果动作是连续的,这里求解arg max就会有问题。

Q-learning:

  • 使用一个初始的actor π 与环境进行互动
  • 学习该actor对应的 Q function
  • 一定存在另外一个表现更好的actor π ′ , 用这个更好的actor来替代原来的actor
  • 重复上述步骤

目标网络 Target Network

在这里插入图片描述
下式是我们熟悉的TD方法:
在这里插入图片描述
所以最简单的想法就是固定一个网络,这里固定的是上式右边的网络,在训练的过程中我们只更新左边的网络参数,而不更新右边的target网络的参数,这样就变成了一个回归问题。我们希望魔性的输出与目标值越接近越好,通常就会采取最小化二者的MSE(mean square error)

在实现的时候,你会把左边的 Q-network update 好几次以后,再去用 update 过的 Q-network 替换这个 target network 。但它们两个不要一起动,它们两个一起动的话,结果会很容易坏掉。一开始这两个 network 是一样的,然后在 train 的时候,你会把右边的 Q-network fix 住。你在做 gradient decent 的时候,只调左边这个 network 的参数,那你可能update 100 次以后才把这个参数复制到右边的 network 去&#

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值