深度學習模塊【一】神經網絡基礎

1. 深度學習與神經網絡

1.1 神經網絡基礎

Logistic迴歸

邏輯迴歸是一個主要用於二分分類的算法。即,給定一個輸入X,輸出一個改樣本屬於1對應類別的預測概率Y^=P(y=1|X)
在這裏插入圖片描述

邏輯迴歸損失函數

**損失函數(loss function)**用於衡量預測結果與真實值之間的誤差。最簡單的損失函數定義方式爲平方差損失:
在這裏插入圖片描述

當我們計算損失函數的某個點相對於w_1,w_2,bw1,w2,b的導數之後,就可以更新這次優化後的結果。

正向傳播與反向傳播

​ 前面我們所做的整個過程分爲兩個部分,一個是從前往後的計算出梯度與損失,另外一部分是從後往前計算參數的更新梯度值。所以在神經網絡當中會經常出現兩個概念,正向傳播與反向傳播。

1.2 淺層神經網絡

也就是我們不只一個sigmoid了

1.3 激活函數的選擇

1、如果要做二分類,一定要選sigmoid
在這裏插入圖片描述
2、tanh函數,雙曲正切函數。缺點:tanh 函數存在和 sigmoid 函數一樣的缺點:當 z 趨緊無窮大(或無窮小),導數的梯度(即函數的斜率)就趨緊於 0,這使得梯度算法的速度會減慢。

在這裏插入圖片描述

3、Relu函數,當 z > 0 時,梯度始終爲 1,從而提高神經網絡基於梯度算法的運算速度,收斂速度遠大於 sigmoid 和 tanh。然而當 z < 0 時,梯度一直爲 0,但是實際的運用中,該缺陷的影響不是很大。

在這裏插入圖片描述

4、Leaky ReLU

在這裏插入圖片描述

爲什麼需要費線性激活函數?

如果網絡中沒有激活函數,那就沒有隱藏層,成線性感知器了,簡單的線性疊加

1.4 淺層神經網絡的前向傳播

1.5淺層神經網絡的反向傳播

參數:w[1],b[1],w[2],b[2]

兩步走

  1. 最後一次的梯度計算
  2. 隱藏層的梯度計算

1.6 深層神經網絡

  • 爲什麼要使用深層網絡?

爲了識別更加複雜圖像識別語音識別等問題。

第一層提取人臉的輪廓和邊緣等,第二層講第一層學得的邊緣信息組合起來。。。。

參數與超參數

1 參數

參數即是我們在過程中想要模型學習到的信息(模型自己能計算出來的),例如 W[l]W[l],b[l]b[l]。而**超參數(hyper parameters)**即爲控制參數的輸出值的一些網絡信息(需要人經驗判斷)。超參數的改變會導致最終得到的參數 W[l],b[l] 的改變。

2 超參數

典型的超參數有:

  • 學習速率:α
  • 迭代次數:N
  • 隱藏層的層數:L
  • 每一層的神經元個數:n[1],n[2],…
  • 激活函數 g(z) 的選擇

當開發新應用時,預先很難準確知道超參數的最優值應該是什麼。因此,通常需要嘗試很多不同的值。應用深度學習領域是一個很大程度基於經驗的過程。

參數初始化

  • 爲什麼要隨機初始化權重

如果在初始時將兩個隱藏神經元的參數設置爲相同的大小,那麼兩個隱藏神經元對輸出單元的影響也是相同的,通過反向梯度下降去進行計算的時候,會得到同樣的梯度大小,所以在經過多次迭代後,兩個隱藏層單位仍然是對稱的。無論設置多少個隱藏單元,其最終的影響都是相同的,那麼多個隱藏神經元就沒有了意義。

在初始化的時候,W 參數要進行隨機初始化,不可以設置爲 0。b 因爲不存在上述問題,可以設置爲 0。

以 2 個輸入,2 個隱藏神經元爲例:

W = np.random.rand(2,2)* 0.01
b = np.zeros((2,1))
  • 初始化權重的值選擇

這裏將 W 的值乘以 0.01(或者其他的常數值)的原因是爲了使得權重 W 初始化爲較小的值,這是因爲使用 sigmoid 函數或者 tanh 函數作爲激活函數時,W 比較小,則 Z=WX+b 所得的值趨近於 0,梯度較大,能夠提高算法的更新速度。而如果 W 設置的太大的話,得到的梯度較小,訓練過程因此會變得很慢。

ReLU 和 Leaky ReLU 作爲激活函數時不存在這種問題,因爲在大於 0 的時候,梯度均爲 1。

近於 0,梯度較大,能夠提高算法的更新速度。而如果 W 設置的太大的話,得到的梯度較小,訓練過程因此會變得很慢。**

ReLU 和 Leaky ReLU 作爲激活函數時不存在這種問題,因爲在大於 0 的時候,梯度均爲 1。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章