lastgaelam

在采样时,如果最后一步的状态不是即将终止的状态。

由于lastgea = 0,因此获取不到下一步的 gae。

这可能不会造成太大影响。


    mb_returns = np.zeros_like(mb_rewards)
    mb_advs = np.zeros_like(mb_rewards)
    lastgaelam = 0
    for t in reversed(range(nsteps)):
        if t == nsteps - 1:
            nextnonterminal = 1.0 - dones  # dones
            nextvalues = last_values
        else:
            nextnonterminal = 1.0 - mb_dones[t+1]
            nextvalues = mb_values[t+1]
        delta = mb_rewards[t] + gamma * nextvalues * nextnonterminal - mb_values[t]
        mb_advs[t] = lastgaelam = delta + gamma * lam * nextnonterminal * lastgaelam
    mb_returns = mb_advs + mb_values


另一种方法是将终止之后的数据全部丢掉,保证数据大于 n_train * mini_batch 时,进行训练。







GAE 增加了 Adv 的变动。









深度学习推荐
深度学习推荐

墨之科技,版权所有 © Copyright 2017-2027

湘ICP备14012786号     邮箱:ai@inksci.com