亚洲午夜久久久久久噜噜噜,欧美+国产在线观看,日韩a片无码毛片免费看,爱如潮水日本免费完整版观看

【深度學習系列】卷積神經網絡CNN原理詳解(一)——基本原理

開發技術 2018/4/24

為什么要用神經網絡?

特征提取的高效性。

 大家可能會疑惑,對于同一個分類任務,我們可以用機器學習的算法來做,為什么要用神經網絡呢?大家回顧一下,一個分類任務,我們在用機器學習算法來做時,首先要明確feature和label,然后把這個數據"灌"到算法里去訓練,最后保存模型,再來預測分類的準確性。但是這就有個問題,即我們需要實現確定好特征,每一個特征即為一個維度,特征數目過少,我們可能無法精確的分類出來,即我們所說的欠擬合,如果特征數目過多,可能會導致我們在分類過程中過于注重某個特征導致分類錯誤,即過擬合。

舉個簡單的例子,現在有一堆數據集,讓我們分類出西瓜和冬瓜,如果只有兩個特征:形狀和顏色,可能沒法分區來;如果特征的維度有:形狀、顏色、瓜瓤顏色、瓜皮的花紋等等,可能很容易分類出來;如果我們的特征是:形狀、顏色、瓜瓤顏色、瓜皮花紋、瓜蒂、瓜籽的數量,瓜籽的顏色、瓜籽的大小、瓜籽的分布情況、瓜籽的XXX等等,很有可能會過擬合,譬如有的冬瓜的瓜籽數量和西瓜的類似,模型訓練后這類特征的權重較高,就很容易分錯。這就導致我們在特征工程上需要花很多時間和精力,才能使模型訓練得到一個好的效果。然而神經網絡的出現使我們不需要做大量的特征工程,譬如提前設計好特征的內容或者說特征的數量等等,我們可以直接把數據灌進去,讓它自己訓練,自我“修正”,即可得到一個較好的效果。

數據格式的簡易性

在一個傳統的機器學習分類問題中,我們“灌”進去的數據是不能直接灌進去的,需要對數據進行一些處理,譬如量綱的歸一化,格式的轉化等等,不過在神經網絡里我們不需要額外的對數據做過多的處理,具體原因可以看后面的詳細推導。

參數數目的少量性

在面對一個分類問題時,如果用SVM來做,我們需要調整的參數需要調整核函數,懲罰因子,松弛變量等等,不同的參數組合對于模型的效果也不一樣,想要迅速而又準確的調到最適合模型的參數需要對背后理論知識的深入了解(當然,如果你說全部都試一遍也是可以的,但是花的時間可能會更多),對于一個基本的三層神經網絡來說(輸入-隱含-輸出),我們只需要初始化時給每一個神經元上隨機的賦予一個權重w和偏置項b,在訓練過程中,這兩個參數會不斷的修正,調整到最優質,使模型的誤差最小。所以從這個角度來看,我們對于調參的背后理論知識并不需要過于精通(只不過做多了之后可能會有一些經驗,在初始值時賦予的值更科學,收斂的更快罷了)

有哪些應用?

應用非常廣,不過大家注意一點,我們現在所說的神經網絡,并不能稱之為深度學習,神經網絡很早就出現了,只不過現在因為不斷的加深了網絡層,復雜化了網絡結構,才成為深度學習,并在圖像識別、圖像檢測、語音識別等等方面取得了不錯的效果。

基本網絡結構

一個神經網絡最簡單的結構包括輸入層、隱含層和輸出層,每一層網絡有多個神經元,上一層的神經元通過激活函數映射到下一層神經元,每個神經元之間有相對應的權值,輸出即為我們的分類類別。

詳細數學推導

去年中旬我參考吳恩達的UFLDL和mattmazur的博客寫了篇文章詳細講解了一個最簡單的神經網絡從前向傳播到反向傳播的直觀推導,大家可以先看看這篇文章--一文弄懂神經網絡中的反向傳播法--BackPropagation。

優缺點

前面說了很多優點,這里就不多說了,簡單說說缺點吧。我們試想一下如果加深我們的網絡層,每一個網絡層增加神經元的數量,那么參數的個數將是M*N(m為網絡層數,N為每層神經元個數),所需的參數會非常多,參數一多,模型就復雜了,越是復雜的模型就越不好調參,也越容易過擬合。此外我們從神經網絡的反向傳播的過程來看,梯度在反向傳播時,不斷的迭代會導致梯度越來越小,即梯度消失的情況,梯度一旦趨于0,那么權值就無法更新,這個神經元相當于是不起作用了,也就很難導致收斂。尤其是在圖像領域,用最基本的神經網絡,是不太合適的。后面我們會詳細講講為啥不合適。

為什么要用卷積神經網絡?

傳統神經網絡的劣勢

前面說到在圖像領域,用傳統的神經網絡并不合適。我們知道,圖像是由一個個像素點構成,每個像素點有三個通道,分別代表RGB顏色,那么,如果一個圖像的尺寸是(28,28,1),即代表這個圖像的是一個長寬均為28,channel為1的圖像(channel也叫depth,此處1代表灰色圖像)。如果使用全連接的網絡結構,即,網絡中的神經與與相鄰層上的每個神經元均連接,那就意味著我們的網絡有28 * 28 =784個神經元,hidden層采用了15個神經元,那么簡單計算一下,我們需要的參數個數(w和b)就有:784*15*10+15+10=117625個,這個參數太多了,隨便進行一次反向傳播計算量都是巨大的,從計算資源和調參的角度都不建議用傳統的神經網絡。(評論中有同學對這個參數計算不太理解,我簡單說一下:圖片是由像素點組成的,用矩陣表示的,28*28的矩陣,肯定是沒法直接放到神經元里的,我們得把它“拍平”,變成一個28*28=784 的一列向量,這一列向量和隱含層的15個神經元連接,就有784*15=11760個權重w,隱含層和最后的輸出層的10個神經元連接,就有11760*10=117600個權重w,再加上隱含層的偏置項15個和輸出層的偏置項10個,就是:117625個參數了)

圖1 三層神經網絡識別手寫數字

卷積神經網絡是什么?

三個基本層

 卷積層(Convolutional Layer)

上文提到我們用傳統的三層神經網絡需要大量的參數,原因在于每個神經元都和相鄰層的神經元相連接,但是思考一下,這種連接方式是必須的嗎?全連接層的方式對于圖像數據來說似乎顯得不這么友好,因為圖像本身具有“二維空間特征”,通俗點說就是局部特性。譬如我們看一張貓的圖片,可能看到貓的眼鏡或者嘴巴就知道這是張貓片,而不需要說每個部分都看完了才知道,啊,原來這個是貓啊。所以如果我們可以用某種方式對一張圖片的某個典型特征識別,那么這張圖片的類別也就知道了。這個時候就產生了卷積的概念。舉個例子,現在有一個4*4的圖像,我們設計兩個卷積核,看看運用卷積核后圖片會變成什么樣。


中國· 上海

谷谷二維碼
添加微信咨詢

CopyRight?2009-2019 上海谷谷網絡科技有限公司 All Rights Reserved. 滬ICP備11022482號-8  

關于我們 | 聯系我們

主站蜘蛛池模板: 安阳市| 曲靖市| 浮梁县| 南靖县| 唐河县| 佛教| 烟台市| 建瓯市| 克东县| 大英县| 井研县| 顺平县| 嘉义县| 泌阳县| 自治县| 若尔盖县| 安乡县| 定南县| 鹿泉市| 奉贤区| 洛扎县| 肇庆市| 广汉市| 长沙市| 钟山县| 肥东县| 绥棱县| 库尔勒市| 宜宾市| 大丰市| 垣曲县| 威宁| 定安县| 乾安县| 靖西县| 大英县| 藁城市| 德惠市| 西昌市| 乳源| 上饶市|