强化学习与PyTorch入门
爬山算法
我们先来看一下平均性能:
print('Average total reward over {} episode: {}'.format(n_episode, sum(total_rewards) / n_episode))
输出结果为:
Average total reward over 1000 episode: 199.94
测试回合的平均奖励接近通过学习策略获得的最大值200。可以多次重新运行评估,结果相当一致。
爬山算法通过在每个回合中添加自适应噪声,比随机搜索取得了更好的性能。可以将其看作一种没有目标变量的特殊梯度下降方法,额外的噪声就是梯度,只是以随机的方式存在。噪声规模就是学习率,它会根据上一回合的奖励进行自适应调整。爬山算法的目标是获得最高奖励。与随机搜索不同,爬山算法中的智能体利用从每个回合中学到的知识,在接下来的回合中采取更可靠的行动。随着权重逐渐接近最优值,奖励也会在各个回合中不断上升。
我们可以观察到,奖励在最初的100个回合内就可以达到最大值。但当奖励达到200时就停止训练可能不是一个好主意,因为智能体在爬山算法中会不断改进。即使找到了能产生最大奖励的权重,它仍然可以在这个权重附近搜索最优解。我们将最优策略定义为能够解决CartPole问题的策略,根据相关页面,“解决”意味着连续100个回合的平均奖励不低于195。
以下是改进后的停止标准代码:
超级会员免费看
订阅专栏 解锁全文
657

被折叠的 条评论
为什么被折叠?



