Neural Networks and Deep Learning學習筆記ch1 - 神經網絡
近期開始看一些深度學習的資料。想學習一下深度學習的基礎知識。找到了一個比較好的tutorial,Neural Networks and Deep Learning,認真看完了之後覺得收獲還是非常多的。從最主要的感知機開始講起。到後來使用logistic函數作為激活函數的sigmoid neuron,和非常多其它如今深度學習中常使用的trick。
把深度學習的一個發展過程講得非常清楚,並且還有非常多源代碼和實驗幫助理解。看完了整個tutorial後打算再又一次梳理一遍,來寫點總結。以後再看其它資料了能夠來更新,查漏補缺。溫故而知新。
- 感知機
- Sigmoid神經元
- 神經網絡的結構
- 用梯度下降法來學習
- 參考
感知機-Perceptron
在講神經網絡之前,不得不提感知機。感知機在1950s和1960s由Frank Rosenblatt提出。是一種人為設計的neuron, 只是如今在神經網絡中通常使用sigmoid neuron,但還是有必要了解一下感知機。
在上面這個樣例中是一個感知機神經元,有三個輸入
有上面的公式能夠非常easy地看出來感知機是怎麽工作的。
可是能夠看出,感知機的輸出僅僅有 0 和 1。導致了感知機有一定的局限性,這讓感知機看起來就僅僅是簡單的邏輯門,並且還不能通過感知機構造出異或門。
關於感知機很多其它內容請看維基百科。所以就提出來一個新的neuron,能夠讓它的輸出從0到1連續變化。
Sigmoid神經元-Sigmoid neurons
如上所看到的為一個神經網絡,假設權重的微小變化能夠讓輸出也相應有一個比較小的變化。那麽就能夠讓這個神經網絡做一個略微復雜一點的工作了。而之前的感知機的輸出是二值的。僅僅有在閾值附近。輸入的變化才可能導致神經元的輸出變化。並且還是突變,這樣一個神經網絡就是有點數字化了的感覺。本科學的數字電路就是這樣子的。所以就有人提出一個新的神經元,sigmoid neuron,該神經元使用Sigmoid_function作為激活函數。
sigmoid函數也叫logistic函數,在機器學習中非經常見,該函數表達式為
能夠看到sigmoid函數的輸出是從 0 到 1 連續變化的,在 0 處函數值為0.5。
令x為神經元的輸入
另外,改變
神經網絡的結構-The architecture of neural networks
神經網絡通常由輸入層、隱藏層和輸出層組成,輸入輸出都是僅僅有一層。但隱藏層能夠有多層。深度學習中就是通過添加隱藏層的層數來完畢一些比較復雜的功能。例如以下為一個神經網絡:
通常情況下,神經網絡的每兩個相鄰層之間的神經元都是兩兩相連接的。
用梯度下降法來學習-Learning with gradient descent
建立一個如上所看到的神經網絡之後,須要通過訓練來學習權重
梯度下降是非經常常使用的優化目標函數的方法。給定訓練數據,對於給定的輸入,能夠通過神經網絡預測出一個輸出。預測的輸出假設和真實值不一致,那麽就能夠通過改變神經網絡的系數權重來使系數往正確的方向變化。不斷地學習最後就能達到一個比較好的結果。
首先要先定義一個代價函數,當預測的輸出和預期的輸出不一致時,就懲處該函數:
這裏
下一章中具體介紹神經網絡訓練用到的經典的反向傳播算法。
參考
http://neuralnetworksanddeeplearning.com/chap1.html
Neural Networks and Deep Learning學習筆記ch1 - 神經網絡