广义优势估计的推导

总结

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

指数加权平均

对于一组数字 计算指数加权平均, 其中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
相关推荐
阿Y加油吧1 分钟前
算法二刷复盘:LeetCode 39 组合总和 & 22 括号生成(Java 回溯精讲)
java·算法·leetcode
WL_Aurora7 分钟前
每日一题——自然倍树
数据结构·python·算法·深度优先
水木流年追梦13 分钟前
CodeTop Top 300 热门题目3-字符串相加
java·前端·算法
一江寒逸16 分钟前
数据结构与算法之美:绪论——构建算法思维的基石
数据结构·算法
可乐要加冰^-^22 分钟前
Vscode、Pycharm快速配置Claude、CodeX
数据结构·深度学习·算法·语言模型·自动驾驶
abant226 分钟前
leetcode 763 未来跳跃游戏
算法·leetcode·游戏
罗湖老棍子33 分钟前
A Horrible Poem(信息学奥赛一本通- P1460) [POI 2012] OKR-A Horrible Poem(洛谷-P3538)
算法·哈希·欧拉筛·错位重叠
程序员爱德华39 分钟前
LeetCode刷题
算法·leetcode
memcpy040 分钟前
LeetCode 1202. 交换字符串中的元素【无向图连通分量】中等
算法·leetcode·职场和发展
fengfuyao98542 分钟前
基于遗传算法的分布式电源选址定容优化(考虑环境因素)
算法·matlab·平面