强化学习:训练加速技巧


相比于监督学习和非监督学习,(深度)强化学习模型的训练过程显得更加的缓慢。因此,可能训练过程中需要一些技巧,希望可以提高的 训练效率

根据以往模型训练和近期项目中的一些经验,汇总出一些有助于训练加速和模型收敛的策略或技巧,以供参考。

什么会导致训练慢

大概有一下几方面。

庞大的探索空间

  • 一般来说,强化学习模型往往有着庞大的需要探索的空间 { ( S , A ) } \{(S,A)\} {(S,A)}
  • 即便对于相对简单的表格型问题需要探索的空间大小状态空间大小×动作空间大小(可能积分更准确,考虑到不同的状态空间,可能对应着的动作空间大小也不相同),需要探索的空间也很大。
  • 三子棋(Tic-Toc-Toe) 为例,状态空间大小为 ∣ S ∣ = 3 9 |S|=3^9 S=39的量级,动作空间为 ∣ A ∣ = 3 2 |A|=3^2 A=32的量级,导致探索空间大小约为 ∣ S ∣ × ∣ A ∣ = 3 11 |S|\times |A|=3^{11} S×A=311的量级。(粗略举例,仅仅考虑量级,实际上的探索空间是这个的子空间。需要排除黑、白棋子个数差异大于1的状态空间,以及因被占用不能放棋子的动作空间)

模型的训练

  • 和监督/无监督学习相同,模型的训练需要大量的迭代
  • 尤其当神经网络层数增加,模型变得更加复杂,待优化参数增多时,为了将模型训练至收敛状态,需要耗费更多的时间和算力。
  • 同时,需要承担训练不收敛、陷入局部最优解的风险
  • 一旦上述风险因素发生,训练效率将进一步降低;

经验的积累

  • 通过经验回放,可以有效降低样本之间的相关性,提高训练的稳定性。
  • 然而在智能体训练的初期,经验库中的经验总数量相对较少,此阶段训练时loss很容易保持到一个很低的水平,但并不代表较好的训练效果。大概率是由于数据太少产生了过拟合。因此,需要经验积累到一定量级时,训练效果才开始真正的提升;

智能体-环境交互

  • 对于基于“智能体-环境”架构的强化学习算法,智能体的训练是通过大量的交互、试错过程实现的;当这些交互过程耗时明显时,如存在数据库查询、相对复杂的数据预处理时,也将成为一个减缓训练进度的瓶颈。

相应的加速对策

加速搜索

这个部分可能是想重点描述的部分。

利用状态空间的对称性

以五子棋为为例,棋盘具有很好的对称性。因此,

  • 当棋盘经旋转(或镜像) 后,应具有相同的状态价值函数 v ( s ) v(s) v(s)
  • 当落子位置也相应地旋转(或镜像)后,也应具有相同的动作价值函数 q ( s , a ) q(s,a) q(s,a)
  • 因此,一次探索可对8个状态/动作函数进行同步更新(旋转4×镜像2),理论上可以8倍加速。
  • 不过实际上看,存在加速,但加速效果似乎达不到理论上的倍率。可能和更新目标并不准确相关。(强化学习_训练过程的感知理解)

规则启发

模型的训练过程,可以认为通过**广义策略迭代(GPI)**实现,交替进行策略评估<->策略改进,逐步得到稳定的价值函数估计模型。

广义策略迭代
探索尝试
蒙特卡洛/
时序差分
修改策略
贪心选择
固定策略
策略评估
固定评估
策略改进

只有经过在在模型空间探索,或者说尝试某种策略,才能实现对该策略的评价,才能知道该策略表现如何,是否需要改进,以及改进的方向。

通常情况是,对于待评估空间,既要探索,但是又想尽快看到初步效果,进行下一步调参。因此希望能够优先探索大概率发生的区域。

ϵ \epsilon ϵ-贪婪策略

常见的动作选择策略是 ϵ \epsilon ϵ-贪婪策略,优点是可以平衡探索-开发之间的矛盾,探索空间中的每一点都存在被试错的可能,可以有效避免贪婪策略可能导致的局限性

但有一个问题是, ϵ \epsilon ϵ-贪婪探索可能过于随机。尤其是训练初期,模型远远没有达到最优,训练时完全处于随机摸索状态,效率极低。

我们希望能够有重点进行探索,优先探索感兴趣区域,

规则引导和启发

一种加速策略,找到一种启发函数,找到可能有着较高探索价值的探索方向,以一定概率进行引导

实验表明,可以提高训练速度,尤其是训练初期。

加速模型训练

  1. 模型优化,可类比监督学习
    • 轻量级网络(层),如深度可分离卷积
    • 减少模型参数,如缩小卷积核大小
  2. 好的显卡或GPU服务器。。。

加速经验积累

  1. 多智能体并行训练

加速交互

  1. 做好数据的缓存
  2. 好的编码方式,提高编码效率
  • 6
    点赞
  • 25
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值