MountainCar训练中的一点经验之谈

  1. 原环境给的-1的回报不太够,要做放大处理,*10之后可以在10000代以内寻到终点
  2. 对因为寻到终点而产生的done和因为超时而产生的done,在回报值上要做区分

为了验证上面所说的内容,我们首先给出了一个在-1回报,且网络初始偏差为0.1的环境下,训练5000代后的模型效果
MountainCar训练中的一点经验之谈_第1张图片
10000代之后呢:
MountainCar训练中的一点经验之谈_第2张图片
这个结果其实已有预料,可以看看该过程的loss值,基本处于 1 0 − 6 10^{-6} 106以下,这么小的损失值根本无法为网络的梯度带来更新效应,所以也就解释了为什么多出5000代训练,模型根本没有什么变化

对于这个问题,我们有两种解决思路:(1)调整网络初始参数,设得更大,更宽泛一点;(2)调整模型回报值,设的区间更大

两种都用上,在迭代1000次后,结果如下:
MountainCar训练中的一点经验之谈_第3张图片

迭代10000次后,结果如下:
MountainCar训练中的一点经验之谈_第4张图片
实话实说,好像也没有什么改变

但是,和我另一篇文章结合起来,会发现很有意思的现象鲁棒核函数的一点拙见

我把该现象总结为:

加约束后,小车倾向于学习后仰,在不加约束下,小车倾向于学习前倾
这里的约束包括:增加网络初始值宽度扩大环境回报值设定阈值

下面,我将通过一系列正交实验,如下表所示,进行相关结果分析:

水平1表示低(小),水平2表示中,水平3表示高

网络初始值宽度:低-(w=1,b=0.1);中-(w=10,b=1); 高- (w=100,b=10)

环境回报值:低- reward = -1;中- reward = -5; 高- reward = -10

阈值:低- 开始训练时,前20代中每代出现的最大值的0.3倍;中- 0.6倍; 高- 1倍

网络初始值宽度 环境回报值 阈值 评价
1 1 1 1 2000:后仰学习 ;6000:变为前倾学习 ;7000代:变为后仰学习 ;8000代:变为前倾学习(此时loss基本稳定在 1 0 − 6   1 0 − 5 10^{-6}~10^{-5} 106 105之间,停止迭代)
2 1 2 2 2000代:中性学习;2000代时(loss稳定在 1 0 − 12 10^{-12} 1012没有继续迭代必要)
3 1 3 3 10000代:前倾学习;10000代时(loss基本稳定在在 1 0 − 7   1 0 − 5 10^{-7}~10^{-5} 107 105之间,停止迭代)
4 2 1 2 2000:后仰学习 ;3000-5000:中性学习;5000代时(loss基本稳定在在 1 0 − 7   1 0 − 5 10^{-7}~10^{-5} 107 105之间,停止迭代)
5 2 2 3 10000:后仰学习;10000代时(loss未稳定,仍有0.001-0.01的值不时出现)
6 2 3 1 10000代:中性学习(loss一直在 1 0 − 6 10^{-6} 106~0.001之间波动)
7 3 1 3 1000代:中性学习;2000-5000代:前倾学习;6000-10000代:后仰;10000代时(loss未稳定,还维持在0.1-0.0001之间,仍可继续训练)
8 3 2 1 2000代:中性学习;3000-10000代:前倾学习;(loss未稳定,仍有0.001-0.01的值不时出现)
9 3 3 2 1000代:前倾学习;2000-9000:未观测;10000代:中性学习;10000代时(loss未稳定,还维持在1-0.0001之间,仍可继续训练)

附录

网络初始值宽度 环境回报值 阈值 评价
10 1 2 3 1000代:中性学习 & 抖动幅度小;2000代:前倾学习 & 抖动幅度中等;3000~9000代无变化

以学习变化度来衡量,上表可以变为:

网络初始值宽度 环境回报值 阈值 评价
1 1 1 1 4
2 1 2 2 1
3 1 3 3 1
4 2 1 2 2
5 2 2 3 1
6 2 3 1 1
7 3 1 3 3
8 3 2 1 2
9 3 3 2 2

统计后,我们可以确定,网络初始值宽度为3、环境回报值为1时学习变化度最好,而阈值的影响不显著,不过建议为1

现在应该从另外的角度思考,如何改进算法


下去仔细思考了一番,其实这里面暴露的是同一个问题,和谁变化的多或者少没关系,这都代表着网络只学习到了单一的模式,也就是前拉或者后拉,这是很致命的,无法到达终点,这才是学不好的本质原因。上面的改动都没有解决这个本质问题

你可能感兴趣的:(深度学习,神经网络,机器学习)