1. 程式人生 > >神經網路優化演算法

神經網路優化演算法

資料集劃分:train/dev/test 訓練集、驗證集、測試集三部分。(當沒有測試集的時候,也把驗證集叫做test sets).訓練集:訓練演算法模型。驗證集:驗證不同演算法的表現情況,選擇最佳演算法模型。測試集:測試最好演算法的實際表現,作為該演算法的無偏估計。(泛化能力)

樣本量<10000,6: 2:2。 樣本量很大如100萬,則98%:1%:1%。

w更加稀疏:指更多零值。

雖然L1得到W更稀疏但求導複雜,L2正則化更常用,求導只用到自身。

dropout: keep_prob=0.8(該層有20%神經元隨機停止工作) ,之後要對a進行伸縮處理(scale up),a=a/keep_prob.使其作為下一層神經元的輸入值儘可能保持不變。(dropout只是訓練模型使用,測試和實際應用模型不需要),減少神經元之間依賴性,更加robust.(是一種正則化技巧)。

製造樣本 (data augmentation):新增樣本噪聲和數量。扭曲,翻轉,旋轉,縮放。

early stopping:隨迭代次數增加,訓練誤差變小(偏差),但是驗證誤差增加(方差)。選擇合適迭代次數。缺點:損失函式值不夠小。優點:防止過擬合。沒有L2正則化效果好(更常用)

方差和偏差:方差:過擬合。偏差:欠擬合。訓練誤差體現了是否出現偏差,驗證誤差(應該是驗證誤差和訓練誤差的差值)體現是否方差。傳統機器學習中方差和偏差是對立的(正交化),而深度學習在複雜網路和海量訓練樣本條件下,可以同時有效減小偏差和方差恰好可以解決這個問題。

標準化輸入:

相對的隱藏層叫做batch norm(批標準化),其實是對Z處理,相當於添加了隨機噪聲,效果類似dropout

梯度消失或梯度爆炸

mini_batch gradient descent :

batch :所有m個樣本。minibatch: m/n個樣本(minibatch_size=m/n).

所有樣本進行一次梯度下降計算:稱為經歷一個epoch(紀元)。

指數加權平均:

優化梯度下降演算法速度的方法

動量梯度下降演算法:

RMSprop:

Adam(adaptive moment estimation):上兩種的結合。

學習因子衰減:(學習因子\small \alpha:最重要的引數)

超參除錯:均勻隨機取樣及非均勻隨機取樣(線性尺度與log尺度變換),放大取樣區資料量。

covariate shift:訓練樣本和測試樣本的變化(不是所有的貓都是黑貓)。而batch norm恰好可以減弱這種問題對於模型泛化的影響。

softmax regression:  輸出層神經元輸出表示該類的概率。dL/dz=a-y(同二元分類)

機器學習其實是解決兩個問題:

1.定義一個評價分類器效能的指標(metric)  (F1 Scorce=2·P·R/(P+R)),優化指標和滿意指標。

2.如何取提升指標

解決偏差的方法:

1,訓練更大的模型

2.訓練更長時間或更佳的優化演算法:如動量。。。

3.神經網路架構及超參除錯

解決方差辦法:

1更多樣本

2正則化:L2,dropout, data augmentation

3.神經網路架構及超參除錯

如何區分是否出現偏差方差,還是訓練集與驗證/測試集分佈不一致?:train_dev error。

遷移學習:訓練好的一個模型的一部分結構可以直接用到另一個類似模型中。只需改變輸入、輸出及輸出層的權重和偏置,不需改變隱層的權重和偏置,重新訓練出輸出層的權重和偏置。(當然如果新模型資料量陡增,也可以重新訓練所有層的權重和偏置)  (遷移學習還可以增加新模型資料量少時訓練結果的魯棒性,遷移學習的前提是輸入相同,如都是圖片。)

多工學習:用一個融合的神經網路模型實現多種分類效果,如行人、車輛、交通標誌、訊號燈。輸出維度為(C,1)。

與softmax regression區別是多工學習多標籤的,輸出向量y可以有多個元素為1 ,而softmax regression輸出向量y只有一個元素為1。

端到端模型(end to end):將所有階段如特徵、學習處理等模組混合在一起,只關心輸入和輸出。(缺點:需要大量資料,排除了潛在的有用的人工設計。優點:讓資料說話,需要手動設計的模組更少)