两周强化学习实践记录#
Isaac Lab · 机器狗 · LLM辅助工作流
一、起点#
在这次经历之前,我对强化学习几乎没有接触,只知道它是一个基于环境反馈不断调整策略的机器学习过程。这次没有从理论开始,而是直接上手Isaac Lab,跟随入门教程,初始目标很简单:导入狗的模型,训练出行走。
二、环境搭建#
基本流程是用模板生成项目,然后将部分内容替换为教程代码,借此了解项目的整体组织形式。USD文件描述模型的骨架、关节等结构,导入时还可以进一步配置限位、刚度、摩擦等物理属性。将地形、光照、机器人等载入世界后,仿真环境就搭建完成了。场景这一块没有深入了解,是目前的空白之一。
三、训练过程与奖励函数#
训练由奖励函数驱动:整个系统以最大化累积奖励为目标,在限定范围内基于当前策略持续尝试,根据环境反馈评价上次行为,更新策略,如此循环。
这个循环的逻辑我理解得比较清楚,但Isaac Lab里具体怎么一块一块搭起来的,没有完整动手实践过。因为在训练早期就引入了agent,它把所有细节都处理好了,训练很快就跑起来了。
四、agent介入与工作流转变#
训练中途发现了agent更大的威力:它能把从互联网里压缩来的经验直接用于写reward、observation、权重和超参数。于是整个训练开始由agent几乎全权代理,我的工作渐渐变成了审阅agent的分析,然后若有所思地同意它的建议,让它继续下去。
说实话,我到现在都不确定自己是在探索agent的边界还是在偷懒。但有一点是真的:脑袋里没有学到足够扎实的东西。一开始沉迷于它的威力,疯狂地想要探索更完全的自动化,后来苦于token紧缺,才慢慢踩下来。
不过这个过程确实让我见识到了真实工程的工作流长什么样。只是我不知道,仅凭「见识到」是否够用。
五、LLM与自动化RL工作流#
这次经历让我切实感受到了LLM的威力,它必然会对这些行业带来深刻的改变。更具体的观察是:像机器狗行走这类任务,在互联网上已经被完全约束——相关的论文、代码、训练经验都极其丰富——因此LLM完全有能力独自复现,并构建几乎全自动化的强化学习工作流。这件事,现在就已经是可能的了。
六、算法探索:贝叶斯优化与PPO#
与此同时还开始摸索机器学习算法,有两个值得记下来。
第一个是贝叶斯优化,在探索LLM自动调参时进入我的视野。核心思路是:基于「平滑」和「邻近影响」的先验,用代理函数不断更新对未知系统的信念,从而指导每次实验该往哪里试。代理建模和信念更新这两个概念给我印象很深。
基于这个理解去看PPO,发现二者有相似之处——都存在代理和实际执行者——但目的完全不同:贝叶斯优化用代理来选取最有价值的实验点,PPO用代理来追求最大的reward,而且PPO的核心其实是clip机制。意识到自己对二者过于等同看待之后,去找了OpenAI Spinning Up来学PPO,但很快被复杂的数学公式吓退了。
七、这次经历的两个结论#
实际项目对于学习的驱动力,远大于从课本开始。这次就是最好的证明:没有任何指令要求我去了解PPO,但我自然就找过去了。
但它也有一个真实的缺陷:疏于记录和总结,就无法形成稳定的知识体系。大量的理解停留在工作记忆里,术语难以记住,理论难以深入,熟练感也迟迟建立不起来。这篇记录,某种程度上就是在补这个课。
下一步#
1. 做一个最小完整实验#
不要让agent介入,自己从零手写一个reward function,在Isaac Lab里跑cartpole或类似的简单任务。看着训练曲线崩掉,改reward,再跑。哪怕只做一次,现在悬在空中的概念就会全部落地。
2. 建一个概念卡片库#
每遇到一个新概念(clip in PPO、acquisition function in BO……),就用自己的话写一张卡:是什么、为什么需要它、和已知概念的关系。不需要长,三到五句话。Obsidian或纸质都行。术语记不住的根本原因是没有输出,卡片是最低成本的输出方式。
3. PPO的学习路径#
不建议从头系统学,先补PPO的直接前置就够:policy是什么、value function是什么、policy gradient的基本直觉。这些在Spinning Up的Introduction部分读几页就有,不需要从Markov链开始推。然后看Lilian Weng的PPO博文(lilianweng.github.io),她的写法对直觉非常友好。看完之后再回到Spinning Up的PPO页面,数学符号会突然变得可读。整个过程:Spinning Up介绍篇(1小时)→ Lilian Weng PPO(1-2小时)→ Spinning Up PPO(1小时)。
4. 一件事比三件事重要#
上面三条,先只做第一条。手感比什么都重要,有了手感,后两条会自然发生。