跟著李沐大神動手深度學(xué)習(xí)筆記——權(quán)重衰退

權(quán)重衰退

  1. 使用均方范數(shù)作為硬性限制

    如下所示漫玄,其中l(wèi)是我們要優(yōu)化的損失函數(shù),w和b是兩個參數(shù)压彭。w為權(quán)重睦优,b為偏移,但這個優(yōu)化函數(shù)并不常用壮不,多使用下面的柔性限制汗盘。


    image-20210902210126877.png
  1. 使用均方范數(shù)作為柔性限制


    image-20210902211206725.png

    以上可以通過拉格朗日乘子來證明,超參數(shù)控制了正則項的重要程度询一。


    image-20210902211415694.png

    其中隐孽,w^*表示w的最優(yōu)解癌椿。

  • \lambda=0:無作用,即不會影響w的取值菱阵,等價于之前的\theta\rightarrow \infty
  • \lambda\rightarrow\infty,等價于之前的\theta\rightarrow0踢俄,所以w\rightarrow0,那么最優(yōu)解w^*\rightarrow0
  • 如果我們想讓模型復(fù)雜度低一些,那我們將\lambda增加些以滿足要求送粱。
  1. 參數(shù)更新法則
    如下所示,將畫黃線部分代入紅色表達式并進行化簡掂之,即可得到時間t更新參數(shù)對應(yīng)的表達式抗俄。

    image-20210903091928614.png

    其中\eta表示學(xué)習(xí)率,在上圖中的第二個公式世舰,后面部分(減去學(xué)習(xí)率*梯度)與我們之前講的梯度下降是一樣的动雹,只是我們現(xiàn)在在每次更新前,在前面那里多減了一個\eta\lambda跟压,進行權(quán)重的縮小胰蝠。

  2. 總結(jié)
    image-20210903093033301.png

    5.代碼實現(xiàn)

    # 權(quán)重衰減是最廣泛使用的正則化的技術(shù)之一
    %matplotlib inline
    import math
    import torch
    from torch import nn
    from d2l import torch as d2l
    # 1. 生成一些數(shù)據(jù)
    n_train, n_test, num_inputs, batch_size = 20, 100, 200, 5
    # 隨機生成權(quán)重,以及將偏差設(shè)成為0.05
    true_w, true_b = torch.ones((num_inputs, 1)) * 0.01, 0.05
    # 使用synthetic_data生成人工數(shù)據(jù)集震蒋,以及使用load_array加載內(nèi)存數(shù)據(jù)
    train_data = d2l.synthetic_data(true_w, true_b, n_train)
    train_iter = d2l.load_array(train_data, batch_size)
    
    test_data = d2l.synthetic_data(true_w, true_b, n_test)
    test_iter = d2l.load_array(test_data, batch_size, is_train=False)
    # 2.初始化模型參數(shù)
    def init_params():
        # 根據(jù)圖片要求進行生成
        w = torch.normal(0, 1, size=(num_inputs, 1), requires_grad=True)
        b = torch.zeros(1, requires_grad=True)
        return [w, b]
    # 3. 定義L2范數(shù)懲罰(對照公式),也是本次的核心茸塞,注意我們在該函數(shù)中沒有將lambda放在里面
    def L2_penalty(w):
        return torch.sum(w.pow(2)) / 2
    # 拓展:我們也可以用L1 penalty(w)
    def L1_penalty(w):
        return torch.sum(torch.abs(w))
    
    # 4. 定義訓(xùn)練代碼實現(xiàn)
    # lambda為超級參數(shù)
    def train(lambd):
        w, b = init_params()
        net, loss = lambda X: d2l.linreg(X, w, b), d2l.squared_loss
        num_epochs, lr = 100, 0.03
        animator = d2l.Animator(xlabel='epochs', ylabel='loss',yscale='log',
                               xlim=[5, num_epochs], legend=['train', 'test'])
        for epoch in range(num_epochs):
            for X, y in train_iter:
    #             with torch.enable_grad():
                # 增加L2范數(shù)懲罰項,廣播機制使l2_penalty(w)成為一個長度為`batch_size`的向量查剖。
                # 以下表達式對應(yīng)柔性限制的核心
                l = loss(net(X), y) + lambd * L1_penalty(w)
                l.sum().backward()
                d2l.sgd([w, b], lr, batch_size)
            if(epoch + 1) % 5 ==0:
                animator.add(epoch + 1, (d2l.evaluate_loss(net, train_iter, loss),
                                        d2l.evaluate_loss(net, test_iter, loss)))
        print('w的L2范數(shù)是:', torch.norm(w).item())
    # 忽略正則化直接訓(xùn)練
    train(lambd=0) # 出現(xiàn)嚴(yán)重的過擬合
    # 嘗試改變lambda的值
    train(lambd=3)
    
  3. 對應(yīng)運行結(jié)果

    20210903103448.png

    當(dāng)我們將\lambda設(shè)為0時钾虐,得到的結(jié)果,如第1張圖所示笋庄,很明顯發(fā)生了嚴(yán)重的過濾盒效扫,當(dāng)我們將\lambda設(shè)為3時,得到的效果還不錯直砂,具體哪個參數(shù)最優(yōu)菌仁,則需要自己去調(diào)參。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末静暂,一起剝皮案震驚了整個濱河市济丘,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌洽蛀,老刑警劉巖闪盔,帶你破解...
    沈念sama閱讀 211,376評論 6 491
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異辱士,居然都是意外死亡泪掀,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,126評論 2 385
  • 文/潘曉璐 我一進店門颂碘,熙熙樓的掌柜王于貴愁眉苦臉地迎上來异赫,“玉大人椅挣,你說我怎么就攤上這事∷” “怎么了鼠证?”我有些...
    開封第一講書人閱讀 156,966評論 0 347
  • 文/不壞的土叔 我叫張陵,是天一觀的道長靠抑。 經(jīng)常有香客問我量九,道長,這世上最難降的妖魔是什么颂碧? 我笑而不...
    開封第一講書人閱讀 56,432評論 1 283
  • 正文 為了忘掉前任荠列,我火速辦了婚禮,結(jié)果婚禮上载城,老公的妹妹穿的比我還像新娘肌似。我一直安慰自己,他們只是感情好诉瓦,可當(dāng)我...
    茶點故事閱讀 65,519評論 6 385
  • 文/花漫 我一把揭開白布川队。 她就那樣靜靜地躺著,像睡著了一般睬澡。 火紅的嫁衣襯著肌膚如雪固额。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 49,792評論 1 290
  • 那天煞聪,我揣著相機與錄音对雪,去河邊找鬼。 笑死米绕,一個胖子當(dāng)著我的面吹牛瑟捣,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播栅干,決...
    沈念sama閱讀 38,933評論 3 406
  • 文/蒼蘭香墨 我猛地睜開眼迈套,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了碱鳞?” 一聲冷哼從身側(cè)響起桑李,我...
    開封第一講書人閱讀 37,701評論 0 266
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎窿给,沒想到半個月后贵白,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 44,143評論 1 303
  • 正文 獨居荒郊野嶺守林人離奇死亡崩泡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 36,488評論 2 327
  • 正文 我和宋清朗相戀三年禁荒,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片角撞。...
    茶點故事閱讀 38,626評論 1 340
  • 序言:一個原本活蹦亂跳的男人離奇死亡呛伴,死狀恐怖勃痴,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情热康,我是刑警寧澤沛申,帶...
    沈念sama閱讀 34,292評論 4 329
  • 正文 年R本政府宣布,位于F島的核電站姐军,受9級特大地震影響铁材,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜奕锌,卻給世界環(huán)境...
    茶點故事閱讀 39,896評論 3 313
  • 文/蒙蒙 一著觉、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧歇攻,春花似錦固惯、人聲如沸梆造。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,742評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽镇辉。三九已至屡穗,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間忽肛,已是汗流浹背村砂。 一陣腳步聲響...
    開封第一講書人閱讀 31,977評論 1 265
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留屹逛,地道東北人础废。 一個月前我還...
    沈念sama閱讀 46,324評論 2 360
  • 正文 我出身青樓,卻偏偏與公主長得像罕模,于是被迫代替她去往敵國和親评腺。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 43,494評論 2 348

推薦閱讀更多精彩內(nèi)容