1. 程式人生 > >演算法工程師修仙之路:吳恩達機器學習(八)

演算法工程師修仙之路:吳恩達機器學習(八)

吳恩達機器學習筆記及作業程式碼實現中文版

第六章 神經網路學習


特徵和直觀理解

  • 從本質上講,神經網路能夠通過學習得出其自身的一系列特徵。

  • 神經網路中,單層神經元( 無中間層)的計算可用來表示邏輯運算,比如邏輯與(AND)、邏輯或(OR)。

  • 邏輯與(AND):下圖中左半部分是神經網路的設計與 output 層表示式,右邊上部分是 sigmod 函式,下半部分是真值表。

    • 我們可以用這樣的一個神經網路表示 AND 函式:
      在這裡插入圖片描述
    • 其中 θ
      0 = 30 , θ 1
      = 20 , θ 2 = 20
      \theta_0=−30, \theta_1=20, \theta_2=20
      ,我們的輸出函式 h θ ( x ) ℎ_\theta(x) 即為 h θ ( x ) = g ( 30 + 20 x 1 + 20 x 2 ) ℎ\theta(x)=g(−30+20x1+20x2)
    • g ( x ) g(x) 的影象是:
      在這裡插入圖片描述在這裡插入圖片描述 - 所以我們有: h θ ( x ) x 1 A N D x 2 ℎ_\theta(x) ≈ x_1ANDx_2 ,這就是 AND 函式。
  • OR 函式:OR 與 AND 整體一樣,區別只在於的取值不同。
    在這裡插入圖片描述

樣本和直觀理解

  • 二元邏輯運算子( BINARY LOGICAL OPERATORS)當輸入特徵為布林值( 0 或 1)時,我們可以用一個單一的啟用層可以作為二元邏輯運算子,為了表示不同的運算子,我們只需要選擇不同的權重即可。

  • 下圖的神經元(三個權重分別為-30,20,20)可以被視為作用同於邏輯與(AND):
    在這裡插入圖片描述

  • 下圖的神經元(三個權重分別為-10,20,20)可以被視為作用等同於邏輯或(OR):
    在這裡插入圖片描述

  • 下圖的神經元(兩個權重分別為10,-20)可以被視為作用等同於邏輯非(NOT):
    在這裡插入圖片描述

  • 我們可以利用神經元來組合成更為複雜的神經網路以實現更復雜的運算。

    • 例如我們要實現 XNOR 功能(輸入的兩個值必須一樣,均為 1 或均為 0),即:XNOR = ( x 1 x_1 AND x 2 x_2 ) OR((NOT x 1 x_1 )AND(NOT x 2 x_2 ))。
    • 首先構造一個能表達(NOT x 1 x_1 )AND(NOT x 2 x_2 )部分的神經元:
      在這裡插入圖片描述
    • 然後將表示AND的神經元和表示(NOT x 1 x_1 )AND(NOT x 2 x_2 )的神經元以及表示 OR 的神經元進行組合:
      在這裡插入圖片描述
    • 我們就得到了一個能實現 XNOR 運算子功能的神經網路。
    • 按這種方法我們可以逐漸構造出越來越複雜的函式,也能得到更加厲害的特徵值。

多元分類

  • 當我們有不止兩種分類時(也就是 y = 1 , 2 , 3 . y=1, 2, 3…. ),如果我們要訓練一個神經網路演算法來識別路人、汽車、摩托車和卡車,在輸出層我們應該有 4 個值。例如,第一個值為 1 或 0 用於預測是否是行人,第二個值用於判斷是否為汽車。

  • 輸入向量 x x 有三個維度,兩個中間層,輸出層 4 個神經元分別用來表示 4類,也就是每一個數據在輸出層都會出現 [ a , b , c , d ] T [a, b, c, d]^T ,且 a , b , c , d a, b, c, d 中僅有一個為 1,表示當前類。

  • 下面是該神經網路的可能結構示例:
    在這裡插入圖片描述

  • 神經網路演算法的輸出結果為四種可能情形之一:
    在這裡插入圖片描述