# Introduction to Deep Learning contributed by <`kylekylehaha`> ###### tags:`Data Science` **Neruon**: neuron network 的最小單位。 若沒有 acitvation function,model 不會變複雜,仍然是 linear. $w_0,...,w_m$ 為需要 learned 的參數。 ![](https://i.imgur.com/EGKSVkr.png) ![](https://i.imgur.com/HqIisPB.png) --- Universality Theorem 告訴我們只要參數越多,就越能模擬到 function,效果也越好,但為何是用 deep not fat netowrk? ![](https://i.imgur.com/9k7kHEw.png) ![](https://i.imgur.com/AlruqGy.png) 因為 deep 可以將每層視為一個個 module,可以將各層的結果疊上去,如果只有一層的話,就需要更多參數來達到相同的 performance。 ![](https://i.imgur.com/H3kqVz5.jpg) 除此之外,若有相同數量的 data,用 deep 的方式得到的 performance 比較好。 ![](https://i.imgur.com/fJizFR5.png) --- ## Task - model: 一個 function set。 - goal: 利用 training data,從 hypotheis function set 找出最適合 task 的 best function $f^*$ ![](https://i.imgur.com/vSuRTrQ.png) 分成 3 steps: 1. What is the model?(function hypothesis set) 2. What is the "best" function? 3. How to pick the "best" function? --- Task considered today (將問題 model 的方式) **Classification** - Binary classification (only two class) - Spam filtering - Recommendation system - Malware detection - stock prediction - Multi-class classification (morn than two class) - Handwriting digit classification - Image recognition --- ## What is the model? ### A layer of neuron **Single neuron** - Only do binary classification, cannot handle multi-class classification ![](https://i.imgur.com/ii3DKg5.png) So, we use multiple neuron to do multi-class classification. ![](https://i.imgur.com/9y9SiNJ.png) --- ### Limitation of single layer Single neuron 可以視為一條直線,因此不論怎麼畫(切),都無法有效區分 XOR function ![](https://i.imgur.com/C4bhubQ.png) 我們可以利用邏輯閘的概念,透過 AND OR 來達成 XOR ![](https://i.imgur.com/jFFYBZ5.png) ![](https://i.imgur.com/QDZESWn.png) ![](https://i.imgur.com/qyWOBdB.png) 也就是說,原本切不開的,我們可以多疊幾個 neuron,來做 transformation,投影到高維向量(這裡一樣是二維,只是有將 $x_1,x_2$ 轉成 $a_1,a_2$)。轉成 $a_1,a_2$ 後就能透過一條線切割了。 --- ### Neural Network ![](https://i.imgur.com/mjfdyJQ.png) #### Notation ![](https://i.imgur.com/srvOoDq.png) ![](https://i.imgur.com/uQZQn8O.png) ![](https://i.imgur.com/845DDwb.png) --- #### Relation between Layer Output ![](https://i.imgur.com/HpSlomW.png) ![](https://i.imgur.com/fzf8tfv.png) ![](https://i.imgur.com/yaVNSLF.png) ![](https://i.imgur.com/6PdrdZ2.png) 像 linear regression 這種 model,因為 parameters 較少,故無法做比較難的任務。 --- ## What is the "best" function? 找出 best function,猶如找出 best parameters。因此會將 $f(x)$ 寫成 $f(x;\theta)$,$\theta=\{W^1, b^1, W^2, b^2, ... W^L, b^L\}$ ![](https://i.imgur.com/LrzGqTZ.png) ### Cost function 利用 cost function 來當作 "好不好" 的依據。 ![](https://i.imgur.com/EZBPHK5.png) ![](https://i.imgur.com/WeL3to9.png) - $x^r$: 第 r 個 training set - $\hat{y^r}$: 第 r 個 ground truth $x^r$ 通過 f() 後,output 一個 vector。該 vector 表示是 "1" 的機率 ; 是 "2" 的機率 ... --- ## How to pick the "best" function? 對 deep learning 來說, function 是固定的,差別在於參數的不同。故我們希望取得一組參數,使得在 training data 上,它的 training loss 最小。 ![](https://i.imgur.com/ydF72kM.png) ### Gradient Descent 若我們知道 function 長得如何,可以直接用微分找出極值點。但一般來說我們不會知道 function 長得如何,因此採用 **Gradient Descent** ![](https://i.imgur.com/SlsUQqV.png) 計算出該點的 gradient,往 gradient 的反方向走,最後走到 local minimum。 --- #### Formal Derivation of Gradient Descent 我們也可以利用 **Taylor Series** 來證明 gradient descent。 - **Taylor Series**: 在特定點時,可以將點展開,使得值很接近。 ![](https://i.imgur.com/lnZYQ3X.png) ![](https://i.imgur.com/EZVAF4O.png) 可以看到 $x=\frac{\pi}{4}$ 時,其值基本上一樣。 ![](https://i.imgur.com/7fX1ru0.png) ![](https://i.imgur.com/s2lJYdA.png) > 圈圈夠小時,可以將 (a,b) 這點展開。 ![](https://i.imgur.com/8DOoPbI.png) ![](https://i.imgur.com/6PEbFNp.png) 為了有效計算 gradient,我們會採用 **back propagation** --- #### Forward Data & Backward Error 一開始,會利用 forward data 算出最終的 function 後,找到 final error。接著將 error 根據 weight 傳回去,最後再更新 parameter。 ![](https://i.imgur.com/tfwRVPb.png) Forward Data ![](https://i.imgur.com/p2Uluyh.png) Calculate Error ![](https://i.imgur.com/KjgqkEQ.png) Error Backpropagation ![](https://i.imgur.com/D2EQz6t.png) ![](https://i.imgur.com/DsLIv2g.png) ![](https://i.imgur.com/E6QppUO.png) Update weights ![](https://i.imgur.com/jUAlZ01.png) ![](https://i.imgur.com/waTDG6R.png) ![](https://i.imgur.com/1a9hwSw.png) --- ### Practical Issues for neural network - Parameter Initialization - Learning Rate - Stochastic gradient descent and Mini-batch - Recipe for Learning --- #### Parameter Initialziation ![](https://i.imgur.com/OaHBaOS.png) --- #### Learning Rate ![](https://i.imgur.com/Pwpz5tf.png) ![](https://i.imgur.com/QlWuPyQ.jpg) --- #### Stochastic gradient descent and Mini-batch ![](https://i.imgur.com/fGJWj6W.png) > 必須考慮是否每個 data 的 gradient descent 是否一樣,若一樣則成立可以用 stochastic gradient descent。 ![](https://i.imgur.com/kC3S6L7.png) ![](https://i.imgur.com/otBuYSi.png) > Gradient descent: 一個 epoch 更新一次 ; Stochastic gradient descent: 一筆資料更新一次,若有 20 筆資料則更新 20 次。故兩者比較可知都更新一個 epoch 時,stochastic 已經跑很遠了。 ![](https://i.imgur.com/JBnw8DC.png) > Stochastic 即為 batch size = 1。 ![](https://i.imgur.com/oWqI2Mx.png) > 沒有一定說 batch size 是多少就會有比較好的 accuracy or training time,屬於 hyperparameter,要透過實驗去看。 --- #### Recipe for Learning ![](https://i.imgur.com/Ey4cjer.png) ![](https://i.imgur.com/dIjwB3k.png) --- ## Concluding Remark ![](https://i.imgur.com/A49Pp4w.png) --- ## Tips for Deep Neural Network - Acitvation Function - Cost Function - Data Preprocessing - Optimization - Generalization ### Acitvation Function 現今我們常用 ReLU 來當作 activation function,而非 sigmoid。因為 ReLU 微分後的結果不是 0 就是 1 ,而 sigmoid 的微分值介於 0~1 之間,永遠小於1。這樣在做 back propagation 時,微分值乘上 weight 後會變小,導致越傳 gradient 越小,造成 **vanishing gradient problem**。 ![](https://i.imgur.com/34yiAak.png) ![](https://i.imgur.com/NzDLvhc.png) ![](https://i.imgur.com/uFJvCvg.png) ![](https://i.imgur.com/lXJlRt1.png) ![](https://i.imgur.com/I1L6oqI.png) ![](https://i.imgur.com/cYYsa82.png) --- ### Cost Function 透過 softmax,將結果輸出在 0~1 之間,總和為 1。 ![](https://i.imgur.com/CPLWzRs.png) ![](https://i.imgur.com/HNpm5tT.png) --- ### Optimization - Learning Rate - Momentum #### Learning Rate ![](https://i.imgur.com/Iro7IqV.png) ![](https://i.imgur.com/GpvKYLe.png) --- #### Momentum 解決容易卡在 local optimium 的問題。 ![](https://i.imgur.com/nrZ2fxT.png) 除了計算 gradient 之外,多計算 velocity v。 ![](https://i.imgur.com/Q09v4xz.png) --- ### Generalization #### Dropout ![](https://i.imgur.com/Zqqst9c.png) ![](https://i.imgur.com/1qBjqM0.png) ![](https://i.imgur.com/wUvJOOE.png) ![](https://i.imgur.com/9Zd8xFT.png) ![](https://i.imgur.com/e5Gne7p.png) ![](https://i.imgur.com/xKJ5RL4.png) ![](https://i.imgur.com/jBYb8Cx.png) ![](https://i.imgur.com/1EVAk1U.png)