ARTICLE DETAIL

资讯详情

深耕郑州网站建设与运营推广的一线实战洞察。

倒立摆训练秘籍:理解训练参数

倒立摆训练秘籍:理解训练参数 神经网络参数权重 大脑里学会的知识刷题训练的时候自己慢慢更新超参数 你提前定好的整套学习计划刷题本身不会自动改变计划需要我们自己设置我们把训练倒立摆想象成让一个学生反复练习 “保持一根杆子不倒” 这个杂技。下面所有配置就是你给这个学生定的学习计划对照代码一条一条讲num_steps_per_env 16 max_iterations 150 save_interval 50 experiment_name cartpole policy RslRlPpoActorCriticCfg( init_noise_std1.0, actor_obs_normalizationFalse, critic_obs_normalizationFalse, actor_hidden_dims[32, 32], critic_hidden_dims[32, 32], activationelu, ) algorithm RslRlPpoAlgorithmCfg( value_loss_coef1.0, use_clipped_value_lossTrue, clip_param0.2, entropy_coef0.005, num_learning_epochs5, num_mini_batches4, learning_rate1.0e-3, scheduleadaptive, gamma0.99, lam0.95, desired_kl0.01, max_grad_norm1.0, )一、最顶层整个学习周期的大计划num_steps_per_env 16每个学生每个仿真倒立摆一轮练习先试 16 次动作收集这 16 次的成败记录再坐下来复盘总结。不是练一次改一次想法是攒一小批经验再一起复盘。max_iterations 150整套大复习循环最多做 150 轮。一轮 先实操收集经验 坐下来复盘改进想法。做完 150 轮就停止学习不再练了。save_interval 50每做完 50 轮大复习就把学生当前的本事存档保存生成 model_xx.pt。万一后面越学越差可以回退到 50 轮、100 轮时候的版本。experiment_name cartpole给这次学习起个名字叫 cartpole日志、存档文件都会放到这个名字的文件夹方便你后面用 play.py 调取。二、policy 部分学生的脑子长什么样ActorCriticActor 负责做动作的脑子看到杆子状态决定小车往左还是右推Critic 负责估好坏的脑子预判现在这个状态后续能不能稳住杆子大概能拿多少分init_noise_std1.0刚开始学的时候允许动作有比较大的随机试探。一开始学生啥也不会要多瞎试试不同推法看看哪种能稳住杆子学熟练后试探会慢慢变小不再乱晃。actor_obs_normalizationFalse/critic_obs_normalizationFalse要不要把看到的信息杆子角度、速度做标准化缩放。倒立摆的观测数值范围很简单不用额外换算复杂四足机器狗一般要开这个相当于统一 “看东西的标尺”。actor_hidden_dims[32, 32]做动作的脑子有两层思考区每层有 32 个脑细胞。脑细胞越多能学会的规律越复杂倒立摆任务简单不需要很大的脑子。critic_hidden_dims[32, 32]评估好坏的脑子同样两层每层 32 个脑细胞。activationelu脑细胞的思考方式。类比脑细胞不会非黑即白就算情况不好也还能继续思考不容易直接 “宕机学废”。三、algorithm 部分复盘的时候怎么调整想法PPO 核心规则一轮实操收集完经验后坐下来复盘下面就是复盘的规矩value_loss_coef1.0评估好坏Critic的对错在本次复盘里占多大比重。1.0 代表预判能不能拿分这件事和动作策略的重要程度一样。use_clipped_value_lossTrue复盘时限制 “估分脑子” 一次改动的幅度。防止这次看了几条经验之后直接推翻之前全部的好坏判断估分逻辑一下子崩掉。clip_param0.2PPO 最重要的一条规矩不要一次改想法改太猛。新想法和旧想法差别不能超过 20%。比如以前觉得 “往左推”复盘后不能直接一下变成拼命往右推避免刚学会的本事直接忘掉。entropy_coef0.005鼓励保留一点点随机试探的意愿。就算学得差不多了也不要变成死板固定动作留一点点探索空间这个数值很小倒立摆不需要太多试探。num_learning_epochs5拿到这一批 16 步的实操记录可以反复翻看复盘 5 遍。同样一份错题经验多看几遍加深理解。看多了也容易过拟合记住这一批特例而不是通用规律。num_mini_batches4把这批练习记录分成 4 小份分批看、分批改想法。一次性看全部数据压力太大显存不够拆成小份慢慢复盘。learning_rate1.0e-3也就是 0.001每次复盘调整想法的步子大小。步子太大容易学飘步子太小学的很慢。scheduleadaptive自适应调整学习步子。会自动对比新想法和老想法差别大不大。改动太大 → 步子收小一点谨慎学习改动很小 → 步子放大一点加快学习gamma0.99打分的时候有多看重长远收益。杆子现在稳住不算还要看接下来能不能持续稳住。0.99 代表未来的分数会稍微打一点折扣优先兼顾当下也不忽略后面的结果。如果 gamma 接近 1就是非常看重长久稳定。lam0.95复盘算 “这次动作到底好不好” 的一套折中方案。用来平衡两种判断只看即时得分和预估未来得分。简单理解让对动作好坏的评价更稳不要忽高忽低。desired_kl0.01自适应学习率的目标希望每轮复盘之后新想法和旧想法的差距维持在很小的水平0.01。不要一轮学完直接换一套思路。max_grad_norm1.0保护机制万一某一批经验非常极端最多只能改这么多想法。防止一次翻车直接把之前学会的全部冲垮梯度爆炸。整体串一遍这个学生的学习流程一共最多进行 150 轮大练习每一轮每个倒立摆学生先实操试 16 次动作记录杆子倒没倒、得分多少把收集到的记录拆成 4 小份反复翻看复盘 5 轮复盘的时候严格控制新想法不能和旧想法差太多clip_param自适应调整学习快慢每做完 50 轮完整练习存档一份当前的学习成果 model.pt全部结束你用 play.py 调出存档把 “做动作的脑子Actor” 单独打包成 policy.ptJIT单独用来实操一句话区分重点Actor 脑子遇到情况决定怎么做动作Critic 脑子预判这么做后续能拿多少分所有这些配置全部是你定的学习规则学生在训练里自己变化的只有脑子里记住的判断逻辑网络权重参数。
返回列表