李宏毅機器學習(十二)Tips for DeepLearning

深度學習秘籍

我們都知道深度學習分下圖紅框中的3步阱冶,然后我就就形成了自己的神經網絡,我們就直接拿去測試集上實驗嗎滥嘴,不木蹬,我們先要保證在訓練集上有比較好的效果,否則訓練集誤差都比較大若皱,那就說明之前的步驟有問題届囚,導致整體有偏差有梆,我們需要修改直到我們在訓練集上有比較滿意的結果,然后我們才可以在測試集測試意系,如果測試集上是比較好的效果泥耀,那我們的模型訓練至此結束,如果不行蛔添,那就是訓練集好測試集不好痰催,就是過擬合了,我們就需要從頭開始從新考慮模型的創(chuàng)建迎瞧,創(chuàng)建完畢后還是需要先考慮訓練集夸溶,直至訓練集和測試集雙優(yōu)。

插圖1

我們能把所有錯誤都歸于過擬合嗎凶硅,比如上圖中我們沒有看訓練集準確率缝裁,直接看測試集結果,我們可能覺得測試集效果不好就是過擬合足绅,這是不準確的捷绑,我們先看下圖右,56層的神經網絡比20層的神經網絡在相同迭代次數氢妈,錯誤率高粹污,但實際我們去觀察訓練集錯誤率,56層就已經比20層錯誤率高了首量,有人會把這叫做欠擬合壮吩,這是不準確的,一般的欠擬合是參數少導致擬合不準確加缘,56層比20層多36層鸭叙,參數多,完全可以后36層什么都不干拣宏,可能是因為學習率或者其他問題沈贝,導致停留在了局部最低點。

插圖2

我們對應訓練集和測試集的好壞都有具體的解決方法蚀浆,先分析訓練集的數據差可能的原因

插圖3

我們首先考慮的就是激活函數我們一直在用的就是sigmoid函數缀程,下圖中我們使用神經元數量和準確率的關系搜吧,也許有人就會說市俊,哇,你這是層數多過擬合了滤奈,但是請仔細看好摆昧,這是訓練集上的數據,為什么這樣呢蜒程,我們來分析

插圖4

我們這種情況訓練時绅你,常常是訓練著就發(fā)現靠近輸入端的w梯度很小伺帘,學習很慢,相對的忌锯,靠近輸出的w就梯度較大伪嫁,學習較快,很容易就到了局部的最小點

插圖5

因為我們使用了sigmoid函數(只分布在0,1之間)偶垮,函數本身會使w得變化對后級影響小张咳,隨著層數增加越來越小,這就是原因似舵。

插圖6

我們發(fā)現sigmoid有不好用的地方脚猾,于是就有了relu激活函數,relu的特性是輸入≥0砚哗,輸出就是輸入龙助,輸入<0,輸出就是0蛛芥。

我們選用relu有什么優(yōu)點呢:

1便于計算

2有些生物上的仿生技術

3一個relu函數等同于無窮多個不同偏置的sigmoid函數疊加

4我們可以解決梯度消失的問題

插圖7

我們知道relu的函數特性提鸟,當輸入大于0,輸出就是輸入常空,當輸入小于0沽一,輸出就是0茎活,下圖中有0的神經元的情況下策精,我們其實就可以將這個神經元拿掉

插圖8

我們把0輸出的神經元拿掉阳欲,剩下的其實就是線性的神經元盐类,整個模型就變成了瘦的線性的網絡棘劣,我們w的改變就不會因為層級的問題而對輸出影響越來越小锻霎。

老師提了一個問題赤惊,如果我們模型是個線性的模型敲长,而我們本來想用的是非線性的復雜模型醉鳖,這不就無法達到我們的效果了嗎捡硅,其實我們的神經網絡還是個非線性模型,比如一個樣本特征輸入可能導致部分工作的模型實現線性模型盗棵,但是另一個樣本經過神經網絡可能開啟(輸出大于0)新的神經元壮韭,同時關閉一部分神經(輸出為0)元來工作,他們的線性模型就不一樣纹因,總體來說就還是非線性的

我們也許還會提問喷屋,我們的反向傳播會用到激活函數的導數,激活函數在0,0處并不可導瞭恰,其實我們實際操作就是大于等于0導數都按1屯曹,小于0都是0,這樣計算也快

插圖9

relu的變種,我們知道relu函數當x小于0輸出0恶耽,會導致有些w梯度變化無用密任,這時就有人想出來在relu負向做點手腳,就成了下面2個模型偷俭,定制一個\alpha ,使負向不再是0

插圖10

Maxout激活函數

什么是Maxout呢浪讳,我們將每層2個計算權重結果構成一個神經元(兩兩預先分好一組),將2組輸出比較大小涌萤,取其大者驻债,其實這跟后面我們知道的Maxpooling原理一樣

插圖11

我們看下圖maxout的輸出是根據神經元的權重輸入我們取其max得到的結果,圖中z1是wx+b形葬,z2是x軸合呐,取其最大者這里就是我們見過的relu(綠色折線)

插圖12

如果我們w,b有其他值使z2不是x軸,如下圖右下笙以,就有了如圖的綠色折線部分

插圖14

所以說maxout是根據數據樣本學習的激活函數淌实,如果我們使用2個元素一組,可以學到類似relu或者絕對值的模型猖腕,如果3個元素一組拆祈,可以類似右下圖的幾種

插圖15

下面我們就面臨一個問題了,我們這個模型怎么訓練倘感,max不可導放坏,還有反向傳播怎么算?

插圖16

我們假設圖中紅框內維度部分是較大值老玛,那我們就成了一個線性模型淤年,所以前向傳播和反向傳播的導數就可以求得了,當然不同的樣本會導致每個神經元選擇的元素不一樣蜡豹,構成不同的線性模型

插圖17

Adaptive Learingrate自適應性學習率

我們訓練集數據不好的時候麸粮,有時候也需要考慮采用自適應性學習率

我們之前學過adagrad調整學習率,比如圖中w1橫向使損失函數變化比較小镜廉,那我們就給與比較大維度學習率弄诲,w2就給與相對比較小的學習率

插圖18

當然我們的損失函數模型復雜的可能是下圖中的模型,不再是最開始學習率大就大娇唯,到一定位置又需要減小

插圖19

于是我們就引入了RMSProp的梯度下降法齐遵,我們引入參數\alpha (這個參數可以調整),\sigma 的初始值就是g_{0} ,然后將每次的\sigma 和g帶入\alpha 權重塔插,計算可得出新的\sigma 用于更新參數梗摇,所以這還是梯度帶有權重的均方根和,這個\alpha 在0,1之間佑淀,我們調整它時留美,使我們的梯度是更偏向之前的梯度,還是新的梯度

插圖20

解決局部最小點

我們看下圖伸刃,我們都知道很難找到實際上的最小點谎砾,我們很容易停在了局部最小點,或者只是平滑點甚至是高點(只是微分足夠信趼)景图,老師課上說(據說可能有杜撰),我們的最小點就是山谷碉哑,他們往往就是比較多的參數同時達到一個相對較小值時候出現挚币,如果我們采用復雜的神經網絡,參數就不容易生成局部最小點扣典。

插圖21

我們都知道一個小球從高處落下妆毕,即使是到了最低點,根據慣性我們還是能往前走贮尖,就有可能跳出局部最低點笛粘,我們稱之為動量Momentum

插圖22

我們秒復習下之前學的梯度下降是怎么進行的,我們在初始點計算梯度湿硝,按照學習率步進一段距離薪前,再計算新的梯度,繼續(xù)步進关斜,知道我們的損失函數趨近于0

插圖23

我們怎么根據動量定義移動呢示括,假設我們初始在\theta ^0 初始速度為0,當我們第一次計算梯度后痢畜,可以計算移動速度垛膝,他是跟上一個移動方向有關的,再開始移動丁稀,我們可以計算出梯度方向紅色虛線繁涂,和原來的方向綠色虛線,將2個方向合成就得到新的方向

插圖24

我們也可以另一種描述二驰,速度v就是我們之前所有梯度的不同加權求和

插圖25

我們看下圖扔罪,如果我們的初始位置走,因為初始梯度是向右桶雀,所以向右走矿酵,中間點梯度和原速度都向右,繼續(xù)向右矗积,局部最小點梯度為0但原速度不為0全肮,我們可以繼續(xù)往前走,如果右側山峰不高的話棘捣,我們甚至可能越過去繼續(xù)尋找全局最小點

插圖26

Adam其實就是RMSProp和Momentum的結合

插圖27

我們當訓練集已經訓練得不錯辜腺,但是測試集效果不太好的時候的第一種方法,early stoppIng

我們下圖中隨著訓練集重復訓練,訓練集誤差會減小评疗,但是測試集的誤差卻可能增大测砂,我們?yōu)榱苏业綔y試集上的最小點,把訓練集又拆分成訓練集和驗證集

插圖28

測試集效果差第二個方法是正則化百匆,比如圖中我們引入是w平方和的正則項砌些,是L2正則。而且通常我們不會考慮偏置加匈,我們使用正則通常是使損失函數更平滑存璃,減少局部最低點,而偏置往往和平滑無關

插圖29

我們分析L2正則雕拼,當我們引入后纵东,對損失函數求導,可以比較出和原來的損失函數的區(qū)別是w的權重變向進行了減小啥寇,學習率\eta 和正則系數\lambda 乘積一般比較小篮迎,可能回是0.01,0.001等等,結果相當于在原來的微分位置我們先將權重進行了縮小示姿,權重的系數會越來越接近于0甜橱,但總體微分因為還有后一項,不會為0.因為權重在減小栈戳,我們稱之為weight decay

插圖30

我們也可以使用各權值的絕對值做L1正則岂傲,有人也許會說絕對值怎么求導呢,其實如果不考慮0處子檀,我們可以采用符號函數sgn()作為導數結果镊掖,最終得到的式子比起無正則多了個固定的衰減項(當\eta \lambda 固定時確定),而且總是使w絕對值減小褂痰。

與L2相比亩进,L2是按W成比例的衰減,當W比較大的時候衰減比較快缩歪,而L1是固定衰減归薛,

L2正則是所有W權重都比較小,L1使局部權重減蟹蓑(很接近于0)主籍,而其他權重往往比較大

插圖31

類比正則,我們以人腦神經元為例逛球,我們剛出生時候神經元比較小千元,6歲時神經元很多,到14歲神經元又開始減少颤绕,因為有些神經元不用幸海,就會衰退祟身,正則中W權重也是這樣,不怎么更新就會變小

插圖32

我們講的測試集性能不好的第三個解決方法是Dropout物独,我們先講是怎么做的袜硫,對于每個神經元,都有%p的概率給它拿掉议纯,神經元被丟掉,與其相連的權重也失去了作用

插圖33

我們丟掉部分神經元后溢谤,模型就變瘦了瞻凤,我開門一般每次去一批次mini-batch訓練得時候,我們更新一次隨機dropout世杀,我們使用dropout的時候阀参,訓練集的數據可能性能會變差點,但是往往測試集打的效果反而好些

插圖34

我們dropout訓練好模型了瞻坝,測試集就不用dropout了蛛壳,不過我們要對神經元的系數進行處理,比如我們的dropout rate是p%所刀,那我們最后所有的權重都要乘以(100-p)%(圖中小誤)衙荐,比如我們dropout率50%,我們的權重到最后都要乘以0.5

插圖35

我們?yōu)槭裁磳嘀爻艘韵禂的馗〈矗ㄋ桌斫饩褪怯且鳎琩ropout的時候,我們的神經元會考慮我去掉的隊友可能會不干活斩披,我要好好干溜族,但實際最終合在一起的時候,大家都會認真工作垦沉,所以要乘一點系數

插圖36

我們舉另一個例子來說明dropout煌抒,比如我們4個神經元,2個被dropout厕倍,但是我們測試時沒有dropout我們的結果就接近之前的2倍寡壮,為了我們測試的性能一致,我們需要乘以系數

插圖37

我們也把dropout叫做一種終極的ensemble讹弯,我們把訓練集分成若干批次诬像,每個批次訓練一個模型,這些模型都有一定的復雜度闸婴,雖然可能都有些方差坏挠,但是經過他們的綜合,往往就能得到一個比較好的模型

插圖38

經過上一步訓練得多個模型邪乍,將測試集數據輸入降狠,得到的輸出取平均对竣,我們就能得到一個比較好的結果。

類比下榜配,決策樹我們經常容易過擬合否纬,但是很多棵決策樹組成的隨機森林就能有效的抑制過擬合。

插圖39

我們?yōu)槭裁凑fdropout是終極的ensemble呢蛋褥,我們假設有M個神經元临燃,每個神經元選擇不選擇就有2^m 的模型組合,當然我們一般不會把所有組合都試一遍烙心,但是我們在訓練模型的時候膜廊,相同神經元的權重訓練得是同一個東西,他們之間是共享的

插圖40

我們看下圖淫茵,當模型是線性的時候爪瓜,dropout事實上就和直接不dropout每個權重乘以系數的模型一樣,但這個前提是模型是線性的匙瘪,通常我們的模型都不是線性的铆铆,所以二者最多是接近,但有時候我們有時候直接乘以系數的結果往往還是worked,比如我們的激活函數用relu,maxout他們相對sigmoid是比較接近線性的丹喻,所以比較worked

插圖41
最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
  • 序言:七十年代末薄货,一起剝皮案震驚了整個濱河市,隨后出現的幾起案子碍论,更是在濱河造成了極大的恐慌菲驴,老刑警劉巖,帶你破解...
    沈念sama閱讀 218,525評論 6 507
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件骑冗,死亡現場離奇詭異赊瞬,居然都是意外死亡,警方通過查閱死者的電腦和手機贼涩,發(fā)現死者居然都...
    沈念sama閱讀 93,203評論 3 395
  • 文/潘曉璐 我一進店門巧涧,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人遥倦,你說我怎么就攤上這事谤绳。” “怎么了袒哥?”我有些...
    開封第一講書人閱讀 164,862評論 0 354
  • 文/不壞的土叔 我叫張陵缩筛,是天一觀的道長。 經常有香客問我堡称,道長瞎抛,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,728評論 1 294
  • 正文 為了忘掉前任却紧,我火速辦了婚禮桐臊,結果婚禮上胎撤,老公的妹妹穿的比我還像新娘。我一直安慰自己断凶,他們只是感情好伤提,可當我...
    茶點故事閱讀 67,743評論 6 392
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著认烁,像睡著了一般肿男。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上却嗡,一...
    開封第一講書人閱讀 51,590評論 1 305
  • 那天舶沛,我揣著相機與錄音,去河邊找鬼稽穆。 笑死冠王,一個胖子當著我的面吹牛赶撰,可吹牛的內容都是我干的舌镶。 我是一名探鬼主播,決...
    沈念sama閱讀 40,330評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼豪娜,長吁一口氣:“原來是場噩夢啊……” “哼餐胀!你這毒婦竟也來了?” 一聲冷哼從身側響起瘤载,我...
    開封第一講書人閱讀 39,244評論 0 276
  • 序言:老撾萬榮一對情侶失蹤否灾,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后鸣奔,有當地人在樹林里發(fā)現了一具尸體墨技,經...
    沈念sama閱讀 45,693評論 1 314
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 37,885評論 3 336
  • 正文 我和宋清朗相戀三年挎狸,在試婚紗的時候發(fā)現自己被綠了扣汪。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 40,001評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡锨匆,死狀恐怖崭别,靈堂內的尸體忽然破棺而出,到底是詐尸還是另有隱情恐锣,我是刑警寧澤茅主,帶...
    沈念sama閱讀 35,723評論 5 346
  • 正文 年R本政府宣布,位于F島的核電站土榴,受9級特大地震影響诀姚,放射性物質發(fā)生泄漏。R本人自食惡果不足惜玷禽,卻給世界環(huán)境...
    茶點故事閱讀 41,343評論 3 330
  • 文/蒙蒙 一学搜、第九天 我趴在偏房一處隱蔽的房頂上張望娃善。 院中可真熱鬧,春花似錦瑞佩、人聲如沸聚磺。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,919評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽瘫寝。三九已至,卻和暖如春稠炬,著一層夾襖步出監(jiān)牢的瞬間焕阿,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,042評論 1 270
  • 我被黑心中介騙來泰國打工首启, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留暮屡,地道東北人。 一個月前我還...
    沈念sama閱讀 48,191評論 3 370
  • 正文 我出身青樓毅桃,卻偏偏與公主長得像褒纲,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子钥飞,可洞房花燭夜當晚...
    茶點故事閱讀 44,955評論 2 355