基于Pytorch的强化学习(DQN)之REINFORCE VS A2C

本文探讨了REINFORCE和A2C两种强化学习算法的关系。尽管两者神经网络结构相同,但REINFORCE依赖完整的轨迹计算回报,而A2C作为Actor-Critic方法,基于TD算法仅需部分真实信息。它们的主要区别在于信息的使用和更新方式。A2C通过多步方法可以转化为REINFORCE,因此REINFORCE可视为A2C的特例。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

目录

1. 引言

2. 比较

3. 本质联系


1. 引言

我们前面两次学习了与baseline有关的两种算法:REINFORCE 和 A2C,仔细阅读的同学会发现两者的神经网络的结构是一致的,那么这两者究竟有什么关系呢?

2. 比较

我们先来看看两者的算法

REINFORCE:

  1. 观测到从 t 时刻到游戏结束的一个trajectory (s_t,a_t,r_t,...,s_n,a_n,r_n)
  2. 计算观测到的return u_t=\sum_{i=t}^{n}\gamma^{i-t}r_i
  3. 计算误差 \delta_t=v(s_t;w)-u_t
  4. 更新策略网络 \theta\leftarrow \theta-\beta\,\delta_t\frac{\partial \,\ln{\pi}(a_t|s_t;\theta)}{\partial \,\theta}
  5. 更新价值网络 w\leftarrow w-\alpha\delta_t\,\frac{\partial \,v(s_t;w)}{\partial \,w}

A2C:

  1. 观测到一个 transition (s_t,a_t,r_t,s_{t+1})
  2. 计算TD target y_t=r_t+\gamma v(s_{t+1};w)
  3. 计算TD error \delta_t=v(s_t;w)-y_t
  4. 更新策略网络 \theta\leftarrow \theta-\beta\,\delta_t\frac{\partial \,\ln{\pi}(a_t|s_t;\theta)}{\partial \,\theta}
  5. 更新价值网络 w\leftarrow w-\alpha\delta_t\,\frac{\partial \,v(s_t;w)}{\partial \,w}

我们可以看到两者不同的地方有三处:1,2,3。先看 REINFORCE 算法,REINFORCE 算法是以 t 时刻的 return 为目标,所以我们要先观测到是一个trajectory,使用baseline单纯只是为了减小随机过程的方差,使其收敛更快。再来看A2C算法,A2C本质上是一个Actor-Critic方法,是基于TD算法的,所以使用的是部分真实的信息而不是完全真实的信息,所以只需要观测到一个transition就行了而不需要等到游戏结束,这两者参数更新的方式都是一样的。

3. 本质联系

两种算法在本质上是有联系的,由于A2C是基于TD算法的,于是在A2C的第2步中,我们可以使用Multi-step方法 来提升收敛速度,也就是说我们修改TD target为 y_t=\sum_{i=0}^{m}\gamma^{i}r_{t+i}+\gamma^{m+1}v(s_{t+m+1};w),当 m=n-t 时TD target便变成了 t 时刻的return,A2C便变成了REINFORCE,所以我们可以将REINFORCE看成时A2C的一个特例,这便是两者的本质联系。

评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值