最近在看控制领域研究热门–强化学习相关的东西,跟着matlab官方强化学习教程一边看一边学,感觉入门门槛略高,需要补很多机器学习相关的知识,高数概率论那些,摸索了个把月感觉现在只大概会用,原理啥的还没搞透彻。
跟着学
在看完官方教程rlWaterTank
水箱模型之后,自己也想跟着搭一个类似的模型,用强化学习控制器替代PID控制器,在尝试直接使用强化学习工具箱训练和通过.m文件生成训练两种方式后,发现还是.m文件靠谱些,强化学习工具箱感觉有点诡异,收敛不太好。
强化学习
- agent:智能体,强化学习控制器
- env:环境,观测向量与输出动作的定义
- reward:奖励函数,目前看来使用定性定量目标和使用连续可导的函数均比较合适
- 强化学习算法
– 基于价值函数求解:MD、DP、Q-Learning等
– 基于策略梯度求解:DPG、SAC、TD3、DDPG等
官方案例用的是DDPG算法,于是我对DDPG进行了一些了解,DDPG结合了深度神经网络和强化学习策略,通过神经网络来拟合策略函数和价值函数,包含两大部分:Critic和Actor,Critic输出当前状态下的价值函数,Actor输出智能体的动作,DDPG适用于连续动作空间的任务。DDPG原理的通俗理解==>深度确定性策略梯度 DDPG
跟着做
随便找了个二阶模型,给定信号是一个在2s的阶跃信号,看看强化学习控制器效果怎么样
DDPG算法参数设置:
- 最大迭代次数 3000
- 仿真时长Ts 10s
- 折扣因子 0.8
- 学习率 1e-3、1e-4
- 奖励函数和水箱模型设置成一样的
- 训练终止条件:
AverageReward
到1800
训练过程
在训练到1868次的时候AverageReward
达到了1859,满足了停止迭代条件,训练总时长1h11mins,训练过程逐渐趋于稳定,看样子是训练到极限了。
训练结果
对阶跃信号的跟踪效果,将其与PID控制器进行比较,PID控制器参数给20-1-0
,可以看到在初始未阶跃时,PID的控制效果比强化学习控制器效果好,跟踪更好,但是在阶跃后,强化学习控制器的振荡幅度以及振荡频率比PID控制好很多,不过稳态误差还是PID要好点。
总结
综上可见,强化学习控制器与PID相比各有优劣,不过由于强化学习的训练时长和训练效率很不确定,始终感觉强化学习很不稳定,对参数也比较敏感,有点玄学,没想象中好用。
另外,目前看来,强化学习对于阶跃和斜坡的给定输入来说比较合适,还能跟得上,像正余弦这种强化学习就搞不明白了,得要更多的训练,时间和成本都上去了,并且强化学习目前也只能停留于理论层面,实际落地也还早,感觉强化学习缺点大于优点,总的来说,对强化学习控制器不太看好。(期待后续能推翻此观点 : )