6. Deep Learning 簡介
最先開始的是感知機(jī)青抛,然后是多層感知機(jī)灸叼,深度學(xué)習(xí)其實(shí)就是多加了隱藏層汉额。
全連接的前饋神經(jīng)網(wǎng)絡(luò)如下:
對于每一層的計(jì)算可以寫成矩陣操作的形式印叁,不斷重復(fù)的矩陣操作就可以考慮使用并行計(jì)算來進(jìn)行加速被冒。
對于分類問題,在輸出層通常使用softmax函數(shù)多分類轮蜕。
- 問題:如何確定多少層昨悼,多少個(gè)神經(jīng)元
通常依靠經(jīng)驗(yàn)、直覺跃洛、嘗試率触,可能會(huì)需要領(lǐng)域知識。
7.Backpropagation 反向傳播算法
BP算法可以更加有效地計(jì)算梯度汇竭,主要運(yùn)用了鏈?zhǔn)椒▌t葱蝗,將損失函數(shù)關(guān)于權(quán)重的微分分成向前和向后兩部分來計(jì)算穴张。
向前計(jì)算的部分非常簡單,如下圖两曼,正好每一層的輸入xi皂甘。
向后計(jì)算的部分,為什么說是向后計(jì)算呢悼凑,如下圖可以發(fā)現(xiàn)l對z的微分可以轉(zhuǎn)變成對后一層z'和在z"的微分,所以可以一直往后推到最后一層偿枕。
實(shí)際計(jì)算時(shí)就是通過向前和向后分別把z關(guān)于a的微分和l關(guān)于z的微分全算出來,最后相乘得到户辫,l關(guān)于w的微分渐夸。
8.keras
9. Tips for deep learning
在deep learning 中會(huì)遇到很多問題,一般首先看在訓(xùn)練集上的效果寸莫,再看在測試集上的效果捺萌。
如果訓(xùn)練集上效果都不好,就要重新選擇模型膘茎;如果訓(xùn)練集上效果好桃纯,但是測試集上效果不好,我們需要考慮是否過擬合披坏。
有一種情況:如果神經(jīng)網(wǎng)絡(luò)的層數(shù)多了反而不如層數(shù)少的效果好态坦,這個(gè)不能簡單地歸罪于過擬合,這個(gè)很可能就是沒有訓(xùn)練好棒拂。
對于不同的問題需要采用不同的解決辦法伞梯。
9.1 訓(xùn)練集效果不好
1. 采用新的激活函數(shù)
在神經(jīng)網(wǎng)絡(luò)層數(shù)比較多的情況下會(huì)發(fā)生vanishing gradient problem,在越靠近輸入的地方梯度比較小帚屉,學(xué)習(xí)很慢谜诫;靠近輸出的地方學(xué)習(xí)得特別快。這個(gè)現(xiàn)象的出現(xiàn)是因?yàn)閟igmoid函數(shù)攻旦。如下圖喻旷,當(dāng)w改變△w時(shí),經(jīng)過sigmoid函數(shù)后輸出的變化很少牢屋,經(jīng)過幾層之后且预,損失函數(shù)的變化非常之下,所以在靠近輸入的地方梯度特別小烙无。
可以替換的激活函數(shù):
- ReLU
當(dāng)使用ReLU時(shí)實(shí)際上input關(guān)于output是線性的(注意只是在input的附近是線性的锋谐,只有input變化大了,就不是線性了)截酷。
- ReLU variant
(Exponential Linear Unit)
- Maxout
Maxout network可以自己學(xué)習(xí)activation function涮拗。ReLU是Maxout的一種特例。
2.自適應(yīng)的學(xué)習(xí)速率
- RMSProp
- momentum
模擬物理上的球滾動(dòng),將動(dòng)量的因素加入多搀。將前一次的運(yùn)動(dòng)方向認(rèn)為是慣性歧蕉。
9.2 訓(xùn)練集效果好,但是測試集效果不好
1. early stopping
當(dāng)在validation set 上error不減少康铭,即使在training set 上loss仍然在減少也要停止Epoch。
2. Regularization
使得參數(shù)每一次update的時(shí)候都變小赌髓。沒用的參數(shù)最后變成0从藤,但是有用的參數(shù)最后不會(huì)是0.
L1: 對所有的參數(shù)一視同仁。最后參數(shù)差距大锁蠕。有些特別接近0夷野,有些比較大。
L2:對比較大的參數(shù)懲罰強(qiáng)荣倾。最后參數(shù)聚集在接近0悯搔,但不會(huì)真的很靠近0的地方 。
3. Dropout
Dropout可以認(rèn)為是一種ensemble的方式舌仍。 但是只有l(wèi)inear 時(shí)候 可以在testing的時(shí)候乘以(1-p)%妒貌。