深度學習簡介(一)——卷積神經網絡

本文的主要目的,是簡單介紹時下流行的深度學習算法的基礎知識,本人也看過許多其他教程,感覺其中大部分講的還是太過深奧,于是便有了寫一篇科普文的想法。博主也是現學現賣,文中如有不當之處,請各位指出,共同進步。

本文的目標讀者是對機器學習和神經網絡有一定了解的同學(包括:梯度下降、神經網絡、反向傳播算法等),機器學習的相關知識強烈推薦吳恩達大神的機器學習課程

?

深度學習簡介

深度學習是指多層神經網絡上運用各種機器學習算法解決圖像,文本等各種問題的算法集合。深度學習從大類上可以歸入神經網絡,不過在具體實現上有許多變化。深度學習的核心是特征學習,旨在通過分層網絡獲取分層次的特征信息,從而解決以往需要人工設計特征的重要難題。深度學習是一個框架,包含多個重要算法:?

  • Convolutional Neural Networks(CNN)卷積神經網絡
  • AutoEncoder自動編碼器
  • Sparse Coding稀疏編碼
  • Restricted Boltzmann Machine(RBM)限制波爾茲曼機
  • Deep Belief Networks(DBN)深信度網絡
  • Recurrent neural Network(RNN)多層反饋循環神經網絡神經網絡

對于不同問題(圖像,語音,文本),需要選用不同網絡模型才能達到更好效果。

此外,最近幾年增強學習(Reinforcement Learning)與深度學習的結合也創造了許多了不起的成果,AlphaGo就是其中之一。

?

人類視覺原理

深度學習的許多研究成果,離不開對大腦認知原理的研究,尤其是視覺原理的研究。

1981 年的諾貝爾醫學獎,頒發給了 David Hubel(出生于加拿大的美國神經生物學家) 和TorstenWiesel,以及 Roger Sperry。前兩位的主要貢獻,是“發現了視覺系統的信息處理”,可視皮層是分級的。

人類的視覺原理如下:從原始信號攝入開始(瞳孔攝入像素 Pixels),接著做初步處理(大腦皮層某些細胞發現邊緣和方向),然后抽象(大腦判定,眼前的物體的形狀,是圓形的),然后進一步抽象(大腦進一步判定該物體是只氣球)。下面是人腦進行人臉識別的一個示例:

?

對于不同的物體,人類視覺也是通過這樣逐層分級,來進行認知的:

我們可以看到,在最底層特征基本上是類似的,就是各種邊緣,越往上,越能提取出此類物體的一些特征(輪子、眼睛、軀干等),到最上層,不同的高級特征最終組合成相應的圖像,從而能夠讓人類準確的區分不同的物體。

?

那么我們可以很自然的想到:可以不可以模仿人類大腦的這個特點,構造多層的神經網絡,較低層的識別初級的圖像特征,若干底層特征組成更上一層特征,最終通過多個層級的組合,最終在頂層做出分類呢?答案是肯定的,這也是許多深度學習算法(包括CNN)的靈感來源。

?

卷積網絡介紹

卷積神經網絡是一種多層神經網絡,擅長處理圖像特別是大圖像的相關機器學習問題。

卷積網絡通過一系列方法,成功將數據量龐大的圖像識別問題不斷降維,最終使其能夠被訓練。CNN最早由Yann LeCun提出并應用在手寫字體識別上(MINST)。LeCun提出的網絡稱為LeNet,其網絡結構如下:

這是一個最典型的卷積網絡,由卷積層、池化層、全連接層組成。其中卷積層與池化層配合,組成多個卷積組,逐層提取特征,最終通過若干個全連接層完成分類。

卷積層完成的操作,可以認為是受局部感受野概念的啟發,而池化層,主要是為了降低數據維度。

綜合起來說,CNN通過卷積來模擬特征區分,并且通過卷積的權值共享及池化,來降低網絡參數的數量級,最后通過傳統神經網絡完成分類等任務。

?

降低參數量級

為什么要降低參數量級?從下面的例子就可以很容易理解了。

如果我們使用傳統神經網絡方式,對一張圖片進行分類,那么,我們把圖片的每個像素都連接到隱藏層節點上,那么對于一張1000x1000像素的圖片,如果我們有1M隱藏層單元,那么一共有10^12個參數,這顯然是不能接受的。(如下圖所示)

但是我們在CNN里,可以大大減少參數個數,我們基于以下兩個假設:

1)最底層特征都是局部性的,也就是說,我們用10x10這樣大小的過濾器就能表示邊緣等底層特征

2)圖像上不同小片段,以及不同圖像上的小片段的特征是類似的,也就是說,我們能用同樣的一組分類器來描述各種各樣不同的圖像

基于以上兩個,假設,我們就能把第一層網絡結構簡化如下:

我們用100個10x10的小過濾器,就能夠描述整幅圖片上的底層特征。

?

卷積(Convolution)

卷積運算的定義如下圖所示:

如圖所示,我們有一個5x5的圖像,我們用一個3x3的卷積核:

1  0  1

0  1  0

1  0  1

來對圖像進行卷積操作(可以理解為有一個滑動窗口,把卷積核與對應的圖像像素做乘積然后求和),得到了3x3的卷積結果。

這個過程我們可以理解為我們使用一個過濾器(卷積核)來過濾圖像的各個小區域,從而得到這些小區域的特征值。

在實際訓練過程中,卷積核的值是在學習過程中學到的。

在具體應用中,往往有多個卷積核,可以認為,每個卷積核代表了一種圖像模式,如果某個圖像塊與此卷積核卷積出的值大,則認為此圖像塊十分接近于此卷積核。如果我們設計了6個卷積核,可以理解:我們認為這個圖像上有6種底層紋理模式,也就是我們用6中基礎模式就能描繪出一副圖像。以下就是24種不同的卷積核的示例:

?

池化(Pooling)

池化聽起來很高深,其實簡單的說就是下采樣。池化的過程如下圖所示:

上圖中,我們可以看到,原始圖片是20x20的,我們對其進行下采樣,采樣窗口為10x10,最終將其下采樣成為一個2x2大小的特征圖。

之所以這么做的原因,是因為即使做完了卷積,圖像仍然很大(因為卷積核比較小),所以為了降低數據維度,就進行下采樣。

之所以能這么做,是因為即使減少了許多數據,特征的統計屬性仍能夠描述圖像,而且由于降低了數據維度,有效地避免了過擬合。

在實際應用中,池化根據下采樣的方法,分為最大值下采樣(Max-Pooling)與平均值下采樣(Mean-Pooling)。

?

LeNet介紹

下面再回到LeNet網絡結構:

這回我們就比較好理解了,原始圖像進來以后,先進入一個卷積層C1,由6個5x5的卷積核組成,卷積出28x28的圖像,然后下采樣到14x14(S2)。

接下來,再進一個卷積層C3,由16個5x5的卷積核組成,之后再下采樣到5x5(S4)。

注意,這里S2與C3的連接方式并不是全連接,而是部分連接,如下圖所示:

其中行代表S2層的某個節點,列代表C3層的某個節點。

我們可以看出,C3-0跟S2-0,1,2連接,C3-1跟S2-1,2,3連接,后面依次類推,仔細觀察可以發現,其實就是排列組合:

?

0 0 0 1 1 1

0 0 1 1 1 0

0 1 1 1 0 0

...

1 1 1 1 1 1

?

我們可以領悟作者的意圖,即用不同特征的底層組合,可以得到進一步的高級特征,例如:/ + \ = ^ (比較抽象O(∩_∩)O~),再比如好多個斜線段連成一個圓等等。

最后,通過全連接層C5、F6得到10個輸出,對應10個數字的概率。

?

最后說一點個人的想法哈,我認為第一個卷積層選6個卷積核是有原因的,大概也許可能是因為0~9其實能用以下6個邊緣來代表:

是不是有點道理呢,哈哈

然后C3層的數量選擇上面也說了,是從選3個開始的排列組合,所以也是可以理解的。

其實這些都是針對特定問題的trick,現在更加通用的網絡的結構都會復雜得多,至于這些網絡的參數如何選擇,那就需要我們好好學習了。

?

訓練過程

卷積神經網絡的訓練過程與傳統神經網絡類似,也是參照了反向傳播算法。

第一階段,向前傳播階段:

a)從樣本集中取一個樣本(X,Yp),將X輸入網絡;

b)計算相應的實際輸出Op

????? 在此階段,信息從輸入層經過逐級的變換,傳送到輸出層。這個過程也是網絡在完成訓練后正常運行時執行的過程。在此過程中,網絡執行的是計算(實際上就是輸入與每層的權值矩陣相點乘,得到最后的輸出結果):

????????? Op=Fn(…(F2(F1(XpW(1))W(2))…)W(n)

第二階段,向后傳播階段

a)算實際輸出Op與相應的理想輸出Yp的差;

b)按極小化誤差的方法反向傳播調整權矩陣。

以上內容摘自其他博客,由于我也沒有仔細了解這一塊,建議直接參考原博客。

?

參考資料

Deep Learning(深度學習)學習筆記整理系列之(七)?

Deep Learning論文筆記之(四)CNN卷積神經網絡推導和實現

卷積神經網絡(一):LeNet5的基本結構

UFLDL Tutorial?

?

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/252823.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/252823.shtml
英文地址,請注明出處:http://en.pswp.cn/news/252823.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

node+mongoose使用例子

https://github.com/Aquarius1993/nodeNotes 功能 1. 注冊 2. 登錄 3. 修改密碼 4. 修改頭像 5. 獲取用戶筆記 6. 添加,刪除,更新筆記安裝部署 1. 安裝 Node.js MongoDB 2. npm install 3. 啟動 MongoDB 4. npm start 5. visit http://localhost:8899 https://git…

FastJson的常用操作

轉載:https://www.cnblogs.com/Ming8006/p/6944954.html 常用操作包括以下內容: 對象與(JsonObject或JsonArray)與String的互換String轉換為(JsonObject或JsonArray)如何保持順序Eval的使用值為null的&…

Jenkins持續集成 之 Jenkins安裝

一、安裝JDK與TOMCAT8 參考地址: http://ibm.chick.blog.163.com/blog/static/144201610201652811537410/ 二、下載Jenkins安裝包 wget http://mirrors.jenkins.io/war/latest/jenkins.war 三、把jenkins.war放到TOMCAT下的webapps 四、啟動tomcat并訪問 http://10.…

夜視模式,多少猥瑣相機假汝之名

一般相機加裝一個紅外濾光片,就是一個可以用來干猥瑣事情的相機了。現在有相機直接把這個功能整合了,它的這個功能叫紅外夜視模式,可以拍下黑暗中的物體,當然,也可以透視紡織品和一些其他材質的衣物。這部相機具有500萬…

vue-router.esm.js?fe87:16 [vue-router] Route with name 'page' does not exist

本文地址&#xff1a;http://www.cnblogs.com/veinyin/p/7910525.html 我的路由配置 1 { 2 path: /page, 3 name: page, 4 component: page 5 } 我的 router-link <router-link :to"{name:page,params:{trans:ahahahaha}}">page</route…

Java中設計模式之單例設計模式-1

單例作用 1 節省內存2 可以避免多種狀態導致狀態沖突單例的創建步驟 1 私有化構造方法2 私有化聲明的屬性3 getInstance4 方法需要靜態單例分類 1.懶漢式 2.餓漢式 兩種單例區別&#xff1a; 餓漢式 線程安全的 懶漢式 線程不安全的 餓漢式&#xff1a; package 設計模式之單…

Vue 父子組件間的通信

前言 在 Vue 項目中父子組件的通信是非常常見的&#xff0c;最近做項目的時候發現對這方面的知識還不怎么熟練&#xff0c;在這邊做一下筆記&#xff0c;系統學習一下吧。 1 父組件傳值給子組件 1.1 傳值寫法 父組件傳值給子組件&#xff0c;這個就比較常見了&#xff0c;直接用…

夜視儀

國民兵所用F-16的駕駛艙&#xff0c;機員配有夜視鏡以備觀察領空的客機或飛行物體使用夜視鏡時看到的影像夜視儀〈night vision device&#xff0c;簡稱NVD〉&#xff0c;也稱夜視鏡&#xff0c;是透過光學科技強化黑暗中光源的科技裝置&#xff0c;通常用于軍事用途。目前在民…

【物理/數學】—— 概念的理解 moment、momentum

moment&#xff1a;矩&#xff0c;momentum&#xff1a;[物] 動量&#xff1b;動力&#xff1b;沖力&#xff1b; 數學意義上的 moment&#xff08;矩&#xff09;概念其實源自于物理范疇。首先我們來介紹物理學意義上的矩&#xff08;Momentum&#xff09;的概念。 1. 物理學意…

JAVA多線程實現的三種方式

JAVA多線程實現方式主要有三種&#xff1a;繼承Thread類、實現Runnable接口、使用ExecutorService、Callable、Future實現有返回結果的多線程。 其中前兩種方式線程執行完后都沒有返回值&#xff0c;只有最后一種是帶返回值的。 前兩種省略&#xff0c;著重看看第三種&#xff…

2springboot:快速創建springboot項目

使用IDEA快速創建springboot項目流程&#xff1a; 創建新的項目選擇 項目的命名以及包名 需要什么包就導入什么包 進行測試的單元 <dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-test</artifactId>&…

如何做好渠道銷售?

作者&#xff1a;路人李志強鏈接&#xff1a;https://www.zhihu.com/question/19689177/answer/28508799來源&#xff1a;知乎著作權歸作者所有。商業轉載請聯系作者獲得授權&#xff0c;非商業轉載請注明出處。作為一名一線品牌的渠道銷售&#xff0c;如何讓代理商放棄其他小品…

2017浙江省賽 B - Problem Preparation ZOJ - 3959

地址&#xff1a;http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemCode3959 題目&#xff1a; Its time to prepare the problems for the 14th Zhejiang Provincial Collegiate Programming Contest! Almost all members of Zhejiang University programming conte…

jQuery導入代碼片段并綁定事件

a.html <div><button class"button" >點我達</button> </div> b.html <html> <head><script type"text/javascript" src"./js/jquery-1.0.1.js"></script><meta http-equiv"Content-Ty…

驗證碼識別

基于Keras&#xff0c;識別簡單的4位字符的驗證碼。 https://github.com/ypwhs/captcha_break

LinCode落單的數

easy 落單的數 查看執行結果 60% 通過給出2*n 1 個的數字&#xff0c;除當中一個數字之外其它每一個數字均出現兩次。找到這個數字。 您在真實的面試中是否遇到過這個題&#xff1f; Yes例子 給出 [1,2,2,1,3,4,3]。返回 4 挑戰 一次遍歷&#xff0c;常數級的額外空間復雜度…

漢邦高科范俊峰:關于透霧攝像機那點事

慧聰安防網訊 生活在北方的人們&#xff0c;隔三差五就和霧霾來一次親密接觸&#xff0c;霧霾對人們的出行和交通有很大的影響&#xff0c;霧霾籠罩之下&#xff0c;人們出行如果闖紅燈、車輛違規行駛發生交通事故&#xff0c;交通監控攝像頭只能“霧里看花”&#xff0c;透霧攝…

SpringBoot注解大全(轉)

原文鏈接&#xff1a;[springBoot系列]--springBoot注解大全 一、注解(annotations)列表 SpringBootApplication&#xff1a;包含了ComponentScan、Configuration和EnableAutoConfiguration注解。其中ComponentScan讓spring Boot掃描到Configuration類并把它加入到程序上下文。…

祭奠我的2018

提前寫這篇文章&#xff0c;是因為深深的感覺到自己的無能 18年伊始&#xff0c;在浪潮干了大半年的我 還沉醉在深深的滿足感中&#xff0c;感覺自己對工作游刃有余 那種自大和自我滿足感充斥著我的心態 已經變得不會學習了 后來有一次機遇&#xff0c;讓我有了跳出舒適的機會 …

工業攝像頭傳感器尺寸與像元尺寸的關系

http://www.mv186.com/show-list.php?id462 在機器自動化行業檢測應用中&#xff0c;工業攝像頭是必備的硬件&#xff0c;而圖像傳感器又是工業攝像頭中最最關鍵核心的東西。圖像傳感器的尺寸&#xff08;靶面大小&#xff09;&#xff0c;往往直接關系到成像的質量。通常來講…