티스토리 뷰
[논문 리뷰🐱🏍] SmoothGrad: Removing noise by adding noise 2017 ICML
ESin99 2021. 11. 20. 22:53개인적으로 논문 스터디를 진행 후 정리한 노션(Notion) 내용을 기반하여 정리한 글입니다.
논문 링크 : https://arxiv.org/pdf/1706.03825.pdf
1. Introduction
A common approach to understanding the decisions of image classification systems is to find regions of an image that were particularly influential to the final classification.
⇒ CV field, finding discriminative region이 task goal
A common approach ~..
These approaches use occlusion techniques or calculations with gradients to as sign an "importance" value to individual pixels which is meant to reflect their influence on the final classification.
⇒ Heatmap (representing discriminative regions)
At the same time, sensitivity maps are often visually noisy, highlighting some pixels that-to a human eye-seem randomly selected.
⇒ Problem, randomly하게 된 것처럼 보이기도 함 (accuracy가 떨어짐)
SmoothGRAD ⇒ tends to reduce visual nosie, and also can combined with other sensitivity map algorithms.
⇒ noise 줄이는 것으로 조금 더 정답에 가깝게 하겠음
The core idea is to take an image of interest, sample similar images by adding noise to the image, then take the average of the resulting sensitivity maps for each sampled image.
⇒ noise 추가해서 비슷한 image sample 만들고 이를 통해서 sensitivity maps 만들고 average(뭐든 평균내는 게 계속 나오는 데 이거 백퍼 문제됨)
2. Gradients as sensitivity maps
Classification on CV 기존 방식은 아래와 같이 말할 수 있음
$class(x) = argmax_{c\in{C}}S_c(x)$
⇒ $C$ : class들
⇒ $c$ : 그 중 한 class
⇒ $S_c(x)$ : c라고 판단한 score
⇒ $x$ : input image
If the functions $S_c$ are piecewise differentiable, for any image $x$ one can construct a sensitivity map $M_c(x)$ simply by differentiating $M_c$ with respect to the input.
⇒ 부분적으로 미분이 가능하기만 하다면, 이를 이용해서 sensitivity map 만들기 가능
⇒ $M_c(x) = \partial S_c(x)/\partial x$
⇒ represents how much difference a tiny change in each pixel of x
⇒ key region을 보여주는 거겠다고 생각할 수 있음
However, the sensitivity maps based on raw gradients are typically visually noisy.
One possibility, of course, is that the maps are faithful descriptions of what the network is doing. Perhaps certain pixels scattered, seemingly at random, across the image are central to how the network is making a decision.
⇒ (정확하게 이해는 안 가지만) 아무튼 특정 픽셀들이 결정에 중요하다는 건, 그만큼 feature extraction을 정확히 object로만 한 건 아닐 거라는 거, 그래서 heatmap을 쓰면 결국엔 정확하지 않을 거라는 것으로 이해함
One issue with using the gradient as a measure of influence is that an important feature may "saturate" the function $S_c$. In other words, it may have a strong effect globally, but with a small derivative locally.
⇒ gradient 기반이라는 것은, 변화량이 큰 게 영향을 많이 미쳤을 거라는 생각에 기반한 것임
⇒ 근데 중요한 feature는 이미 Score에 영향을 많이 줬을 거임.
⇒ 그러면 전체 layer로 보면 큰 영향을 미쳤을 거로 보임.
⇒ 근데? local하게 보면 영향이 작을 수도 있어. (마지막 레이어까지 가기 전에 많은 변화가 있었을 수도 있잖아)
Maps created with these techniques(DeepLift, LRP, Integrated Gradients) are referred to as "saliency" or "pixel attribution" maps.
⇒ 이러한 average해서 내는 것들을 모아서 saliency, pixel attribution이라고 부른다!
Another strategy for enhancing sensitivity maps has been to change or extend the backpropagation algorithm itself, with the goal of emphasizing positive contributions to the final outcome.
⇒ Average가 아니라 전체에서 positive 영향 주는 것만 남겨(별로인 걸 버리는 guided propagation이라든가..)
쨌든 이 모든 방법들 (sensitivity map, saliency map, pixel attribution map)을 다 모아서 한 번에 sensitivity maps라고 하겠다! (추후 Sanity checks 논문에서도 이어짐)
2.2. Smoothing noisy gradients
The apparent noise one sees in a sensitivity map may be due to essentially meaningless local variations in partial derivatives.
⇒ 스코어 값의 미분값은 작은 변화에도 크게 움직일 것임, 근데 이게 사실상 큰 의미는 없을 수도 있지. (important한 region이 아닐 수도 있고)
$S_c$ generally will not even be continuously differentiable.
⇒ 미분을 그냥 해버리는 것도 수학적으로 옳지 않기도 함.
⇒ activation map으로 ReLU쓰는데, 애초에 ReLU가 globally differentiable한 function도 아님
⇒ 위의 사진에 의하면 왼 / 오 변한 거 하나도 없어보이지만 사실 조금씩 변화시켰고 변화량이 그래프처럼 flucuating하는 걸 볼 수 있음
⇒ 우리는 이런 것들 중에 maximum을 볼 거임 (maximum한 게 가장 significant하다고 생각하는 듯)
Given these rapid fluctuations, the gradient of $S_c$ at any given point will be less meaningful than a local average of gradient values.
⇒ 그러니까, 여태까지 average한 게 문제가 될 것이라고 생각을 했었는데, 사실상 noise가 정말 많았었음, 이것들을 잠재우는 역할을 하는 방법 중 하나로 averaging이 있기도 했음
⇒ 그러니 우리는(필자는) 그냥 the gradient of $S_c$를 쓰지 않고 그걸 먼저 다듬은 다음에 사용하는 방법을 말해주겠어!
⇒ Gaussian noise을 추가함
$\hat{M}_c(x) = {1\over n}\sum_1^nM_c(x+N(0, \sigma^2))$
$N(0, \sigma^2)$ represents Gaussian nosie with standard deviation $\sigma$
⇒ This method as SMOOTHGRAD throughout the paper.
3. Experiments
Sensitivity maps are typically visualized as heatmaps.
Some of these techniques may be universally useful regardless of the choice of sensitivity map methods.
3.1. Visualization methods and techniques
Absolute value of gradients
Sensitivity map algorithms often produce signed values.
There is considerable ambiguity in how to convert signed values to colors.
A key choice is whether to represent positive and negative values differently, or to visualize the absolute value only.
⇒ 기존의 방법이 모호함을 보여줌
The utility of taking the absolute values of gradients or not depends on the characteristics of the dataset of interest.
⇒ 진짜 문제점, context에 되게 의존적임
One possible explanation for this phenomenon is that direction is context dependent.
⇒ 실제로 해보니까, 밝은 배경에 어두운 공을 넣으면 negative gradient를 갖고, 어두운 배경에 밝은 공을 넣으면 positive gradient를 갖는 경우도 있음
⇒ 이미지를 CNN에서 처리할 때, Max-Pooling을 하게 되면 생기는 문제가 아닐까? (RGB는 작은 게 어두운 값이니까)
Capping outlying values
Another property of the gradient that we observe is the presence of few pixels that have much higher gradients than the average.
⇒ 평균내는 것에 대해 우리가 반감을 갖는 이유는?
⇒ 큰 값과 작은 값이 평균값으로 모이니까 별로라고 생각하잖아!
These outlying values have the potential to throw off color scales completely. Capping those extreme values to a relatively high value leads to more visually coheerent maps as in ~.
⇒ 이런 outlying되는 값들을 잡아내는 것이 중요하다!
⇒ outlying values라는 게 정확히 뭐지?, 평균값보다 이상할 정도로 높은 값들을 말하는 것 같음, 큰 영향을 준다기보다 그냥 이상하게 미분값이 큰 것
Multiplying maps with the input images
Some techniques create a final sensitivity map by multiplying gradient-based values and actual pixel values.
⇒ However, this may result in undesired side effect. Pixels with values of 0 will never show up on the sensitivity map.
⇒ 그래서 input image를 곱하거나 안 곱하는 건 실제로 해서 결과를 보고함
3.2. Effect of noise level and sample size
$\sigma$: the noise level or standard deviation of the Gaussian perturbations
$n$: the number of samples to average over. (결국 averaging은 함)
Noise, $\sigma$
0% : standard gradient, 'Vanila' method throughout the paper
We observe that applying 10%-20% noise seems to balance the sharpness of sensitivity map and maintain the structure of the original image.
⇒ noise값이 많아지면 많아질수록 더욱 확인하기 어려운 건 당연함! 그래서 10~20%를 기준으로 함!
Sample size, $n$
⇒ noise값이 많아지면 많아질수록 더욱 확인하기 어려운 건 당연함! 그래서 10~20%를 기준으로 함!
여기서 말하는 Sample size라는 것은?
⇒ 노이즈 넣은 샘플의 개수를 말한다!
3.3. Qualitative comparison to baseline methods
Since there is no ground truth to allow for quantitative evaluation of sensitivity maps, we follow prior work and focus on two aspects of qualitative evaluation.
(1) First, we insspect visual coherence (the highlights are only on the object of interest, not the background)
(2) Second, we test for discriminativity, where in an image with both a monkey and a spoon, one would expect an explanation for a monkey classification to be concentrated on the monkey rather than the spoon, and vice versa.
On the contrary, our observation is that SMOOTHGRAD has the highest impact when the object is surrounded with uniform background color.
⇒ 차이점 있을 수밖에 없다!
⇒ 왜? : smoothing을 위해서 noise를 넣어주었는데 nosie를 넣어서 구하는 방식은 공간정보를 조금 부족하게 만들 수도 있으니까!
⇒ 그래서 공간정보가 object랑 연관성이 조금 있을 때 (uniform background) 더 잘 되는 게 smoothgrad
⇒ universially 적용은 어려워 보임 (주관적인 견해)
Figure 6. Discriminativity of different methods. For each image, we visualize the difference scale($\partial{y_1}/\partial{x}$)—scale($\partial{y_2}/\partial{x}$) where $y_1$ and $y_2$ are the logits for the first and the second class (i.e., cat or dog) and scale() normalizes the gradient values to be between [0, 1]. The values are plotted using a diverging color map [-1, 0, 1] → [blue, gray, red]. Each method is represented in columns.
여기서 GuidedBackProp 방법이 상당히 안 되는데, 그것에 대한 고찰은 없었다.
3.4. Combining SmoothGrad with other methods
averaging the vanilla sensitivity maps of $n$ noisy images. With that in mind, the same smoothing procedure can be used to augment any gradient-based method.
Smoothing 방식이 다른 Grad-CAM 방식에도 적용이 잘 되는 걸 볼 수 있다.
3.5. Adding noise during training
어라? network에 영향을 미치는 weight정도만 적당히 바꾸는 거랑 뭐가 다르지?
싶을 수도 있다!
⇒ 하지만, weight를 수정하는 방식으로 간다고 한들, noise를 넣어서 어쩔 수 없이 끼는 noise를 삭제하는 방식이 더욱 잘 판단하는 것을 알 수 있다!
4. Conclusion and future work
Additional Opinion (Subjective)
(1) Noise를 넣어서 Noise를 제거한다는 Normalization과 같은 효과를 낸 것은 여러 분야에 적용할 수도 있는 technical novelty라고 생각함