广义优势估计的推导

总结

广义优势估计是对多步时序差分误差的指数加权平均.

指数加权平均

对于一组数字 计算指数加权平均, 其中i是下标. 那么有

按照下标顺序代入,

多步时序差分误差

分别是t时刻的 一步误差, 两步误差, 三步误差, ... k步误差. 把这些步的误差倒过来代入指数加权公式,就得到了该时刻的GAE.

GAE的计算

考虑t时刻的无穷步误差的指数加权, 有

代入,然后重新拆分得到

可见GAE的递推公式, 可以利用该公式, 从后往前一次性算出所有时刻的GAE.

python 复制代码
    def compute_gae_and_returns(
                            rewards: torch.Tensor, 
                            values: torch.Tensor, 
                            next_values: torch.Tensor, 
                            dones: torch.Tensor, 
                            discount_rate: float, 
                            lambda_gae: float, 
    ) -> Tuple[torch.Tensor, torch.Tensor]:
        advantages = torch.zeros_like(rewards)
        last_advantage = 0.0
        n_steps = len(rewards)

        # 计算GAE
        for t in reversed(range(n_steps)):
            mask = 1.0 - dones[t]
            delta = rewards[t] + discount_rate * next_values[t] * mask - values[t] 
            advantages[t] = delta + discount_rate * lambda_gae * last_advantage * mask
            last_advantage = advantages[t]

        # 返回给critic作为TD目标  
        returns_to_go = advantages + values 
        return advantages, returns_to_go
相关推荐
玖玥拾3 分钟前
LeetCode 205 同构字符串
算法·leetcode
影视飓风TIM7 分钟前
C++哈希表:unordered_set / unordered_map底层原理
c++·算法·哈希算法·散列表
在所不辞兄9 分钟前
【零基础学智能仿真-06】决策树——让模型自动发现力学失效阈值
算法·决策树·机器学习
啥都想学点的研究生25 分钟前
一篇文章讲清楚:C4.5决策树和CART决策树
算法·决策树·机器学习
DDXYcoder26 分钟前
万字解析动态内存从编译到运行
java·前端·算法
阳明山水30 分钟前
概念漂移分类与自适应策略解析
人工智能·深度学习·算法·机器学习·架构
欧特克_Glodon44 分钟前
OpenCV计算机视觉开发入门与实践<二十九>:grabCut算法分割图像
opencv·算法·计算机视觉·图像分割·grabcut 算法
方方洛1 小时前
vllm教程-02-核心原理
人工智能·算法·vllm
OPEN-F2 小时前
C++并发编程:异步任务与线程池实战
开发语言·c++·算法
凉茶钱2 小时前
【数据结构】计数排序
数据结构·算法·排序算法