这篇文章比较难,需要较多的概率论和信息论知识,论文中公式推导给的不是特别多,有些过程并没有做推导,因此不是太能理解,不过大概意思是能懂的。
论文提出了一种知识量计算方法,通过计算每个输入的知识量,来表征每个输入的重要程度
总的想法非常简单,就是对每个输入加一个可学习的扰动,通过Loss函数来使得这个扰动大小能代表对应输入的重要程度
这是输出的hidden state:S和输入X的互信息,不过其实这个公式在这里没啥用,作者主要是要引出后面这个条件熵
条件熵
H
(
X
∣
S
)
H(X|S)
H(X∣S),就是知道输出的情况下,输入的熵
换句话说,就是经过这层layer,有多少输入的信息量被抛弃了。(论文中是这么说的,不过照理说不是应该用信息增益来作为抛弃的量嘛,如果H(X|S)越大,代表信息增益越小,也就是抛弃的信息量越小)
上面这个公式,X代表这个句子,s代表这个句子输出的最后一个hidden state(分类任务),也就是说,这是求这个句子的条件熵,我们最终要拿到的是每个单词的条件熵(或者说是抛弃的信息量),因此这里有个独立性假设,假设每个单词的embedding都是独立的,因此有句子的熵=每个单词的熵相加
但是每个单词的条件熵并不好求,这里
p
(
x
i
∣
s
)
p(x_i|s)
p(xi∣s)怎么求都不知道,因此用另一种方法来近似
(1)对每个输入增加一个可学习的高斯噪声
每个单词加的噪声都不同,都是独立的,均值为0,方差为
σ
i
2
\sigma_i^2
σi2,这个方差是可学习的
(2)模型训练,计算Loss
这个Loss的优化目标:
1、最小化原始输出和扰动后的输出的距离,也就是说这个扰动要能使得输出尽量不变
2、最大化扰动后的总的条件熵,也就是说,加了扰动之后,尽量使得输入变化大,就算知道原始输出,输入X的信息量(随机性)也很大
通过推导可以得到
上式中K是x_i的维度
这个条件熵是关于该word的扰动的方差的函数,且方差越大,条件熵越大,所以最大化条件熵,实际上是最大化扰动(的方差)
同时还要保证输出的hidden state变化尽量小,因此,对输出影响越大的word加的噪声会越小,对输出影响越小的word加的噪声越大。
因此,可以用噪声的大小来衡量输入word对输出的影响程度,即知识量
这张图就很好地描述了上面两个过程。
其实跟那种加个噪声看输出变化量来评估word重要程度的方法差不多,只不过这里是学习噪声,使得噪声能反映word的重要程度