<label id="jgr5k"></label>
    <legend id="jgr5k"><track id="jgr5k"></track></legend>

    <sub id="jgr5k"></sub>
  1. <u id="jgr5k"></u>
      久草国产视频,91资源总站,在线免费看AV,丁香婷婷社区,久久精品99久久久久久久久,色天使av,无码探花,香蕉av在线
      您正在使用IE低版瀏覽器,為了您的雷峰網賬號安全和更好的產品體驗,強烈建議使用更快更安全的瀏覽器
      此為臨時鏈接,僅用于文章預覽,將在時失效
      人工智能開發者 正文
      發私信給AI研習社
      發送

      0

      雜談CNN:如何通過優化求解輸入圖像

      本文作者: AI研習社 2017-06-27 16:00
      導語:關于CNN(卷積神經網絡)的雜談。

      雷鋒網按:本文作者達聞西,原載于作者知乎專欄,雷鋒網經授權發布。

      機器學習和優化問題

      很多機器學習方法可以歸結為優化問題,對于一個參數模型,比如神經網絡,用 y=f(x;θ) 來表示的話,訓練模型其實就是下面的參數優化問題:

      雜談CNN:如何通過優化求解輸入圖像

      其中 L 是loss function,比如神經網絡中分類常用的 cross-entropy。

      CNN學到了什么?

      特征(Representation)。把原始圖像看做一個維度是像素×通道的向量,經過各種復雜的CNN結構,其實只不過成了另一個向量。這個向量所在的空間也許有更好的線性可分性,也許是相似樣本的“距離”更近,原始的數據經過變換到了這里之后,就是特征。

      可視化CNN

      那么有個問題來了,如何可視化一個CNN結構學到的特征呢?答案有很多,其中一種就是本文的主題:不再通過優化求解網絡的參數,而是求解輸入圖像

      優化網絡的輸入,是相對于“正統”的機器學習優化參數而言的。當一個CNN訓練完全后,我們可以固定好參數,把輸入作為可訓練的量,根據目的給定一個新的目標函數。

      把這種方法最早用在深度學習里大概是Bengio組在2009年的一個Tech report:《Visualizing Higher-Layer Features of a Deep Network》。文章里提出了下面的優化問題

      雜談CNN:如何通過優化求解輸入圖像

      雜談CNN:如何通過優化求解輸入圖像

      其中 hij 代表第j層中的第i個神經元的響應。很直觀的,這是要尋找什么樣的圖像可以最大程度地激活這個神經元,這種方法就叫做 activation maximization。利用這種辦法,原文中得到了類似下面的可視化,從左至右依次是一個DBN中從低到高的三層:

      雜談CNN:如何通過優化求解輸入圖像

      也許很多人一提起特征可視化首先想到的是可視化特征圖或是直接把卷積核畫出來,就像 Caffe 的 Tutorial(Image Classification and Filter Visualization,地址:http://t.cn/RqAEsPq中一樣。這樣的可視化其實是很不直觀的,尤其是卷積核的可視化,第一層之后的卷積核到底學到了什么內容只能靠腦補。基于這個思路,Cornell的Jason Yosinski把公式改了改

      雜談CNN:如何通過優化求解輸入圖像

      其實就是Regularization項R(x)放到了目標函數里。然后他把這種可視化作為功能之一,基于Caffe制作了一個年久失修的用于CNN可視化的工具包:yosinski/deep-visualization-toolbox(地址:http://t.cn/R2rXWi3)。用在AlexNet上的效果是下面樣子:

      雜談CNN:如何通過優化求解輸入圖像

      注意到這個可視化結果還考慮到了感受野,也就是實際優化的目標是響應圖中心的點,所以越高層的可視化圖像越大。

      直接把某一類別的分數作為優化值可以得到關于該類別更直觀的可視化結果,比如下圖是這個工具包對幾個類別的可視化:

      雜談CNN:如何通過優化求解輸入圖像

      每個類別學到的視覺上的特征一目了然。另外注意到這種方法因為是基于優化,所以每次優化的結果會有不同。

      借助這種可視化,我們能夠分析出網絡是不是真的學習到了我們希望其所學的特征,比如Google的Research Blog中提到過啞鈴的例子:

      雜談CNN:如何通過優化求解輸入圖像

      可視化的類別是啞鈴,可是結果里包含了一些我們不希望出現的元素:胳膊。這是因為用于訓練的啞鈴圖片中,大都有握著啞鈴的胳膊。

      可視化網絡的方法有很多,以簡單粗暴為最大特點的大概只是activation maximization。

      對抗樣本(Adversarial Examples)

      對抗樣本也是機器學習中的一種常用概念,通常指人為制造的,讓一個機器學習模型發生錯誤的樣本。Anh Nguyen的論文《Deep Neural Networks are Easily Fooled: High Confidence Predictions for Unrecognizable Images》中有個比較形象的示意:

      雜談CNN:如何通過優化求解輸入圖像

      要理解這個圖,還要提一句機器學習的一個基本問題:學習數據的分布。具體到方法就是從訓練數據中進行學習,如果學習成功,則可以泛化到所有數據,包含沒見過的測試數據。回到這個圖,數據的分布就是最上邊那三坨。一種造對抗樣本的方法就是從一個類別的樣本出發,做一些小修改,讓模型將修改后的樣本判斷為另一個類別,而實際上(或是人的,顯然的判斷)該樣本仍為原來類別,這就是圖中從藍色原點到白色小方塊的方法。

      當然更容易的方法是利用分類邊界的不可確定性。比如上圖中除了最上面部分的空間可以認為是數據存在概率極低的區域,從實際應用的角度甚至可以認為是我們完全不關心的區域。因為算法學習的樣本只有實心的小圓點,所以遠離小圓點的部分,分類邊界是難以控制的。在這里面很容易輕松取到算法高概率認為是一個類別的樣本,而實際上卻難以辨認的對抗性樣本。

      所以大體來說,對抗性樣本的存在是因為數據維度通常過高,即使考慮所在的子區域,往往還是過高,對整個(數據分布的)空間的搜索是不可行的。在訓練樣本沒有覆蓋的區域,無論該區域是否屬于數據分布所在的區域,無論模型的capacity夠不夠,都有出現對抗性樣本的可能。盡管深度學習中一直主張distributed representation已大幅優于局部泛化,維度的詛咒仍是一個無法擺脫的難題。

      具體到CNN,下邊這個例子可能不少人見過:

      雜談CNN:如何通過優化求解輸入圖像

      熊貓的圖片上加上一個人眼難以察覺的噪音,對于人眼而言看上去還是熊貓,可是對于一個CNN而言,右邊的圖片以99%高概率被判斷為了長臂猿。上句話其實已經很清楚地指出了得到右邊圖片的方法,還是一個優化輸入圖像的問題:加上一個盡量小的噪音,并通過優化這個噪音,讓優化后的圖像具有另一個類別的高概率:

      雜談CNN:如何通過優化求解輸入圖像

      雜談CNN:如何通過優化求解輸入圖像

      其中n是要求的噪音,α 是相應的系數,L是x+n屬于某個類別的loss,c是某個錯誤類別的標簽。這大概是基于深度學習的計算機視覺中第一個討論造對抗樣本的方法,見于Christian Szegedy的論文《Intriguing properties of neural networks》。同樣是在這篇論文中,Christian描述了一個比較令人擔憂的發現:就是這種樣本居然可以泛化,同一個對抗樣本,對于不同的CNN結構,在不同數據子集下訓練的模型,是可以達到一定程度的“通用”性的。也就是說對于一些涉及到安全的應用,攻擊者即使不知道部署的模型是什么,通過某種手段猜測數據的分布,也是可以得到有效的攻擊樣本的。

      語義信息和高層神經元

      對于CNN,有個很基礎的認識:低層的部分學習紋理等簡單信息,高層部分學習語義信息。在《Intriguing properties of neural networks》中的另一個發現是,CNN中表示高層學習到的語義信息的,并不是某一個神經元,而是高層神經元構成的空間。這個看上去有些顯然的結論的一種佐證方式又是對輸入圖像進行優化:

      雜談CNN:如何通過優化求解輸入圖像

      其中 Φ(x) 是神經元激活值對應的向量,v是一個隨機向量。另外這和前邊的優化有些許不同,x的取值范圍限定在已有的圖片集里。其實就是在某個高層響應的空間里,沿著某個方向挑選了一些該方向上值最大的圖片。最后的結論是,無論是沿著某個隨機方向找到的圖片,還是以某一個神經元響應最大找到的圖片,都能看出一些語義上的共性,比如下圖:

      雜談CNN:如何通過優化求解輸入圖像

      黑線以上是最大化某個神經元響應的樣本,共性挺明顯,黑線以下是最大化某層特征空間中某個方向響應的樣本,共性也挺明顯。

      Deep Dream

      很多人小時候都有這樣的經歷:抬頭看天空的云彩,或是觀察地面的紋路,甚至是凝視廁所里臟兮兮的墻面,這時候看到的卻是各種機器人大戰,武打畫面,或是動畫片中的人物和故事。

      Deep Dream和這很像,輸入任何一幅圖像,都會得到在不同層的響應,前面已經提到過,低層的響應是紋理和細節的相應,高層的響應是語義信息的響應。所以Deep Dream的思想是:

      對于某個高層的得到的語義信息響應,加強這些信息。這相當于讓網絡自己決定從輸入圖像中“看到”了什么,并把“看到”的東西加強,所以又是一個優化問題。

      要優化的目標,就是最大化輸入圖像在某個高層已有的響應,優化的初始值就是輸入圖像,當然還有一些其他項,比如不同的包含不同尺度,或是抑制梯度及高頻成分的約束,這些是否加上視情況而定。這并不是一個典型的優化問題,反而更像是一個單純的梯度下降問題,所以梯度下降通常也不會進行到底,而是進行若干步直到輸入圖像中出現一個“夢境”。下面是TensorFlow的官方tutorial里,Inception模型在一幅圖片上生成的夢境:

      雜談CNN:如何通過優化求解輸入圖像雜談CNN:如何通過優化求解輸入圖像

      基于Inception的DeepDream有個特點,就是夢境里的狗很多,就像上面這幅圖一樣。

      在電影《Inception》里,夢境是可以操控的,DeepDream也可以,按照可視化中的思路,把優化目標換成某一層響應圖中的某個channel,這就是一個傳統的優化問題了:

      雜談CNN:如何通過優化求解輸入圖像

      和第一部分中的差別在于初始化的是一幅圖像,并且優化不會進行到底。比如一個對花朵一樣圖案敏感的channel,對應的夢境里畫面中就會開滿了花:

      雜談CNN:如何通過優化求解輸入圖像

      其實那些隱藏在白云里和墻上的圖案,長大后也是能看到的,只不過大多數人不看了。

      Neural Art/Style

      2016年,如果要評選一款和神經網絡相關的最火爆的APP,一定非Prisma莫屬。其背后的算法,也是對輸入圖像的優化。關于神經網絡的藝術風格學習,首先要追溯到更早的一篇利用優化輸入方法的論文《Understanding Deep Image Representations by Inverting Them》,里面討論的問題之一是通過優化算法和神經網絡中的特征重建一幅圖像:

      雜談CNN:如何通過優化求解輸入圖像

      其中Φ0是某幅圖像在網絡中的特征,這個特征可以是部分層的響應,或者全部的響應。如果Φ0取低層的特征,那么細節的還原度就會很好,如果Φ0是高層的特征,則畫面中的紋理和細節會丟失很多信息。比如下面的圖像:

      雜談CNN:如何通過優化求解輸入圖像

      用Vgg16模型執行一遍前向計算,然后分別取relu1~relu5的特征作為 Φ0,重建的結果如下:

      雜談CNN:如何通過優化求解輸入圖像

      在基于神經網絡的圖像風格藝術化中,通常的輸入是一幅原始圖像,經過處理具有了其他畫面,比如一幅油畫的藝術風格。所以是原始圖像的內容+其他圖像的風格,那么上面討論的部分就是內容的重建,所以接下來要討論的是風格的重建。

      圖像風格其實是個很難定義的東西,不過在神經網絡中,談到風格,一般指的是紋理。紋理的特點是什么呢?又是一個很難定義的東西……不過紋理有個特點是和所在位置無關,基于這個特點,只要是和位置無關的統計信息,都可以試著來表示紋理的特征,Gram矩陣,就是在CNN中表示這種特征辦法的一種:

      雜談CNN:如何通過優化求解輸入圖像

      其中 G代表第 l 層響應圖對應的Gram矩陣,Fi代表該層第 i 個卷積核對應的響應圖。通常一個響應圖是二維的,這里把響應圖展開為一個一維向量,其中 Fik代表該層第i個響應圖的第k個元素。所以Gram矩陣的每一個元素就是求了個內積,把兩個響應圖之間,和位置無關的一種相關性給求了出來。

      接下來的套路就和上一小節一樣了,把每層Gram矩陣作為特征,讓重建圖像的Gram矩陣盡量接近原圖的Gram矩陣,也是個優化問題:

      雜談CNN:如何通過優化求解輸入圖像

      其中El是每一層的loss,wl是該層loss的權重。El的形式是考慮到每層響應圖大小后的Gram矩陣差異:

      雜談CNN:如何通過優化求解輸入圖像

      同樣是用Vgg16,用不同層的特征,對梵高的星空進行風格重建,結果如下:

      雜談CNN:如何通過優化求解輸入圖像

      至于Gram矩陣為什么能作為重建風格的依據,論文《Demystifying Neural Style Transfer》(感謝 @Lyken 在評論中的分享)中給出了一個思路,是一個不錯的參考。比起原文中相關性的解釋,這篇論文更進一步把Gram矩陣轉化成了squared Maximum Mean Discrepancy,這直接把圖像和CNN中響應的分布聯系了起來,并且可以通過替換計算MMD的方式嘗試其他風格重建的目標計算方式。

      總之,重建內容和風格的方法都已有,接下來就很自然了,把某個較高層的特征作為內容重建的目標,同時把每層響應的Gram矩陣以某個比例求和作為風格的重建目標,對輸入圖像進行優化:

      雜談CNN:如何通過優化求解輸入圖像

      這就是論文《A Neural Algorithm of Artistic Style》中的方法,也是Prisma背后的算法。

      雷鋒網相關閱讀:

      卷積神經網絡不能處理“圖”結構數據?這篇文章告訴你答案

      手把手教你用 TensorFlow 實現卷積神經網絡(附代碼)

      雷峰網版權文章,未經授權禁止轉載。詳情見轉載須知

      雜談CNN:如何通過優化求解輸入圖像

      分享:
      相關文章

      編輯

      聚焦數據科學,連接 AI 開發者。更多精彩內容,請訪問:yanxishe.com
      當月熱門文章
      最新文章
      請填寫申請人資料
      姓名
      電話
      郵箱
      微信號
      作品鏈接
      個人簡介
      為了您的賬戶安全,請驗證郵箱
      您的郵箱還未驗證,完成可獲20積分喲!
      請驗證您的郵箱
      立即驗證
      完善賬號信息
      您的賬號已經綁定,現在您可以設置密碼以方便用郵箱登錄
      立即設置 以后再說
      主站蜘蛛池模板: 欧美精品福利| 玩弄人妻少妇500系列| 亚洲中文字幕2025| 99久久久无码国产精品免费砚床| 久久96热在精品国产高清| 青草视频在线观看| 国产精品成人av在线观看春天| 日韩性色| 中文字幕亚洲乱码熟女| ..真实国产乱子伦毛片| 俄罗斯老熟妇乱子伦视频| 国语精品一区二区三区| 福利网午夜视频一区二区| 777米奇色狠狠俺去啦| 国产呻吟久久久久久久92| av色综合| 欧美zoozzooz性欧美| 亚洲成人综合导航| 日韩人妻高清福利视频| 国产成人精品手机在线观看| 国产亚洲精品AA片在线播放天| 国产欧美综合一区二区三区| 精品亚洲国产成人av| 日本边添边摸边做边爱的网站| 欧美自拍视频| 无码av最新无码av专区| 成人午夜大片| 亚洲黄站| 亚洲无码黄片| 亚洲一区国色天香| 欧美丰满熟妇乱XXXXX网站| 亚洲国产精品成人久久蜜臀| 电影在线观看+伦理片| 久久se精品一区精品二区国产| 国产熟妇搡bbbb搡bbbb| 激情一区二区三区成人文| 国产精品美女一区二区三区| 久久中文字幕无码一区二区| 国产亚洲精品久久777777| 温泉县| 天美传媒一区二区|