欧美性猛交XXXX免费看蜜桃,成人网18免费韩国,亚洲国产成人精品区综合,欧美日韩一区二区三区高清不卡,亚洲综合一区二区精品久久

打開(kāi)APP
userphoto
未登錄

開(kāi)通VIP,暢享免費電子書(shū)等14項超值服

開(kāi)通VIP
干貨|深度學(xué)習中的正則化技術(shù)概述(附Python keras實(shí)現代碼)

重磅干貨,第一時(shí)間送達

介紹

數據科學(xué)研究者們最常遇見(jiàn)的問(wèn)題之一就是怎樣避免過(guò)擬合。你也許在訓練模型的時(shí)候也遇到過(guò)同樣的問(wèn)題--在訓練數據上表現非同一般的好,卻在測試集上表現很一般?;蛘呤悄阍诠_(kāi)排行榜上名列前茅,卻在最終的榜單排名中下降數百個(gè)名次這種情況。那這篇文章會(huì )很適合你。

避免過(guò)擬合可以提高我們模型的性能。

在本文中,我們將解釋過(guò)擬合的概念以及正則化如何幫助克服過(guò)擬合問(wèn)題。隨后,我們將介紹幾種不同的正則化技術(shù),并且最后實(shí)戰一個(gè)Python實(shí)例以進(jìn)一步鞏固這些概念。

目錄

  • 什么是正則化?

  • 正則化如何幫助減少過(guò)擬合?

  • 深度學(xué)習中的不同正則化技術(shù)

    • L2和L1正則化

    • Dropout

    • 數據增強(Data Augmentation)

    • 早停(Early stopping)

  • 使用Keras處理MNIST數據案例研究

一. 什么是正則化?

深入探討這個(gè)話(huà)題之前,請看一下這張圖片:

不知道你之前有么有看到過(guò)這張圖片?當我們訓練模型時(shí),我們的模型甚至會(huì )試圖學(xué)到訓練數據中的噪聲,最終導致在測試集上表現很差。

換句話(huà)說(shuō)就是在模型學(xué)習過(guò)程中,雖然模型的復雜性增加、訓練錯誤減少,但測試錯誤卻一點(diǎn)也沒(méi)有減少。這在下圖中顯示。

來(lái)源:Slideplayer

如果你有構建過(guò)神經(jīng)網(wǎng)絡(luò )的經(jīng)驗,你就知道它們是有多復雜。這使得更容易過(guò)擬合。

正則化是一種對學(xué)習算法進(jìn)行微調來(lái)增加模型魯棒性的一種技術(shù)。這同時(shí)也意味著(zhù)會(huì )改善了模型在未知的數據上的表現。

二. 正則化如何幫助減少過(guò)擬合?

讓我們來(lái)分析一個(gè)在訓練中過(guò)擬合的神經(jīng)網(wǎng)絡(luò )模型,如下圖所示。

 

如果你了解過(guò)機器學(xué)習中正則化的概念,那你肯定了解正則項懲罰系數。在深度學(xué)習中,它實(shí)際上會(huì )懲罰節點(diǎn)的權重矩陣。

如果我們的正則項系數很高以至于一些權重矩陣幾乎等于零。

 

這將導致出現一個(gè)極其簡(jiǎn)單的線(xiàn)性網(wǎng)絡(luò )結構和略微訓練數據不足。

較大數值的正則項系數顯然并不是那么有用。我們需要優(yōu)化正則項系數的值。以便獲得一個(gè)良好擬合的模型,如下圖所示。

 

三. 深度學(xué)習中的不同正則化技術(shù)

現在我們已經(jīng)理解正則化如何幫助減少過(guò)擬合,為了將正則化應用于深度學(xué)習,我們將學(xué)習一些不同的技巧。

1. L2和L1正則化

L1和L2是最常見(jiàn)的正則化手段。通過(guò)添加正則項來(lái)更新代價(jià)函數。

代價(jià)函數=損失(比如二元交叉熵)+正則項

由于添加了正則項,使得加權矩陣的值減小--得益于它假定具有更小權重矩陣的神經(jīng)網(wǎng)絡(luò )產(chǎn)生更簡(jiǎn)單的模型,故它也會(huì )在一定程度上減少過(guò)擬合。

這個(gè)正則項在L1和L2中是不同的。

在L2中,我們有:

 

這里的lambda是正則項懲罰數。它是一個(gè)超參數。它的值可以被優(yōu)化以獲得更好的結果。L2正則化也稱(chēng)為權重衰減weight decay),因為它使權重趨向零衰減(但不完全為零)。

在L1中,我們有:

 

這里是懲罰權重的絕對值。與L2不同,這里的權重可以減少到零。因此,當我們試圖壓縮我們的模型時(shí),它非常有用。其他的情況下,我們通常更喜歡L2。

keras,我們可以對每一層進(jìn)行正則化。

以下是將L2正則化應用于全連接層的示例代碼。

 注意:這里0.01是正則項系數的值,即lambda,其仍須進(jìn)一步優(yōu)化。我們可以使用網(wǎng)格搜索方法(grid-search)對其進(jìn)行優(yōu)化。

同樣,我們也可以使用L1正則化。在本文后面的案例研究中,我們將更詳細地研究這一點(diǎn)。

2. Dropout

Dropout是最有趣正則化手段之一。它同樣會(huì )產(chǎn)生較好的結果,也是深度學(xué)習領(lǐng)域中最常用的正則化技術(shù)。

為了理解dropout,我們假設我們的神經(jīng)網(wǎng)絡(luò )結構類(lèi)似于下面顯示的那樣:

 

那么dropout是怎么工作的呢?在每次迭代中,它隨機選擇一些節點(diǎn),并將它們連同它們的所有傳入和傳出連接一起刪除,如下圖所示。

 

所以每次迭代都有一組不同的節點(diǎn),這導致了一組不同的輸出。它也可以被認為是機器學(xué)習中的集技術(shù)ensemble technique)。

集成模型通常比單一模型表現得更好,因為它們捕獲更多的隨機表達。類(lèi)似地,dropout也比正常的神經(jīng)網(wǎng)絡(luò )模型表現得更好。

選擇丟棄節點(diǎn)的比率是dropout函數中的超參數。如上圖所示,dropout可以應用于隱藏層以及輸入層。

來(lái)源:chatbotslife

由于這些原因,當運用較大的神經(jīng)網(wǎng)絡(luò )結構時(shí)若想增加隨機性,通常首選dropout。

keras中,我們可以使用keras常用層core layers)實(shí)現dropout。如下:

 正如你所看到的,令丟棄率為0.25。也可以使用網(wǎng)格搜索方法進(jìn)一步調優(yōu)。

3. 數據增強(Data Augmentation)

減少過(guò)擬合的最簡(jiǎn)單方法是增加訓練數據的大小。在機器學(xué)習中,我們無(wú)法增加訓練數據的大小,因為標記的數據成本太高。

但是,現在讓我們考慮我們正在處理圖像。在這種情況下,可以通過(guò)幾種方法來(lái)增加訓練數據的大小-旋轉圖像,翻轉,縮放,移位等。下圖是在手寫(xiě)數字數據集上進(jìn)行的一些變換。

這種技術(shù)被稱(chēng)為數據增強。這通常會(huì )較大的提高模型的準確性。為了改進(jìn)模型得的泛化能力,它可以被視為暴力技巧。

在keras中,我們可以使用ImageDataGenerator執行所有這些轉換。它有一大堆你可以用來(lái)預處理訓練數據的參數列表。

以下是實(shí)現它的示例代碼。

4. 早Early stopping)

早停是基于交叉驗證策略--將一部分訓練集作為驗證集。一旦發(fā)現驗證集的性能越來(lái)越差時(shí),我們就立即停止對該模型的訓練。這個(gè)過(guò)程被稱(chēng)為早停(Early stopping)。

 

在上圖中,我們將在虛線(xiàn)出停止訓練,因為在此之后,我們的模型將在訓練集上過(guò)擬合。

在keras中,我們可以使用回調函數(callback)實(shí)現早停。以下是它的示例代碼。

在這里,monitor表示需要監視的數量, val_err 表示驗證錯誤。

Patience表示當early stopping被激活(如發(fā)現loss相比上一個(gè)epoch訓練沒(méi)有下降),則經(jīng)過(guò) patience 個(gè)epoch后停止訓練。為了更好地理解,讓我們再看看上面的圖片。在虛線(xiàn)之后每經(jīng)歷一個(gè)epoch都會(huì )導致更高的驗證集錯誤率。因此,虛線(xiàn)后5個(gè)epoch(因為我們的patience等于5)后我們的模型將停止訓練--由于不再進(jìn)一步的提升。

注意:在5個(gè)epochs(這是為patience一般定義的值)之后,模型可能會(huì )再次開(kāi)始改善,并且驗證錯誤也開(kāi)始減少。因此,我們需要在調整超參數時(shí)多加小心。

四. 使用Keras處理MNIST數據集案例研究(A case study on MINIST data with keras)

到這里,你應該對不同的正則化技術(shù)有了一定的理論基礎。我們現在將這些技術(shù)手段應用于我們的深度學(xué)習實(shí)踐問(wèn)題--手寫(xiě)體數字識別中https://datahack.analyticsvidhya.com/contest/practice-problem-identify-the-digits/)。下載了數據集后,就可以開(kāi)始下面的實(shí)踐之旅了。首先,導入一些基本庫。

 加載數據集。

數據集可視化顯示圖片。

 

創(chuàng )建驗證集(val),優(yōu)化我們的模型以獲得更好的表現。我們將用70:30的訓練和驗證數據比率。

 第一步,構建一個(gè)帶有5個(gè)隱藏層的簡(jiǎn)單神經(jīng)網(wǎng)絡(luò ),每個(gè)層都有500個(gè)節點(diǎn)。 

請注意,運行10個(gè)epoch。讓我們看看它的實(shí)際表現。

然后,讓我們嘗試使用L2正則化方法,并對比它是否比簡(jiǎn)單的神經(jīng)網(wǎng)絡(luò )模型有更好的結果。

注意lambda的值等于0.0001。Cool,獲得了比我們以前的NN模型更高的精度。

現在,我們來(lái)使用下L1正則化技術(shù)。

這對比之前未經(jīng)過(guò)處理的神經(jīng)網(wǎng)絡(luò )結構來(lái)說(shuō)沒(méi)有任何改進(jìn),接下來(lái)試一下dropout技術(shù)。

不錯。dropout使我們對比原來(lái)未處理的NN模型有了一些改進(jìn)。

現在,我們嘗試數據增強data augmentation)。

現在,為了增加訓練數據

在這里,我使用了zca_whitening作為參數,它突出了每個(gè)數字的輪廓,如下圖所示。

 哇。這次準確率有了較大的提升。這種優(yōu)化方式適用范圍廣,我們只需根據數據集中的圖像特點(diǎn)選擇適當的參數。

最后,讓我們嘗試最后一個(gè)正則化方法-早停(early stopping)。 

你可以看到,模型訓練僅在5次迭代后就停止了--由于驗證集準確率不再提高。如果設置更大的epoch運行,它也許不會(huì )有較好的結果。你可以說(shuō)這是一種優(yōu)化epoch數量的技術(shù)。

結語(yǔ)

希望現在你對正則化技術(shù)以及怎樣在深度學(xué)習模型中實(shí)現它有了一定的了解。強烈建議在深度學(xué)習任務(wù)中應用它,它將可能會(huì )幫助提升你對模型的理解與認知。

是否覺(jué)得這篇文章會(huì )有幫助?歡迎下面的評論部分分享你的想法。

(編譯自:https://www.analyticsvidhya.com/blog/2018/04/fundamentals-deep-learning-regularization-techniques/)

本站僅提供存儲服務(wù),所有內容均由用戶(hù)發(fā)布,如發(fā)現有害或侵權內容,請點(diǎn)擊舉報。
打開(kāi)APP,閱讀全文并永久保存 查看更多類(lèi)似文章
猜你喜歡
類(lèi)似文章
機器學(xué)習中常見(jiàn)的過(guò)擬合解決方法
過(guò)擬合(出現的原因4種、解決方案6種)
如何從零開(kāi)始構建深度學(xué)習項目?這里有一份詳細的教程
深度學(xué)習中優(yōu)化技術(shù)總結
機器學(xué)習基礎
生活服務(wù)
分享 收藏 導長(cháng)圖 關(guān)注 下載文章
綁定賬號成功
后續可登錄賬號暢享VIP特權!
如果VIP功能使用有故障,
可點(diǎn)擊這里聯(lián)系客服!

聯(lián)系客服

欧美性猛交XXXX免费看蜜桃,成人网18免费韩国,亚洲国产成人精品区综合,欧美日韩一区二区三区高清不卡,亚洲综合一区二区精品久久