再举几个例子。AlphaGo Zero
用了
2
千
9
百万局自我博弈,每一局约有
100
个状态和动作。
TD3
算法
在
MuJoCo
物理仿真环境中训练
Half-Cheetah
、
Ant
、
Hopper 等模拟机器人,虽然只有几个关节需要控制,但是在样本数量 100
万时尚未收敛。甚至 连 Pendulum
、
Reacher
这种只有一两个关节的最简单的控制问题,
TD3
也需要超过
10
万 个样本。
现实世界中的问题远远比
Atari
MuJoCo
复杂,其状态空间、动作空间都远大于
Atari、MuJoCo.
强化学习所需的样本量太大,这会限制强化学习在现实中 的应用。
2
探索阶段代价太大
强化学习要求智能体与环境交互,用收集到的经验去更新策略。在交互的过程中,智能体会改变环境。在仿真、游戏的环境中,智能体对环境造成任何影响都无所谓。但是在现实世界中,智能体对环境的影响可能会造成巨大的代价。
深度强化学习对超参数的设置极其敏感,需要很小心调参才能找到好的超参数。超参数分两种:神经网络结构超参数、算法超参数。这两类超参数的设置都严重影响实验效果。换句话说,完全相同的方法,由不同的人实现,效果会有天壤之别。
3.1 结构超参数
神经网络结构超参数包括层的数量、宽度、激活函数,这些都对结果有很大影响。
拿激活函数来说,在监督学习中,在隐层中用不同的激活函数(比如 ReLU
、 Leaky ReLU)对结果影响很小,因此总是用
但是在深度强化学习中,隐层激活函数对结果的影响很大;有时 ReLU
Leaky ReLU
Leaky ReLU 远 好于 ReLU [
Deep reinforcement learning that matters
]。由于这种不一致性,我们在实践中不得不尝试不同的激活函数。
3.2 算法超参数
-
强化学习中的算法超参数很多,包括学习率、批大小
(Batch Size)
、经验回放的参数、探索用的噪声。
-
学习率(即梯度算法的步长)对结果的影响非常大,必须要很仔细地调。DDPG
、
TD3
、
A2C
等方法中不止有一个学习率。策略网络、价值网络、目标网络中都有各
自的学习率。
-
如果用经验回放,那么还需要调几个超参数,比如回放数组的大小、经验回放的起始时间等。
回放数组的大小对结果有影响,过大或者过小的数组都不好。
经验回放的起始时间需要调,比如 Rainbow
万条四元组的时候开始经验回放,而标准的 DQN
则最好是在收集到
万条之后开始经验回放
-
在探索阶段,DQN、DPG 等方法的动作中应当加入一定噪声。噪声的大小是需要调的超参数,它可以平衡探索 (Exploration) 和利用 (Exploitation)。
-
除了设置初始的噪声的幅度,我们还需要设置噪声的衰减率,让噪声逐渐变小。
4
实验效果严重依赖于实现的好坏
上面的讨论目的在于说明超参数对结果有重大影响。
对于相同的方法,不同的人会有不同的实现,比如用不同的网络结构、激活函数、训练算法、学习率、经验回放、噪声。哪怕是一些细微的区别,也会影响最终的效果。
使用了几个比较有名的开源代码,它们都有
Half-Cheetah
环境中的实验。论文使用了它们的默认设置,比较了实验结果,如图
19.18
但是 论文实验中报告的结果真的可信吗?从图
19.18
中不难看出,基线算法的表现严重依赖于编程实现的好坏。如果你提出一种新的方法,你把自己的方法实现得非常好,而你从开源的实现中选一个不那么好的基线做实验对比,那么你可以轻松打败基线算法。
6
稳定性极差
强化学习训练的过程中充满了随机性。除了环境的随机性之外,随机性还来自于神经网络随机初始化、决策的随机性、经验回放的随机性。
想必大家都有这样的经历:用完全相同的程序、完全相同的超参数,仅仅更改随机种子 (Random Seed)
,就会导致训练的效果有天壤之别。
19.19
所示,如果重复训练十次,往往会有几次完全不收敛。哪怕是非常简单的问题,也会出现这种不收敛的情形。
在监督学习中,由于随机初始化和随机梯度中的随机性,即使用同样的超参数,训练出的模型表现也会不一致,测试准确率可能会差几个百分点。但是监督学习中几乎不
19.19
中这种情形;如果出现了,几乎可以肯定代码中有错。
但是强化学习确实 会出现完全不收敛的情形,哪怕代码和超参数都是对的。
再举几个例子。AlphaGo Zero 用了 2 千 9 百万局自我博弈,每一局约有 100 个状态和动作。TD3 算法 在 MuJoCo 物理仿真环境中训练 Half-Cheetah、Ant、Hopper 等模拟机器人,虽然只有几个关节需要控制,但是在样本数量 100 万时尚未收敛。甚至 连 Pendulum、Reacher 这种只有一两个关节的最简单的控制问题,TD3 也需要超过 10 万 个样本。 神经网络结构超参数包括层的数量、宽度、激活函数,这些都对结果有很大影响。...
对于随机性策略(PPO等)可以用策略熵来表示策略是否“确定”。在训练过程中随着策略提升,策略变得越来越确定,此时熵应该是随着逐渐降低的,熵曲线趋于平缓。
2. loss指标(网络
收敛
好坏)
这是DL中的直观指标,虽然不能直接用在DRL来说明策略好坏,但loss是在一直下降还是已经趋于平缓了,可以一定程度上说明网络模型的学习程度,看模型是“学会了”还是“学废了”,趋于平缓可能就是已经训练差不多了,当然“训练差不多”不代表“策略最优”,有些可能loss还在掉,但
很多同学会发现,为什么我训练网络的时候loss一直居高不下或者准确度时高时低,震荡趋势,一会到11,一会又0.1,不
收敛
。 又不知如何解决,博主总结了自己训练经验和看到的一些方法。
首先你要保证训练的次数够多,不要以为一百两百次就会一直loss下降或者准确率一直提高,会有一点震荡的。只要总体
收敛
就行。若训练次数够多(一般上千次,上万次,或者几十个epoch)没
收敛
,则试试下面方法:
1. 数据和标签
数据分类标注是否准确?数据是否干净?数据库太小一般不会带来不
收敛
的问题,只要你一直在train总会
收敛
(rp
Hi,这是第三篇算法简介呀
论文链接:Soft Actor-Critic:Off-Policy Maximum Entropy Deep Reinforcement Learning with a Stochastic Actor,2018,ICML
强化学习
的两个主要挑战是高样本复杂性和
收敛
性脆弱。在这篇文章中,提出了一个基于最大熵框架的actor-critic离线策略的深度强化学...
(1)训练数据中没有标签,只有奖励函数(Reward Function)。
(2)训练数据不是现成给定,而是由行为(Action)获得。
(3)现在的行为(Action)不仅影响后续训练数据的获得,也影响奖励函数(Reward Function)的取值。
(4)训练的目的是构建一个“状态->行为”的函数,其中状态(State)描述了目前内部和外部的环境,在此情况下,要使一个智能体(Agent)在某个特定的状态下,通过这个函数,决定此时应该采取的行为。希望采取这些行为后,最终
前面已经讲了好几篇关于
强化学习
的概述、算法(DPG->DDPG),也包括对环境OpenAI gym的安装,baseline算法的运行和填坑,虽然讲了这么多,算法也能够正常运行还取得不错的效果,但是一直以来忽略了一个非常重要的话题,那就是
强化学习
的《奖励函数》的设置。
1、 Gym-Pendulum-v0例子分析奖励函数
为什么要讲
强化学习
的概述呢?也许在我们以前运行的算法中我们并...
很多同学会发现,为什么我训练网络的时候loss一直居高不下或者准确度时高时低,震荡趋势,一会到11,一会又0.1,不
收敛
。 又不知如何解决,博主总结了自己训练经验和看到的一些方法。
首先你要保证训练的次数够多,不要以为一百两百次就会一直loss下降或者准确率一直提高,会有一点震荡的。只要总体
收敛
就行。若训练次数够多(一般上千次,上万次,或者几十个epoch)没
收敛
,则试试下面方法:
1. 数据侧:
数据归一化
神经网络中对数据进行归一化是不可忽略的步骤,网络能不能正常工作,还得看你有没有做归一化,一般
好久没有写这个专栏了,现在来补一课,不然前面的都忘掉了~
本文主要讨论值函数的估计问题,主要研究两类方法:增量方法(Incremental Methods)、批方法(Batch Methods)。其中增量方法主要是从online方面考虑。批方法主要是从data efficient方面考虑。
在模型无关的预测中,我们介绍了如何...
(1)训练数据中没有标签,只有奖励函数(Reward Function)。
(2)训练数据不是现成给定,而是由行为(Action)获得。
(3)现在的行为(Action)不仅影响后续训练数据的获得,也影响奖励函数(Reward Function)的取值。
(4)训练的目的是构建一个“状态->行为”的函数,其中状态(State)描述了目前内部和外部的环境,在此情况下,要使一个智能体(Agent)在某个特定的状态下,通过这个函数,决定此时应该采取的行为。希望采取这些行为后,最终获得最大的奖励函数值。
假设状态数有限,行为数有限。
RtR_{t}Rt:t时刻的奖
无模型方法(model-free)
无模型方法是学习方法的一种,MDPs中如果P,R未知,则用无模型方法。该方法需要智能体与环境进行交互(交互的方式多样),一般采用样本备份,需要结合充分的探索。
由于未知环境模型,则无法预知自己的后继状态和奖励值,通过与环境进行交互然后观察环境返回的值。本质上从概率分布Pass′Pss′aP_{ss^{'}}^a和RasRsaR_s^a中进行采样。对于随机变量...
在
强化学习
解决问题的场景中,动作是体现学习效果最直接的因素,直接影响了智能体下一步的走向和对环境状态的改变。在应用
强化学习
解决实际问题时,往往不同于gym库中倒立摆那样的情况,而是存在很多的
约束
。例如,在ttt时刻智能体可选的动作为1,2,31,2,31,2,3,但是在t+1t+1t+1时刻只能选1,21,21,2,333处于不可用的状态。在这种情况下,就需要借助掩码mask来对智能体的动作进行处理。
有人会疑问:就不能制定相应的奖励函数使得智能体学习到这种
约束
吗?
这样做是可以的,但是付出的训练代价很大,
深度学习训练时网络不
收敛
的原因分析总结
链接:https://blog.csdn.net/comway_li/article/details/81878400
深度学习网络训练不
收敛
问题
链接:https://blog.csdn.net/shinetzh/article/details/84945486
转载于:https://www.cnblogs.com/kandid/p/1...