1. 程式人生 > >【深度學習】Deep Learning必備之必背知識點

【深度學習】Deep Learning必備之必背知識點

這篇文章有哪些需要背誦的內容:

1、張量、計算圖、會話

    神經網路:用張量表示資料,用計算圖搭建神經網路,用會話執行計算圖,優化線上的權重(引數),得到模型。

     張量:標量(單個)、向量(1維)、矩陣(2維)、張量(n維)

2、前向傳播

    網路的線上的權重W,用變量表示,隨機給初值。

    前向傳播計算得到輸出。

3、反向傳播

    反向傳播優化引數訓練的模型。用梯度下降,使loss最小。

    優化器Optimizer:GradientDescent、Momentum、Adam。

4、損失函式 loss

    預測值與已知結果的差距。常用均方誤差MSE作為loss;

5、學習率 learning rate

    決定引數每次更新的幅度。

6、滑動平均

    提高模型泛化能力。

7、正則化

    緩解過擬合。

8、神經網路搭建

    生成資料集 generateds

    前向傳播 forward

    反向傳播 backward

9、全連線網路 full connect

    每個神經元與前後相鄰層的每一個神經元都有連線關係。

10、卷積 convolutional

    核心

11、全零填充 padding

    輸入影象周圍全零填充,卷積後保證輸出影象與輸入一致。

12、池化 pooling

    減少特徵數量。

13、捨棄 dropout

    減少過多的引數,暫時捨棄部分神經元。

14、卷積神經網路 CNN

    藉助卷積核提取特徵後,送入全連線網路。

1、張量、計算圖、會話

    張量:標量(單個)、向量(1維)、矩陣(2維)、張量(n維)

    計算圖(Graph):搭建神經網路的計算過程,只搭建,不運算。

    會話(Session):執行計算圖中的節點運算。Session的run來執行。

2、前向傳播

    引數:網路的線上的權重W,用變量表示,隨機給初值。

    前向傳播需定義輸入、引數和輸出。

神經網路實現過程:

        1-準備資料集,提取特徵,作為輸入餵給神經網路Neural Network(NN)

        2-搭建NN結構,從輸入到輸出(先搭建計算圖,再用會話執行)

NN前向傳播演算法——>計算輸出

        3-大量特徵資料餵給NN,迭代優化NN引數

NN反向傳播演算法——>優化引數訓練模型

        4-使用訓練好的模型預測和分類

        基於深度學習的神經網路一般是兩個過程:訓練和使用;上面過程中1、2、3步是訓練的過程,準備好資料集,前向和反向進行訓練資料,前向是計算出輸出,反向則是對上一次的前向過程進行引數的優化,得到新的引數,通過不斷迭代訓練出最終的模型;模型訓練完成後,通過載入模型,對待測物件進行預測或分類計算。

前向傳播:搭建模型,實現推理;

3、反向傳播

    反向傳播需定義損失函式(loss=)、反向傳播方法(train_step= )。

    反向傳播優化引數訓練的模型。用梯度下降,使loss最小。

    優化器Optimizer:GradientDescent、Momentum、Adam。

4、損失函式 loss

    預測值與已知結果的差距。

    NN的優化目標是讓loss最小;

    常用方法:均方誤差MSE(mean squared error)、自定義、交叉熵CE(cross entropy)(表徵兩個概率分佈之間的距離)。

啟用函式 activation function:Relu、Sigmoid、tanh。

NN複雜度:多用NN層數和NN引數的個數表示。

        層數 = 隱藏層的層數 + 1個輸出層

        總引數 = 總w + 總b

softmax()函式:讓每個輸出都在[0, 1]之間。

5、學習率 learning rate

    每次引數更新的幅度。

    學習率設定多少合適?

    學習率大了振盪不收斂,學習率小了收斂速度慢。

6、滑動平均(影子值)

    滑動平均是一個優化方法,記錄每個引數一段時間內過往值得平均,增加了模型的泛化性。

(泛化能力(generalization ability)是指機器學習演算法對新鮮樣本的適應能力。通常期望經訓練樣本訓練的網路具有較強的泛化能力,也就是對新輸入給出合理響應的能力。)

在Tensorflow中ema = tf.train.ExponentialMovingAverage(MOVING_AVERAGE_DECAY, global_step)

MOVING_AVERAGE_DECAY:衰減率(一般給比較大的值)

global_step:當前輪數。

7、正則化

有時候我們發現模型在訓練資料集上的正確率非常高,但這個模型卻很難對從來沒有見過的資料做出正確響應,我們說這個模型存在“過擬合”的現象。

正則化緩解過擬合。

正則化在損失函式中引入模型複雜度指標,利用給W加權值,弱化了訓練資料的噪聲(一般不正則化b)

8、神經網路搭建總結

9、全連線網路 full connect

    每個神經元與前後相鄰層的每一個神經元都有連線關係,輸入是特徵,輸出為預測的結果。

針對灰度圖和彩色圖,灰度輸入的寬*高,彩色圖輸入是寬*高*通道數;對影象進行深度學習,輸入的資料比較大,引數也相應的比較多。

實際應用中會先對原始影象進行特徵提取,再把提取到的特徵餵給全連線網路。

10、卷積  convolutional

    卷積可認為是一種有效提取影象特徵的方法。

    一般會用一個正方形卷積核,遍歷圖片上的每一個畫素點。圖片區域內,相對應的每一個畫素值,乘以卷積核內相對應的權重,求和,再加上偏置。

輸出圖片邊長 = (輸入圖片邊長 - 卷積核長 + 1 ) / 步長

下圖計算:(5-3+1)/ 1 = 3

11、全零填充 padding

    在輸入影象的周圍進行全零填充padding,這樣可以保證輸出影象大小和輸入影象一致。比如下圖,在5*5的輸入影象周圍全零填充,經過卷積計算後,輸出影象依然是5*5大小的影象。

輸出影象邊長 = 輸入影象邊長 / 步長

上圖計算的輸出影象邊長 : 5 / 1 = 5

Tensorflow中計算卷積的輸入引數包括以下:(灰度圖)

彩色影象的情況下的卷積計算:

Tensorflow中計算卷積的輸入引數包括以下:(彩色圖)

12、池化 pooling

    通過卷積進行特徵提取,提取到的特徵數量依然巨大,池化用於減少特徵的數量。

    池化的主要方法:最大池化可提取圖片紋理,均值池化可保留背景特徵。

13、捨棄 dropout

    在神經網路的訓練過程中,將一部分神經元按照一定概率從神經網路中暫時捨棄。使用時被捨棄的神經元恢復連線。這種捨棄時臨時性的,僅在訓練時捨棄一定概率的神經元,在使用神經網路時會把所有的神經元恢復到神經網路中。dropout可以有效減小過擬合。

14、卷積神經網路 CNN

    藉助卷積核(kernel)提取特徵後,送入全連線網路。

    CNN可以認為是由兩部分組成,第一部分是對輸入影象的特徵提取,第二部分是全連線網路,只不過喂入全連線網路的不是原始圖片,而是經過若干次卷積、啟用、池化後的特徵資訊。

深度學習的知識分支:

附:兩個體驗Demo

Demo 1 :3D Visualization of a CNN

http://scs.ryerson.ca/~aharley/vis/conv/

Demo 2 :ConvnetJS Demo

https://cs.stanford.edu/people/karpathy/convnetjs//demo/classify2d.html

Taily老段的微信公眾號,歡迎交流學習

2018-09-25最近在忙工作上的開發任務,好長一段時間沒更新公眾號的文章了,實在抱歉;我看很多童鞋在公眾號提出一些人工智慧相關的問題,打算利用一下國慶假期的時間好好學習整理一下知識點,然後分享給大家,感謝大家的關注,感謝大家的交流學習;