【强化学习 198】RL Generalization with SNI and IBAC
原文传送门
特色
提出强化学习泛化问题相比于有监督学习泛化问题的区别,并且基于有监督学习泛化技术提出 selective noise injection (SNI)技术和 information bottleneck actor-critic (IBAC)来提升强化学习的泛化性能。
内容
一、问题背景
有监督学习里面常用的防止过拟合的技术通常包括一些正则化技术,比如:
- Weight decay:又叫做 L2 regularization,就是把最小化神经网络参数的二范数作为正则项;
- Data augmentation:把提供的输入状态做一些随机变换,从而提高模型的泛化性;
- Batch normalization: 用一个 batch 中的 mean-variance 来在某一层上对于数据做归一化处理;
- Dropout:随机把一层中的某些神经元屏蔽掉;
- Variational information bottleneck:希望中间表示层随机变量在和输出结果相关性最大的同时,减小该随机变量与输入的相关性。
注意到,这些正则化技术都是作用于深度学习模型上的,并且里面都包含有随机性(除了第一个)。文章接下来说明直接在强化学习的模型中应用这些技术会带来一些特殊的问题。
考虑一个 actor-critc 算法
其中蓝色的标注的是我们需要优化的模型,而红色部分表示如果在这些部分加入随机化,那么会产生不好的结果:
- 首先,策略更新公式期望下的红色 pi。如果对它做随机化,可能会使得采样的轨迹变差;特别注意到,在某些环境下,如果在采样的轨迹中一步走差了,可能后面就整个轨迹废掉了,在这种情况下,采样使用的策略上的随机化会带来更大的负面影响;
- 其次,策略更新公式期望里面的红色 pi。如果对它做随机化,而蓝色部分也会做独立的随机化,那么这会导致他们的比值(importance ratio)的方差变得更大,从而产生负面影响;
- 最后,策略更新公式和价值函数更新公式中的 V。它们是用于作为 baseline 或者 target 的,做随机化只会带来更大的 variance。
二、方法
文章提出 selective noise injection (SNI),只在蓝色部分的神经网络计算的时候增加相应的随机正则化约束,而在红色部分就不增加。具体来说:
策略更新部分
除了把红色部分都不施加随机正则项(suspend noise)了之外(上面一横表示不施加随机正则),还对于要更新的蓝色部分的一定比例也不施加随机正则。注意到,对于不同的正则化方法,suspend noise 的方法也不一样,比如
- 对于 dropout 可以规定某个特定的 dropout mask;
- 对于 VIB 可以直接把概率分布的 mode 作为采样;
- 对于 BN 可以把 moving average 计算得到的或者任意固定的统计量来替代 batch 上的统计量。
价值函数更新部分
直接把红色部分 suspend noise 即可。
接下来,文章把 variational information bottleneck 和 SNI 相结合,提出了 IBAC 算法。
其中,第一、三项是从 information bottleneck 导出来的,第一项对应从表示 z=f(s) 到 y 的重构误差,由于是强化学习,因此这里是用的 PG 的 loss 来代替的。使用 reparametrization trick,可以把采样过程用一个 epsilon 来代替。第二项是一个策略熵的正则化项。
三、实验
VIB 在数据量较少的情况下,能抽取出更为有效的信息
这个实验的设定有点像 张楚珩: 【强化学习 197】Observational Overfitting in RL 里面的 (f,g)-scheme,不过这里 g 是可泛化的部分,f 是不可泛化的部分。如果 f 的强度越大,就更不容易 fit 到 f 相关的特征上,问题就越简单。左图:我们发现在问题泛化比较难的时候,VIB 的 testing loss 更小/效果更好。右图:在数据量小的时候,VIB 也效果更好。
Multirooms 环境:训练的时候每次都从 MDP 分布中采样一个,不过可能的 MDP (房间的构型)实在是太多了,因此训练的时候不可能每个都见过,并且也很难见到训练时一样的。
Coinrun 环境:训练的时候只见过特定的某几个关卡,测试的时候后另外的关卡。