1. 程式人生 > >吳恩達深度學習第四課:卷積神經網路(學習筆記2)

吳恩達深度學習第四課:卷積神經網路(學習筆記2)

前言

1.之所以堅持記錄,是因為看到其他人寫的優秀部落格,內容準確詳實,思路清晰流暢,這也說明了作者對知識的深入思考。我也希望能儘量將筆記寫的準確、簡潔,方便自己回憶也方便別人參考;
2.昨天看到兩篇關於計算機視覺的發展介紹的文章:[觀點|朱鬆純:初探計算機視覺三個源頭兼談人工智慧]如何做好計算機視覺的研究[轉]
花了將近一個小時認真閱讀,讓我對自身思考問題的方式重新產生了思考:我在解決一個問題的時候,有沒有想過它為什麼發生?解決它有什麼意義?有前人解決過這個問題嗎?這個問題的解決思路有哪些?現在的研究趨勢是什麼?這種種的最基本、最重要的問題我卻從來都沒有思考過,也就是我對問題的思考深度和廣度還遠遠不夠,而只是想著如何快速借鑑別人的模型來完成訓練並得到結果,而這種方式對於我的思考習慣卻毫無用處,甚至十分危險!

學習內容

經典網路

上一篇文章中記錄了卷積神經網路中的基礎結構,如卷積層、池化層、全連線層和分類器softmax,這篇文章先講講卷積神經網路的第一個用途——分類

LeNet-5

最經典、最遠古的分類器(上古神器),也是其基礎結構。該網路結構為:
卷積層——池化層——卷積層——池化層——全連線層——全連線層——分類器——概率輸出
這裡寫圖片描述

LeNet-5架構十分簡單清晰,作為傳統的經典網路,其思路是通過卷積操作和池化操作將原始輸入特徵用濾波器抓取並儲存在通道之中。輸出的寬度和高度都在減小,通道數在不斷加深,作為識別黑白手寫十種字型的目地,其效果不錯。
不同之處:啟用函式為sigmoid和tanh;過濾器使用的是5*5,過濾器個數由6個增加到16個; 使用的池化層為平均池化;引數60K。

AlexNet

AlexNet是進階版,因為輸入更加複雜,需要加入的卷積操作更多,需要記住的影象特徵資訊也更多。
這裡寫圖片描述

圖中可以看到組成:卷積1—最大池化1—卷積same2—最大池化2—卷積same3—池化3—卷積same4—最大池化4—全分類1—全分類2—全分類3—分類器softmax
這張圖中很詳細的標明瞭其操作變化過程,相比Lenet-5的不同之處:
- 第一個過濾器尺寸較大:11 * 11,其後均為3 * 3或者5 * 5,網路更深
- 池化層加入了填充,padding=same,即池化後尺寸高度和寬度不變,僅調整通道數
- 使用啟用函式Relu
- 引數個數增加至60million
- 使用了LRN,但是效果不太明顯

VGG16

此網路還是比較適合個人實現和使用的,可以用tensorflow一步步實現,增加直觀理解和提高程式設計能力,也能用於實際生活中的分類問題。
這裡寫圖片描述

相比於AlexNet,VGG-16變得更加深入,在嘗試了許多不同的模型之後,他們選擇了16層的模型提供最好的效果,上圖也很清楚的展現了卷積和池化過程,簡而言之,讓原始輸入的高度和寬度變得越來越小,讓其通道變得越來越深,最後全連線分類。
特點:
- 深度增加到16層,引數大量增加:138million
- 卷積層均使用的3*3,s=1和same,簡便明瞭

Residual CNN

囉嗦半天,重點在接下來兩個,ResCNN是2015年何愷明和孫健等提出模型,針對深度神經網路在網路結構變深之後梯度消失的問題提出了非常棒的解決方法。
這裡寫圖片描述

簡而言之,大神的思路是將上一層輸入結果通過額外增加一條shot cut“小路”直接傳遞給下一層的啟用函式,也就意味著在下一層的啟用函式不是g(z[l+2])而是g(z[l+2]+a[l]),這樣一來,在回傳過程中即使在常規路線上梯度消失,但還有shot cut存在,可以有效的提高訓練速度和效率。

Inception

在介紹Inception之前還需要介紹下1*1卷積操作,示意圖如下:
1*1卷積

1*1卷積操作特點是保證輸入的寬度和高度不變而調整其通道大小,可以有效減少計算引數

這裡寫圖片描述

此為Inception模組的典型結構,區別於傳統的單通道卷積結構,它使用的是多路徑卷積的思想,可有效獲取高度非線性特徵,同時加入1* 1卷積可有效降低計算引數,圖中已經標註了每個卷積轉換後的輸出,通過四個路徑的結果疊加,最終將輸入的28* 28* 192轉換為28* 28*256。
這裡寫圖片描述

整體結構如圖所示,先將輸入卷積操作後輸入3大塊Inception模組,同時在其側面和最後共有三個分類器,他們分別計算分類結果並去加權平方值,保證結果的準確性。GoogleNet共有四個進化版本,有興趣可以進一步瞭解。

總結

1.經典模型:三大部件組成,網路深度逐漸增加,啟用函式改變,但仍然很難達到超越人類的識別準確率;
2.進階模型:殘差網路在加入了shot cut之後,可有效地解決了反向傳播梯度消失的問題,使得網路加深並保持穩定效能成為可能,且在imagenet比賽中,準確率超過人類3.5%錯誤率;
Inception網路利用了多路傳播和1*1卷積,大幅度減少計算引數(減少10倍),大大提高訓練速度,同時三個分類器也在一定程度上提高了結果的準確率。

回顧

卷積神經網路的根本任務是:建立效能良好且具有泛化能力的模型,通過訓練模型引數來提高表現效能,模型深度越深,表達能力越強,但引數計算量大和梯度消失問題難以解決!

從經典神經網路到Resnet網路,都是在努力提高模型效能,但1998年的Letnet-5因計算能力和資料限制,只能建立相對簡單的卷積網路;2012年的Alexnet和2015年的VGG16都是在有了一定資料和計算能力之後才開始逐步加深,但隨著網路加深,出現了反向傳播梯度消失和爆炸的問題,這就限制了網路的深度。

2015年提出的ResNet採用加入shot cut的思路保證了梯度順利傳播,有效解決了提出消失的問題,使得卷積神經網路的深度可以達到上百近千層,這也大大加強了卷積神經網路的表達能力,不僅僅是為影象分類問題,還有場景識別、人體骨骼點定位等提供了有力的架構支援。

當然,好的網路架構是必須的,還有更多的超引數除錯優化技術逐漸加入,如BN、dropout、正則化L2等等,既能保證模型的高效訓練,也能減少模型的過擬合問題,大大促進了卷積神經網路甚至是計算機視覺領域的發展!

相關推薦

深度學習神經網路學習筆記2

前言 1.之所以堅持記錄,是因為看到其他人寫的優秀部落格,內容準確詳實,思路清晰流暢,這也說明了作者對知識的深入思考。我也希望能儘量將筆記寫的準確、簡潔,方便自己回憶也方便別人參考; 2.昨天看到兩篇關於計算機視覺的發展介紹的文章:[觀點|朱鬆純:初探計算機

兩種監聽器方法基於AndroidStudio3.2

一、佈局 在主程式介面上新增新按鈕,如以前一樣。 建立一個 Activity,名字為MeventActivity 新增一個三個Button控制元件。 新增呼叫該視窗程式給按鈕“多事件” Button btn2 = (Button) findViewByI

deeplearning.ai學習心得神經網路與計算機視覺

不久前,Coursera 上放出了吳恩達 deeplearning.ai 的第四門課程《卷積神經網路》。本文是加拿大國家銀行首席分析師 Ryan Shrott 在完成該課程後所寫的學習心得,有助於大家直觀地瞭解、學習計算機視覺。 我最近在 Coursera 上完成了吳恩達教授的計算機視覺課程。吳恩達

深度學習系列課程筆記神經網路

本系列文章將對吳恩達在網易公開課“深度學習工程師”微專業內容進行筆記總結,這一部分介紹的是“卷積神經網路”部分。 1、計算機視覺 計算機視覺在我們還是生活中有非常廣泛的應用,以下幾個是最常見的例子: 影象分類: 可以對影象中的物體種類進行判斷,如確定影象中

深度學習UFLDL教程翻譯之神經網路

A、使用卷積進行特徵提取 一、概述        在前面的練習中,你解決了畫素相對較低的影象的相關問題,例如小的圖片塊和手寫數字的小影象。在這個節,我們將研究能讓我們將這些方法拓展到擁有較大影象的更加

TensorFlow學習筆記5--實現神經網路MNIST資料集

這裡使用TensorFlow實現一個簡單的卷積神經網路,使用的是MNIST資料集。網路結構為:資料輸入層–卷積層1–池化層1–卷積層2–池化層2–全連線層1–全連線層2(輸出層),這是一個簡單但非常有代表性的卷積神經網路。 import tensorflow

機器學習13神經網路CNN

一、Why CNN for Image? 1、對於一幅影象來說,用DNN全連線的話,引數會很多,而影象實際上是有很多冗餘的,有些地方的特徵可能不需要。而CNN其實是拿掉了DNN的一些引數。 2、識別工作中,有時候並不需要看整張圖,而只需要看部分位置如鳥嘴。不管鳥嘴出現在影象的哪個位置,

Tensorflow基礎神經網路遷移學習

ImageNet影象分類資料集中有120萬標註影象,所以才能將152層的ResNet的模型訓練到大約96.5%的正確率。在真實的應用中,很難收集到如此多的標註資料。即使可以收集到,也需要花費大量人力物力。而且即使有海量的訓練資料,要訓練一個複雜的卷積神經網路也需

Pytorch_十篇_神經網路CNN概述

# 卷積神經網路(CNN)概述(包含例子) --- ## Introduce **卷積神經網路**(convolutional neural networks),簡稱**CNN**。卷積神經網路相比於人工神經網路而言更適合於影象識別、語音識別等任務。==本文主要涉及卷積神經網路的概念介紹,首先介紹卷積神經網

深度學習筆記deeplearning.ai神經網路CNN

1. Padding 在卷積操作中,過濾器(又稱核)的大小通常為奇數,如3x3,5x5。這樣的好處有兩點: 在特徵圖(二維卷積)中就會存在一箇中心畫素點。有一箇中心畫素點會十分方便,便於指出過濾器的位置。 在沒有padding的情況下,經過卷積操作,輸出的資

Deeplearning.ai Sequence Model 第一週------Deep RNNs

這一節主要講解了深度RNN網路的結構。 左邊是在一般的神經網路中DNN的結構,由輸入經過多層網路最終得到輸出 與此類似,Deep RNN也有類似的結構,之前的RNN網路都只是一層,如圖畫出了三層。 用a[l]<t>來表示第l層激勵的第t個t

Deeplearning.ai Sequence Model 第一週------Sampling novel sequence

這一節主要講了如何從一個訓練好的RNN中進行取樣得到序列 從訓練好的RNN中取樣出一個序列 之前在序列產生中講到,首先RNN輸入a<0>(0向量)和x<1>(0向量),通過一個RNN cell產生一個輸出y。 y = softm

Deeplearning.ai Sequence Model 第一週------Recurrent Neural Network Model

這一節內容比較多,主要講述瞭如何搭建一個RNN標準單元 使用標準神經網路的不足: 1.不同樣本的輸入輸出長度不等(雖然都可以padding成最大長度的樣本) 2.(更主要的原因)text不同的位置之間不共享學習到的引數 RNN模型,可以用左邊也可

Deeplearning.ai Sequence Model 第一週------Long Short Term Memory(LSTM)

這一節主要講解了LSTM單元 LSTM和GRU略有區別,可以說是一種更加通用的GRU模型 在LSTM中,c<t>不再等於a<t>,因此原來公式中的c<t-1>要改成a<t-1>,同時在LSTM中,也沒有了Γ

Coursera DeepLearning.AI sequence model 序列模型 第一週 Improvise a Jazz Solo with an LSTM Network

We have taken care of the preprocessing of the musical data to render it in terms of musical "values." You can informally think of each "value" as a note,

Deeplearning.ai Sequence Model 第一週------Backpropagation through time

這一節主要講了RNN的反向傳播過程 BP即從輸出到輸入,因此和FP是相反的一些箭頭 計算a的引數Wa和ba,計算y的引數Wy和by,綠色的箭頭表示在這些不同的a和y的計算中都要用到這些引數(這裡展示的是一層RNN,後面會講到多層,在這一層中,不同的c

Coursera DeepLearning.AI sequence model 序列模型 第二週 Emofify

這個Emojify裡最坑的一個就是,avg初始化的時候一定要是 (50,) ,如果你用(word_to_vec_map["a"]).shape 就死活過不了。Emojify!Welcome to the second assignment of Week 2. You are going to use wor

Deep Learning.ai學習筆記__神經網路

目錄 第一週 卷積神經網路基礎 第二週 深度卷積網路:例項探究 第三週 目標檢測 第四周 特殊應用:人臉識別和神經風格轉換   第一週 卷積神經網路基礎 垂直邊緣檢測器,通過卷積計算,可以把多維矩陣進行降維。如下圖:   卷積運算提供了一個方便的方法來發

神經網路3:目標檢測學習筆記[Deep Learning]

1.目標定位 1.1 分類、定位、檢測簡介 - Image classification 影象分類,就是給你一張圖片,你判斷目標是屬於哪一類,如汽車、貓等等。 - Classification with localization 定位分類,

學習筆記1】_神經網路_第一週神經網路1

一、卷積神經網路 1.邊緣檢測 不同的語言中表示卷積的函式不同,在Python中為在tensorflow裡為 濾波器:垂直、水平邊緣檢測。 Sobel filter:其優點在於增加了中間一行元素的權重,即影象中間的畫素點提高,會使結果的魯棒(robust)性提高。