# Grad-CAM 詳解 (1) **將像素值加總求得平均** * $F^k$ 是 feature map 求得 global average pooling 的結果 * $Z$ 是 feature map 的 pixel 數量 * $A^k_{ij}$ 是 feature map 的 pixel value $$F^k=\frac{1}{Z}\sum_i\sum_jA^k_{ij}$$ (2) **使用 GAP 求的最終的結果** ![](https://i.imgur.com/APqyQP9.png) * $Y^c$ 是 CAM 的結果數值。 * $W^c_k$ 是第 c 個類別(class)的第 k 個 feature map,以上面圖中的例子就是 Australian terrier 的權重。 * $F^k$ 是 feature map。 $$Y^c=\sum_k w^c_k \cdot F^k$$ 接下來,我們想要知道有沒有其他不用改變模型的方法可以求得 $w^c_k$。 From Chain Rule (3) $$ \frac{\partial Y^c}{\partial F^k}=\frac{\partial Y^c}{\partial A^k_{ij}}\frac{\partial A^k_{ij}}{\partial F^k}=\frac{\frac{\partial Y^c}{\partial A^k_{ij}}}{\frac{\partial F^k}{\partial A^k_{ij}}} $$ $$ \Rightarrow \frac{\partial Y^c}{\partial F^k}=\frac{\partial Y^c}{\partial A^k_{ij}}\cdot Z $$ from (2) we get: $$ \frac{\partial Y^c}{\partial F^k}=\frac{\partial \sum_k w^c_k \cdot F^k}{\partial F^k}=w^c_k $$ $$ \Rightarrow w^c_k=\frac{\partial Y^c}{\partial A^k_{ij}}\cdot Z $$ 接著,在等號兩邊加上 $\sum_i\sum_j$ $$ \sum_i\sum_jw^c_k=\sum_i\sum_j\frac{\partial Y^c}{\partial A^k_{ij}}\cdot Z $$ $$ Z\,w^c_k=Z \sum_i\sum_j\frac{\partial Y^c}{\partial A^k_{ij}} $$ $$ w^c_k=\sum_i\sum_j\frac{\partial Y^c}{\partial A^k_{ij}} $$ 從最後的結果我們可以看到,只要將 $Y^c$ 求得 $A^k_{ij}$ 偏導數就可以得到 $w^c_k$。意思是說將 softmax 前的結果對 feature map 的像素做偏微分,再將其加總就可以得出屬於該結點的權重。 而其實求偏導數的過程就是反向傳播,所以其實只要透過反向傳播就能夠輕易地求得我們想要的 $w^c_k$。 ![](https://i.imgur.com/APqyQP9.png) :::info 作者: Airwaves 文章連結: https://hackmd.io/s/B1EI-DcD7 版權聲明: 本篇文章採用 [:copyright: BY-NC-SA](https://creativecommons.org/licenses/by-nc-sa/4.0/deed.zh) 許可協議。轉載請註明出處! :::