强化学习作为一种无监督学习,没有标签使得学习收敛的速度非常低,所以强化学习的加速训练得到了广泛的关注。
什么是强化学习?简单来说,就是我们对相应的状态设置不同的奖励值,agent也就是可以看作一个玩家,这个玩家到不同的状态后,会获得不同的奖励值,最终的目的就是获得最高的奖励。与深度学习结合后,强化学习以DQN为例子的大致流程可以简述为:
①初始化Q和Q_target值网络权重,Q值网络是指输入当前agent在环境中状态,输出为在这个状态下采取不同策略的奖励,Q_Target之后再解释。
②将初始化状态输入网络,得到不同策略的奖励值,我们可以选择直接采取奖励值最高的策略作为我们下一步行动的策略,但是一般情况下为了防止网络局部最优与加速网络训练,我们会再结果的选择上加上一些扰动,提供一些噪声。
③agent在环境中执行得到的策略,与环境交互,得到下一个状态以及我们人为设置的及时奖励,将原本的状态,及时奖励,采取的策略以及下一个状态,放入经验池中,经验池也就相当于我们有监督学习的数据。
④奖励值可以分为即时奖励以及未来奖励,所以Q_Target就起作用了,将原本的状态输入网络,得到Q=及时奖励以及未来奖励,这时将下一状态输入到Q_Target得到下一状态的奖励,这个奖励就是上一状态的未来奖励,故以此来计算损失,梯度更新网络。Q_Target其实就是每隔一定的时间将Q的权重复制到Q_Target网络中,主要是为了降低数据之间的相关性(这里有点绕,懒得写公式了,大家不理解的地方可以自行查阅相关公式)
接下来就是本论文的核心思想。想要提高强化学习的学习速率,得先分析出强化学习训练的速率低的原理,主要在于以下几个方面
· 参与者(Actor)策略推理
· 学习者(learner)的梯度计算
· 模型更新
· 参与者和学习者之间的沟通成本(分布式强化学习)
本论文指出,为了获得显著的加速效果,本文认为需要降低执行参与者推理的开销。为了实现这一目标,采用了神经网络量化。如图
也就是将上文提到的第二个状态的,前向推理的网络采用量化,来大大加速前向推理的速度。我们都知道量化网络一定会产生一定的误差,而这个误差其实就是我们需要的,也就是之前说的扰动和噪声的作用,但是,这里又不能使得量化后的网络精度降低太多,从而失去了本身的意义。故作者做了一些实验。
作者采用了最朴实无华的PTQ,QAT量化方法,对于一些游戏进行了实验,可以看到8bit量化后就会产生很大的误差,故不可取。
同时,作者还对比了Communication vs Computation,更新actor前向推理的网络权重的频率越频繁,就意味着通信的代价越大,而因为更新的越快,经验池的数据就越新,故网络就收敛的快。故作者又做了以下实验
得出,8bit最好。故本文提出了一个采用量化对于强化学习的加速策略。
如有错误,欢迎各位批评指正!!