萌主天下無敵 作品

第634章

    一般來說,我們舉的例子越多,就越能表達那個抽象的知識。這在神經網絡的訓練中同樣成立。

    我們可以向網絡灌入成千上萬個訓練樣本,然後網絡就自動從這些樣本中總結出那份隱藏在背後的抽象的知識。

    這份知識的體現,就在於網絡的所有權重和偏置參數的取值。

    假設各個參數有一個初始值,當我們輸入一個訓練樣本的時候,它會根據當前參數值計算出唯一的一個實際輸出值。

    這個值可能跟我們期望的輸出值不一樣。想象一下,這時候,我們可以試著調整某些參數的值,讓實際輸出值和期望輸出值儘量接近。

    當所有的訓練樣本輸入完畢之後,網絡參數也調整到了最佳值,這時每一次的實際輸出值和期望輸出值已經無限接近,這樣訓練過程就結束了。

    假設在訓練過程中,網絡已經對數萬個樣本能夠給出正確(或接近正確)的反應了,那麼再給它輸入一個它沒見過的數據,它也應該有很大概率給出我們預期的決策。這就是一個神經網絡工作的原理。

    但這裡還有一個問題,在訓練過程中,當實際輸出值和期望輸出值產生差異的時候,要如何去調整各個參數呢?

    當然,在思考怎麼做之前,也應該先弄清楚:通過調整參數的方式獲得期望的輸出,這個方法行得通嗎?

    實際上,對於感知器網絡來說,這個方法基本不可行。

    比如在上圖有39個參數的感知器網絡中,如果維持輸入不變,我們改變某個參數的值,那麼最終的輸出基本完全不可預測。

    它或者從0變到1(或從1變到0),當然也可能維持不變。這個問題的關鍵在於:輸入和輸出都是二進制的,只能是0或者1。

    如果把整個網絡看成一個函數(有輸入,有輸出),那麼這個函數不是連續的。

    因此,為了讓訓練成為可能,我們需要一個輸入和輸出能夠在實數上保持連續的神經網絡。於是,這就出現了sigmoid神經元。