)
26.6.8 更新增加了两处附注回顾一下带基线的REINFORCE算法含义是在t时刻st状态根据指定策略做出动作at如果从t时刻到游戏结束得到的回报Gt比状态st的期望回报高那么增加策略在st状态下做动作at的概率反之减少。问题有两个一个是由于轨迹都是真实的但是变化太大会导致训练数据方差大一个是必须玩整局游戏后才能训练训练效率低。actor-critic中除了actor---之前的策略网络之外还引入了critic---价值网络对动作实时评价评价在某个状态下actor的表现能拿到多少预期回报。为什么critic网络输出的是状态价值而不是动作价值它不是对动作进行评价吗1在REINFORCE梯度公式上文公式中本来就需要一个基线所以输出状态价值的网络是必要的2根据第二章的公式2-7动作价值可以写作在实际采样中可以使用近似也许单次不准但是不断采样会让它朝着正确方向逼近。所以可以通过即时奖励下一个状态的状态价值间接估计当前动作的动作价值。这个TD误差既是Critic网络的训练误差信号critic的目标就是让自己预测的状态价值尽量接近一个合理的label值这个label值就是TD Target所以TD误差是critic的训练误差信号又是Actor网络的策略更新信号这个TD误差用来表示动作优势训练流程1随机初始化actor网络和critic网络。actor网络输入状态st输出st下做出不同动作的概率。critic网络输入状态st输出st下的状态价值。2获取环境初始状态st通过actor网络获得不同动作的概率采样得到at3让at与环境交互获得奖励rt1转移到状态st14分别把st st1输入critic网络得到状态价值5根据公式计算TD error6根据TD error更新actor网络和critic网络更新st为st1然后回到第二步一般两个网络不完全分开而是共用特征提取网络最后分成两个输出头一个输出不同动作的概率分布一个输出当前状态的状态价值。Actor-Critic相比于REINFORCE的优势1. 单步更新VS等待回合结束2. 低方差critic学到的是基线训练很稳定3. 支持无限循环任务连续任务参考视频RethinkFun的个人空间-RethinkFun个人主页-哔哩哔哩视频