神經網路優化演算法
資料集劃分: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):上兩種的結合。
學習因子衰減:(學習因子:最重要的引數)
超參除錯:均勻隨機取樣及非均勻隨機取樣(線性尺度與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):將所有階段如特徵、學習處理等模組混合在一起,只關心輸入和輸出。(缺點:需要大量資料,排除了潛在的有用的人工設計。優點:讓資料說話,需要手動設計的模組更少)