TensorFlow(7)- 防止過擬合之正則化

?1实辑、過擬合問題

在本系列第三篇文章TensorFlow(3)- 防止過擬合之dropout中已經(jīng)談到過過擬合問題:所謂過擬合颈娜,指的是當(dāng)一個(gè)模型過為復(fù)雜之后镊讼,它可以很好地“記憶”每一個(gè)訓(xùn)練數(shù)據(jù)中隨機(jī)噪音的部分而忘記了要去“學(xué)習(xí)”訓(xùn)練數(shù)據(jù)中通用的趨勢(shì)匹舞。舉一個(gè)極端的例子排宰,如果一個(gè)模型中的參數(shù)比訓(xùn)練數(shù)據(jù)的總數(shù)還多似芝,那么只要訓(xùn)練數(shù)據(jù)不沖突,這個(gè)模型完全可以記住所有訓(xùn)練數(shù)據(jù)的結(jié)果從而使得損失函數(shù)為0板甘〉澄停可以直觀地想象一個(gè)包含n 個(gè)變量和n 個(gè)等式的方程組,當(dāng)方程不沖突時(shí)盐类,這個(gè)方程組是可以通過數(shù)學(xué)的方法來求解的寞奸。然而,過度擬合訓(xùn)練數(shù)據(jù)中的隨機(jī)噪音雖然可以得到非常小的損失函數(shù)在跳,但是對(duì)于未知數(shù)據(jù)可能無法做出可靠的判斷枪萄。

除了之前介紹過的dropout來解決這個(gè)問題之外,另一非常常用的方法就是我們今天的主角-正則化猫妙。

至于為什么正則化之所以能夠降低過擬合的原因在于瓷翻,正則化是結(jié)構(gòu)風(fēng)險(xiǎn)最小化的一種策略實(shí)現(xiàn)。

給loss function加上正則化項(xiàng)割坠,能使得新得到的優(yōu)化目標(biāo)函數(shù)h = f+normal齐帚,需要在f和normal中做一個(gè)權(quán)衡(trade-off),如果還像原來只優(yōu)化f的情況下彼哼,那可能得到一組解比較復(fù)雜对妄,使得正則項(xiàng)normal比較大,那么h就不是最優(yōu)的敢朱,因此可以看出加正則項(xiàng)能讓解更加簡(jiǎn)單剪菱,符合奧卡姆剃刀理論,同時(shí)也比較符合在偏差和方差(方差表示模型的復(fù)雜度)分析中拴签,通過降低模型復(fù)雜度琅豆,得到更小的泛化誤差,降低過擬合程度篓吁。

L1正則化和L2正則化:

L1正則化就是在loss function后邊所加正則項(xiàng)為L(zhǎng)1范數(shù)茫因,加上L1范數(shù)容易得到稀疏解(0比較多)。L2正則化就是loss function后邊所加正則項(xiàng)為L(zhǎng)2范數(shù)的平方杖剪,加上L2正則相比于L1正則來說冻押,得到的解比較平滑(不是稀疏)驰贷,但是同樣能夠保證解中接近于0(但不是等于0,所以相對(duì)平滑)的維度比較多洛巢,降低模型的復(fù)雜度括袒。

詳細(xì)的解釋和原理請(qǐng)參照:https://zhuanlan.zhihu.com/p/35356992


?2、正則化

正則化的思想就是在損失函數(shù)中加入刻畫模型復(fù)雜程度的指標(biāo)稿茉。假設(shè)用于刻畫模型在訓(xùn)練數(shù)據(jù)上表現(xiàn)的損失函數(shù)為J(\theta )的锹锰,那么在優(yōu)化時(shí)不是直接優(yōu)化J(\theta )的,而是優(yōu)化J(\theta )+R(w)漓库。其中R(w)刻畫的是模型的復(fù)雜程度恃慧,而λ表示模型復(fù)雜損失在總損失中的比例。注意這里θ表示的是一個(gè)神經(jīng)網(wǎng)絡(luò)中所有的參數(shù)渺蒿,它包括邊上的權(quán)重w和偏置項(xiàng)b痢士。一般來說模型復(fù)雜度只由權(quán)重w決定。常用的刻畫模型復(fù)雜度的函數(shù)R(w)有兩種茂装,一種是LI正則化怠蹂,計(jì)算公式是:

? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?R(w ) = ||w||_{1}  = \sum_{i}|w_{i} |

另一種是L2 正則化,計(jì)算公式是:

? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ??R(w ) = ||w||_{2}^2   = \sum_{i}|w_{i}^2  |?????????????????

無論是哪一種正則化方式少态,基本的思想都是希望通過限制權(quán)重的大小城侧,使得模型不能任意擬合訓(xùn)練數(shù)據(jù)中的隨機(jī)噪音。但這兩種正則化的方法也有很大的區(qū)別彼妻。首先赞庶,Ll 正則化會(huì)讓參數(shù)變得更稀疏,而L2 正則化不會(huì)澳骤。所謂參數(shù)變得更稀疏是指會(huì)有更多的參數(shù)變?yōu)? 歧强,這樣可以達(dá)到類似特征選取的功能。之所以L2 正則化不會(huì)讓參數(shù)變得稀疏的原因是當(dāng)參數(shù)很小時(shí)为肮,比如0.001 摊册,這個(gè)參數(shù)的平方基本上就可以忽略了,于是模型不會(huì)進(jìn)一步將這個(gè)參數(shù)調(diào)整為0 颊艳。其次茅特,LI正則化的計(jì)算公式不可導(dǎo),而L2正則化公式可導(dǎo)棋枕。因?yàn)樵趦?yōu)化時(shí)需要計(jì)算損失函數(shù)的偏導(dǎo)數(shù)白修,所以對(duì)含有L2 正則化損失函數(shù)的優(yōu)化要更加簡(jiǎn)潔。優(yōu)化帶LI正則化的損失函數(shù)要更加復(fù)雜重斑,而且優(yōu)化方法也有很多種兵睛。在實(shí)踐中,也可以將LI正則化和L2正則化同時(shí)使用,如:

? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ??R(w) =  \sum_{i}\alpha |w_{i} | + (1-\alpha )w_{i}^2


3、簡(jiǎn)單的例子

前面我們提到過tensorflow可以優(yōu)化任意形式的損失函數(shù)祖很,所以tensorflow自然也可以優(yōu)化帶正則化的損失函數(shù)笛丙。以下代碼給出了一個(gè)簡(jiǎn)單的帶L2正則化的損失函數(shù)定義:

# 均方誤差損失函數(shù) + L2正則化項(xiàng)

import tensorflowas tf

w= tf.Variable(tf.random_normal([2,1], stddev=1, seed=1))

y= tf.matmul(x, w)

loss= tf.reduce_mean(tf.square(y- y))+ tf.contrib.layers.l2_regularizer(lambda)(w)

在以上程序中,loss 為定義的損失函數(shù)假颇,它由兩個(gè)部分組成胚鸯。第一個(gè)部分是均方誤差損失函數(shù),它刻畫了模型在訓(xùn)練數(shù)據(jù)上的表現(xiàn)笨鸡。第二個(gè)部分就是正則化姜钳,它防止模型過度模擬訓(xùn)練、數(shù)據(jù)中的隨機(jī)噪音形耗。lambda 參數(shù)表示了正則化項(xiàng)的權(quán)重哥桥,也就是公式J(θ)+λR (w)中的λ。w 為需要計(jì)算正則化損失的參數(shù)趟脂。TensorFlow提供了tf.contrib.layers.12_regularizer函數(shù),它可以返回一個(gè)函數(shù)例衍,這個(gè)函數(shù)可以計(jì)算一個(gè)給定參數(shù)的L2正則化項(xiàng)的值昔期。類似的,tf.contrib.layers.l1_regularizer可以計(jì)算LI正則化項(xiàng)的值佛玄。

本文只是一個(gè)引子硼一,更多的信息就請(qǐng)大家自己探索啦

?參考文獻(xiàn):

1.書籍:Tensorflow:實(shí)戰(zhàn)Google深度學(xué)習(xí)框架(第二版)

2.?L1正則化與L2正則化

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市梦抢,隨后出現(xiàn)的幾起案子般贼,更是在濱河造成了極大的恐慌,老刑警劉巖奥吩,帶你破解...
    沈念sama閱讀 206,968評(píng)論 6 482
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件哼蛆,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡霞赫,警方通過查閱死者的電腦和手機(jī)腮介,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,601評(píng)論 2 382
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來端衰,“玉大人叠洗,你說我怎么就攤上這事÷枚” “怎么了灭抑?”我有些...
    開封第一講書人閱讀 153,220評(píng)論 0 344
  • 文/不壞的土叔 我叫張陵,是天一觀的道長(zhǎng)抵代。 經(jīng)常有香客問我腾节,道長(zhǎng),這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 55,416評(píng)論 1 279
  • 正文 為了忘掉前任禀倔,我火速辦了婚禮榄融,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘救湖。我一直安慰自己愧杯,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 64,425評(píng)論 5 374
  • 文/花漫 我一把揭開白布鞋既。 她就那樣靜靜地躺著力九,像睡著了一般。 火紅的嫁衣襯著肌膚如雪邑闺。 梳的紋絲不亂的頭發(fā)上跌前,一...
    開封第一講書人閱讀 49,144評(píng)論 1 285
  • 那天,我揣著相機(jī)與錄音陡舅,去河邊找鬼抵乓。 笑死,一個(gè)胖子當(dāng)著我的面吹牛靶衍,可吹牛的內(nèi)容都是我干的灾炭。 我是一名探鬼主播,決...
    沈念sama閱讀 38,432評(píng)論 3 401
  • 文/蒼蘭香墨 我猛地睜開眼颅眶,長(zhǎng)吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼蜈出!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起涛酗,我...
    開封第一講書人閱讀 37,088評(píng)論 0 261
  • 序言:老撾萬榮一對(duì)情侶失蹤铡原,失蹤者是張志新(化名)和其女友劉穎,沒想到半個(gè)月后商叹,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體燕刻,經(jīng)...
    沈念sama閱讀 43,586評(píng)論 1 300
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,028評(píng)論 2 325
  • 正文 我和宋清朗相戀三年剖笙,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了酌儒。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 38,137評(píng)論 1 334
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡枯途,死狀恐怖忌怎,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情酪夷,我是刑警寧澤榴啸,帶...
    沈念sama閱讀 33,783評(píng)論 4 324
  • 正文 年R本政府宣布,位于F島的核電站晚岭,受9級(jí)特大地震影響鸥印,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,343評(píng)論 3 307
  • 文/蒙蒙 一库说、第九天 我趴在偏房一處隱蔽的房頂上張望狂鞋。 院中可真熱鬧,春花似錦潜的、人聲如沸骚揍。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,333評(píng)論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽信不。三九已至,卻和暖如春亡呵,著一層夾襖步出監(jiān)牢的瞬間抽活,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 31,559評(píng)論 1 262
  • 我被黑心中介騙來泰國打工锰什, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留下硕,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 45,595評(píng)論 2 355
  • 正文 我出身青樓汁胆,卻偏偏與公主長(zhǎng)得像梭姓,于是被迫代替她去往敵國和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子沦泌,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 42,901評(píng)論 2 345