CNN學(xué)習(xí)筆記(一)

一、CNN發(fā)展簡史

?CNN可以有效降低傳統(tǒng)神經(jīng)網(wǎng)絡(luò)(全連接)的復(fù)雜性,常見的網(wǎng)絡(luò)結(jié)構(gòu)有LeNet、AlexNet、ZFNet、VGGNet、GoogleNet、ResNet等。

1.CNN典型的幾種結(jié)構(gòu):
  • LeNet(1998年 ): 開啟深度學(xué)習(xí)元年
  • AlexNet(2012年 ): 錯(cuò)誤率 15.3%
  • ZFNet(2013年 ): 錯(cuò)誤率 14.8%
  • VGGNet(2014年 ): 亞軍,錯(cuò)誤率 7.3%
  • GoogleNet(2014年 ): 冠軍,錯(cuò)誤率 6.67 %
  • ResNet(2015年 ): 錯(cuò)誤率 3.6 %
2.CNN網(wǎng)絡(luò)的主要應(yīng)用場景:
  • 圖像分類
  • 目標(biāo)檢測
  • 圖像分割
  • 語義分割?

二、CNN網(wǎng)絡(luò)的主要層次

1.輸入層(Input Layer)
?網(wǎng)絡(luò)數(shù)據(jù)輸入之前要進(jìn)行數(shù)據(jù)預(yù)處理。

  • 數(shù)據(jù)預(yù)處理原因:
    ?輸入數(shù)據(jù)的單位如果不一樣,會(huì)導(dǎo)致神經(jīng)網(wǎng)絡(luò)收斂速度慢。
    ?激活函數(shù)是有值域限制的,所以需要將輸入數(shù)據(jù)映射到激活函數(shù)的值域范圍內(nèi)。

  • 數(shù)據(jù)預(yù)處理方式:
    ?1)去均值
    ?2)歸一化
    ?3)PCA降維、白化
    ?白化:在PCA的基礎(chǔ)上,對轉(zhuǎn)換后的數(shù)據(jù) 每個(gè)特征軸上進(jìn)行歸一化處理。

* 實(shí)際應(yīng)用中,一般并不會(huì)使用PCA和白化的操作。

2.卷積層(CONV Layer)

?\color{red}{權(quán)值共享}:給定一張輸入圖片,用一個(gè)filter去掃描這張圖,filter里面的數(shù)就叫做權(quán)重,而這張圖的每個(gè)位置是被同樣的filter掃的,所以卷積計(jì)算的權(quán)重是一樣的,這就是權(quán)值共享。

?卷積計(jì)算過程如下圖所示:

卷積計(jì)算過程演示.jpeg

3.激活層(Activiation Layer)

?激活層:將卷積層的輸出結(jié)果再做一次非線性的轉(zhuǎn)換。
?常用的激活函數(shù)有:Sigmoid、Tanh、Relu、Leaky Relu、Maxout等。

  • Sigmoid函數(shù)
    優(yōu)點(diǎn):簡單,容易理解
    缺點(diǎn):容易產(chǎn)生\color{green}{死神經(jīng)元}(即梯度消失or爆炸爆炸)

    數(shù)學(xué)公式:
    f\left ( x \right )= \frac{1}{1+e^{-x}} ,值域(0,1)
    導(dǎo)函數(shù):
    {f\left ( x \right )}'= f\left ( x \right )\left ( 1-f\left ( x \right ) \right )
    圖像:

    Sigmoid激活函數(shù).png

  • Tanh(雙曲正切)函數(shù)
    優(yōu)點(diǎn):易理解,0中心化
    缺點(diǎn):容易產(chǎn)生\color{green}{死神經(jīng)元}

    數(shù)學(xué)公式:
    f\left ( x \right )= \frac{e^{x}-e^{-x}}{e^{x}+e^{-x}},值域(-1,1)
    導(dǎo)函數(shù):
    {f\left ( x \right )}'= 1-f\left ( x \right )^{2}
    圖像:

    Tanh激活函數(shù).png

  • Relu函數(shù)
    缺點(diǎn):沒有邊界
    優(yōu)點(diǎn):相比于Sigmoid和Tanh,具有更快的收斂速度

    數(shù)學(xué)公式:
    f\left ( x \right )= max\left ( 0,x \right ),值域(0,+\infty)
    導(dǎo)函數(shù):
    {f\left ( x \right )}'= \left\{\begin{matrix} 1, & x> 0\\ 0, & x\leq 0 \end{matrix}\right.
    圖像:

    Relu激活函數(shù).png

\color{red}{總結(jié):}

  • 首先使用Relu,如果效果不好,考慮使用Leaky或者M(jìn)axout。
  • sigmoid激活函數(shù)在CNN中一般不用,而tanh激活函數(shù)只在某些特定場景下效果好。
4.池化層(Pooling Layer)

?池化層可以壓縮數(shù)據(jù)減少參數(shù)量,減小過擬合。有兩種池化層:最大池化和平均池化。(一般選擇最大池化)


最大池化.png
5.全連接層(FC Layer)

?全連接層目的:對卷積觀測到的局部信息進(jìn)行整合,得到全局信息。

6.Batch Normalization層

?在網(wǎng)絡(luò)每一層輸入前,插入一個(gè)BN歸一化層,將輸入數(shù)據(jù)處理為服從高斯分布的數(shù)據(jù),然后再進(jìn)入網(wǎng)絡(luò)的下一層。

BN層一般放在卷積層后,池化層前:

  • 卷積層 --> Relu激活層 --> BN層 --> 池化層
  • 卷積層 -->BN層 --> Relu激活層 --> 池化層

BN層作用:

  • 防止梯度消失
  • 加快網(wǎng)絡(luò)訓(xùn)練速度
  • 抑制網(wǎng)絡(luò)過擬合。
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容