日本精品无码一区二区三区久久久,99久久国产综合色婷婷,7777精品伊人久久久大香线蕉,人人妻人人澡人人爽人人dvd,久久精品中文字幕

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

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

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

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

在本文中,將探討如何可視化卷積神經(jīng)網(wǎng)絡(luò)(CNN),該網(wǎng)絡(luò)在計(jì)算機(jī)視覺(jué)中使用最為廣泛。首先了解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)者/終端用戶(hù)或業(yè)務(wù)主管解釋模型做出的決定

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

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

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

2.可視化CNN模型的方法

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

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

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

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

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

1初步方法

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

研究者能做的最簡(jiǎn)單的事情就是繪制出模型結(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)練模型的過(guò)濾器,這樣就可以了解這些過(guò)濾器的表現(xiàn)形式。例如,第一層的第一個(gè)過(guò)濾器看起來(lái)像:

top_layer = model.layers[0]  

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

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


中國(guó)· 上海

谷谷二維碼
添加微信咨詢(xún)

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

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