十年匠心定制 · 商业建站与技术教学双线并行 咨询热线:400-886-1026 service@lmnt.cn
ARTICLE DETAIL

资讯详情

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

156、离线强化学习:从静态数据集学习策略的CQL与IQL算法

156、离线强化学习:从静态数据集学习策略的CQL与IQL算法 156、离线强化学习:从静态数据集学习策略的CQL与IQL算法兄弟们,今天聊个实战里绕不开的痛点。上个月我调一个机械臂插拔USB的仿真任务,在线PPO跑了一整夜,奖励曲线跟心电图似的,好不容易收敛到能插进去,结果换了个光照条件,策略直接崩了。后来我悟了,真实机器人场景哪来那么多在线试错的机会?撞一次机械臂就是几千块的维修费。这时候离线强化学习就是唯一的解——从一堆历史数据里把策略学出来,不碰环境一根手指头。先说清楚离线RL到底在解决什么问题。传统RL是智能体边探索边学习,像个愣头青在环境里横冲直撞。离线RL呢,相当于你手里有一本前人踩坑记录,你要从这些静态的、固定的数据里提炼出最优策略。听起来简单,但这里有个致命陷阱——分布偏移。你拿行为策略收集的数据去训练一个新策略,新策略看到的state-action分布跟数据集里的分布对不上,Q函数就会开始瞎编,给出虚高的估计,然后策略就往那些虚构的高价值区域跑,越跑越偏,最后彻底放飞自我。我第一次跑离线RL就栽在这上面。用DQN从回放缓冲区里学,Q值越学越大,策略输出直接变成NaN。后来才明白,这就是典型的分布外动作导致的Q值过估计。CQL就是冲着这个来的。CQL的核心思想特别直白——既然Q函数会对分布外动作给出虚高估计,那我就直接惩罚它。具体做法是在标准的贝尔曼误差基础上,加一个正则项,让Q函数在数据集分布外的动作上取值尽量低。数学上就是最小化Q值在某个动作分布下的期望,同时最大化在数据集内动作上的Q值。这个"推低拉高"的操作,用公式写出来就是:L_CQL = α * (E_{s~D, a~μ}[Q(s,a)] - E_{s~D, a~π_β}[Q(s,a)]) + 贝尔曼误差
返回列表