深度学习maxout单元
? ? 今天學習深度學習看到整流線性單元及其擴展里的maxout單元,感覺這個有點東西,書中講的不是特別詳細,在此記錄一下學習到的東西。參考了http://www.cnblogs.com/tornadomeet
一、相關理論
? ? maxout出現在ICML2013上:《Maxout ?Networks》,作者Goodfellow將maxout和dropout結合后,號稱在MNIST, CIFAR-10, CIFAR-100, SVHN這4個數據上都取得了start-of-art的識別率。從論文中可以看出,maxout其實一種激發函數形式。本文主要介紹這個函數的具體算法。
二、Maxout函數
? ? 假設輸入的特征向量為,Maxout隱藏層每個神經元的計算公式如下:
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?
W是3維的,d表示輸入層節點數,m表示隱含層節點數,k表示每個隱含層節點對應了k個"隱隱含層"節點,b是一個大小為(m,k)的二維矩陣,這是我們需要學習的參數。這個公式就是Maxout隱藏層神經元i的計算 公式。k就是maxout層需要的參數。像dropout一樣,也有參數p(每個神經元dropout的概率)。如果我們設定參數k=1,那么這個時候,網絡就類似于以前我們所學普通的MLP網絡。我們可以這么理解,本來傳統的MLP算法在第i層到第i+1層,參數只有一組,然而現在我們不怎么干了,我們在這一層同時訓練n組參數,然后選擇激活值最大的作為下一層神經元的激活值。模型參考一張圖片:
假設我們網絡第i層有2個神經元x1、x2,第i+1層的神經元個數為1個:
?(1)以前MLP的方法。我們要計算第i+1層,那個神經元的激活值的時候,傳統的MLP計算公式就是:
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ??
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?
f是我們熟悉的激活函數,sigmoid,Relu,Tanh等。
(2)Maxout 的方法。如果我們設置maxout的參數k=5,maxout層就如上圖中所示,相當于在每個輸出神經元前面又多了一層“隱隱含層”。這一層有5個神經元,此時maxout網絡的輸出計算公式為:
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?,,...,,
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?
所以這就是為什么采用maxout的時候,參數個數成k倍增加的原因。本來我們只需要一組參數就夠了,采用maxout后,就需要有k組參數。
maxout的擬合能力是非常強的,它可以擬合任意的的凸函數。最直觀的解釋就是任意的凸函數都可以由分段線性函數以任意精度擬合(學過高等數學應該能明白),而maxout又是取k個隱隱含層節點的最大值,這些”隱隱含層"節點也是線性的,所以在不同的取值范圍下,最大值也可以看做是分段線性的(分段的個數與k值有關)。論文中的圖1如下(它表達的意思就是可以擬合任意凸函數,當然也包括了ReLU了):
?作者從數學的角度上也證明了這個結論,即只需2個maxout節點就可以擬合任意的凸函數了(相減),前提是”隱隱含層”節點的個數可以任意多,如下圖所示:
總結
以上是生活随笔為你收集整理的深度学习maxout单元的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: python 读取数据出现Unicode
- 下一篇: 神经网络优化:指数衰减计算平均值(滑动平