
155、SAC软演员评论家:最大熵强化学习实现连续动作控制上个月调试一个六自由度机械臂的插拔动作,SAC跑得好好的,突然在第三万步左右Q值开始剧烈震荡,策略直接退化成一堆NaN。当时第一反应是学习率太大,调小之后反而更糟。后来把replay buffer里的样本打印出来才发现,问题出在奖励归一化上——某个关节的力矩奖励范围是-50到+50,而其他维度只有-0.1到0.1,这种量纲不匹配直接让critic网络在反向传播时梯度爆炸。这让我意识到,SAC这种最大熵框架对奖励尺度极其敏感,比DDPG要娇气得多。最大熵到底在优化什么传统强化学习目标是最大化累积奖励,SAC在目标函数里加了一项策略熵。别小看这个改动,它让策略在多个近似最优动作之间保持随机性,而不是死磕一个峰值。实际效果是,机械臂在接近目标位置时不会像DDPG那样疯狂抖动,而是平滑地试探多个可能的插入角度。这个熵项有个温度系数α,它控制探索与利用的平衡。我见过有人把α设成固定值0.2跑到底,结果在复杂任务上策略熵过早坍缩,动作分布变成尖峰状,基本丧失了探索能力。SAC的critic网络有两个,取两者最小值作为目标Q值。这个技巧在论文里叫clipped double-Q,目的是抑制Q值过估计。但实际调试中我发现,两个critic的初始化差异如果太大,会导致目标Q值被低估,策略变得过于保守。解决办法是让两个critic共享部分底层特征提取层,只在输出层分开,这样既能保持多样性,又不会让两者偏差过大。网络结构里的那些坑我用的actor网络输出的是动作分布的均值和log标准差,而不是直接输出动作。采样时