我已经有两年 ML 经历,这系列课主要用来查缺补漏,会记录一些细节的、自己不知道的东西。
已经有人记了笔记(很用心,强烈推荐):https://github.com/Sakura-gh/ML-notes
本节内容综述- 助教讲解,日期为4月6日,主讲人杨书文。
- 首先将背景,对之前内容复习。
- 第一部分,Attribution,首先是What and why attribution?
- 上节课老师讲过,Local gradient-based,存在一些局限性(如大象鼻子的例子)。在肉眼无法看出来的情况,加一些noise,会影响结果。因此引出SmoothGrad解决Noisy gradient,考虑到了增加噪音来训练。
- 接着,引出Global attribution来解决Saturation问题。介绍了Layer-wise relevance propagation(LRP)方法。
- 接着,进行Completeness的讨论。衡量变量变化的影响。考虑到了比如DeepLIFT和Integrated gradient方法。
- 进行了一个小结,见 Take-away message。现在做 attribution method 很多方法,可能画出来的图很好看,但是未必有意义。后来,有人提出 Sensitivity-n 来衡量你的方法好不好。还提及了 Occlusion-1 。
- 接下来进入 Probing 部分。先介绍了 BERT 的结构,作为背景知识。BERT的每一层做了不同的事;此外,研究者发现BERT可能有理解不到的东西。
- Heatmap部分。
- 最后的部分,讲解Create an explainable model。
文章目录
- 本节内容综述
- 小细节
小细节
What and why attribution?
What:
- importance assignment for each input
- How each INPUT influences OUTPUT in an end-to-end fashion
Why:
- Know how model utilizes input to produce output
- Useful for both customers and researchers
SmoothGrad
M ^ c ( x ) = 1 n ∑ 1 n M c ( x + N ( 0 , σ 2 ) ) \hat{M}_c(x) = \frac{1}{n}\sum_{1}^nM_c (x+\mathcal{N}(0, \sigma^2)) M^c(x)=n11∑nMc(x+N(0,σ2))
如上,在训练与计算时加一些噪声。
Global attribution
如上,对于一个局部的视野来讲, x 1 x_1 x1的灵敏度是巨大的,为100, x 2 x_2 x2则为10,引出其关注的是"Future Sensitivity";但是对于全局视野来讲,我计算的是每个变量起了多少作用,比如 x 1 x_1 x1起了作用 100 × 1 100 \times 1 100×1,而 x 2 x_2 x2起的作用是 10 × 20 = 200 10 \times 20 = 200 10×20=200,引出全局视野关注的是"Current Contribution"。
因此,Global attribution的精神就是:attributions sum up to output.
比如我们输入了五个像素,如上图,最后得到的输出对应300。那我们希望这五个像素乘上五个权重,其结果也是300。
如何做到?
Layer-wise relevance propagation(LRP)
如上:
- 首先要Calculate contributions,将300“分下去”;
- 接下来在往下分下去,Redistribute the output;
- Backward propagation until reaching input。
Completeness
如上,每个点代表一张图片,其分数为这张图片对应的输出。
如上,有 baseline 与无baseline中,我们发现 x 1 x_1 x1与 x 2 x_2 x2二者贡献比例都很像。
Flexible baseline: DeepLIFT
如上,下面为输入了一张新图片,可以通过同类相减查看 baseline 。
Flexible baseline: Integrated gradient
如上,对于两张图(0, 0)与(2, 2),我们在其中间取几个路径上的点,然后得到其对应的输出。最后依公式算出 baseline 。
Take-away message
Sensitivity-n
如上,选一些输入 mask 掉,然后看分数差异。
如上,mask 掉不同数量的像素后,查看与原输出的大小比较。
发现很多例子中,都远远比不上 Occlusion-1 (红色虚线)。
Occlusion-1 / Leave one out
Occlusion-1 基本类似于 Sensitivity-1 。
Probing
我们知道,BERT先训练好知识存在自己的层种,之后于具体任务结合,会获得很好的结果。
但是 BERT 内究竟发生了什么?我们将尝试解决。
如上,这篇文章做了不少的 Probing tasks ,用了一个简单的 trick ,叫做 Edge probing technique 。
可以是把各层都拉出来,做词性标注的分类任务。此外,还做了 weight sum ,查看词性在那一层发生了作用。
还做了 Cumulative score ,比如先给你4层,看效果,再多一层,一共5层,看效果。
论文的图标如图。
What does BERT might not learn?
如上,人眼在看句子时,要进行句子切割。BERT有学习到么?
Unsupervised constituency parsing
如图,找哪两个相邻的单词最不像,然后“切一刀”,把两个句子分开。
但是如上,因为考虑到英文倾向于在右边切割,因此对每个单词,加上一个数值,进行“纠正”,越左边值越大。其分割效果可能会截然不同。
如图,无论有没有加这个 bias ,其结果都比不上专门进行分割的模型。因此,我们可以假设,BERT可能没有学到这个性质。
What is a good prob?
- Linear classifier?
-
- Not all information can be linear separable
- Multi-layer perceptrons?
-
- How may layers? 1, or 2 may be enough?
-
- Maybe it is just probing model that learns the downstream task!
一个坏的 prob ,可能记忆能力很强,只不过是记下来了所有的映射,导致效果很好。
Heatmap
Activation map: CNN dissection
Does activation map reflect some semantic concepts?
Concepts: objects, parts, scenes, textures, materials, and colors.
Dataset: Broden(released)
- Concept labels at PIXEL level
- CNN trained on large categorical classification dataset(eg Imagenet)
- Evaluate using Broden dataset
这个研究把图片的内容用黄色的线画出了边界。
评价指标为,每个像素为一个逻辑单位,总分数为并集分之交集。
最后观察到,浅层的卷积层,观察的主要是颜色、质地等等;深层的卷积层,观察到的更多的是图形的边界等等。
Attention map as explanation
Attention分数与所需的分数是否相关?
发现,在这种指标下,attention难以解释的。
这篇文章叫做 《attention is not explanation》,而之后,也有人写了文章叫做《attention is not not explanation》。
发现,基于 attention 的encoder确实有用,保留这个embedding,用别的模型,也能取得不错的效果。
Create an explainable model
Some difficulties in explaining CNN
- Activation map is complicated in final layers
-
- We only know they represent higher level semantics
-
- Combination of low level activations
- Visualize a category meaningfully is not easy
-
- There are nonsense images which still be classified as the specific category
Constraining activation map
在训练阶段,就试图限制 activation map 。
做出来,则可以直接生成 activation map ,对应到图片的位置。
Encoding prior
模型并不知道,什么是一张“好图片”,只知道输入输出。
如上,Classifier不但可以分类,还可以判断是否是一张图片。
如上,在Forward时,是一个分类器;如果Backward就变成了类似GAN的东西。
Adversarial training for encoding prior
训练一个鲁棒的分类器,然后进行Backward,就可以生成一张图片。