人工神經元有:es6
感知機input是多個二進制,output是一個二進制。算法
感知機經過賦予不一樣evidence權值,升高或下降threshold來達到做出決策的目的。網絡
更新後的感知機規則:app
bias能夠理解爲使神經元被激活的容易度的度量。ide
咱們經過設計 Learning Algorithm 去自動地調整 Network of Artificial Neuron 的 Weights 和 Biases。這種調整,能夠對外部刺激做出響應。函數
網絡經過學習 Weights 和 Biases 以便最終正確地分類。咱們但願在網絡的 Weights 和 Biases 上做出一些小的改變時,只會引發輸出上的小幅變化。只有這樣,學習才變得可能。經過不斷地修改 Weights 和Biases 來產生愈來愈好的結果。學習
若是網絡中包含感知機的話,輕微的改變甚至會致使感知機的輸出徹底翻轉,很難實現逐步改變 Weights 和 Biases 來使網絡行爲更加接近預期。ui
Sigmoid 神經元在輕微改變 Weights 和 Biases 時只會引發小幅的輸出變化。這是因爲 Sigmoid 神經元構成的網絡可以學習的關鍵因素。spa
輸入和輸出都是介於0到1之間的浮點數。設計
將 Evidence,Weight,Bias 代入$\sigma$,輸入是$\cdot+b$,輸出是
Sigmoid 神經元使用 \(\sigma\) 函數,若是將 \(\sigma\) 函數換成 Setp(階躍) 函數,就變成了感知機。
\(\sigma\) 函數的平滑屬性,讓咱們在 \(\triangle w_{j}\) 和 \(\triangle b\) 輕微改變時,神經元的輸出也只是輕微地變化 \(\triangle output\)。
\(\sigma\) 有時也被稱做 Logistic Function,對應的神經元被稱爲 Logistic Neurons。
對於判斷一個手寫數字是否是9這個問題,咱們使用$64\times64$的灰度圖像。
輸入層須要4096個神經元,每一個神經元接收標準化的0-1之間的灰度值。
輸出層須要一個神經元,用於分類。
標準化是將數據按比例縮放,使之落入一個小的特定區間。
Min-Max Normalization 線性歸一化
Z-Score Standardization
非線性歸一化
前饋神經網絡,是把上一層的輸出,做爲下一層的輸入。信息老是向前傳播,從不反向回饋。
數據是$28\times28$的灰度圖像
爲何輸出層用10個神經元?神經元輸出二進制的話,$2^4=16$,用4個神經元就足夠了。
隱藏層的第1個神經元用於檢測圖像中是否存在特定模式。若是有,它會對特定模式在圖像中對應部分的像素賦予較大的權重,對其它部分賦予較小的權重。
隱藏層的第2個神經元會檢測另外一種模式。若是有,也會給對應部分的像素較大權重,其它像素較小權重。
輸出層有10個神經元,它的第1個神經元經過權衡從隱藏層獲得的信息,告訴咱們這個數字是否是0。若是輸出層的第1個神經元檢測到隱藏層的某幾個神經元被激活,那麼能夠推斷這個數字是0。
代價函數,有的地方也叫
咱們訓練神經網絡的目的,是尋找合適的 Weights 和 Biases 來最小化代價函數。
MSE代價函數:
梯度降低法,是一種能夠解決最小化問題的技術。
在$v_{1}\(方向上移動很小的量\)\triangle v_{1}$,在$v_{2}\(方向移動很小的量\)\triangle v_{2}$,C將會發生以下變化:
咱們用$\triangle v$來描述v的變化
用$\nabla C$表示梯度向量
這樣,C發生的變化能夠表示爲
若是想讓C一直下降,$\triangle C$就得是負的。
咱們能夠這樣選取$\triangle v$,以確保$\triangle C$爲負數:
$\eta$是很小的正數,也就是 Learning Rate。這樣,
從而保證$\triangle C \le 0$。
若是從爲止v移動到v',變化$\triangle v$爲
而後反覆迭代地更新,C會一直下降到咱們想要尋找的全局最小值。
梯度降低算法工做的方式是重複計算梯度$\nabla C$,而後沿着梯度的反方向運動,即下山坡。
同時,梯度降低法也被視爲一種經過在C降低最快的方向上作微小變化,來使得C當即降低的方法。
Cost Function能夠這樣寫:
這樣,咱們要爲每一個樣本x單獨計算梯度值$\nabla C_x$,而後求和再求平均值
梯度降低可能會花費大量時間,學習緩慢。
SGD隨機梯度降低,每次隨機選取少許輸入樣原本計算$\nabla C_x$和$\nabla C$,少許樣本能夠快速獲得梯度$\nabla C$,加快梯度降低過程,進而加速學習過程。
SGD將訓練數據隨機打散,而後劃分爲多個大小爲m的 mini-batch 。
經過計算隨機選取的mini-batch的梯度來估計總體的 Gradient ,更新 Weights 和 Biases 。
用這個 mini-batch 更新完 Weights 和 Biases 後,再選取另外一個 mini-batch去訓練,直到咱們用完全部訓練數據,就完成了一個 epoch 訓練。
也叫 Incremental Learning ,是 mini-batch=1 時的梯度降低極端版本。