-
prev_return:
- 上一步的折现回报(Return),也就是从当前时间步向前累积到过去某一时间点的所有奖励经过折扣(discounting)后的总和。
- 在GAE或其他动态规划方法中,
prev_return
被用来计算接下来的returns[i]
,这个计算考虑了未来的奖励和当前的值函数预测。
-
prev_value:
- 上一步的状态值函数(Value function)预测值,即模型预计在给定状态下未来能获得的累计奖励的期望值。
- 在GAE中,
prev_value
被用来计算 TD(Temporal Difference)误差deltas[i]
,它是实际收到的奖励与模型预测的未来奖励之差。
-
prev_advantage:
- 上一步计算得到的优势函数(Advantage function)值,优势函数表示在特定状态下采取某个动作相对于当前策略下平均行动的价值(Value)的增益或减损。
- 在GAE中,
prev_advantage
被用来递归地计算当前时间步的优势函数advantages[i]
,它综合了 TD 误差和之前的 advantage 值,用于反映当前动作相对于平均表现的相对优势。
这三个变量都在计算GAE过程中起着关键作用,且它们相互关联,共同服务于优化策略的目的。
特别是在计算优势函数时,prev_return
和 prev_value
分别参与到了 returns
和 deltas
的计算,而 prev_advantage
则参与到 advantages
的递归计算中。
# returns:递归地将当前时间步的即时奖励与之前计算的折现回报相加
returns[i] = rewards[i] + args.gamma * prev_return * masks[i]
# deltas(TD误差,Temporal Difference error)
# 用于度量实际收到的奖励与Value函数预测的未来收益之间的差异
deltas[i] = rewards[i] + args.gamma * prev_value * masks[i] - values[i]
# 根据GAE公式计算优势函数advantages
# 它结合了TD误差与之前的优势函数值,通过gamma * lambda进行折扣累积
advantages[i] = deltas[i] + args.gamma * args.lamda * prev_advantage * masks[i]