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是 ,則 ,,則 ,所以 的關係圖是下圖左邊那樣子,而Maxout是找輸入最大值,也就是說它會去找 哪一個比較大,所以 的關係圖是下圖右邊這樣子,那就可以看出只要給它們的 是一樣的,它們得到的結果就會是一樣的。
前面提到Maxout也可以做出更多不同的Activation function,只要給它不同的 就可以得到不一樣的結果,所以它就是一個Learnable Activation function,是一個可以根據data產生的Activation function。
ReLU可以做出任何的Piecewise Linear convex activation function,那這個function裡面有多少個piece決定於你把多少個element放在同一組,
假設下圖用紅框框起來的是那組的最大值,也就是這個Max operation的輸出,那這個Max operation其實就是一個Linear operation。
而其他比較小的值就可以拿掉了,你就只要去訓練這個Linear Network就好,這樣做是可以的,是因為你在給它不同輸入的時候,它選擇的最大值也會不同,所以不會有參數沒被訓練到的問題。
這個我們之前在梯度下降法(Gradient Descent) --- Tip 1中就有提到了,就是Adagrad,它的做法就是,我們每一個parameter都要有不同的Learning rate,然後把一個固定的Learning rate 除掉這一個參數過去所有Gradient值得平方和開根號,就可以得到新的parameter。
但是在處理深度學習的問題,用Adagrad可能是不夠的,因為你需要更能動態的調整Learning rate的方法,也就是接下來會介紹的RMSProp。
它是把這個固定的Learning rate除掉一個值 ,在第一個時間點, 是你第一個算出來的Gradient的值 ,而在第二個時間點,你的 就是原來剛剛 的值的平方乘上 ,再加上新的 的平方再乘上 ,而 是可以隨意調整的,如果設的小,就代表你更偏向於看新的Gradient。
除了Learning rate的問題以外,在做深度學習的時候,我們可能會卡在Local minimum、saddle point、甚至是plateau,但是 Yann LeCun 是說,其實在error surface上沒有太多local minimum,因為如果是local minimum就必須要是像圖中顯示的山谷谷底的形狀,而你的參數越多,這個谷底的機率出現的就越低,所以local minimum在一個很大的Neural Network裡面,是沒有這麼多的。