深度學習小白 卷積神經網路視覺化(二)

2021-07-30 06:54:16 字數 3289 閱讀 1718

一、由卷積後的code得到原始影象

可以看出隨著卷積網路的進行,越來越多的資訊被扔掉了,能還原除的資訊也就越少。

二、deep dream

google發明的起初是用來看神經網路各層在「看」什麼,後來因為得到的影象很具有藝術感,所以成為了乙個藝術生成器。

此處objective函式把梯度設定成和啟用值一樣!,然後再反向傳播,其目的就是加強所有神經元的啟用值,無論什麼使神經元啟用,都想要增強這個啟用

舉個例子

如果把雲彩圖輸入,卷積神經網路可能會認為其中有一些像狗的部分(因為imagenet中有很多動物,所以對動物很敏感),所以在梯度訊號中就想要朝著增強狗的特徵的方向,於是一次次更新後,就會越來越像狗。這是在inception_4c/output層反向傳播得到的結果,在其它層會出現不同的影象。

三、neural style

同樣是用原始影象加上卷積神經網路用優化做出來的,可以把影象變成另外一種風格。

原理:輸入兩張,一張取其內容,一張取其風格。首先輸入內容影象,記錄下其所有原始啟用值。

然後輸入風格,不過這次不是保留原始啟用值,該作者發現了乙個很好表現風格的統計資訊,那就是gram matrices(格拉姆矩陣)

舉個例子,在vgg第乙個卷積層,神經元維度為v.t=【224*224*64】,通過g=v.t*v,我們將得到乙個【64*64】的gram matrices,它體現了成對的特徵值的協方差在空間域上求和,這樣跟蹤了每一對特徵是否在資料體內經常同時被啟用。

這裡為什麼採用gram matrices,我在知乎上找到乙個答案:

「我是這樣理解為什麼用gram 矩陣的:度量各個維度自己的特性以及各個維度之間的關係。

style transfer 當中,什麼是風格,存在自己特性的才叫做風格。因此如何去度量這個自己的特性勒,自己的特點越突出,別人的越不突出最好。

這樣我們知道:當同乙個維度上面的值相乘的時候原來越小就變得更小,原來越大就變得越大;二不同維度上的關係也在相乘的表達當中表示出來。因此,最終能夠在保證內容的情況下,進行風格的傳輸」

一般內容影象只用網路中的一層來進行優化,優化的是啟用值,而風格影象要用很多層,去盡可能匹配某風格的gram matrices

如果只用風格,則會得到亂序的風格,因為所有的空間資訊都沒有重建。此處優化用lbfgs,因為我們只優化單張圖,所以記憶體不是很緊張

四、「fool」 convnets

intriguing properties of neural networks, szegedy et al., 2013]

13年的時候,上述科學家希望通過改變原始影象的梯度,然後反向傳播,最後希望原影象能發生朝著我們希望的類別(鴕鳥)的轉變。

但結果是,神經網路認為其是ostrich類,但我們人眼看卻沒有什麼變化,即fool convnets

在卷積網路以前,也有類似的情況出現,2023年,一篇**生成了乙個與源影象hog完全一樣,但卻看上去與另乙個很相似的。

人們管這個叫做對抗樣本adversarial examples

explaining and harnessing adversarial examples

[goodfellow, shlens & szegedy, 2014]

這篇**的結論就是這種脆弱性的主要原因就是前向傳播過程中用到函式的線性特性

影象是高維的,我們在訓練卷積網路時,卷積網路只在一小空間裡的效果很好,但最後我們在頂部放了乙個線性函式,在那些小空間之外,我們就好像是完全隨機地對空間進行了分割,因為那裡我們沒有訓練過

再舉個logistic例子

通過對每個x進行微調(改變0.5)最後將這些改變線性疊加,最終輸出就變成了2,分成class1的概率也從5%變到88%

而這僅僅是10維,考慮224*224維的,梯度告訴了接下來應該變化的方向,比如增加分類為鴕鳥的概率,於是就可以把這15萬多個畫素值每個都改變一點點,這就可以使得最終得分完全改變,讓神經網路以為類別發生了改變,而外觀卻只改變了一點點。

實際上,這個問題不僅限於卷積網路,普通的線性分類器也有,但這是人們在認為設計卷積網路時發現的問題。這個問題也不僅針對影象,對其他模態也有類似問題。目前還沒有很好的解決方案。

卷積神經網路的視覺化

2014eccv紐約大學 matthew d.zeiler,rob fergus文章主要技巧 使用視覺化技巧 反卷積網路 deconvnet 來直 到cnn中間層的特徵對應的影象區域,deconvnet在 zeiler et al.2011 中被用作無監督學習,本文則用來進行視覺化演示。一層反卷積網...

卷積神經網路視覺化理解

看了cs231的課程,想自己嘗試做下視覺化,權當加深對卷積神經網路的理解吧。課程 課程裡提到第一層卷積一般做的是傳統視覺的工作,主要提取一些有向邊,視覺化卷積核的原因是類似模板匹配的思想啥的,具體我也沒有深究。我自己的看法是,視覺化卷積核,權重大的位置說明該點對輸出啟用影響大,第一層卷積恰好對應影象...

視覺化探索卷積神經網路提取特徵

卷積神經網路的發展主要是為了解決人類視覺問題,不過現在其它方向也都會使用。發展歷程主要從lenet5 alexnet vgg goolenet resnet等。傳統bp神經網路層與層之間都是全連線的,對於影象處理領域,當神經網路處理大影象時,全連線會導致待訓練的引數非常龐大,比如100萬個畫素的影象...