使用Python可視化卷積神經(jīng)網(wǎng)絡(luò)方法匯總

介紹深入學(xué)習(xí)中最具爭議的話題之一是如何解釋和理解一個經(jīng)過訓(xùn)練的模型——特別是在醫(yī)療等高風(fēng)險行業(yè)的背景下?!昂谙蛔印币辉~經(jīng)常與深度學(xué)習(xí)算法聯(lián)系在一起,如果我們不能解釋模型是如何工作的,我們怎么能相信模型的結(jié)果呢?這是個合理的問題。以一個為檢測癌癥而訓(xùn)練的深度學(xué)習(xí)模型為例,這個模型告訴你,它99%確定它已經(jīng)檢測到癌癥,但它并沒有告訴你為什么或者如何做出這個決定。是在核磁共振掃描中找到了重要線索的呢?還是只是掃描上的污點(diǎn)被錯誤地檢測為腫瘤?這是病人生死攸關(guān)的問題,醫(yī)生犯了錯后果是很嚴(yán)重。

在本文中,我們將探討如何可視化卷積神經(jīng)網(wǎng)絡(luò)(CNN),這是一種深入學(xué)習(xí)的體系結(jié)構(gòu),被用于最先進(jìn)的基于圖像的應(yīng)用程序;我們將了解可視化CNN模型的重要性,以及可視化它們的方法;我們還將看一個用例,它將幫助你更好地理解這個概念。目錄CNN模型可視化的重要性可視化方法顯著圖基于梯度的類激活圖最大激活圖像遮擋繪制模型架構(gòu)可視化濾波器基本方法基于激活的方法基于梯度的方法CNN模型可視化的重要性正如我們在上面的癌癥腫瘤例子中所看到的,我們知道我們的模型在做什么,以及它如何對預(yù)測做出決定,這是絕對重要的。通常,下面列出的原因是一個深度學(xué)習(xí)實踐者要記住的最重要的知識點(diǎn):了解模型的工作原理超參數(shù)調(diào)整找出模型的失敗之處并能夠解決失敗向消費(fèi)者/最終用戶或業(yè)務(wù)主管解釋決策讓我們看一個例子,在這個例子中,可視化一個神經(jīng)網(wǎng)絡(luò)模型有助于理解模型一些不好的行為和提高性能(下面的例子來自:http://intelligence.org/files/AIPosNegFactor.pdf)。曾幾何時,美國陸軍想使用神經(jīng)網(wǎng)絡(luò)來自動檢測偽裝的敵方坦克。研究人員用50張樹木偽裝的坦克照片和50張沒有坦克的樹木照片訓(xùn)練了神經(jīng)網(wǎng)絡(luò),使用標(biāo)準(zhǔn)技術(shù)來進(jìn)行監(jiān)督學(xué)習(xí),研究人員對神經(jīng)網(wǎng)絡(luò)進(jìn)行了訓(xùn)練,使其權(quán)重能夠正確加載訓(xùn)練集:對50張偽裝坦克的照片輸出“是”,對50張樹木照片的輸出“否”。這并不能確保新的例子也可以被正確分類。神經(jīng)網(wǎng)絡(luò)可能已經(jīng)“學(xué)習(xí)”了100個不會泛化到任何新問題的特殊情況,聰明的是,研究人員最初拍攝了200張照片,100張?zhí)箍苏掌?00張樹木照片,他們在訓(xùn)練場只使用了50個。研究人員在剩下的100張照片上運(yùn)行了神經(jīng)網(wǎng)絡(luò),在沒有進(jìn)一步訓(xùn)練的情況下,神經(jīng)網(wǎng)絡(luò)對剩下的所有照片進(jìn)行了正確的分類。不錯!研究人員把完成的工作結(jié)果交給五角大樓,五角大樓很快就把工作交還給了他們,他們抱怨說,在他們自己的測試中,神經(jīng)網(wǎng)絡(luò)在辨別照片方面跟隨機(jī)差不多。

結(jié)果發(fā)現(xiàn),在研究人員的數(shù)據(jù)集中,偽裝坦克的照片是在陰天拍攝的,而沒有偽裝的照片是在晴天拍攝的。神經(jīng)網(wǎng)絡(luò)學(xué)會了區(qū)分陰天和晴天,而不是區(qū)分偽裝坦克和空曠的森林。CNN模型的可視化方法大體上,CNN模型的可視化方法可以根據(jù)其內(nèi)部工作方式分為三個部分基本方法-向我們展示訓(xùn)練模型總體架構(gòu)的簡單方法基于激活的方法-在這些方法中,我們破譯單個神經(jīng)元或一組神經(jīng)元的激活函數(shù),以理解它們正在做什么基于梯度的方法-這些方法傾向于在訓(xùn)練模型時操縱由向前和反向傳播形成的梯度我們將在下面的章節(jié)中詳細(xì)介紹它們。在這里,我們將使用keras作為我們的庫來構(gòu)建深度學(xué)習(xí)模型,并使用keras-vis來可視化它們。在繼續(xù)之前,請確保你已經(jīng)在系統(tǒng)中安裝了這些程序。注:本文使用“Identify the Digits”競賽中給出的數(shù)據(jù)集,要運(yùn)行下面提到的代碼,你必須在系統(tǒng)中下載它。另外,在開始下面的實現(xiàn)之前,請執(zhí)行要求的步驟。數(shù)據(jù)集:https://datahack.a(chǎn)nalyticsvidhya.com/contest/practice-problem-identify-the-digits/準(zhǔn)備步驟:https://www.a(chǎn)nalyticsvidhya.com/keras_script-py/1.基本方法1.1 繪制模型架構(gòu)最簡單的方法就是打印模型。在這里,你還可以打印神經(jīng)網(wǎng)絡(luò)中各個層的形狀和每個層的參數(shù)。在keras中,可以按如下方式實現(xiàn):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,882Trainable params: 1,199,882Non-trainable params: 0為了更具創(chuàng)造性和表現(xiàn)力,你可以繪制一個架構(gòu)圖(keras.utils.vis_utils函數(shù))。

1.2 可視化濾波器另一種方法是繪制訓(xùn)練模型的濾波器,以便我們可以了解這些濾波器的行為。例如,上述模型第一層的第一個濾波器如下所示:top_layer = model.layers[0]plt.imshow(top_layer.get_weights()[0][:, :, :, 0].squeeze(), cmap='gray')

一般來說,我們看到低層的濾波器起到邊緣探測器的作用,當(dāng)我們走得更高時,它們傾向于捕捉像物體和人臉這樣的高層概念。

123下一頁>

(免責(zé)聲明:本網(wǎng)站內(nèi)容主要來自原創(chuàng)、合作伙伴供稿和第三方自媒體作者投稿,凡在本網(wǎng)站出現(xiàn)的信息,均僅供參考。本網(wǎng)站將盡力確保所提供信息的準(zhǔn)確性及可靠性,但不保證有關(guān)資料的準(zhǔn)確性及可靠性,讀者在使用前請進(jìn)一步核實,并對任何自主決定的行為負(fù)責(zé)。本網(wǎng)站對有關(guān)資料所引致的錯誤、不確或遺漏,概不負(fù)任何法律責(zé)任。
任何單位或個人認(rèn)為本網(wǎng)站中的網(wǎng)頁或鏈接內(nèi)容可能涉嫌侵犯其知識產(chǎn)權(quán)或存在不實內(nèi)容時,應(yīng)及時向本網(wǎng)站提出書面權(quán)利通知或不實情況說明,并提供身份證明、權(quán)屬證明及詳細(xì)侵權(quán)或不實情況證明。本網(wǎng)站在收到上述法律文件后,將會依法盡快聯(lián)系相關(guān)文章源頭核實,溝通刪除相關(guān)內(nèi)容或斷開相關(guān)鏈接。 )

贊助商
2020-08-17
使用Python可視化卷積神經(jīng)網(wǎng)絡(luò)方法匯總
介紹深入學(xué)習(xí)中最具爭議的話題之一是如何解釋和理解一個經(jīng)過訓(xùn)練的模型——特別是在醫(yī)療等高風(fēng)險行業(yè)的背景下。

長按掃碼 閱讀全文