John Carmack长文
策略更替现象
作者提出,深度强化学习中的策略更替(policy churn)提供了隐式探索,其规模可能淹没显式探索方法,并导致泛化改进的假阴性结果。作者通过实验观察到,在Breakout中,样本动作因策略更替而在所有18个动作间跳变,且深度值函数的过度泛化导致所有样本变化幅度相似。作者认为,网络稀疏化可能减少策略更替,但需补充显式探索。
RL Policy Churn
关于这个问题,我现在有了一个不错的理论。论文《The Phenomenon of Policy Churn》https://arxiv.org/pdf/2206.00730 中提到了这一点。RL中经典的探索方法是“epsilon greedy”,即智能体通常采取预测价值最高的“贪婪”动作,但在少量帧中会执行完全随机的动作。令人惊讶的是,在深度RL中,将epsilon设为0.0通常不会导致智能体性能发生变化。即使“没有探索”,它仍然能正常学习。这是因为标准网络架构已经使得“最佳动作”在训练过程中半随机地变化,从而提供了一种隐式的探索形式。这被称为“policy churn”。我很久以前读过这篇论文,但最近当我可视化我的智能体中发生的policy churn量时,仍然感到震惊。我记录了八个样本点,每个点都是在Breakout中得分前100帧的位置,这意味着它们即将回球并且已经在做正确的事情。在接下来的30,000个优化器步骤中,我每次重新评估这些样本,发现大多数样本仅仅因为policy churn而在所有18种可能动作之间跳来跳去。由于这是一种隐式效应,没有明确的旋钮来调节它,但论文做了大量良好的实验来检验各种假设。Policy churn的规模对研究意味着两件令人不安的事情:旨在改进探索的方案很可能完全被policy churn带来的隐式探索所淹没。智能体在其生命周期的某些阶段几乎肯定已经过度探索。原本有益的算法改动,比如泛化能力的提升,如果隐式地过度减少了policy churn探索,可能会产生假阴性结果。这与最近我做的另一个令人惊讶的测量有关,我认为它能很好地解释这一现象。如果你训练一个深度价值函数来修正TD误差,并且在训练后重新评估样本发现它移动了+10,你认为所有其他样本的变化分布会是什么样的?直觉上,你会希望与训练样本非常相似的样本变化量也相近,比如+8左右,然后逐渐递减到大多数完全不相似的样本没有变化。而我的特定网络中实际发生的情况是,每个样本都变化了+9或更多,变化最大的样本与变化最小的样本之间只有不到1.0的小差距。对批次和多个训练步骤取平均会抑制这种效应,但仍然存在大量有害的过度泛化。这是使用ReLU激活的标准稠密网络训练的基本特性,你可以在单层网络中看到这一点。由于所有激活值都>=0,反向传播梯度在所有地方都会与误差同号,因此产生的输出变化在所有地方也会同号。平均而言,每个样本中大约一半的激活值>0,一半的权重会因梯度而移动,所以激活通道越多,值就越有偏差。如果你用网络稀疏性等方法来解决这个问题,那么你很可能会消除policy churn,而如果不添加更明确的探索策略,智能体的性能就会下降。
RL Policy Churn I have a good theory about this now. The Phenomenon of Policy Churn https://arxiv.org/pdf/2206.00730 The classic exploration method in RL is “epsilon greedy”, where the agent normally takes the “greedy” action with the highest predicted value, but on a small fraction of the frames a completely random action will be taken. Surprisingly, in deep RL, setting epsilon to 0.0 often produces no change in agent performance. It still learns fine, even with “no exploration”. This is because standard network architectures already cause the “best action” to change semi-randomly as trainin…