終于等到了這個(gè)交互式學(xué)習(xí)神器,把 CNN 的工作過(guò)程畫(huà)得明明白白,幫助萌新輕松入門。
什么是 CNN?Convolutional Neural Network,中文譯為「卷積神經(jīng)網(wǎng)絡(luò)」。 這個(gè)常見(jiàn)但有些深?yuàn)W的詞匯,只可意會(huì),不能言傳。如果打開(kāi)教材,會(huì)看到這樣一些解釋:
卷積層是深度神經(jīng)網(wǎng)絡(luò)在處理圖像時(shí)十分常用的一種層。當(dāng)一個(gè)深度神經(jīng)網(wǎng)絡(luò)以卷積層為主體時(shí),我們也稱之為卷積神經(jīng)網(wǎng)絡(luò)。
神經(jīng)網(wǎng)絡(luò)中的卷積層就是用卷積運(yùn)算對(duì)原始圖像或者上一層的特征進(jìn)行變換的層……
說(shuō)得很有道理,但如果將一張圖片作為輸入,這張圖片究竟會(huì)在卷積神經(jīng)網(wǎng)絡(luò)中經(jīng)歷什么?這可真是太考驗(yàn)想象力了。 最近,來(lái)自佐治亞理工學(xué)院與俄勒岡州立大學(xué)的研究者們,考慮到初學(xué)者和非專業(yè)人士的學(xué)習(xí)痛點(diǎn),合作開(kāi)發(fā)出了一款卷積神經(jīng)網(wǎng)絡(luò)交互式可視化工具——CNN 解釋器(CNN Explainer)。這個(gè)解釋器展示了一個(gè) 10 層的神經(jīng)網(wǎng)絡(luò),包含卷積層、激活函數(shù)、池化層等多個(gè) CNN 初學(xué)者無(wú)論如何也繞不開(kāi)的概念。
這個(gè)工具到底把 CNN 展示得有多明白?簡(jiǎn)單來(lái)說(shuō),項(xiàng)目作者已經(jīng)給你做好了一個(gè)可以交互的界面,各種層、激活函數(shù)都鋪在眼前。你只需要打開(kāi)瀏覽器加載出這個(gè)界面,移動(dòng)鼠標(biāo)點(diǎn)來(lái)點(diǎn)去就可以了。
CNN Explainer 使用 TensorFlow.js 加載預(yù)訓(xùn)練模型進(jìn)行可視化效果,交互方面則使用 Svelte 作為框架并使用 D3.js 進(jìn)行可視化。最終的成品即使對(duì)于完全不懂的新手來(lái)說(shuō),也沒(méi)有使用門檻。下面我們來(lái)看一下具體的效果。 卷積層 既然是卷積網(wǎng)絡(luò),我們就先來(lái)看一下卷積層是怎么工作的。卷積層包含學(xué)習(xí)的卷積核,可以提取出每張圖像獨(dú)有的特征,因此是 CNN 的基礎(chǔ)。 當(dāng)你與卷積層進(jìn)行交互的時(shí)候,前面的層與卷積層之間會(huì)出現(xiàn)很多連線,其中的每條線都代表一個(gè)獨(dú)特的卷積核。這些卷積核用于卷積運(yùn)算,以生成當(dāng)前卷積神經(jīng)元的輸出或激活圖。 以交互圖中的 Tiny VGG 架構(gòu)為例。可以看到,它的第一個(gè)卷積層有 10 個(gè)神經(jīng)元,但前一層只有 3 個(gè)神經(jīng)元。聚焦于第一個(gè)卷積層頂端卷積神經(jīng)元的輸出,如果我們將鼠標(biāo)懸停在激活圖上,就可以看到這里有 3 個(gè)獨(dú)特的卷積核。
圖 1:如果將鼠標(biāo)懸停在第一個(gè)卷積層最前面的激活圖上,就可以看到此處應(yīng)用了 3 個(gè)卷積核來(lái)得到此激活圖。點(diǎn)擊此激活圖,可以看到每個(gè)卷積核都進(jìn)行了卷積運(yùn)算。
圖 2:用來(lái)生成上述激活圖頂端中間結(jié)果的卷積核。 激活函數(shù)ReLU ReLu 是 CNN 中的非常常用的一種非線性激活函數(shù),可以加快 CNN 的訓(xùn)練速度。它是一種一對(duì)一的數(shù)學(xué)運(yùn)算:
點(diǎn)擊交互圖中的 ReLU 神經(jīng)元就能觀察到這個(gè)激活函數(shù)是如何工作的:
Softmax 在卷積神經(jīng)網(wǎng)絡(luò)中,Softmax 函數(shù)通常用于分類模型輸出。在這個(gè) CNN 解釋器里,點(diǎn)擊最后一層,即可顯示網(wǎng)絡(luò)中的 Softmax 運(yùn)算過(guò)程:
在 Softmax 的這部分視圖中,用戶可以體驗(yàn)不同顏色的 logit 和公式交互,從而了解在 Flatten 層之后,預(yù)測(cè)分?jǐn)?shù)是如何歸一化從而產(chǎn)生分類結(jié)果的。 池化層 不同的 CNN 架構(gòu)有很多不同類型的池化層,但它們的目的都是逐漸縮小網(wǎng)絡(luò)的空間范圍,從而降低網(wǎng)絡(luò)的參數(shù)量和整體計(jì)算量。 這個(gè)交互圖里使用的池化類型是 Max-Pooling,其過(guò)程可以通過(guò)點(diǎn)擊圖中的池化神經(jīng)元來(lái)觀察:
Flatten 層 這一層將網(wǎng)絡(luò)中一個(gè)三維的層轉(zhuǎn)變?yōu)橐粋€(gè)一維向量,之后將其輸入到全連接層用于分類。因?yàn)橛糜诜诸惖?softmax 函數(shù)需要一維向量作為輸入(此處不包括 batch 維),因此需要用到 Flatten 層。 通過(guò)點(diǎn)擊任意一個(gè)輸出類別可查看該層是如何工作的。
-
神經(jīng)網(wǎng)絡(luò)
+關(guān)注
關(guān)注
42文章
4765瀏覽量
100568 -
卷積網(wǎng)絡(luò)
+關(guān)注
關(guān)注
0文章
42瀏覽量
2158
原文標(biāo)題:一個(gè)像素的旅行,華人博士卷積網(wǎng)絡(luò)可視化項(xiàng)目火了:點(diǎn)點(diǎn)鼠標(biāo)就能看懂的掃盲神器
文章出處:【微信號(hào):TheAlgorithm,微信公眾號(hào):算法與數(shù)據(jù)結(jié)構(gòu)】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
評(píng)論