機器學習 | 吳恩達斯坦福課程筆記整理之(三)神經網絡

本系列爲吳恩達斯坦福CS229機器學習課程筆記整理,如下爲筆記目錄:git

  (一)線性迴歸算法

  (二)邏輯迴歸api

  (三)神經網絡網絡

  (四)算法分析與優化機器學習

  (五)支持向量機函數

  (六)K-Means性能

  (七)特徵降維學習

  (八)異常檢測優化

  (九)推薦系統ui

  (十)大規模機器學習

第三章 神經網絡

1、再論0/1分類問題

經過對特徵進行多項式展開,可讓邏輯迴歸支持非線性的分類問題。
假定咱們如今有 n 維特徵,須要進行非線性分類,採用二次多項式擴展特徵後,特徵個數就爲 n+C2n≈n22 個特徵,特徵的空間複雜度就爲 O(n2) ,若是擴展到三次多項式,則空間複雜度能達到 O(n3) 。
所以須要考慮用新的機器學習模型來處理高維特徵的非線性分類問題,神經網絡是典型的不須要增長特徵數目就能完成非線性分類問題的模型。

2、神經網絡概述

· 人體神經元模型
                
接收區(receptive zone):樹突接收到輸入信息。
觸發區(trigger zone):位於軸突和細胞體交接的地方,決定是否產生神經衝動。
傳導區(conducting zone):由軸突進行神經衝動的傳遞。
輸出區(output zone):神經衝動的目的就是要讓神經末梢,突觸的神經遞質或電力釋出,才能影響下一個接受的細胞(神經元、肌肉細胞或是腺體細胞),此稱爲突觸傳遞。
 
· 人工神經網絡
              
輸入層:輸入層接收特徵向量 x 。
輸出層:輸出層產出最終的預測 h 。
隱含層:隱含層介於輸入層與輸出層之間,之因此稱之爲隱含層,是由於當中產生的值並不像輸入層使用的樣本矩陣 X 或者輸出層用到的標籤矩陣 y 那樣直接可見。

2、前向傳播與反向傳播

· 前向傳播
神經網絡每層都包含有若干神經元,層間的神經元經過權值矩陣 Θl 鏈接。一次信息傳遞過程能夠以下描述:
- 第 j 層神經元接收上層傳入的刺激(神經衝動);
- 該刺激經激勵函數(activation function)g 做用後,會產生一個激活向量 aj 。 aji 表示的就是 j 層第 i 個神經元得到的激活值(activation):
刺激由前一層傳向下一層,故而稱之爲前向傳遞
對於非線性分類問題,邏輯迴歸會使用多項式擴展特徵,致使維度巨大的特徵向量出現,而在神經網絡中,並不會增長特徵的維度,即不會擴展神經網絡輸入層的規模,而是經過增長隱含層,矯正隱含層中的權值,來不斷優化特徵,前向傳播過程每次在神經元上產出的激勵值均可看作是優化後的特徵。
                         
 
· 代價函數
             
            
矩陣表示
            
其中, .∗ 表明點乘操做,A∈R(K×m) 爲全部樣本對應的輸出矩陣,其每一列對應一個樣本的輸出, Y∈R(m×K) 爲標籤矩陣,其每行對應一個樣本的類型。
 
· 反向傳播
因爲神經網絡容許多個隱含層,即,各層的神經元都會產出預測,所以,就不能直接利用傳統迴歸問題的梯度降低法來最小化 J(Θ) ,而須要逐層考慮預測偏差,而且逐層優化。用反向傳播法優化預測。首先定義各層的預測偏差爲向量 δ(l) :
            
反向傳播中的反向二字也正是從該公式中得來,本層的偏差 δ(l) 須要由下一層的偏差 δ(l+1) 反向推導。
                      
· 訓練過程
       

3、參數展開

須要先將矩陣元素平鋪開爲一個長向量

4、梯度校驗(Gradient Checking)

BP算法檢驗

5、權值初始化

· 0值初始化
隱含層的神經元激活值將同樣,各層只有一個有效神經元,失去神經網絡進行特徵擴展和優化的本意
· 隨機初始化

6、感知器

最簡單的神經網絡結構,不包含隱含層
                    
從形式上看,迴歸問題算是感知器的非網絡表達形式。
 
感知器能夠解決邏輯運算問題(01分類問題)-sigmoid函數
多分類問題,添加多個隱層
             

7、神經網絡訓練過程

· 神經網絡設計
在神經網絡的結構設計方面,每每遵循以下要點:
  - 輸入層的單元數等於樣本特徵數。
  - 輸出層的單元數等於分類的類型數。
  - 每一個隱層的單元數一般是越多分類精度越高,可是也會帶來計算性能的降低,所以,要平衡質量和性能間的關係。
  - 默認不含有隱藏層(感知器),若是含有多個隱層,則每一個隱層上的單元數最好保持一致。
 
· 過程
  - 設計激活函數
           
  - 設計初始化權值矩陣的函數
  - 定義參數展開和參數還原函數
                  Args: hiddenNum 隱層數目
                          unitNum 每一個隱層的神經元數目
          inputSize 輸入層規模
          classNum 分類數目
          epsilon epsilon
                  Returns:
          Thetas 權值矩陣序列
- 定義梯度校驗過程
      Args:
        Thetas 權值矩陣
        X 樣本
        y 標籤
        theLambda 正規化參數
      Returns:
        checked 是否檢測經過
- 計算代價函數
      Args:
        Thetas 權值矩陣序列
        X 樣本
        y 標籤集
        a 各層激活值
      Returns:
        J 預測代價 """
- 設計前向傳播過程
           
    """前向反饋過程
      Args:
        Thetas 權值矩陣
        X 輸入樣本
      Returns:
        a 各層激活向量 """
- 設計反向傳播過程
           
1)計算梯度
  Args:
    a 激活值
    y 標籤
  Returns:
    D 權值梯度
2)得到梯度後,更新權值
"""更新權值
  Args:
    m 樣本數
    Thetas 各層權值矩陣
    D 梯度
    alpha 學習率
    theLambda 正規化參數
  Returns:
    Thetas 更新後的權值矩陣 """
綜上,咱們能獲得梯度降低過程:
前向傳播計算各層激活值;
反向計算權值的更新梯度;
更新權值;
 
訓練結果將包含以下信息:(1)網絡的預測偏差 error;(2)各層權值矩陣 Thetas;(3)迭代次數 iters;(4)是否訓練成功 success。
 
最後經過預測函數
"""預測函數
   Args:
    X: 樣本
    Thetas: 訓練後獲得的參數
    Return: a """
 
相關文章
相關標籤/搜索