# Deep Learning Courses ## Outline - basic - Gradient Descent - Backpropagation - CNN - Batch Normalization - advanced - RNN ### Gradient Descent #### Adagrad 根據時間改變learning rate ![](https://i.imgur.com/ztMonkw.png) #### Stochastic Gradient Descent 每次拿一個example(隨機or按順序) loss只考慮此example,update參數時,也只考慮此example 而在一般Gradient Descent中,則是考慮所有data的loss ![](https://i.imgur.com/MlGp7Ee.jpg) #### Feature Scaling $y=b+w1x1+w2x2$ 希望不同feature的scaling是一樣的 ![](https://i.imgur.com/66nAtaC.png) 會比較有效率,因為會向著圓心走 ![](https://i.imgur.com/1FREzp4.png) ### Backpropagation #### backward pass 先算完 forward pass 建一個反向的 neural network ![](https://i.imgur.com/Xq4fcKF.png) ### CNN CNN 是為了簡化,不要使用fully connected, 在一開始便過濾掉一些參數 為什麼可以不用全部的參數做影響處理? 1. 影像處理中第一層layer是判斷某一pattern是否存在,而通常不需看一整張圖,而是看一小區塊即可知道 2. 同一個pattern可能會出現在不同張圖的不同region,不需要以不同neuron用不同參數判斷一樣的東西,而是要求兩個neuron共享同一組參數 3. 以subsampling方式,圖片的影像辨識不會有明顯改變,可以用此概念將影像縮小,減少參數數量 1.2.由 convolution 處理 ![](https://i.imgur.com/25LWvwc.png) 3.由 max pooling 處理 ![](https://i.imgur.com/ANqVlj0.jpg) feature maps的數量不會因為做 repeat convolution 就變成平方數量(幾個filter就會output幾個filter) ###### input->convolution->max pooling->flatten->output ### Batch Normalization 在每一個layer output出的feature做feature scaling,好處是可以使 internal covariate shift 減少一些,learning rate可以設大一點,且有一些對抗overfittiing的效果 batch size若太小,則batch normalization performance效果會很差,因為無法從batch估算整個data的平均 ### RNN 會將 hidden layer 的 output 存起來,供給後面的使用 ![](https://i.imgur.com/6iEqKEj.png) 因此圖中"Taipei" 的vector一樣,但hidden layer output 可能會不同,因為會被存在memory中的值所影響 分成兩種network ![](https://i.imgur.com/n58bnm7.png) - Elman network 把hidden layer的值存起來,下一個時間點再讀出來 - Jordan network 把整個network output存起來(較好) 因為hidden layer沒有target,不清楚學到了什麼 LSTM(Long short-term memory) 首先會經過一個input gate,若是打開的才能寫入mem,最後也會有個output gate,決定其他neuron 可否從此記憶體把值取出,而還有一個gate是forget gate,決定memory中的值保留與否 所以共四個input一個output