97se亚洲综合在线,97成人碰碰久久人人超级碰oo,东京热人妻一区二区三区,狠狠色婷婷久久一区二区

利用Python實(shí)現(xiàn)卷積神經(jīng)網(wǎng)絡(luò)的可視化

開發(fā)技術(shù) 2018/5/24

對(duì)于深度學(xué)習(xí)這種端到端模型來說,如何說明和理解其中的訓(xùn)練過程是大多數(shù)研究者關(guān)注熱點(diǎn)之一,這個(gè)問題對(duì)于那種高風(fēng)險(xiǎn)行業(yè)顯得尤為重視,比如醫(yī)療、軍事等。在深度學(xué)習(xí)中,這個(gè)問題被稱作“黑匣子(Black Box)”。如果不能解釋模型的工作過程,我們?cè)趺茨軌蚓洼p易相信模型的輸出結(jié)果呢?

以深度學(xué)習(xí)模型檢測癌癥腫瘤為例,該模型告訴你它能夠檢測出癌癥的準(zhǔn)確率高達(dá)99%,但它并沒有告訴你它是如何工作并給出判斷結(jié)果的。那么該模型是在核磁共振掃描片子中發(fā)現(xiàn)了重要線索嗎?或者僅僅是將掃描結(jié)果上的污點(diǎn)錯(cuò)誤地認(rèn)為是腫瘤呢?模型的輸出結(jié)果關(guān)系到病人的生死問題及治療方案,醫(yī)生是不能承擔(dān)起這種錯(cuò)誤的。

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

1.卷積神經(jīng)網(wǎng)絡(luò)模型可視化的重要性

正如上文中介紹的癌癥腫瘤診斷案例所看到的,研究人員需要對(duì)所設(shè)計(jì)模型的工作原理及其功能掌握清楚,這點(diǎn)至關(guān)重要。一般而言,一名深度學(xué)習(xí)研究者應(yīng)該記住以下幾點(diǎn):

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

2. 調(diào)整模型的參數(shù)

3. 找出模型失敗的原因

4. 向消費(fèi)者/終端用戶或業(yè)務(wù)主管解釋模型做出的決定

現(xiàn)在讓我們看一個(gè)例子,可視化一個(gè)神經(jīng)網(wǎng)絡(luò)模型有助于理解其工作原理和提升模型性能。

曾幾何時(shí),美國陸軍希望使用神經(jīng)網(wǎng)絡(luò)自動(dòng)檢測偽裝的敵方坦克。研究人員使用50張迷彩坦克照片及50張樹林照片來訓(xùn)練一個(gè)神經(jīng)網(wǎng)絡(luò)。使用有監(jiān)督學(xué)習(xí)方法來訓(xùn)練模型,當(dāng)研究人員訓(xùn)練好網(wǎng)絡(luò)的參數(shù)后,網(wǎng)絡(luò)模型能夠?qū)τ?xùn)練集做出正確的判斷——50張迷彩坦克全都輸出“Yes”,50張樹林照片全都輸出“No”。但是這并不能保證模型對(duì)于新的樣本也能正確分類。聰明的是,研究人員最初拍攝了200張照片,其中包含了100張迷彩坦克照片、100張樹木照片。從中分別選取50張照片合計(jì)100張照片作為訓(xùn)練集,剩余的100張照片作為測試集。結(jié)果發(fā)現(xiàn),模型對(duì)測試集也能正確分類。因此,研究人員覺得模型沒有問題了,就將最終成果交付給軍方。原以為軍方會(huì)很滿意這份研究成果,結(jié)果軍方做出的反饋是他們進(jìn)行測試后發(fā)現(xiàn)效果并不好。

研究人員感覺此事有點(diǎn)蹊蹺,為什么之前測試時(shí)百分百準(zhǔn)確,而軍方測試的時(shí)候又掉鏈子了呢?最后終于發(fā)現(xiàn),原來是研究者的數(shù)據(jù)集出現(xiàn)了問題,采集迷彩坦克的時(shí)候是陰天,而采集樹林的時(shí)候是晴天,神經(jīng)網(wǎng)絡(luò)最終學(xué)會(huì)的是區(qū)分晴天和陰天,而不是區(qū)分迷彩坦克和樹林。這真是令人哭笑不得啊,那造成這個(gè)問題的主要原因還是沒有弄清楚模型的具體的工作原理及其功能。

2.可視化CNN模型的方法

根據(jù)其內(nèi)部的工作原理,大體上可以將CNN可視化方法分為以下三類:

1.初步方法:一種顯示訓(xùn)練模型整體結(jié)構(gòu)的簡單方法

2.基于激活的方法:對(duì)單個(gè)或一組神經(jīng)元的激活狀態(tài)進(jìn)行破譯以了解其工作過程

3.基于梯度的方法:在訓(xùn)練過程中操作前向傳播和后向傳播形成的梯度

下面將具體介紹以上三種方法,所舉例子是使用Keras深度學(xué)習(xí)庫實(shí)現(xiàn),另外本文使用的數(shù)據(jù)集是由“識(shí)別數(shù)字”競賽提供。因此,讀者想復(fù)現(xiàn)文中案例時(shí),請(qǐng)確保安裝好Kears以及執(zhí)行了這些步驟。

1初步方法

1.1 繪制模型結(jié)構(gòu)圖

研究者能做的最簡單的事情就是繪制出模型結(jié)構(gòu)圖,此外還可以標(biāo)注神經(jīng)網(wǎng)絡(luò)中每層的形狀及參數(shù)。在keras中,可以使用如下命令完成模型結(jié)構(gòu)圖的繪制:

model.summary()  

_________________________________________________________________  

Layer (type)                 Output Shape              Param #     

=================================================================  

conv2d_1 (Conv2D)            (None, 26, 26, 32)        320        

_________________________________________________________________  

conv2d_2 (Conv2D)            (None, 24, 24, 64)        18496       

_________________________________________________________________ 

max_pooling2d_1 (MaxPooling2 (None, 12, 12, 64)        0     

_________________________________________________________________  

dropout_1 (Dropout)          (None, 12, 12, 64)        0        

_________________________________________________________________  

flatten_1 (Flatten)          (None, 9216)              0        

_________________________________________________________________  

dense_1 (Dense)              (None, 128)               1179776     

_________________________________________________________________  

dropout_2 (Dropout)          (None, 128)               0          

_________________________________________________________________  

preds (Dense)                (None, 10)                1290        

=================================================================  

Total params: 1,199,882  

Trainable params: 1,199,882  

Non-trainable params: 0 

還可以用一個(gè)更富有創(chuàng)造力和表現(xiàn)力的方式呈現(xiàn)模型結(jié)構(gòu)框圖,可以使用keras.utils.vis_utils函數(shù)完成模型體系結(jié)構(gòu)圖的繪制。

1.2 可視化濾波器

另一種方法是繪制訓(xùn)練模型的過濾器,這樣就可以了解這些過濾器的表現(xiàn)形式。例如,第一層的第一個(gè)過濾器看起來像:

top_layer = model.layers[0]  

plt.imshow(top_layer.get_weights()[0][:, :, :, 0].squeeze(), cmap='gray') 

一般來說,神經(jīng)網(wǎng)絡(luò)的底層主要是作為邊緣檢測器,當(dāng)層數(shù)變深時(shí),過濾器能夠捕捉更加抽象的概念,比如人臉等。


中國· 上海

谷谷二維碼
添加微信咨詢

CopyRight?2009-2019 上海谷谷網(wǎng)絡(luò)科技有限公司 All Rights Reserved. 滬ICP備11022482號(hào)-8  

關(guān)于我們 | 聯(lián)系我們