1. 程式人生 > >6.1 神經網路演算法(Nerual Networks)(上)

6.1 神經網路演算法(Nerual Networks)(上)

1. 背景:

     1.1 以人腦中的神經網路為啟發,歷史上出現過很多不同版本

     1.2 最著名的演算法是1980年的 backpropagation 

2. 多層向前神經網路(Multilayer Feed-Forward Neural Network)

     2.1 Backpropagation被使用在多層向前神經網路上

     2.2 多層向前神經網路由以下部分組成:

           輸入層(input layer), 隱藏層 (hidden layers), 輸入層 (output layers)

     2.3 每層由單元(units)組成

     2.4 輸入層(input layer)是由訓練集的例項特徵向量傳入

     2.5 經過連線結點的權重(weight)傳入下一層,一層的輸出是下一層的輸入

     2.6 隱藏層的個數可以是任意的,輸入層有一層,輸出層有一層

     2.7 每個單元(unit)也可以被稱作神經結點,根據生物學來源定義

     2.8 以上成為2層的神經網路(輸入層不算)

     2.8 一層中加權的求和,然後根據非線性方程轉化輸出

     2.9 作為多層向前神經網路,理論上,如果有足夠多的隱藏層(hidden layers) 和足夠大的訓練集, 可以模     

          擬出任何方程

3. 設計神經網路結構

     3.1 使用神經網路訓練資料之前,必須確定神經網路的層數,以及每層單元的個數

     3.2 特徵向量在被傳入輸入層時通常被先標準化(normalize)到0和1之間 (為了加速學習過程)

     3.3 離散型變數可以被編碼成每一個輸入單元對應一個特徵值可能賦的值

          比如:特徵值A可能取三個值(a0, a1, a2), 可以使用3個輸入單元來代表A。

                    如果A=a0, 那麼代表a0的單元值就取1, 其他取0;

                    如果A=a1, 那麼代表a1de單元值就取1,其他取0,以此類推

     3.4 神經網路即可以用來做分類(classification)問題,也可以解決迴歸(regression)問題

          3.4.1 對於分類問題,如果是2類,可以用一個輸出單元表示(0和1分別代表2類)

                                         如果多餘2類,每一個類別用一個輸出單元表示

                   所以輸入層的單元數量通常等於類別的數量

          3.4.2 沒有明確的規則來設計最好有多少個隱藏層

                    3.4.2.1 根據實驗測試和誤差,以及準確度來實驗並改進

4. 交叉驗證方法(Cross-Validation)

                    

          K-fold cross validation 

5. Backpropagation演算法

     5.1 通過迭代性的來處理訓練集中的例項

     5.2 對比經過神經網路後輸入層預測值(predicted value)與真實值(target value)之間

     5.3 反方向(從輸出層=>隱藏層=>輸入層)來以最小化誤差(error)來更新每個連線的權重(weight)

     5.4 演算法詳細介紹

           輸入:D:資料集,l 學習率(learning rate), 一個多層前向神經網路

           輸入:一個訓練好的神經網路(a trained neural network)

          5.4.1 初始化權重(weights)和偏向(bias): 隨機初始化在-1到1之間,或者-0.5到0.5之間,每個單元有          

                    一個偏向

          5.4.2 對於每一個訓練例項X,執行以下步驟:

                    5.4.2.1: 由輸入層向前傳送

                                   

                                   

                      5.4.2.2 根據誤差(error)反向傳送

                                 

               5.4.3 終止條件

                         5.4.3.1 權重的更新低於某個閾值

                         5.4.3.2 預測的錯誤率低於某個閾值

                         5.4.3.3 達到預設一定的迴圈次數

6. Backpropagation 演算法舉例