金丝熊好养吗
我们之前提到过A3C在A2C的基础上增加了对多核并⾏采样的⽀持,从⽽使探索效率⼤幅提升,绝对训练时间得以显著缩短。因此,并⾏采样的环境数量越多,A3C的优势也越明显,该参数的设置主要取决于可⽤的硬件资源。
A3C的训练基于episode(或trajectory),将其中每个中间state到episode结束时的Return作为⽬标值拟合⼀个V⽹络,并⽤V⽹络作为baline指导policy⽹络的更新。为了便于训练,通常每个环境都采集固定长度的episode并返回主进程中拼成⼀个batch。Episode越长,每次计算梯度时的数据量越⼤,但消耗内存也越多。Episode长度通常取4096, 2048, 1024等2的次幂,原因是更新⽹络参数时整个batch还会再分成minibatch(2的次幂⽐较好分),遍历若⼲个epoch,从⽽提⾼数据利⽤率,注意minibatch不能太⼤,否则有可能导
致“学不动”的现象。在实际应⽤中,除了考虑内存开销,episode长度选取也跟任务难度息息相关。以⼩车导航为例,训练刚开始时agent可能需要探索很久才能幸运地抵达终点,episode长度最好能囊括整个探索过程,这样中间状态与理想状态(到终点)间的演进关系就很容易学习到。当然,episode不可能⽆限长,如果探索难度实在太⾼,那也只好提前终⽌探索,把截断的部分放到下⼀个episode中。
A3C算法的loss由三部分组成:policy loss,value loss和entropy loss。其中entropy loss项的系数是⼀个⾮常重要的超参数,对收敛速度和最终性能有直接影响。我在算法选择篇介绍A3C的探索-利⽤平
韩文网名女生
衡时,说过随着训练进⾏policy输出的action分布的variance会越来越⼩,反映到统计指标上就是entropy越来越⼩。这本来是⼀个⾃然发⽣的过程,不需要⼈的⼲预,然⽽DRL训练早期往往受到各种local minima的⼲扰,容易陷⼊“拣了芝⿇丢了西⽠”的怪圈。为了避免模型过早迷失⽅向,A3C加⼊了entropy loss⽤于强迫policy输出不那么“尖锐”的action分布,从⽽起到加强探索的效果。Entropy系数负责调节这种“强迫”⼒度,合理的系数既能确保训练早期充分探索从⽽使模型向正确⽅向前进,⼜能使模型在训练中后期充分利⽤学到的技能从⽽获得⾼性能。对于不同任务,最优entropy系数往往各不相同,需要若⼲次试错才能找到。⽐如在训练开始后policy entropy快速下降说明模型陷⼊了局部最优,根本没学到有⽤技能,这时就应该提升entropy系数;如果训练很长时间policy entropy仍然未下降或者下降缓慢,说明模型探索过头了,学到的知识被随机性淹没,⽆法进⼀步⽤来提升性能,此时应该适当降低entropy系数。
V⽹络系数是A3C loss中value loss项的系数,通常取0.5(policy loss系数默认是1),在实践中不太需要修改。
由于on-policy算法对数据的使⽤⽅式是“现采现⽤,⽤完就扔”。为了防⽌policy跑偏,在错误道路上越⾛越远,需要通过特定⽅法限制其每次参数更新的幅度。PPO(proximal policy optimization)就属于这⼀类⽅法,最早由OpenAI提出。PPO与更早的TRPO,核⼼思想都是针对更新前后policy输出的KL散度设定阈值,但PPO通过⼀个简单的clip操作⼤⼤简化了运算,兼顾了效率和性能。PPO相关的参
数主要是cliprange,通常取略⼤于0的⼩数,代表使policy更新前后KL散度控制在1-cliprange到1+cliprange之间,超出该范围的梯度直接被忽略(相当于对应数据被弃⽤)。Cliprange越⼩训练越稳定,越⼤越节省数据。⼀般在训练早期取较⼩的值,⽐如0.2,保证训练平稳进⾏;到训练后期可以适当放⼤,因为此时policy已经⾜够优秀,所采集数据中正样本⽐例⾮常⾼,可以放⼼利⽤。此外,PPO原paper提出了General Advantage Estimation,相应增加了⼀个超参数GAE factor,其作⽤跟折扣因⼦γ类似,也是在(0,1]内取值,⼀般都默认取0.95。实验室制取氧气的三个化学方程式
双赢英语2.4 给DRL初学者的建议
以热门平台作为切⼊点。热门平台维护频率⾼,关注度⾼,遇到问题容易找到解决⽅案。⽐如在OpenAI Gym平台上找些简单的任务多练⼿,balines⾥提供了⼤量参考代码。
客户服务体系不要迷信默认超参数。在实际应⽤中可以先采⽤参考代码⾥的默认超参数,但⼀定要记住它们不是万能的。可以⽤tensorboard显⽰出各种训练曲线,理解其中主要曲线的含义和作⽤,并根据这些曲线判断超参数设置是否合理,应该朝哪个⽅向调整。
女生中长发型图片
重视⾸次成功经验,学会简化问题。实践多了你会发现,对于特定Domain和特定算法,最优超参数组合分布都各有特点,最困难也最关键的是⾸次训练,⼀旦有了成功经验,后续根据观察结果做些微调就能得到⾼性能模型了。如果原任务训练难度太⾼,可以先尝试做适当简化,待成功收敛后再逐渐恢
黄疸正常值是多少
复任务难度。⽐如要实现任务⽬标A,必须满⾜条件B,C,D…,可以先暂时去掉对C,D,…的要求,只保留B,这样探索到A的概率就会显著提升,算法训练难度直线下降,待算法收敛并获得⼀定的经验后再逐步恢复所有条件。
**保持耐⼼。**DRL训练本来就挺慢的,很多时候除了等待什么都不⽤做。除⾮你对相关Domain的算法训练流程已经很熟悉,否则不要轻易断定算法不收敛,可以等等再说。也不要整天⼀动不动地盯着屏幕发呆,既浪费时间,更浪费⽣命,间歇式检查⼀下就好。
3. 训练收敛后
当你发现policy已经可以如预期的那样完成任务了,先不要忙着喜形于⾊,你还需要做些检查和分析⼯作以确保policy性能达到了最优。以A3C为例,你⾄少应该:
\1. 观察Value⽹络对Returns拟合的精度如何,value loss是否还有进⼀步下降的空间?
>晕染美甲图片