監督學習、無監督學習、半監督學習、強化學習是我們日常接觸到的常見的四個機器學習方法:
- - 監督學習:通過已有的訓練樣本(即已知數據以及其對應的輸出)去訓練得到一個最優模型(這個模型屬於某個函數的集合,最優則表示在某個評價準則下是最佳的),再利用這個模型將所有的輸入映射爲相應的輸出。
- - 無監督學習:它與監督學習的不同之處,在於我們事先沒有任何訓練樣本,而需要直接對數據進行建模。
- - 半監督學習 :在訓練階段結合了大量未標記的數據和少量標籤數據。與使用所有標籤數據的模型相比,使用訓練集的訓練模型在訓練時可以更爲準確。
- - 強化學習:我們設定一個回報函數(reward function),通過這個函數來確認否越來越接近目標,類似我們訓練寵物,如果做對了就給他獎勵,做錯了就給予懲罰,最後來達到我們的訓練目的。
損失函數(Loss Function)
損失函數(loss function)是用來估量模型的預測值(我們例子中的output)與真實值(例子中的y_train)的不一致程度,它是一個非負實值函數,損失函數越小,模型的魯棒性就越好。我們訓練模型的過程,就是通過不斷的迭代計算,使用梯度下降的優化算法,使得損失函數越來越小。損失函數越小就表示算法達到意義上的最優。這裏有一個重點:因爲PyTorch是使用mini-batch來進行計算的,所以損失函數的計算出來的結果已經對mini-batch取了平均。
方差/偏差
- - 偏差度量了學習算法的期望預測與真實結果的偏離程序,即刻畫了學習算法本身的擬合能力
- - 方差度量了同樣大小的訓練集的變動所導致的學習性能的變化,即模型的泛化能力
- - 高偏差(high bias)的情況,一般稱爲欠擬合(underfitting),即我們的模型並沒有很好的去適配現有的數據,擬合度不夠。
- - 高方差(high variance)的情況一般稱作過擬合(overfitting),即模型對於訓練數據擬合度太高了,失去了泛化的能力。
如何解決這兩種情況呢?
欠擬合:
- - 增加網絡結構,如增加隱藏層數目;
- - 訓練更長時間;
- - 尋找合適的網絡架構,使用更大的NN結構;
過擬合 :
- - 使用更多的數據;
- - 正則化( regularization);
- - 尋找合適的網絡結構;
正則化:
利用正則化來解決High variance 的問題,正則化是在 Cost function 中加入一項正則化項,懲罰模型的複雜度,這裏我們簡單的介紹一下正則化的概念。
L1損失函數基礎上加上權重參數的絕對值 L2損失函數基礎上加上權重參數的平方和
L1正則化就是在 loss function 後面加上L1範數,這樣比較容易求到稀疏解。L2 正則化是在 LF 後面加 L2範數 平方,相比L1正則來說,得到的解比較平滑(不是稀疏),但是同樣能夠保證解中接近於0(不等0)的維度比較多,降低模型的複雜度。