0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

關(guān)于Dropout、BN及數(shù)據(jù)預(yù)處理方案

電子設(shè)計(jì) ? 來源:程序員大本營(yíng) ? 作者:datayx ? 2021-05-31 17:37 ? 次閱讀

一、隨機(jī)失活(Dropout)

具體做法:在訓(xùn)練的時(shí)候,隨機(jī)失活的實(shí)現(xiàn)方法是讓神經(jīng)元以超參數(shù)o4YBAF-cdnmAWpDBAAACU_DoSa0457.png的概率被激活或者被設(shè)置為 0。如下圖所示:

pIYBAF-cdnuAKYslAABDQ5yQB94073.jpg

Dropout 可以看作是 Bagging 的極限形式,每個(gè)模型都在當(dāng)一種情況中訓(xùn)練,同時(shí)模型的每個(gè)參數(shù)都經(jīng)過與其他模型共享參數(shù),從而高度正則化。在訓(xùn)練過程中,隨機(jī)失活也可以被認(rèn)為是對(duì)完整的神經(jīng)網(wǎng)絡(luò)抽樣出一些子集,每次基于輸入數(shù)據(jù)只更新子網(wǎng)絡(luò)的參數(shù)(然而,數(shù)量巨大的子網(wǎng)絡(luò)們并不是相互獨(dú)立的,因?yàn)樗鼈兌脊蚕韰?shù))。在測(cè)試過程中不使用隨機(jī)失活,可以理解為是對(duì)數(shù)量巨大的子網(wǎng)絡(luò)們做了模型集成(model ensemble),以此來計(jì)算出一個(gè)平均的預(yù)測(cè)。

關(guān)于 Dropout 的 Motivation:一個(gè)是類似于性別在生物進(jìn)化中的角色:物種為了生存往往會(huì)傾向于適應(yīng)這種環(huán)境,環(huán)境突變則會(huì)導(dǎo)致物種難以做出及時(shí)反應(yīng),性別的出現(xiàn)可以繁衍出適應(yīng)新環(huán)境的變種,有效的阻止過擬合,即避免環(huán)境改變時(shí)物種可能面臨的滅絕。還有一個(gè)就是正則化的思想,減少神經(jīng)元之間復(fù)雜的共適應(yīng)關(guān)系,減少權(quán)重使得網(wǎng)絡(luò)對(duì)丟失特定神經(jīng)元連接的魯棒性提高。

這里強(qiáng)烈推薦看下論文原文。雖然是英文的,但是對(duì)于更深刻的理解還是有很大幫助的!

二、圖像數(shù)據(jù)的預(yù)處理

為什么要預(yù)處理:簡(jiǎn)單的從二維來理解,首先,圖像數(shù)據(jù)是高度相關(guān)的,假設(shè)其分布如下圖 a 所示(簡(jiǎn)化為 2 維)。由于初始化的時(shí)候,我們的參數(shù)一般都是 0 均值的,因此開始的擬合 o4YBAF-cdn2AUm5PAAAISG9lNi8513.png,基本過原點(diǎn)附近(因?yàn)?b 接近于零),如圖 b 紅色虛線。因此,網(wǎng)絡(luò)需要經(jīng)過多次學(xué)習(xí)才能逐步達(dá)到如紫色實(shí)線的擬合,即收斂的比較慢。如果我們對(duì)輸入數(shù)據(jù)先作減均值操作,如圖 c,顯然可以加快學(xué)習(xí)。更進(jìn)一步的,我們對(duì)數(shù)據(jù)再進(jìn)行去相關(guān)操作,使得數(shù)據(jù)更加容易區(qū)分,這樣又會(huì)加快訓(xùn)練,如圖 d。

pIYBAF-cdoCAGQkwAAAU0Fjltps385.jpg

下面介紹下一些基礎(chǔ)預(yù)處理方法:

歸一化處理

均值減法(Mean subtraction):它對(duì)數(shù)據(jù)中每個(gè)獨(dú)立特征減去平均值,從幾何上可以理解為在每個(gè)維度上都將數(shù)據(jù)云的中心都遷移到原點(diǎn)。(就是每個(gè)特征數(shù)據(jù)減去其相應(yīng)特征的平均值)

歸一化(Normalization);先對(duì)數(shù)據(jù)做零中心化(zero-centered)處理,然后每個(gè)維度都除以其標(biāo)準(zhǔn)差。

pIYBAF-cdoKAHx1cAAAs6MzWcJQ190.jpg

(中間零中心化,右邊歸一化)

PCA 和白化(Whitening)

白化(Whitening):白化操作的輸入是特征基準(zhǔn)上的數(shù)據(jù),然后對(duì)每個(gè)維度除以其特征值來對(duì)數(shù)值范圍進(jìn)行歸一化。該變換的幾何解釋是:如果數(shù)據(jù)服從多變量的高斯分布,那么經(jīng)過白化后,數(shù)據(jù)的分布將會(huì)是一個(gè)均值為零,且協(xié)方差相等的矩陣

特征向量是按照特征值的大小排列的。我們可以利用這個(gè)性質(zhì)來對(duì)數(shù)據(jù)降維,只要使用前面的小部分特征向量,丟棄掉那些包含的數(shù)據(jù)沒有方差的維度。這個(gè)操作也被稱為主成分分析( Principal Component Analysis)簡(jiǎn)稱 PCA)降維

o4YBAF-cdoSAM91NAAAqrWV9zyE177.jpg

(中間是經(jīng)過 PCA 操作的數(shù)據(jù),右邊是白化)

需要注意的是:

對(duì)比與上面的中心化,與 pca 有點(diǎn)類似,但是不同的是,pca 把數(shù)據(jù)變換到了數(shù)據(jù)協(xié)方差矩陣的基準(zhǔn)軸上(協(xié)方差矩陣變成對(duì)角陣),也就是說他是軸對(duì)稱的,但簡(jiǎn)單的零中心化,它不是軸對(duì)稱的;還有 PCA 是一種降維的預(yù)處理,而零中心化并不是。

常見錯(cuò)誤:任何預(yù)處理策略(比如數(shù)據(jù)均值)都只能在訓(xùn)練集數(shù)據(jù)上進(jìn)行計(jì)算,算法訓(xùn)練完畢后再應(yīng)用到驗(yàn)證集或者測(cè)試集上。例如,如果先計(jì)算整個(gè)數(shù)據(jù)集圖像的平均值然后每張圖片都減去平均值,最后將整個(gè)數(shù)據(jù)集分成訓(xùn)練 / 驗(yàn)證 / 測(cè)試集,那么這個(gè)做法是錯(cuò)誤的。應(yīng)該怎么做呢?應(yīng)該先分成訓(xùn)練 / 驗(yàn)證 / 測(cè)試集,只是從訓(xùn)練集中求圖片平均值,然后各個(gè)集(訓(xùn)練 / 驗(yàn)證 / 測(cè)試集)中的圖像再減去這個(gè)平均值。

三、Batch Normalization

pIYBAF-cdoeAaDEsAACN5x16PK0221.png

原論文中,作者為了計(jì)算的穩(wěn)定性,加了兩個(gè)參數(shù)將數(shù)據(jù)又還原回去了,這兩個(gè)參數(shù)也是需要訓(xùn)練的。說白了,就是對(duì)每一層的數(shù)據(jù)都預(yù)處理一次。方便直觀感受,上張圖:

o4YBAF-cdomALAtFAABipDQJan0158.jpg

這個(gè)方法可以進(jìn)一步加速收斂,因此學(xué)習(xí)率可以適當(dāng)增大,加快訓(xùn)練速度;過擬合現(xiàn)象可以得倒一定程度的緩解,所以可以不用 Dropout 或用較低的 Dropout,而且可以減小 L2 正則化系數(shù),訓(xùn)練速度又再一次得到了提升。即 Batch Normalization 可以降低我們對(duì)正則化的依賴程度。

還有要注意的是,Batch Normalization 和 pca 加白化有點(diǎn)類似,結(jié)果都是可以零均值加上單位方差,可以使得數(shù)據(jù)弱相關(guān),但是在深度神經(jīng)網(wǎng)絡(luò)中,我們一般不要 pca 加白化,原因就是白化需要計(jì)算整個(gè)訓(xùn)練集的協(xié)方差矩陣、求逆等操作,計(jì)算量很大,此外,反向傳播時(shí),白化操作不一定可導(dǎo)。最后,再次強(qiáng)烈直接看 BN 的相關(guān)論文,有很多細(xì)節(jié)值得一看!

編輯:hfy

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
收藏 人收藏

    評(píng)論

    相關(guān)推薦

    機(jī)器學(xué)習(xí)為什么需要數(shù)據(jù)預(yù)處理

    數(shù)據(jù)預(yù)處理是準(zhǔn)備原始數(shù)據(jù)并使其適合機(jī)器學(xué)習(xí)模型的過程。這是創(chuàng)建機(jī)器學(xué)習(xí)模型的第一步也是關(guān)鍵的一步。 創(chuàng)建機(jī)器學(xué)習(xí)項(xiàng)目時(shí),我們并不總是遇到干凈且格式化的數(shù)據(jù)。在對(duì)
    的頭像 發(fā)表于 08-24 09:20 ?1712次閱讀
    機(jī)器學(xué)習(xí)為什么需要<b class='flag-5'>數(shù)據(jù)</b><b class='flag-5'>預(yù)處理</b>

    請(qǐng)教大家一下關(guān)于數(shù)據(jù)預(yù)處理

    一般將獲得的加速度數(shù)據(jù)得進(jìn)行數(shù)據(jù)預(yù)處理,常見的預(yù)處理方法有去掉趨勢(shì)相、還得將離散的數(shù)值積分獲得振幅。請(qǐng)問有做過的沒,請(qǐng)教一下。
    發(fā)表于 06-07 11:16

    振動(dòng)信號(hào)的預(yù)處理具體是什么意思?

    振動(dòng)信號(hào)的處理預(yù)處理之間有什么區(qū)別?我用labview對(duì)振動(dòng)信號(hào)進(jìn)行預(yù)處理處理嗎?
    發(fā)表于 10-08 15:33

    Python數(shù)據(jù)預(yù)處理方法

    機(jī)器學(xué)習(xí)-Python實(shí)踐Day3(特征工程--數(shù)據(jù)預(yù)處理2)
    發(fā)表于 06-03 15:55

    數(shù)據(jù)探索與數(shù)據(jù)預(yù)處理

    目錄1數(shù)據(jù)探索與數(shù)據(jù)預(yù)處理21.1 賽題回顧21.2 數(shù)據(jù)探索性分析與異常值處理21.3 相關(guān)性分析52特征工程82.1 光伏發(fā)電領(lǐng)域特征8
    發(fā)表于 07-12 08:37

    工業(yè)蒸汽量預(yù)測(cè)的數(shù)據(jù)預(yù)處理知識(shí)有哪些

    工業(yè)蒸汽量預(yù)測(cè)的數(shù)據(jù)預(yù)處理知識(shí)有哪些?工業(yè)蒸汽量預(yù)測(cè)的特征工程有哪些?
    發(fā)表于 10-22 06:32

    C預(yù)處理與C語言基本數(shù)據(jù)類型

    嵌入式系統(tǒng)設(shè)計(jì)師學(xué)習(xí)筆記二十九:嵌入式程序設(shè)計(jì)④——C預(yù)處理預(yù)處理指令表:(編碼規(guī)范:GB/T 28169-2011)關(guān)于宏定義 #denfine 詳解可點(diǎn)擊連接查看博主的另一篇文章 預(yù)定義宏
    發(fā)表于 12-21 08:29

    C語言的編譯預(yù)處理

    在將一個(gè)C源程序轉(zhuǎn)換為可執(zhí)行程序的過程中, 編譯預(yù)處理是最初的步驟. 這一步驟是由預(yù)處理器(preprocessor)來完成的. 在源流程序被編譯器處理之前, 預(yù)處理器首先對(duì)源程序中的
    發(fā)表于 09-20 18:17 ?47次下載

    Web使用挖掘中的數(shù)據(jù)預(yù)處理模塊、實(shí)現(xiàn)方法及發(fā)展前景

    數(shù)據(jù)預(yù)處理是Web使用挖掘的第一個(gè)環(huán)節(jié)。預(yù)處理的對(duì)象是Web 日志文件。由于Web 日志文件的格式是半結(jié)構(gòu)化的,且日志中的數(shù)據(jù)不夠完整,因此需要對(duì)Web日志文件進(jìn)行
    的頭像 發(fā)表于 11-06 09:32 ?3515次閱讀
    Web使用挖掘中的<b class='flag-5'>數(shù)據(jù)</b><b class='flag-5'>預(yù)處理</b>模塊、實(shí)現(xiàn)方法及發(fā)展前景

    Python數(shù)據(jù)清洗和預(yù)處理入門完整指南

    凡事預(yù)則立,不預(yù)則廢,訓(xùn)練機(jī)器學(xué)習(xí)模型也是如此。數(shù)據(jù)清洗和預(yù)處理是模型訓(xùn)練之前的必要過程,否則模型可能就「廢」了。本文是一個(gè)初學(xué)者指南,將帶你領(lǐng)略如何在任意的數(shù)據(jù)集上,針對(duì)任意一個(gè)機(jī)器學(xué)習(xí)模型,完成
    的頭像 發(fā)表于 12-21 13:50 ?831次閱讀

    什么是大數(shù)據(jù)采集和預(yù)處理

    一般情況下,大數(shù)據(jù)處理的流程為:數(shù)據(jù)采集和預(yù)處理、數(shù)據(jù)存儲(chǔ)、數(shù)據(jù)分析和數(shù)據(jù)可視化。
    的頭像 發(fā)表于 02-15 14:22 ?3785次閱讀

    PyTorch教程之數(shù)據(jù)預(yù)處理

    電子發(fā)燒友網(wǎng)站提供《PyTorch教程之數(shù)據(jù)預(yù)處理.pdf》資料免費(fèi)下載
    發(fā)表于 06-02 14:11 ?0次下載
    PyTorch教程之<b class='flag-5'>數(shù)據(jù)</b><b class='flag-5'>預(yù)處理</b>

    圖像預(yù)處理方法研究

    圖像預(yù)處理的主要目的是消除圖像中無關(guān)的信息,恢復(fù)有用的真實(shí)信息,增強(qiáng)有關(guān)信息的可檢測(cè)性、最大限度地簡(jiǎn)化數(shù)據(jù),從而改進(jìn)特征提取、圖像分割、匹配和識(shí)別的可靠性。一般的預(yù)處理流程為:1灰度化->2幾何變換->3圖像增強(qiáng)
    發(fā)表于 09-20 09:35 ?466次閱讀

    數(shù)據(jù)預(yù)處理和特征工程的常用功能

    機(jī)器學(xué)習(xí)最基礎(chǔ)的5個(gè)流程,分別是數(shù)據(jù)獲取,數(shù)據(jù)預(yù)處理,特征工程,建模、測(cè)試和預(yù)測(cè),上線與部署。
    的頭像 發(fā)表于 01-25 11:26 ?641次閱讀

    機(jī)器學(xué)習(xí)中的數(shù)據(jù)預(yù)處理與特征工程

    在機(jī)器學(xué)習(xí)的整個(gè)流程中,數(shù)據(jù)預(yù)處理與特征工程是兩個(gè)至關(guān)重要的步驟。它們直接決定了模型的輸入質(zhì)量,進(jìn)而影響模型的訓(xùn)練效果和泛化能力。本文將從數(shù)據(jù)預(yù)處理和特征工程的基本概念出發(fā),詳細(xì)探討這
    的頭像 發(fā)表于 07-09 15:57 ?241次閱讀