指数加权平均

本文介绍了指数加权平均的计算方法,通过公式vt=βvt−1+(1−β)θt展示其如何近似原序列的加权平均。深入解释了原理,包括展开式子及证明β的选取与e的关系。同时,讨论了偏差修正方法,如vt=(1−βt)(βvt−1+(1−β)θt),用于改善初期误差,但若不关注初期误差也可忽略此修正。

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

1. 计算方法

对一个序列 θ1,θ2,θ3...θn\theta_1,\theta_2,\theta_3 ... \theta_nθ1,θ2,θ3...θn ,引入参数 β\betaβ ,使用如下方法可以计算得到一个新的序列 vvv :

∀t∈(1,n)\forall t \in (1,n)t(1,n)

vt=βvt−1+(1−β)θtv_t = \beta v_{t-1}+(1-\beta)\theta_tvt=βvt1+(1β)θt

### 指数加权平均的定义 指数加权平均是一种通过对历史数据赋予递减权重的方法来计算平均值的技术。在该方法中,最近的数据点被赋予更高的权重,而较远的数据点则被赋予逐渐降低的权重。其数学形式可以表示为: $$ S_t = \alpha x_t + (1-\alpha) S_{t-1} $$ 其中 $S_t$ 表示当前时刻的指数加权平均值,$\alpha \in [0, 1]$ 是平滑因子,$x_t$ 是当前时刻的实际值[^4]。 ### 指数加权平均与广义优势估计(GAE)的关系 广义优势估计(GAE)利用了指数加权平均的思想,通过结合多步时间差分(TD)估计量来平衡优势函数估计的偏差和方差。具体来说,GAE 的定义为这些 $k$ 步估计量的指数加权平均: $$ A_t^{\text{GAE}(\gamma, \lambda)} = (1-\lambda) \sum_{n=1}^\infty \lambda^{n-1} A_t^{(n)} $$ 其中 $\lambda \in [0, 1]$ 是控制不同步数的优势估计权重的超参数[^4]。 当 $\lambda = 0$ 时,GAE 等价于单步优势估计,即只考虑一步差分得到的优势值。这种情况下,估计具有较低的方差但可能存在较大的偏差。相反,当 $\lambda \to 1$ 时,GAE 考虑更多步差分的平均值,从而接近无偏估计,但可能导致较高的方差。 通过调整 $\lambda$,可以在偏差和方差之间找到一个折中方案。指数加权平均的形式允许对较近的时间步赋予更高的权重,而对较远的时间步赋予逐渐降低的权重,从而有效地结合了短视和长视的优势估计[^2]。 ### GAE 的递归形式及其实现 GAE 可以通过递归形式进行高效计算。将公式展开后,可以得到以下递归关系: $$ A_t^{\text{GAE}(\gamma, \lambda)} = \delta_t + \gamma\lambda A_{t+1}^{\text{GAE}(\gamma, \lambda)} $$ 其中 $\delta_t = r_t + \gamma V(s_{t+1}) - V(s_t)$ 是时序差分误差[^1]。 在实际实现中,可以通过从轨迹末端向前计算的方式高效地估计每个时间步的优势值。以下是基于 Python 的实现代码: ```python def compute_gae(rewards, values, last_value, gamma, lambd): advantages = [] gae = 0 for t in reversed(range(len(rewards))): delta = rewards[t] + gamma * last_value - values[t] gae = delta + gamma * lambd * gae advantages.append(gae) last_value = values[t] return list(reversed(advantages)) ``` ###
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值