读强化学习落地指南总结
提示:写完文章后,目录可以自动生成,如何生成可参考右边的帮助文档
文章目录
前言
reward的主要作用是将任务目标具体化和数值化,实现目标和算法之间的沟通,决定了agent最终能否学习到期望的技能,并直接影响算法的收敛速度和最终性能。
reward负责引导神经网络中的决策相关因素并经过提炼后用于action的生成。
四、action
对于违法的action,直接屏蔽掉,不允许出现。
五、状态
状态代表了agent对环境的感知以及自身的action带来的变化。state直接决定了是否收敛以及收敛速度和最终性能。
增加一个新的状态信息所带来的性能提升明显高于其他的工作(例如调参),性价比非常高。
5.1 设计原则
六、回报函数的设计
6.1 主线reward和稀疏奖励问题
如果主线回报比较稀疏,此时,只有主线reward是不行的;
此时需要分解子目标,分别给予奖励或者惩罚,从而引导agent趋利避害从而提高主线的概率。此时,称为credit assignment。辅助reward一般都设置较小。
6.2 杜绝异常行为
避免有些reward过大,从而使其他reward被掩盖(一棵大树,不给小草生长空间),可以加系数加以调控,但是还不够,是否还有其他(例如vector reward,multiplicative reward)
6.2.1 鲁莽-饮鸩止渴
不要因为某些眼前的奖励,而丧失了主线,饮鸩止渴要不得。
6.2.2 贪婪-目光短浅,蝇头小利,捡芝麻丢西瓜
原地打转,或者微小进步,只是为了获得近期奖励,说明惩罚不够,或者说
6.2.3 胆怯
惩罚项设置大,相对于主线的大,不敢动,畏葸不前。陷入局部
6.3 reward shaping
对于一个奖励来说,在整个训练过程中理想情况不应该是保持不变的,而应该越靠近目标 每一步的收获越大,奖励越高,从而更容易引导到目标点,大大加快收敛速度。
6.3.1 势能函数
非线性的奖励函数
十一、其他总结
1、强化学习不宜盲目追求end2end的解决方案,无论是状态还是reward的设计;
2、reward设计的奖励尽可能归一化,否则,波动很大,难以收敛;
3、
七、训练
7.1 环境可视化
这个确实比较重要,具体训练的过程和路线是什么样子的,最起码在前期有个大概的把握,做到心中有数。如果符合自己预期,可以把render去掉,毕竟耗时严重。
7.2 数据预处理
state和reward可以实时打印,观测是否在正常范围内,是否幅值过大。推荐无条件进行归一化, 和 rescale & clipping,二者会带来效果的很大提升。
参考形式为
r
=
c
l
i
p
(
r
/
(
s
t
d
(
R
e
t
u
r
n
)
+
ϵ
)
,
−
10
,
10
)
r=clip(r/(std(Return)+\epsilon ),-10,10)
r=clip(r/(std(Return)+ϵ),−10,10),其中
R
e
t
u
r
n
=
∑
t
=
0
T
γ
t
r
t
Return = \sum_{t=0}^T\gamma^tr_t
Return=∑t=0Tγtrt
reward只能进行rescale,而不可以进行整体平移(减去均值)。
因为回报函数中的各项reward的符号和他们之间的相对大小决定了实际的功能,各项reward的整体缩放对实际功能没有影响。clip操作实际会有影响,不大。
7.3 训练超参数
7.3.1 折扣因子
γ
:
\gamma:
γ:此参数调节近远期的影响,也就是做决策时候考虑多长远。
高的折扣
γ
=
0.99
\gamma=0.99
γ=0.99会导致原地不动;
低的折扣
γ
=
0.9
\gamma=0.9
γ=0.9敢于探索;
方法:
折扣因子在算法能够收敛情况下,尽可能的大。
经验公式:
1
/
(
1
−
γ
)
1/(1-\gamma)
1/(1−γ) 作为agent做决策时候,往前考虑的步骤数。
7.3.2 网络结构
不要太大,够用就好
类型取决于state状态空间;
网络深度,虽然越深表征能力越强,但是训练难度高;
7.3.3 学习率
大了收敛快,稳定性差;
小了收敛慢,浪费时间;
淬火操作可以使用;