发表时间:2018(ICML2018)
文章要点:这篇文章用saliency map的方式来做RL agent的可视化,目的就是想分析一下agent做某个动作的时候到底关注的是输入的哪个部分,这样可以对RL的agent有一定的可解释性。比如下图这个效果
其中蓝色是policy关注的点,红色是value关注的点,可以看出来关注的点还挺正确的,效果还不错。方法的思路就是通过给像素添加扰动,来看哪个部分的影响最大,比如breakout这个游戏,我们添加扰动把小球盖住,结果导致policy发生了变换,那就说明小球很重要,policy在关注小球这个位置。具体的,扰动的添加方式为
这里(i,j)表示添加噪声的位置,大写的(I_t)表示在t时刻的图像,(M(i,j))是以位置(i,j)为中心的一个二维高斯分布,其中(sigma^2=25)。(A)表示添加的噪声,其中标准差为(sigma_A)。一个圆一个点那个符号就是两个矩阵对应位置相乘。所以这个式子的第一项就是根据(M(i,j))的概率分布保留原始图片的信息,很显然越靠近((i,j))保留的原始信息就越少。然后第二项就是根据(M(i,j))的概率分布来添加扰动(A),很显然越靠近((i,j))添加的扰动就越大。
接下来就是如何评估对policy和value的影响。对policy,作者取policy前面那层logits的输出然后和真实值做差的平方,value就直接对value做差的平方。式子如下
然后就可以画出来之前那个saliency map了。
总结:挺有意思的工作,从结果上看确实是看出来了关注的点。不过每次画一张图,都需要分别在每个像素上添加扰动,想想这个计算量还是很大了。
疑问:不知道这个添加扰动的方式通不通用,会不会换个环境就需要调参了,比如里面两个标准差的选择之类的。