1. 程式人生 > >神經網絡算法

神經網絡算法

layer 5.4 舉例 交叉驗證 war learning 之間 求和 tput

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 算法舉例 技術分享 技術分享 對於輸出層:技術分享技術分享 對於隱藏層: 技術分享
技術分享 權重更新:技術分享 技術分享 偏向更新 :                   技術分享 技術分享 技術分享技術分享

神經網絡算法