近年來,對深度神經網路可解釋性和可解釋性方法的研究和探索已經取得了很大進展。目前,人工智慧正被越來越多的關鍵任務部門所接受。但是應用在這些關鍵性人物的深度學習或基於人工智慧的系統,哪怕是最輕微的計算錯誤,都可能導致信任喪失、金錢損失、社會經濟穩定甚至人命損失。
我們迫切需要打破深度學習模型的黑盒子特性,讓更大的使用者,尤其是普通使用者更容易理解它們。因為自從深度學習的發展以來,對模型可理解性的需求並不是模型本身要解決的的問題。還有一個關於AI公平性的更普遍的研究正在進行,但是在這篇文章中,我們不會深入研究這個研究的細節。相反,我將檢視找到一個非常精確的模型是否能達到人類層次的視覺。
在尋找答案的過程中,我針對MNIST數字資料訓練了一個簡單的CNN模型,並嘗試回答一些類似的問題。
1. 影象的哪一部分對分類結果很重要?
1. 高精度是否意味著可靠性?
1. 模型會像人類一樣思考嗎?
為了找到這些答案,我採用了一些已經流行的解釋性方法和一個基於自定義高階片段的視覺化解釋性方法。
模型MNIST可能是最簡單的計算機視覺資料集之一。 因此,我們不需要非常深的網路就可以在分類任務中實現非常高的準確性(> 90%)。 為此,我建立了一個非常簡單的模型,並對其進行了訓練,以實現96.25%的驗證準確度和95.15%的測試準確度。
傳統可解釋性研究現在採用一些流行的可解釋性方法來解釋分類器的預測。 我已使用" tf_explain"庫執行任務。 確切地說,我使用了庫中的SmoothGrad,積分梯度和遮擋敏感度方法。 測試是在測試資料集的第一個影象上執行的,該影象最終是數字7。
CNN模型正確地將輸入類別預測為7,得分為0.9993(softmax)。 以下是用於執行上述三種方法的方法和輸出的程式碼。
可解釋性方法的視覺化
基於歸因的可解釋性方法為基於單個畫素梯度的模型結果提供推理。 每個畫素均被視為模型的單獨輸入(獨立)變數。 遮擋敏感度透過使用在輸入影象上方的滑動視窗告訴我們輸入影象的不同部分如何影響模型的決策。 對於我們的實驗,視窗大小為3x3。 除了影象的強度之外,單畫素本身對影象沒有太多高階功能。
因此,問題仍然在於這種可解釋性是否可以與人類的視覺相媲美。
基於高階分割的可解釋性人類視覺與計算機視覺的區別主要體現在兩個方面。首先,人類大腦是先驗知識的巨大來源,這些先驗知識由各種感覺器官、經驗和記憶獲得。深度學習模型缺乏這種視覺相關任務的先驗知識。其次,當我們看到一張圖片時,我們不是聚焦於完整的圖片,而是聚焦於圖片的不同區域,收集高階特徵,然後整合所有這些高階特徵來決定這張圖片。如果我們問自己為什麼輸入的是數字7的影象。我們可能會這樣回答:它有一條水平線和一條相連的傾斜的垂直線,並且它與我們之前知道的數字7相匹配,因此這個輸入影象實際上是7的分類。
我們能從CNN模型中得到這個層次的解釋嗎?為了找出答案,我使用了一種特殊的技術。我使用' skimage '庫使用' Felzenszwalb '方法對輸入影象進行分段,而不是將整個影象作為模型的輸入,我將單個片段作為模型的輸入,並預測類和分數。
我發現這個實驗的結果不同尋常。如果您檢視前三個部分,它們只是數字7的實際影象的水平線,那麼模型可以將它們預測為class 7,並獲得近乎完美的分數。這些段和數字7一點也不像。而第四部分,有點像數字7,預測分數下降到0.913。
這一發現進一步強調了這個問題,網路實際上在學習什麼。它是否能夠像人類一樣學習高級別的特徵或者它只是找到一些低層次的畫素不同強度模式的互動作用然後根據這些模式的存在或不存在對影象進行分類?
結論這個文章的目的是要證明這樣一個事實,即高精度並不意味著這個模型是可靠的,或者它已經達到了人類對影象的理解水平。結果恰恰相反。因此,作為深度學習的實踐者,我們必須確保模型確實能夠基於可靠的高階特性執行與視覺相關的任務。在我們將所有任務移交給基於人工智慧或深度學習的系統之前,這種可靠性是非常必要的。我認為,尋找更可靠的可解釋性或可靠性方法仍處於初期階段,未來我們將能夠為與視覺相關的任務建立更可靠的模型。
譯者注我們翻譯這篇文章的目的並不是因為我們同意這篇文章的觀點,而是因為這篇文章給出了一個非常好的研究方法,在文章中說到我們人類具有最大特點就是我們的先驗知識,其實這才是現階段AI和人類的差距。
以這篇文章最後的分割舉例,第一張圖,在們有任何背景的條件下,我們肯定認為他是中文的 "一",而對於外國人來說可能就是減號,這就是我們的先驗知識。但是對於我們訓練的模型,因為僅有10個分類 0,1,2,3,4,5,6,7,8,9,我特意將這些數字打出,大家可以看一看,如果只從這10個數字裡面挑選的話,7是不是與第一張圖最相似?
但是為什麼能得到0.999的得分呢?我個人理解的原因是因為softmax函式的原因,具體可以去看看label smooth,如果讓兩端的極值往中間湊,顯示結果應該會好很多。