iT邦幫忙

2021 iThome 鐵人賽

DAY 18
0
AI & Data

30天搞懂機器學習是否搞錯了什麼系列 第 18

【Day 18】深度學習(Deep Learning)--- Tip(三)

  • 分享至 

  • xImage
  •  
  • 昨天提到了ReLU還有它的一些variant,那接下來要講的是另外一個更進階的想法,叫做Maxout Network。

Maxout

Maxout Network就是讓你的Network自動去學它的Activation function,而因為是自動學出來的,所以昨天提到的ReLU就變成只是Maxout network的一個特別案例而已,也就可以是其他的Activation function,用訓練資料來決定Activation function。

Maxout Network的架構如下圖所示,將輸入乘上weight得到value,本來這些value會通過Activation function來得到另一組value,但是在Maxout裡面,我們是把這些value事先分組,然後在一組裡面拿最大值當作輸出,再將這些值去乘上weight得到另外一排不同的值,一樣分組找最大值,以此類推。

Maxout也可以做到跟ReLU一樣的事,從下圖中可以看到,ReLU是 https://chart.googleapis.com/chart?cht=tx&chl=z%20%3E%200,則 https://chart.googleapis.com/chart?cht=tx&chl=a%20%3D%20zhttps://chart.googleapis.com/chart?cht=tx&chl=z%20%3C%200,則 https://chart.googleapis.com/chart?cht=tx&chl=a%20%3D%200,所以 https://chart.googleapis.com/chart?cht=tx&chl=a%2C%20z 的關係圖是下圖左邊那樣子,而Maxout是找輸入最大值,也就是說它會去找 https://chart.googleapis.com/chart?cht=tx&chl=z_1%2C%20z_2 哪一個比較大,所以 https://chart.googleapis.com/chart?cht=tx&chl=z_1%2C%20z_2%2C%20a 的關係圖是下圖右邊這樣子,那就可以看出只要給它們的 https://chart.googleapis.com/chart?cht=tx&chl=w%2C%20b 是一樣的,它們得到的結果就會是一樣的。

前面提到Maxout也可以做出更多不同的Activation function,只要給它不同的 https://chart.googleapis.com/chart?cht=tx&chl=w%2C%20b 就可以得到不一樣的結果,所以它就是一個Learnable Activation function,是一個可以根據data產生的Activation function。

ReLU可以做出任何的Piecewise Linear convex activation function,那這個function裡面有多少個piece決定於你把多少個element放在同一組,

Maxout - Training

假設下圖用紅框框起來的是那組的最大值,也就是這個Max operation的輸出,那這個Max operation其實就是一個Linear operation。

而其他比較小的值就可以拿掉了,你就只要去訓練這個Linear Network就好,這樣做是可以的,是因為你在給它不同輸入的時候,它選擇的最大值也會不同,所以不會有參數沒被訓練到的問題。

Aaptive Learning Rate

這個我們之前在梯度下降法(Gradient Descent) --- Tip 1中就有提到了,就是Adagrad,它的做法就是,我們每一個parameter都要有不同的Learning rate,然後把一個固定的Learning rate https://chart.googleapis.com/chart?cht=tx&chl=%5Ceta 除掉這一個參數過去所有Gradient值得平方和開根號,就可以得到新的parameter。

但是在處理深度學習的問題,用Adagrad可能是不夠的,因為你需要更能動態的調整Learning rate的方法,也就是接下來會介紹的RMSProp。

RMSProp

它是把這個固定的Learning rate除掉一個值 https://chart.googleapis.com/chart?cht=tx&chl=%5Csigma,在第一個時間點,https://chart.googleapis.com/chart?cht=tx&chl=%5Csigma%5E0 是你第一個算出來的Gradient的值 https://chart.googleapis.com/chart?cht=tx&chl=g%5E0,而在第二個時間點,你的 https://chart.googleapis.com/chart?cht=tx&chl=%5Csigma%5E1 就是原來剛剛 https://chart.googleapis.com/chart?cht=tx&chl=%5Csigma 的值的平方乘上 https://chart.googleapis.com/chart?cht=tx&chl=%5Calpha,再加上新的 https://chart.googleapis.com/chart?cht=tx&chl=g%5E1 的平方再乘上 https://chart.googleapis.com/chart?cht=tx&chl=1%20-%20%5Calpha,而 https://chart.googleapis.com/chart?cht=tx&chl=%5Calpha 是可以隨意調整的,如果設的小,就代表你更偏向於看新的Gradient。

很難找到最好的參數

除了Learning rate的問題以外,在做深度學習的時候,我們可能會卡在Local minimum、saddle point、甚至是plateau,但是 Yann LeCun 是說,其實在error surface上沒有太多local minimum,因為如果是local minimum就必須要是像圖中顯示的山谷谷底的形狀,而你的參數越多,這個谷底的機率出現的就越低,所以local minimum在一個很大的Neural Network裡面,是沒有這麼多的。


參考資料

李宏毅老師 - ML Lecture 9-1


上一篇
【Day 17】深度學習(Deep Learning)--- Tip(二)--- ReLU
下一篇
【Day 19】深度學習(Deep Learning)--- Tip(四)--- Momentum
系列文
30天搞懂機器學習是否搞錯了什麼30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言