日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

积分梯度:一种新颖的神经网络可视化方法

發布時間:2024/10/8 编程问答 29 豆豆
生活随笔 收集整理的這篇文章主要介紹了 积分梯度:一种新颖的神经网络可视化方法 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

?PaperWeekly 原創 ·?作者|蘇劍林

單位|追一科技

研究方向|NLP、神經網絡

本文介紹一種神經網絡的可視化方法:積分梯度(Integrated Gradients),它首先在論文 Gradients of Counterfactuals?[1] 中提出,后來 Axiomatic Attribution for Deep Networks?[2] 再次介紹了它,兩篇論文作者都是一樣的,內容也大體上相同,后一篇相對來說更易懂一些,如果要讀原論文的話,建議大家優先讀后一篇。

當然,它已經是 2016-2017 年間的工作了,“新穎”說的是它思路上的創新有趣,而不是指最近發表。

所謂可視化,簡單來說就是對于給定的輸入 x 以及模型 F(x),我們想辦法指出 x 的哪些分量對模型的決策有重要影響,或者說對 x 各個分量的重要性做個排序,用專業的話術來說那就是“歸因”。一個樸素的思路是直接使用梯度 來作為 x 各個分量的重要性指標,而積分梯度是對它的改進。

然而,筆者認為,很多介紹積分梯度方法的文章(包括原論文),都過于“生硬”(形式化),沒有很好地突出積分梯度能比樸素梯度更有效的本質原因。本文試圖用自己的思路介紹一下積分梯度方法。

樸素梯度

首先,我們來學習一下基于梯度的方法,其實它就是基于泰勒展開:

我們知道 是大小跟 x 一樣的向量,這里 為它的第 i 個分量,那么對于同樣大小的 , 的絕對值越大,那么 相對于 的變化就越大,也就是說:

衡量了模型對輸入的第 i 個分量的敏感程度,所以我們用 作為第 i 個分量的重要性指標。

這種思路比較簡單直接,在論文 How to Explain Individual Classification Decisions?[3] 和 Deep Inside Convolutional Networks: Visualising Image Classification Models and Saliency Maps?[4] 都有描述,在很多時候它確實也可以成功解釋一些預測結果,但它也有明顯的缺點。

很多文章提到了飽和區的情況,也就是一旦進入到了飽和區(典型的就是 的負半軸),梯度就為 0 了,那就揭示不出什么有效信息了。

從實踐角度看,這種理解是合理的,但是筆者認為還不夠深刻。從之前的文章對抗訓練淺談:意義、方法和思考(附 Keras 實現)可以看出,對抗訓練的目標可以理解為就是在推動著 ,這也就可以理解為,梯度是可以被“操控”的,哪怕不影響模型的預測準確率的情況下,我們都可以讓梯度盡可能接近于0。

所以,回到本文的主題,那就是: 確實衡量了模型對輸入的第 i 個分量的敏感程度,但敏感程度不足以作為重要性的良好度量。

積分梯度

鑒于直接使用梯度的上述缺點,一些新的改進相繼被提出來,如 LRP [5]、DeepLift [6] 等,不過相對而言,筆者還是覺得積分梯度的改進更為簡潔漂亮。

2.1 參照背景

首先,我們需要換個角度來理解原始問題:我們的目的是找出比較重要的分量,但是這個重要性不應該是絕對的,而應該是相對的。比如,我們要找出近來比較熱門的流行詞,我們就不能單根據詞頻來找,不然找出來肯定是“的”、“了”之類的停用詞,我們應當準備一個平衡語料統計出來的“參照”詞頻表,然后對比詞頻差異而不是絕對值。這就告訴我們,為了衡量 x 各個分量的重要性,我們也需要有一個“參照背景” 。

當然,很多場景下我們可以簡單地讓 ,但這未必是最優的,比如我們還可以選擇 為所有訓練樣本的均值。我們期望 應當給一個比較平凡的預測結果,比如分類模型的話, 的預測結果應該是每個類的概率都很均衡。于是我們去考慮 ,我們可以想象為這是從 x 移動到 的成本。

如果還是用近似展開(1),那么我們將得到:

對于上式,我們就可以有一種新的理解:

從 x 移動到 的總成本為 ,它是每個分量的成本之和,而每個分量的成本近似為 ,所以我們可以用 作為第i個分量的重要性指標。

當然,不管是 還是 ,它們的缺陷在數學上都是一樣的(梯度消失),但是對應的解釋卻并不一樣。前面說了, 的缺陷源于“敏感程度不足以作為重要性的良好度量”,而縱觀這一小節的推理過程, 的缺陷則只是因為“等式(2)僅僅是近似成立的”,但整個邏輯推理是沒毛病的。

2.2 積分恒等

很多時候一種新的解釋能帶給我們新的視角,繼而啟發我們做出新的改進。比如前面對缺陷的分析,說白了就是說“ 不夠好是因為式(2)不夠精確”,那如果我們直接能找到一個精確相等的類似表達式,那么就可以解決這個問題了。

積分梯度正是找到了這樣的一個表達式:設 代表連接 x 和 的一條參數曲線,其中 ,那么我們有:

可以看到,式(3)具有跟(2) 一樣的形式,只不過將 換成了 。但式(3) 是精確的積分恒等式,所以積分梯度就提出使用:

作為第i個分量的重要性度量。作為最簡單的方案,自然就是將 取為兩點間的直線,即:

這時候積分梯度具體化為:

所以相比 的話,就是用梯度的積分?

替換 ,也就是從 x 到 的直線上每一點的梯度的平均結果。直觀來看,由于考慮了整條路徑上的所有點的梯度,因此就不再受某一點梯度為 0 的限制了。

如果讀者看了積分梯度的兩篇原始論文,就會發現原論文的介紹是反過來的:先莫名其妙地給出式(6),然后再證明它滿足兩點莫名其妙的性質(敏感性和不變性),接著證明它滿足式(3)。

總之就是帶著讀者做了一大圈,就是沒說清楚它是一個更好的重要性度量的本質原因——大家都是基于對 的分解,而式(3)比式(2)更為精確。

2.3 離散近似

最后就是這個積分形式的量怎么算呢?深度學習框架沒有算積分的功能呀。其實也簡單,根據積分的“近似-取極限”定義,我們直接用離散近似就好,以式(6)為例,它近似于:

所以還是那句話,本質上就是“從 x 到 的直線上每一點的梯度的平均”,比單點處的梯度效果更好。

實驗效果

看完了理論,我們再來看看實驗效果。

3.1 原始效果

原始論文實現:

https://github.com/ankurtaly/Integrated-Gradients

下面是原論文的一些效果圖:

▲ 原論文中對梯度和積分梯度的比較(CV任務,可以看到積分梯度能更精細地突出重點特征)

▲?原論文中對梯度和積分梯度的比較(NLP任務,紅色為正相關,藍色是負相關,灰色為不相關)

3.2 個人實現

雖然 Keras 官網已經給出了參考實現了(請看這里 [7]?),但代碼實在是太長,看著太累,筆者根據自己的理解也用 Keras 實現了一個,并應用到了 NLP 中,具體代碼見:

https://github.com/bojone/bert4keras/blob/master/examples/task_sentiment_integrated_gradients.py

目前的代碼僅僅是簡單的 demo,歡迎讀者在此基礎上派生出更強大的代碼。

▲?筆者在中文情感分類上對積分梯度的實驗效果(越紅的token越重要)

上圖中筆者給出了幾個樣本的效果(模型對上述樣本的情感標簽預測都是正確的),由此我們可以推測原模型進行情感分類的原理。從上圖我們可以看到,對于負樣本,積分梯度可以比較合理地定位到句子中的負面詞語,而對于正樣本,哪怕它的語法格式跟負樣本一樣,卻無法定位到句子中的正面詞語。

這個現象表明,原模型做情感分類的思路可能是“負面檢測”,也就是說主要做負面情緒檢測,而檢測不到負面情緒則視為正樣本,這大概是因為沒有“中性”樣本訓練所帶來的結果。

又到文末

本文介紹了一種稱為“積分梯度”的神經網絡可視化方法,利用它可以一定程度上更好描述輸入的各個分量的重要程度。積分梯度通過沿著路徑對梯度進行積分來構建了精確的等式,彌補了泰勒展開的不足,從而達到了比直接使用梯度更好的可視化效果。

參考文獻

[1] https://arxiv.org/abs/1611.02639

[2] https://arxiv.org/abs/1703.01365

[3] https://arxiv.org/abs/0912.1128

[4] https://arxiv.org/abs/1312.6034

[5] https://arxiv.org/abs/1604.00825

[6] https://arxiv.org/abs/1704.02685

[7] https://keras.io/examples/vision/integrated_gradients/

更多閱讀

#投 稿?通 道#

?讓你的論文被更多人看到?

如何才能讓更多的優質內容以更短路徑到達讀者群體,縮短讀者尋找優質內容的成本呢?答案就是:你不認識的人。

總有一些你不認識的人,知道你想知道的東西。PaperWeekly 或許可以成為一座橋梁,促使不同背景、不同方向的學者和學術靈感相互碰撞,迸發出更多的可能性。?

PaperWeekly 鼓勵高校實驗室或個人,在我們的平臺上分享各類優質內容,可以是最新論文解讀,也可以是學習心得技術干貨。我們的目的只有一個,讓知識真正流動起來。

?????來稿標準:

? 稿件確系個人原創作品,來稿需注明作者個人信息(姓名+學校/工作單位+學歷/職位+研究方向)?

? 如果文章并非首發,請在投稿時提醒并附上所有已發布鏈接?

? PaperWeekly 默認每篇文章都是首發,均會添加“原創”標志

?????投稿郵箱:

? 投稿郵箱:hr@paperweekly.site?

? 所有文章配圖,請單獨在附件中發送?

? 請留下即時聯系方式(微信或手機),以便我們在編輯發布時和作者溝通

????

現在,在「知乎」也能找到我們了

進入知乎首頁搜索「PaperWeekly」

點擊「關注」訂閱我們的專欄吧

關于PaperWeekly

PaperWeekly 是一個推薦、解讀、討論、報道人工智能前沿論文成果的學術平臺。如果你研究或從事 AI 領域,歡迎在公眾號后臺點擊「交流群」,小助手將把你帶入 PaperWeekly 的交流群里。

總結

以上是生活随笔為你收集整理的积分梯度:一种新颖的神经网络可视化方法的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。