1. 程式人生 > >利用Python實現卷積神經網路的視覺化(附Python程式碼)

利用Python實現卷積神經網路的視覺化(附Python程式碼)

對於深度學習這種端到端模型來說,如何說明和理解其中的訓練過程是大多數研究者關注熱點之一,這個問題對於那種高風險行業顯得尤為重視,比如醫療、軍事等。在深度學習中,這個問題被稱作“黑匣子(Black Box)”。如果不能解釋模型的工作過程,我們怎麼能夠就輕易相信模型的輸出結果呢?

以深度學習模型檢測癌症腫瘤為例,該模型告訴你它能夠檢測出癌症的準確率高達99%,但它並沒有告訴你它是如何工作並給出判斷結果的。那麼該模型是在核磁共振掃描片子中發現了重要線索嗎?或者僅僅是將掃描結果上的汙點錯誤地認為是腫瘤呢?模型的輸出結果關係到病人的生死問題及治療方案,醫生是不能承擔起這種錯誤的。

bd72b499782f544d452a2ea2a566e9e1a3cea470

在本文中,將探討如何視覺化卷積神經網路(CNN),該網路在計算機視覺中使用最為廣泛。首先了解CNN模型視覺化的重要性,其次介紹視覺化的幾種方法,同時以一個用例幫助讀者更好地理解模型視覺化這一概念。

1.卷積神經網路模型視覺化的重要性

正如上文中介紹的癌症腫瘤診斷案例所看到的,研究人員需要對所設計模型的工作原理及其功能掌握清楚,這點至關重要。一般而言,一名深度學習研究者應該記住以下幾點:

1. 理解模型是如何工作的

2. 調整模型的引數

3. 找出模型失敗的原因

4. 向消費者/終端使用者或業務主管解釋模型做出的決定

現在讓我們看一個例子,視覺化一個神經網路模型有助於理解其工作原理和提升模型效能。

曾幾何時,美國陸軍希望使用神經網路自動檢測偽裝的敵方坦克。研究人員使用50張迷彩坦克照片及50張樹林照片來訓練一個神經網路。使用有監督學習方法來訓練模型,當研究人員訓練好網路的引數後,網路模型能夠對訓練集做出正確的判斷——50張迷彩坦克全都輸出“Yes”,50張樹林照片全都輸出“No”。但是這並不能保證模型對於新的樣本也能正確分類。聰明的是,研究人員最初拍攝了200張照片,其中包含了100張迷彩坦克照片、100張樹木照片。從中分別選取50張照片合計100張照片作為訓練集,剩餘的100張照片作為測試集。結果發現,模型對測試集也能正確分類。因此,研究人員覺得模型沒有問題了,就將最終成果交付給軍方。原以為軍方會很滿意這份研究成果,結果軍方做出的反饋是他們進行測試後發現效果並不好。