前言
在聊損失函數(shù)之前,我們先來主觀的想一下,一個模型及其參數(shù)的好壞與哪些因素有關。
首先可以確定的是,參數(shù)的確定是通過外部的輸入不斷迭代生成的,即這是一個優(yōu)化問題。優(yōu)化問題的關鍵是如何選定一個恰到好處的目標函數(shù),使得當目標函數(shù)取得最值的時候,模型剛剛好也是最佳的。
還有一個就是與VC維有關。舉個例子,把VC維具象為決策的中間節(jié)點數(shù)目有關系,中間節(jié)點數(shù)目越多,理論上對本組訓練集而言得到的結果越精準。

但是隱藏層的數(shù)目也不是越多越好,隱藏層節(jié)點數(shù)目越多很有可能導致過擬合,在訓練集上表現(xiàn)不錯,在測試集上表現(xiàn)不佳。
這兩個問題如何解決呢。
第一個問題的關鍵在于如何選擇目標函數(shù)(損失函數(shù));
第二個問題的關[圖片上傳失敗...(image-939fe8-1549807116525)]
鍵在于如何選取適當?shù)木S度(懲罰項/正則化項);

arg是滿足條件的自變量的值;
w是模型中各節(jié)點的參數(shù);
L為損失函數(shù);
yi為真實值;
f(xi;w)是在取w的情況下,給模型f輸入參數(shù)xi得到的值;
lambda 是規(guī)則化參數(shù),需要自行確定;
omiga 是懲罰項。
常用損失函數(shù)
- 0-1 損失函數(shù)
- log損失函數(shù)
- 均方損失和函數(shù)
-
自定義損失函數(shù)
舉個例子:
自定義損失函數(shù)
正則項/懲罰項
如上文所說,正則項的存在是為了避免VC維度過高產生過擬合,所以一般而言正則項是參數(shù)向量w范數(shù)的函數(shù)。
- L0范數(shù)
向量中非零元素個數(shù)。 - L1范數(shù) tf.contrib.layers.l1_regularizer()
向量中各個元素的絕對值之和。 - L2范數(shù) tf.contrib.layers.l2_regularizer()
向量中各元素的平方然后求平方根。0.1的平方是0.01,10的平方是100,使小權重趨于0。
規(guī)則化參數(shù)
上文提到的lambda就是規(guī)則化參數(shù)。需要自行設定,一般看看損失函數(shù)和正則項的相對大小決定lambda取值。
典型值為0.01。
