前言
在聊損失函數(shù)之前盖喷,我們先來主觀的想一下养渴,一個模型及其參數(shù)的好壞與哪些因素有關(guān)雷绢。
首先可以確定的是,參數(shù)的確定是通過外部的輸入不斷迭代生成的理卑,即這是一個優(yōu)化問題翘紊。優(yōu)化問題的關(guān)鍵是如何選定一個恰到好處的目標(biāo)函數(shù),使得當(dāng)目標(biāo)函數(shù)取得最值的時候藐唠,模型剛剛好也是最佳的帆疟。
還有一個就是與VC維有關(guān)。舉個例子宇立,把VC維具象為決策的中間節(jié)點(diǎn)數(shù)目有關(guān)系踪宠,中間節(jié)點(diǎn)數(shù)目越多,理論上對本組訓(xùn)練集而言得到的結(jié)果越精準(zhǔn)泄伪。
但是隱藏層的數(shù)目也不是越多越好殴蓬,隱藏層節(jié)點(diǎn)數(shù)目越多很有可能導(dǎo)致過擬合匿级,在訓(xùn)練集上表現(xiàn)不錯蟋滴,在測試集上表現(xiàn)不佳染厅。
這兩個問題如何解決呢。
第一個問題的關(guān)鍵在于如何選擇目標(biāo)函數(shù)(損失函數(shù))津函;
第二個問題的關(guān)[圖片上傳失敗...(image-939fe8-1549807116525)]
鍵在于如何選取適當(dāng)?shù)木S度(懲罰項/正則化項)肖粮;
arg是滿足條件的自變量的值;
w是模型中各節(jié)點(diǎn)的參數(shù)尔苦;
L為損失函數(shù)涩馆;
yi為真實值;
f(xi;w)是在取w的情況下允坚,給模型f輸入?yún)?shù)xi得到的值魂那;
lambda 是規(guī)則化參數(shù),需要自行確定稠项;
omiga 是懲罰項涯雅。
常用損失函數(shù)
- 0-1 損失函數(shù)
- log損失函數(shù)
- 均方損失和函數(shù)
-
自定義損失函數(shù)
舉個例子:
正則項/懲罰項
如上文所說,正則項的存在是為了避免VC維度過高產(chǎn)生過擬合展运,所以一般而言正則項是參數(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,使小權(quán)重趨于0埂软。
規(guī)則化參數(shù)
上文提到的lambda就是規(guī)則化參數(shù)锈遥。需要自行設(shè)定,一般看看損失函數(shù)和正則項的相對大小決定lambda取值仰美。
典型值為0.01迷殿。