Neural Network Introduction

神經網絡的基礎與原理介紹 隨筆,內容包括 :
Make your own neural networks - Tariq Rashid
Machine Learning - Hung-yi lee
3Blue1Brown

原理

左邊784個neuron的激活值分別爲28x28圖像的784個pixels的灰度,最右邊九個neuron激活值即選擇爲0-9分別的可能性。
在這裏插入圖片描述
中間的hidden layers可能對識別某些部分都有不同的作用, 每一個neuron的作用:
在這裏插入圖片描述
反向傳播,每一個樣本影響前面所有的神經元的w
在這裏插入圖片描述

通過Back Propagation + Gradient Descent來得到各參數

C爲距離
在這裏插入圖片描述
在這裏插入圖片描述
在這裏插入圖片描述

計算方法

在這裏插入圖片描述
在這裏插入圖片描述
Forward Pass
在這裏插入圖片描述
Backward Pass
在這裏插入圖片描述
在這裏插入圖片描述
那麼就可以從output layer開始往前算起偏微分了!
在這裏插入圖片描述在這裏插入圖片描述

問題

Train爛了?

層數收斂問題

在這裏插入圖片描述
train出來效果差,也不是overfitting,是因爲層數多了,前面的層數還幾乎是random的而後面的層數已經收斂了。而且如果用的是sigmoid函數激勵,會將影響縮到(-1,1)範圍,那麼影響無論多大,過一層後都縮了太多。
解決方法
所以可以用ReLU(ReLU大法好)
不過也可以用神奇Maxout的方法:
在這裏插入圖片描述
這也是一個可學習的激勵函數。

最佳參數

一般gradient descent很有可能可能由於plateau,saddle point,local minima停了下來:
在這裏插入圖片描述
解決方法
Momentum動量模擬:現在的gradient加上前一次移動的方向
在這裏插入圖片描述
在這裏插入圖片描述

Test爛了?

Early Stopping

在這裏插入圖片描述

Regularization

(對Deep Learning實際上效果不大)
https://blog.csdn.net/chitoseyono/article/details/86515759 Chapter 8 Regularization 模型正則化
在這裏插入圖片描述
在這裏插入圖片描述

Dropout

對每個neuron進行sampling,每個有p%被丟掉,瘦身NN
在這裏插入圖片描述
只在training的時候進行dropout,test時不dropout,但
在這裏插入圖片描述
(w要乘dropout rate的原因是在train的時候丟的如果直接上test數據,輸出會變多幾倍,所以應該乘上(1-p))
用dropout,在minibatch分別train,然後能得到ensemble的效果(就很爽)
在這裏插入圖片描述 而且因爲在線性條件下dropout的效果跟直接的效果是相同的,而也有ReLU的線性特性,所以用ReLU的時候,dropout效果會很好。