1. 程式人生 > >BP神經網路的理解

BP神經網路的理解

1.整個執行流程

        首先,使用x與w相乘,開始的時候是隨機的給定w的值;

        然後,將乘積與偏執b加起來,對於b的理解是就像一元線性迴歸中的常數項,是用來修正值的。

       其次,將和帶入啟用函式;

       最後,將啟用函式的值計算損失值,也就是與真實值之間的差異,最終的目標是損失值越小越好。

2.啟用函式

     常用的損失函式有兩種一種是Sigmoid,另外一個是relu。

      (1)Sigmoid

                 

                         首先,其值的範圍為0-1之間;

                          然後,進過e的-z的變換,e的x次方的函式本來是隨著x的增加而增加的,但是e的-z次方代表的是隨著z的增加而        減小,但是最後又進行了一個到數處理,結果還是隨著x的增加而增加,並且將值限制在了0-1之間了。但是Sigmoid損失函式僅適合於在分類演算法中使用,不適合在迴歸演算法中使用,因為其結果值在0-1之間,值太小,幾乎接近與0 ,在迴歸中很容易導致 梯度消失。     

        (2)relu

     

        首先,relu函式是一次函式,並且值隨著自變數的增大而增大,同時方便在求梯度時方便求導。

        其次,因為沒有值的大小限制,並且求導較為容易,因此常用與在迴歸中使用。

3.損失函式

   3.1 損失函式

              

            損失函式經過啟用函式後的值(預測值)與真實值之間的差異,對其求和既是總體的損失值,但是可在後面+1處理。

           

             損失值不應該與樣本的個數有關,因此需要對其求平均值。

   3.2 正則項

        3.2.2 正則化

                    

            神經網路常用L2懲罰項,其目的是:對損失函式更合理,比如:                    

                      對於該情況,x與w1的乘積的結果與x與W2的乘積的結果相同,但是對於w1的理解為,因為x的第一個數的權重為1,因此每次都是看中的x的第一個值,x的其餘的值不看,也即是每次只是看中一個特徵;而w2代表的是x的每個值都看中,每個特徵都要考慮。因此w2的權重賦值較w1要好,但是最終計算出來的值是一樣的,如何區分?如何表示?

                  因此權重值的範圍都是在0-1之間, 因此就可使用正則化處理,全考慮的情況的w平方的值與只考慮一部分特徵的的w方的值較小,因此在損失函式的最後面新增一個正則化項。

3.2.2 入的值

             入 的值是對正則化的限制,限制正則化的作用為多大,並且並不是入的值越小越好,因為越小會產生過擬合。一般選擇0.01.

           

4.反向傳播

          反向傳播是當發現該種權重值情況下,損失函式值較大時,就要方向回去從新修改w的值,以致最終的損失值到達要求。

         舉個栗子:

           

             這裡的-2/5/-4就相當於神經網路中的權重,若想知道x/y/z分別對f起多大作用,則只需用f對其求分別求偏導, ,然後根據x/y/z目前對f的影響的大小結合損失值的大小來對w進行調整。

         既是:

5.梯度下降法

         梯度下降指的是,我們在修改w的值時,損失值的減小的速度,但是速度最大既是沿著起點和目標點之間的斜率方向才能好滿足,既是:

          

         沿著斜率的方向走到目標點的時間最短。

        5.1 Bachsize

                通常是取2de整數倍(32.64,128)

6.學習率

      學習率是值,我在在設定梯度下降時的一個步長,當步長過大,中間就會省略很多資訊,並且不能保證在這段距離中是否是按照斜率的方向在下降。

7.隱藏層的個數(神經元的個數)

     

     在實際操作過程中,當準確率達不到時,可以選擇新增神經元的個數,但是並不是神經元的個數越多越好,因為也會發生過擬合。

8.資料的處理

       需要對資料進行標準化