自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

為什么CNN能自動提取圖像特征

人工智能 深度學習
深度學習對外推薦自己的一個很重要的點是——深度學習能夠自動提取特征。如果你是從 DNN 開始了解深度學習,你會對 “深度學習能夠自動提取特征” 很迷茫。但是如果你是從 CNN 開始了解深度學習的,你就會很自然地理解 “深度學習能夠自動提取特征”。

1.介紹

在大部分傳統(tǒng)機器學習場景里,我們先經(jīng)過特征工程等方法得到特征表示,然后選用一個機器學習算法進行訓練。在訓練過程中,表示事物的特征是固定的。 

 

后來嘛,后來深度學習就崛起了。深度學習對外推薦自己的一個很重要的點是——深度學習能夠自動提取特征。如果你是從 DNN 開始了解深度學習,你會對 “深度學習能夠自動提取特征” 很迷茫。但是如果你是從 CNN 開始了解深度學習的,你就會很自然地理解 “深度學習能夠自動提取特征”。

2.提取特征

CNN 網(wǎng)絡主要有兩個算子,一個是卷積層,另一個是池化層。大部分人對于池化層并沒有什么理解難度。池化層無非滑動一個滑動窗口,滑動窗口之內(nèi)***值或者取平均值。對于卷積層,我們大部分人都是看下面的圖了解的。卷積層也是滑動一個滑動窗口,滑動窗口之內(nèi)做卷積運算。

 

 

理解 CNN 的卷積層和池化層如何運算,并不能自動給我們關于 CNN 原理的洞見。我們依然存在疑惑: 為什么 CNN 的卷積層是這樣的?Lecun 大神設計 CNN 的卷積層是怎么考慮的?

為了理解這個問題,我們先思考一個問題:提取圖片特征最樸素的想法是什么?簡化問題,我們要分類黑白圖片中的字母 A 還是 X。

 

 

這兩個有一個鮮明區(qū)別是 A 的頂部模式。

 

 

如果能在圖片中抽取 A 的頂部模式,圖片中的字母是 A; 如果不能,圖片中的字母是 X。為了提取圖片是否包含 A 的頂部模式,我們將 A 的頂部模式在圖片中滑動,切分處理的局部圖片和 A 頂部模式做內(nèi)積。下圖顯示是 A 圖片的 1 和 2 部位切分出來的局部圖片和 A 的頂部模式做內(nèi)積。

 

 

根據(jù)圖中表示,A 圖片的 1 部位是 A 字母的頂部,內(nèi)積為 4; 2 部位不是 A 頂部,內(nèi)積只有 1。在 A 圖片中滑動 A 頂部模式,得到的結果為

 

 

然后我們?nèi)∑渲?**值得到最終結果是 4。這是我們可以說圖片包含 A 頂部模式的的 “傾向性” 或者說 “可能性” 是 4。我們就提取了一個特征。

X 那張圖按照相同的操作,結果為 3。這個結果是從 X 的交叉部位得到的。

這里我們會發(fā)現(xiàn):A 的頂部模式在圖片中滑動其實就是 CNN 里卷積層做的事情, A 的頂部模式就是卷積核;同時,在內(nèi)積結果上取***值就是***池化層的操作。也就是說 CNN 用卷積層和池化層,實踐了最樸素的圖片特征提取方法。當然了,真實世界的 CNN 要復雜得多: 1) 真實世界的圖片和卷積核是多層的。這個好理解,在圖片是多層的情況下,局部模式肯定也是多層,卷積核自然也是多層的。2) 真實世界的 CNN 并不是一個卷積層搭配一個池化層,而是存在連續(xù)多層卷積層。這個也好理解。在這個時候,局部模式是有多個連續(xù)卷積核表示的。

3.自動學習

通過上面的講解,我們知道 CNN 模型是如何利用卷積層和池化層提取圖片的特征,其中的關鍵是卷積核表示圖片中的局部模式。還是拿上面例子來說,我們知道并且選用了 A 的頂部模式這個卷積核。

 

 

但是在真實世界中我們是不能做。對于大規(guī)模圖片庫我們并不知道那個局部模式是有效的。即使我們選定局部模式,也會因為太過具體而失去反泛化性。那么我們怎么應對這個問題呢,即如何確定卷積核的值呢?

這里就要講到大名鼎鼎梯度向后傳播算法。一開始我們隨機初始化卷積核的參數(shù),然后通過基于梯度向后傳播算法的優(yōu)化算法,自適應地調整卷積核的值,從而最小化模型預測值和真實值之間的誤差。這樣得到的卷積核的參數(shù)不一定直觀,但是能夠有效地提取特征,使得模型預測值和真實值之間的誤差最小。為了簡化問題,下面我們還是用單層圖片做例子。即使簡化到單層圖片,我們依然覺得計算卷積層和池化層的梯度比較難。為了進一步直觀化,我們將卷積層分解多個容易計算梯度的簡單線性算子,將池化層分解容易計算梯度的多個簡單操作。

 

 

通過分解卷積層和池化層,我們易得下面一系列計算梯度公式。

池化層本身沒有參數(shù),只需要把梯度往回傳就行。這里我們要關注下***池化層:***值操作是選擇窗口內(nèi)***值,怎么看都不是連續(xù)函數(shù),就不可能存在導數(shù)(梯度)。假設

 

 

即矩陣 x 中第 i 行第 j 列值***,那么

 

 

另外一個問題就是怎么求卷積層的梯度。我們用 conv(xx,ww)conv(xx,ww) 表示卷積, conv(xx,ww)i,jconv(xx,ww)i,j表示卷積結果中的第 i 行第 j 列, xconv−i,jxconv−i,j 表示用于生成卷積結果第 i 行第 j 列的圖片局部(即 xconv−i,j⋅ww=conv(xx,ww)i,jxconv−i,j⋅ww=conv(xx,ww)i,j )。卷積核參數(shù)的梯度可以用下面的公式計算 

 

至于梯度怎么傳回去呢?如下圖所示,我們先定義 δ(i,j)δ(i,j) 表示圖片大小的矩陣,生成第 i 行第 j 列的卷積結果的圖片區(qū)域用卷積核參數(shù)填充,其他區(qū)域為 0。

 

 

此時我們得到梯度往回傳的公式。 

 

4.總結

通過卷積核刻畫圖片的局部模式,CNN 能夠提取圖片的特征; 通過梯度向后傳播算法,CNN 能夠確定每個卷積核的參數(shù),從而實現(xiàn)自動提取圖片的特征。這樣,我們應該很自然地理解 “深度學習能夠自動提取特征” 了。

為什么 CNN 等深度學習模型自動提取特征這么重要?我們可以從 Pedro Domingos [1] 關于 “機器學習本質是什么” 開始說起。Pedro Domingos [1] 認為:

表示是指我們?nèi)绾伪磉_相關特征,涉及到特征工程、特征算子和特征組合等問題。目標是指我們想模型學習到什么,涉及問題建模和目標函數(shù)。優(yōu)化是怎么計算得到模型,涉及梯度下降、隨機梯度下降或者演化計算等優(yōu)化算法。在大部分傳統(tǒng)機器學習場景里,表示和目標是分離的。在用優(yōu)化算法求解目標的過程中,表示事物的特征是固定的,并不會根據(jù)目標和優(yōu)化的反饋自適應地調整特征。  

 

神經(jīng)網(wǎng)絡或者說深度神經(jīng)網(wǎng)絡,將表示和目標結合起來進行 “聯(lián)合學習”。在深度學習模型訓練過程中,特征相關的參數(shù)(比如 CNN 卷積核的參數(shù))可以根據(jù)目標和優(yōu)化的反饋(梯度)自適應地調整。特征能夠自適應地調整,深度學習才有能力建立深度的和層次化的特征表達體系。

參考文獻

[1] Domingos, Pedro. “A few useful things to know about machine learning.” Communications of the ACM 55.10 (2012): 78-87. 

【編輯推薦】

【責任編輯:龐桂玉 TEL:(010)68476606】

責任編輯:龐桂玉 來源: AlgorithmDog
相關推薦

2024-08-21 08:21:45

CNN算法神經(jīng)網(wǎng)絡

2024-07-30 08:08:49

2024-09-20 07:36:12

2021-09-29 16:53:53

區(qū)塊鏈數(shù)據(jù)技術

2015-11-13 10:25:04

京東商品搜索架構

2025-01-16 16:24:07

2022-12-12 16:15:19

圖像數(shù)據(jù)Python

2021-07-20 10:16:24

人工智能自然語言技術

2020-12-23 19:19:56

VR5G

2020-11-27 06:58:24

索引

2022-04-02 07:19:09

CORS前端安全

2021-02-03 16:54:39

區(qū)塊鏈比特幣技術

2021-04-27 18:12:22

WebSocket持久化連接HTTP

2021-03-16 09:00:00

深度學習人工智能傳感器

2018-06-15 10:45:13

人工智能深度學習機器學習

2020-08-09 18:01:26

Python開發(fā)源碼

2024-09-26 00:10:00

Agent大模型AI

2022-02-21 10:06:14

自動駕駛汽車智能

2023-08-08 12:12:07

自動駕駛預測

2017-09-26 09:50:18

點贊
收藏

51CTO技術棧公眾號