模型可解释性 DeepLIFT 论文解析

论文标题:Learning Important Features Through Propagating Activation Differences

论文作者:Avanti Shrikumar, Peyton Greenside, Anshul Kundaje

论文发表时间及来源:Oct 2019,ICML

论文链接:http://proceedings.mlr.press/v70/shrikumar17a/shrikumar17a.pdf

DeepLIFT方法

1. DeepLIFT理论

        DeepLIFT解释了目标输入、目标输出与“参考(reference)”输入、“参考”输出间的差异。“参考”输入是人为选择的中性的输入。

        用x_{i}表示单层神经元或多层神经元的集合,x^{0}x_{i}对应的“参考”,有\Delta x_{i}=x_{i}-x^{0}。用t表示目标输入经过x_{i}的输出(当x_{i}

\sum_{i=1}^{n}C_{\Delta x_{i}\Delta t}=\Delta t\qquad(1)

2. 乘数(Multiplier)与链式法则

(multiplier)\quad m_{\Delta x\Delta t}=\frac{C_{\Delta x\Delta t}}{\Delta x}\qquad(2)

        乘数与偏导数类似:偏导数\frac{\partial t}{\partial x}是指x产生无穷小变化时,t的变化率;而乘数是指x产生一定量的变化后,t的变化率。

m_{\Delta x_{i}\Delta t}=\sum_{j}^{}m_{\Delta x_{i}\Delta y_{j}}m_{\Delta y_{j}\Delta t}\qquad(3)

        这里\Delta y_{j}可理解为中间层的\Delta t。给定每个神经元与其直接后继的乘数,即可计算任意神经元与目标神经元的乘数。

3. 定义“参考”

        MNIST任务中,使用全黑图片作为“参考”。

        CIFAR10任务中,使用原始图像的模糊版本能突出目标输入的轮廓,而全黑图片作为参考时产生了一些难以解释的像素。

        DNA序列分类任务中,以ATGC的期望频率作为“参考”。即目标输入是四维的one-hot编码,“参考”输入是相同维度的ATGC期望频率。这里还有一种方法没有看懂,见Appendix J。

4. 区分正、负贡献

\Delta y=\Delta y^{+}+\Delta y^{-}\qquad(4)

C_{\Delta y\Delta t}=C_{\Delta y^{+}\Delta t}+C_{\Delta y^{-}\Delta t}\qquad(5)

        当应用RevealCancel规则时,区分正、负贡献非常重要。

5. 分配贡献分数的规则

线性规则

        用于Dense层,卷积层,不可用于非线性层。定义线性函数y=b+\sum_{i}^{}\omega _{i}x_{i},则\Delta y=\sum_{i}^{}\omega _{i}\Delta x_{i}

\Delta y^{+}=\sum_{i}^{}1\left \{ \omega _{i}\Delta x_{i}> 0 \right \}\omega _{i}\Delta x_{i}=\sum_{i}^{}1\left \{ \omega _{i}\Delta x_{i}> 0 \right \}\omega _{i}\left \{ \Delta x_{i}^{+}+\Delta x_{i}^{-} \right \}\qquad(6)” class=”mathcode” src=”https://latex.codecogs.com/gif.latex?%5CDelta%20y%5E%7B+%7D%3D%5Csum_%7Bi%7D%5E%7B%7D1%5Cleft%20%5C%7B%20%5Comega%20_%7Bi%7D%5CDelta%20x_%7Bi%7D%3E%200%20%5Cright%20%5C%7D%5Comega%20_%7Bi%7D%5CDelta%20x_%7Bi%7D%3D%5Csum_%7Bi%7D%5E%7B%7D1%5Cleft%20%5C%7B%20%5Comega%20_%7Bi%7D%5CDelta%20x_%7Bi%7D%3E%200%20%5Cright%20%5C%7D%5Comega%20_%7Bi%7D%5Cleft%20%5C%7B%20%5CDelta%20x_%7Bi%7D%5E%7B+%7D+%5CDelta%20x_%7Bi%7D%5E%7B-%7D%20%5Cright%20%5C%7D%5Cqquad%286%29″/></p><p style=\Delta y^{-}=\sum_{i}^{}1\left \{ \omega _{i}\Delta x_{i}< 0 \right \}\omega _{i}\Delta x_{i}=\sum_{i}^{}1\left \{ \omega _{i}\Delta x_{i}< 0 \right \}\omega _{i}\left \{ \Delta x_{i}^{+}+\Delta x_{i}^{-} \right \}\qquad(7)

C_{\Delta x_{i}^{+}\Delta y^{+}}=1\left \{ \omega _{i}\Delta x_{i}> 0 \right \}\omega _{i}\Delta x_{i}^{+}\qquad(8)” class=”mathcode” src=”https://latex.codecogs.com/gif.latex?C_%7B%5CDelta%20x_%7Bi%7D%5E%7B+%7D%5CDelta%20y%5E%7B+%7D%7D%3D1%5Cleft%20%5C%7B%20%5Comega%20_%7Bi%7D%5CDelta%20x_%7Bi%7D%3E%200%20%5Cright%20%5C%7D%5Comega%20_%7Bi%7D%5CDelta%20x_%7Bi%7D%5E%7B+%7D%5Cqquad%288%29″/></p><p style=C_{\Delta x_{i}^{-}\Delta y^{+}}=1\left \{ \omega _{i}\Delta x_{i}> 0 \right \}\omega _{i}\Delta x_{i}^{-}\qquad(9)” class=”mathcode” src=”https://latex.codecogs.com/gif.latex?C_%7B%5CDelta%20x_%7Bi%7D%5E%7B-%7D%5CDelta%20y%5E%7B+%7D%7D%3D1%5Cleft%20%5C%7B%20%5Comega%20_%7Bi%7D%5CDelta%20x_%7Bi%7D%3E%200%20%5Cright%20%5C%7D%5Comega%20_%7Bi%7D%5CDelta%20x_%7Bi%7D%5E%7B-%7D%5Cqquad%289%29″/></p><p style=C_{\Delta x_{i}^{+}\Delta y^{-}}=1\left \{ \omega _{i}\Delta x_{i}< 0 \right \}\omega _{i}\Delta x_{i}^{+}\qquad(10)

C_{\Delta x_{i}^{-}\Delta y^{-}}=1\left \{ \omega _{i}\Delta x_{i}< 0 \right \}\omega _{i}\Delta x_{i}^{-}\qquad(11)

m_{\Delta x_{i}^{+}\Delta y^{+}}=m_{\Delta x_{i}^{-}\Delta y^{+}}=1\left \{ \omega _{i}\Delta x_{i}>0 \right \}\omega _{i}\qquad(12)” class=”mathcode” src=”https://latex.codecogs.com/gif.latex?m_%7B%5CDelta%20x_%7Bi%7D%5E%7B+%7D%5CDelta%20y%5E%7B+%7D%7D%3Dm_%7B%5CDelta%20x_%7Bi%7D%5E%7B-%7D%5CDelta%20y%5E%7B+%7D%7D%3D1%5Cleft%20%5C%7B%20%5Comega%20_%7Bi%7D%5CDelta%20x_%7Bi%7D%3E0%20%5Cright%20%5C%7D%5Comega%20_%7Bi%7D%5Cqquad%2812%29″/></p><p style=m_{\Delta x_{i}^{+}\Delta y^{-}}=m_{\Delta x_{i}^{-}\Delta y^{-}}=1\left \{ \omega _{i}\Delta x_{i}<0 \right \}\omega _{i}\qquad(13)

if \Delta x_{i}=0\quad m=0.5\omega _{i}\qquad(13)

        公式有点复杂,举例说明。“参考”输入\left [ 0, 0 \right ]\cdot \left [ 3, 4 \right ]^{T}=0,目标输入\left [ 1, 2 \right ]\cdot \left [ 3, 4 \right ]^{T}=11,则由式(6)得\Delta y^{+}=(1-0)*3+(2-0)*4=11,由式(8)得\left [ 1, 2 \right ]两个特征贡献分数分别为3和8,由式(12)得两个神经元的乘数分别为3和4。乘数的作用是,如果神经网络有两层线性函数,\left [ 3, 4 \right ]^{T}为第一层神经元,\left [ 5 \right ]为第二层神经元,则第二层的乘数为5,由式(3)得整个神经网络第一个特征的乘数为15,第二个特征的乘数为20,每个位置的输入乘以乘数就是其贡献分数。

Rescale规则

        用于非线性层,如ReLU,tanh或sigmoid等。由于非线性函数y=f\left ( x \right )只有一个输入,则C_{\Delta x\Delta y}=\Delta ym_{\Delta x\Delta y}=\frac{\Delta y}{\Delta x}\Delta y^{^{+}}\Delta y^{^{-}}分别为:

\Delta y^{^{+}}=\frac{\Delta y}{\Delta x}\Delta x^{^{+}}=C_{\Delta x^{^{+}}\Delta y^{^{+}}}\qquad(14)

\Delta y^{^{-}}=\frac{\Delta y}{\Delta x}\Delta x^{^{-}}=C_{\Delta x^{^{-}}\Delta y^{^{-}}}\qquad(15)

m_{\Delta x^{+}\Delta y^{+}}=m_{\Delta x^{-}\Delta y^{-}}=m_{\Delta x\Delta y}=\frac{\Delta y}{\Delta x}\qquad(16)

        当x\rightarrow x^{0}时,m_{\Delta x\Delta y}可用梯度代替。Rescale规则解决了梯度饱和问题和值域问题,例子见论文。

RevealCancel规则

       这里说明为何 \Delta y^{^{+}}\Delta y^{^{-}} 需分开计算。下图是一个计算最小值的操作,假定i_{1}^{0}=i_{2}^{0}=0,目标输入i_{1}=3i_{2}=1,则h_{1}=(3-1)=2>0″ class=”mathcode” src=”https://latex.codecogs.com/gif.latex?h_%7B1%7D%3D%283-1%29%3D2%3E0″/>,<img decoding=。根据线性规则,可知C_{\Delta i_{1}\Delta h_{1}}=i_{1}=3C_{\Delta i_{2}\Delta h_{1}}=-i_{2}=-1。根据Rescale规则,m_{\Delta h_{1}\Delta h_{2}}=\frac{\Delta h_{2}}{\Delta h_{1}}=1C_{\Delta i_{1}\Delta h_{2}}=m_{\Delta h_{1}\Delta h_{2}}C_{\Delta i_{1}\Delta h_{1}}=i_{1}=3C_{\Delta i_{2}\Delta h_{2}}=m_{\Delta h_{1}\Delta h_{2}}C_{\Delta i_{2}\Delta h_{1}}=-i_{2}=-1。则i_{1}总贡献分数为C_{\Delta i_{1}\Delta o}=\Delta i_{1}m_{\Delta i_{1}\Delta o}=\Delta i_{1}(1+m_{\Delta i_{1}\Delta h_{1}}m_{\Delta h_{1}\Delta h_{2}}m_{\Delta h_{2}\Delta o})=0, i_{2}总贡献分数为C_{\Delta i_{2}\Delta o}=\Delta i_{2}m_{\Delta 2_{1}\Delta o}=\Delta i_{2}m_{\Delta i_{2}\Delta h_{1}}m_{\Delta h_{1}\Delta h_{2}}m_{\Delta h_{2}\Delta o}=1

模型可解释性 DeepLIFT 论文解析

         同样地,梯度,输入*梯度方法也会赋予其中一个特征0的贡献分数,这忽略了特征间的相互依赖性。  \Delta y^{^{+}}\Delta y^{^{-}} 分开计算的公式为:

\Delta y^{+}=\frac{1}{2}(f(x^{0}+\Delta x^{+})-f(x^{0}))+\frac{1}{2}(f(x^{0}+\Delta x^{-}+\Delta x^{+})-f(x^{0}+\Delta x^{-})) (17)

\Delta y^{-}=\frac{1}{2}(f(x^{0}+\Delta x^{-})-f(x^{0}))+\frac{1}{2}(f(x^{0}+\Delta x^{+}+\Delta x^{-})-f(x^{0}+\Delta x^{+}))(18)

m_{\Delta x^{+}\Delta y^{+}}=\frac{C_{\Delta x^{+}\Delta y^{+}}}{\Delta x^{+}}=\frac{\Delta y^{+}}{\Delta x^{+}}; m_{\Delta x^{-}\Delta y^{-}}=\frac{\Delta y^{-}}{\Delta x^{-}}\qquad(19)

        用这种方法计算出i_{1}i_{2}的贡献分数均为0.5,其过程简单来说是把每一层神经元输出做+、-的区分,两条路径分别计算乘数与贡献分数后再加和。计算过程有点复杂,详见Appendix C 3.4。 

文章出处登录后可见!

已经登录?立即刷新

共计人评分,平均

到目前为止还没有投票!成为第一位评论此文章。

(0)
乘风的头像乘风管理团队
上一篇 2023年2月26日 上午10:36
下一篇 2023年2月26日 上午10:37

相关推荐