天天看點

Andrew Ng機器學習課程筆記--week5(下)

Neural Networks: Learning

内容較多,故分成上下兩篇文章。

一、内容概要

  • Cost Function and Backpropagation
    • Cost Function
    • Backpropagation Algorithm
    • Backpropagation Intuition
  • Backpropagation in Practice
    • Implementation Note:Unroll Parameters
    • Gradient Checking
    • Random Initialization
    • Putting it Together
  • Application of Neural Networks
    • Autonomous Driving

二、重點&難點

1. Backpropagation in Practice

1) Implementation Note:Unroll Parameters

本節主要講的是利用octave實作神經網絡算法的一個小技巧:将多個參數矩陣展開為一個向量。具體可以參考課程視訊,此處略。

2) Gradient Checking

神經網絡算法是一個很複雜的算法,是以我們很難憑直覺觀察出結果是否正确,是以有必要在實作的時候做一些檢查,本節給出一個檢驗梯度的數值化方法。

首先我們可以将損失函數的梯度近似為

\(\frac{∂J(θ)}{∂θ}≈\frac{J(θ+ε)-J(θ-ε)}{2ε}\)

推廣到一般形式是:

\(\frac{∂J(θ)}{∂θ_j}≈\frac{J(θ_1,θ_2,θ_j+ε……,θ_n)-J(θ_1,θ_2,θ_j-ε……,θ_n)}{2ε}\)

一般來說ε≈\(10^{-4}\)時就比較接近了

Andrew Ng機器學習課程筆記--week5(下)

最後我們的主要目标是檢查這個梯度的近似向量與反向傳播算法得到的梯度向量是否近似相等。

實作時的注意點:

  • 首先實作反向傳播算法來計算梯度向量DVec;
  • 其次實作梯度的近似gradApprox;
  • 確定以上兩步計算的值是近似相等的;
  • 在實際的神經網絡學習時使用反向傳播算法,并且關掉梯度檢查。

特别重要的是:

  • 一定要確定在訓練分類器時關閉梯度檢查的代碼。如果你在梯度下降的每輪疊代中都運作數值化的梯度計算,你的程式将會非常慢。

3) Random Initialization

關于如何學習一個神經網絡的細節到目前為止基本說完了,不過還有一點需要注意,就是如何初始化參數向量or矩陣。通常情況下,我們會将參數全部初始化為0,這對于很多問題是足夠的,但是對于神經網絡算法,會存在一些問題,以下将會詳細的介紹。

對于梯度下降和其他優化算法,對于參數向量的初始化是必不可少的。能不能将初始化的參數全部設定為0?

Andrew Ng機器學習課程筆記--week5(下)

在神經網絡中,如果将參數全部初始化為0 會導緻一個問題,例如對于上面的神經網絡的例子,如果将參數全部初始化為0,在每輪參數更新的時候,與輸入單元相關的兩個隐藏單元的結果将是相同的,既:

\(a_1^{(2)} = a_2^{(2)}\)

這個問題又稱之為對稱的權重問題,是以我們需要打破這種對稱,這裡提供一種随機初始化參數向量的方法: 初始化\(θ_{ij}^{(l)}\)為一個落在 [-ε,ε]區間内的随機數, 可以很小,但是與上面梯度檢驗( Gradient Checking)中的ε沒有任何關系。

4)Putting it together(組合到一起-如何訓練一個神經網絡)

這個老師說會在後面更加具體的介紹。

關于神經網絡的訓練,我們已經談到了很多,現在是時候将它們組合到一起了。那麼,如何訓練一個神經網絡?

  • 首先需要确定一個神經網絡的結構-神經元的連接配接模式, 包括:
    • 輸入單元的個數:特征 的維數;
    • 輸出單元的格式:類的個數
    • 隐藏層的設計:比較合适的是1個隐藏層,如果隐藏層數大于1,確定每個隐藏層的單元個數相同,通常情況下隐藏層單元的個數越多越好。
  • 在确定好神經網絡的結構後,我們按如下的步驟訓練神經網絡:
      1. 随機初始化權重參數;
      1. 實作:對于每一個 通過前向傳播得到;
      1. 實作:計算代價函數;
      1. 實作:反向傳播算法用于計算偏導數
      1. 使用梯度檢查來比較反向傳播算法計算的和數值估計的的梯度,如果沒有問題,在實際訓練時關閉這部分代碼;
      1. 在反向傳播的基礎上使用梯度下降或其他優化算法來最小化;

主要介紹了老師的一個大佬朋友利用神經網絡設計的自動駕駛汽車的視訊,感興趣的可以看看。自動駕駛汽車

MARSGGBO ♥原創 2017-8-6

繼續閱讀