91欧美超碰AV自拍|国产成年人性爱视频免费看|亚洲 日韩 欧美一厂二区入|人人看人人爽人人操aV|丝袜美腿视频一区二区在线看|人人操人人爽人人爱|婷婷五月天超碰|97色色欧美亚州A√|另类A√无码精品一级av|欧美特级日韩特级

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

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

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

AI網(wǎng)紅Andrej Karpathy最新力作,傾囊相授神經(jīng)網(wǎng)絡(luò)的33條訓(xùn)練技巧

DPVg_AI_era ? 來源:lq ? 2019-04-28 09:03 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

AI網(wǎng)紅Andrej Karpathy最新力作,傾囊相授神經(jīng)網(wǎng)絡(luò)的33條訓(xùn)練技巧,干貨必看。

Andrej Kapathy 是計(jì)算機(jī)視覺深度學(xué)習(xí)領(lǐng)域的專家之一,畢業(yè)于斯坦福人工智能實(shí)驗(yàn)室,博士師從李飛飛教授,在谷歌大腦、DeepMind 實(shí)過習(xí),與吳恩達(dá)一起共事,業(yè)界幾大深度學(xué)習(xí)實(shí)驗(yàn)室都待過。

2017年6月,Karpathy加入特斯拉,擔(dān)任AI和Autopilot Vision 部門主管,直接向 Elon Musk 匯報(bào)。

更重要的是,Karpathy樂于而且善于分享自己的經(jīng)驗(yàn)和見解,在推特和博客上非常活躍,有 AI “網(wǎng)紅” 之稱。

Karpathy的推特簡介上有一句“I like to train Deep Neural Nets on large datasets.”近日,Karpathy將他訓(xùn)練神經(jīng)網(wǎng)絡(luò)的經(jīng)驗(yàn)傾囊相授,獲得大量好評(píng)。

以下是新智元對(duì)這篇“神經(jīng)網(wǎng)絡(luò)煉丹術(shù)”的譯介:

30行代碼訓(xùn)練神經(jīng)網(wǎng)絡(luò)?Too young

幾周前,我在推特上發(fā)了一條“最常見的神經(jīng)網(wǎng)絡(luò)錯(cuò)誤”的推文,列舉了一些與訓(xùn)練神經(jīng)網(wǎng)絡(luò)相關(guān)的常見錯(cuò)誤。這條推文獲得了比我預(yù)期的更多的參與(甚至還有一個(gè)在線研討會(huì):)。顯然,很多人都曾親身經(jīng)歷過“這就是卷積層的工作原理”和“我們的卷積網(wǎng)絡(luò)實(shí)現(xiàn)了最先進(jìn)的結(jié)果”之間的巨大差距。

所以我想,打開我差不多塵封的博客,就這個(gè)話題寫一篇長文,應(yīng)該會(huì)更好。不過,我不打算詳細(xì)列舉更多常見的錯(cuò)誤,我想更深入地探討一下如何能夠完全避免這些錯(cuò)誤(或快速修復(fù)它們)。這樣做的訣竅是遵循一個(gè)特定的過程,據(jù)我所知,這個(gè)過程很少有文字記錄。

那么,讓我們從兩個(gè)重要的觀察開始。

1) 神經(jīng)網(wǎng)絡(luò)訓(xùn)練是一種“抽象泄漏”(leaky abstraction)

據(jù)說開始訓(xùn)練神經(jīng)網(wǎng)絡(luò)很容易。許多庫和框架都以可以用30行的奇跡代碼片段解決你的數(shù)據(jù)問題而自豪,給人一種即插即用的(錯(cuò)誤)印象。常見的做法是:

>>> your_data = # plug your awesome dataset here>>> model = SuperCrossValidator(SuperDuper.fit, your_data, ResNet50, SGDOptimizer)# conquer world here

這些庫和示例激活了我們大腦中熟悉的標(biāo)準(zhǔn)軟件的部分——通??梢垣@得干凈的API和抽象。請(qǐng)求庫演示如下:

>>> r = requests.get('https://api.github.com/user', auth=('user', 'pass'))>>> r.status_code200

這很酷!開發(fā)者勇敢地承擔(dān)了理解查詢字符串、url、GET/POST請(qǐng)求、HTTP連接等重?fù)?dān),并在很大程度上隱藏了幾行代碼背后的復(fù)雜性。這是我們所熟悉和期望的。

不幸的是,神經(jīng)網(wǎng)絡(luò)不是這樣的。如果你稍微偏離了訓(xùn)練ImageNet分類器,那么它們就不是“現(xiàn)成的”技術(shù)。

在我以前介紹反向傳播的博文中,我試圖通過使用反向傳播并將其稱為“抽象泄漏”來說明這一點(diǎn),但不幸的是,情況要糟糕得多。Backprop + SGD并不會(huì)神奇地讓你的網(wǎng)絡(luò)工作。Batch norm并不能神奇地使其更快地收斂。RNN不會(huì)神奇地讓你“插入”文本。你可以用RL表示你的問題,但僅僅是這樣并不意味著你應(yīng)該這樣做。如果你堅(jiān)持使用這種技術(shù)而不了解它的工作原理,那么你很可能會(huì)失敗。這使我想到……

2) 神經(jīng)網(wǎng)絡(luò)訓(xùn)練常常無聲無息地失敗

當(dāng)你破壞或錯(cuò)誤配置代碼時(shí),通常會(huì)遇到某種異常。比如你插入了一個(gè)包含預(yù)期字符串的整數(shù)。這個(gè)函數(shù)只需要3個(gè)參數(shù)。但導(dǎo)入失敗了。這個(gè)鍵根本不存在。這兩個(gè)列表中的元素?cái)?shù)量不相等。此外,通??梢詾槟硞€(gè)特定功能創(chuàng)建單元測(cè)試。

這只是訓(xùn)練神經(jīng)網(wǎng)絡(luò)的開端。從語法上來說,一切都是正確的,但整件事的安排并不妥善,這真的很難判斷?!翱赡艿腻e(cuò)誤范圍”很大,符合邏輯(與語法相反),并且很難進(jìn)行單元測(cè)試。例如,在數(shù)據(jù)增強(qiáng)過程中,當(dāng)你從左到右翻轉(zhuǎn)圖像時(shí),可能忘記了翻轉(zhuǎn)標(biāo)簽。你的網(wǎng)絡(luò)仍然可以(令人震驚地)很好地工作,因?yàn)槟愕木W(wǎng)絡(luò)可以在內(nèi)部學(xué)習(xí)檢測(cè)翻轉(zhuǎn)的圖像,然后左右翻轉(zhuǎn)它的預(yù)測(cè)?;蛘吣愕淖曰貧w模型會(huì)因?yàn)橐粋€(gè)off-by-one的bug而不小心將它試圖預(yù)測(cè)的東西作為輸入?;蛘吣阍囍藜籼荻龋Y(jié)果卻減少了損失,導(dǎo)致在訓(xùn)練期間忽略了異常值的例子?;蛘吣銖囊粋€(gè)預(yù)訓(xùn)練的檢查點(diǎn)初始化你的權(quán)重,但沒有使用原始平均值。或者你只是搞砸了正則化強(qiáng)度、學(xué)習(xí)率、衰減率、模型大小等的設(shè)置。因此,只有在運(yùn)氣好的情況下,錯(cuò)誤配置的神經(jīng)網(wǎng)絡(luò)才會(huì)拋出異常;大多數(shù)情況下,它會(huì)繼續(xù)訓(xùn)練,但默默地使運(yùn)行變?cè)恪?/p>

因此,用“快速而激烈”的方法來訓(xùn)練神經(jīng)網(wǎng)絡(luò)是行不通的,只會(huì)導(dǎo)致痛苦。痛苦雖然是讓神經(jīng)網(wǎng)絡(luò)正常工作的一個(gè)非常自然的部分,但它是可以通過徹底的、防御性的、偏執(zhí)的,以及對(duì)幾乎所有可能的事情進(jìn)行可視化來減輕的。根據(jù)我的經(jīng)驗(yàn),與深度學(xué)習(xí)成功最相關(guān)的品質(zhì)是耐心和關(guān)注細(xì)節(jié)。

如何訓(xùn)練一個(gè)神經(jīng)網(wǎng)絡(luò)

基于以上兩個(gè)事實(shí),我為自己開發(fā)了一個(gè)特定的過程,當(dāng)我將神經(jīng)網(wǎng)絡(luò)應(yīng)用到一個(gè)新的問題時(shí),我都遵循這個(gè)過程。本文中我將嘗試描述這個(gè)過程。

你會(huì)看到,它是非常重視上述兩個(gè)原則的。特別是,它是從簡單到復(fù)雜構(gòu)建的,每一步我們都對(duì)將要發(fā)生的事情做出具體的假設(shè),然后通過實(shí)驗(yàn)驗(yàn)證它們,或者進(jìn)行調(diào)查,直到發(fā)現(xiàn)問題。我們極力避免的是同時(shí)引入大量“未經(jīng)驗(yàn)證”的復(fù)雜性,這必然會(huì)引入錯(cuò)誤/錯(cuò)誤配置,而這些錯(cuò)誤/錯(cuò)誤配置將永遠(yuǎn)無法找到。如果像訓(xùn)練一樣編寫神經(jīng)網(wǎng)絡(luò)代碼,你會(huì)想要使用非常小的學(xué)習(xí)率并猜測(cè),然后在每次迭代之后評(píng)估完整的測(cè)試集。

1. 梳理數(shù)據(jù)

訓(xùn)練神經(jīng)網(wǎng)絡(luò)的第一步是完全不接觸任何神經(jīng)網(wǎng)絡(luò)代碼,而是從徹底檢查數(shù)據(jù)開始。這一步至關(guān)重要。我喜歡花大量時(shí)間(以小時(shí)為單位)瀏覽數(shù)千個(gè)示例,了解它們的分布并尋找模式。幸運(yùn)的是,我們的大腦非常擅長做這個(gè)。有一次,我發(fā)現(xiàn)數(shù)據(jù)中包含重復(fù)的例子。另一次我發(fā)現(xiàn)了損壞的圖像/標(biāo)簽。我會(huì)尋找數(shù)據(jù)中的不平衡和偏差。我通常也會(huì)關(guān)注我自己對(duì)數(shù)據(jù)進(jìn)行分類的過程,這個(gè)過程暗示了我們最終要探索的各種架構(gòu)類型。

舉個(gè)例子,只有局部的特性是否足夠,還是需要全局上下文?有多少變量,它們以什么形式出現(xiàn)?哪些變量是假的,可以預(yù)先處理的?空間位置是否重要,或者我們是否想要將其平均池化?細(xì)節(jié)有多重要,我們能在多大程度上對(duì)圖像進(jìn)行降采樣?標(biāo)簽有多少噪音?

此外,由于神經(jīng)網(wǎng)絡(luò)實(shí)際上是數(shù)據(jù)集的壓縮/編譯版本,因此你能夠查看你的網(wǎng)絡(luò)預(yù)測(cè)并了解它們可能來自何處。如果你的網(wǎng)絡(luò)給你的預(yù)測(cè)與你在數(shù)據(jù)中看到的不一致,那就是有什么地方錯(cuò)了。

一旦獲得了一種定性的感覺,那么寫一些簡單的代碼來搜索/過濾/排序也是一個(gè)好主意,不管你能想到什么(例如標(biāo)簽的類型,注釋的大小,注釋的數(shù)量,等等),并將它們的分布和沿著任何軸的異常值可視化。異常值幾乎總是能揭示數(shù)據(jù)質(zhì)量或預(yù)處理中的一些bug。

2. 建立端到端的訓(xùn)練/評(píng)估框架+獲取簡單的基線

現(xiàn)在我們了解了我們的數(shù)據(jù),那么就可以實(shí)現(xiàn)炫酷的多尺度ASPP FPN ResNet,并開始訓(xùn)練超棒的模型了嗎?肯定不是。這是一條痛苦的道路。下一步是建立一個(gè)完整的訓(xùn)練+評(píng)估框架,通過一系列的實(shí)驗(yàn)獲得對(duì)其正確性的信任。在這個(gè)階段,最好選擇一些你不可能搞砸的簡單模型——例如一個(gè)線性分類器,或者一個(gè)非常小的卷積網(wǎng)絡(luò)。我們希望訓(xùn)練這個(gè)網(wǎng)絡(luò),可視化損失,任何其他指標(biāo)(例如準(zhǔn)確性),模型預(yù)測(cè),并在此過程中執(zhí)行一系列帶有明確假設(shè)的消融實(shí)驗(yàn)。

這個(gè)階段的提示和技巧:

修復(fù)隨機(jī)種子(random seed)。總是使用固定的隨機(jī)seed來保證當(dāng)你運(yùn)行代碼兩次時(shí),將得到相同的結(jié)果。這消除了變異因素,將有助于保持你的理智。

簡化。確保不要有任何不必要的幻想。例如,在這個(gè)階段一定要關(guān)閉所有數(shù)據(jù)增強(qiáng)。數(shù)據(jù)增強(qiáng)是一種正則化策略,我們稍后可能會(huì)將其合并進(jìn)來,但目前它只是會(huì)引入一些愚蠢的bug。

在評(píng)估中添加有效數(shù)字。當(dāng)繪制測(cè)試損失時(shí),在整個(gè)(大型)測(cè)試集上運(yùn)行評(píng)估。不要只在batches上繪制測(cè)試損失,然后依賴于在Tensorboard中平滑它們。我們要追求正確,很愿意放棄時(shí)間。

在初始化時(shí)驗(yàn)證損失。驗(yàn)證你的損失是否以正確的損失值開始。例如,如果你正確地初始化了最后一層,你應(yīng)該在初始化時(shí)測(cè)量softmax的-log(1/n_classes)。同樣的缺省值可以用于L2回歸、Huber損失等。

正確地初始化。正確初地始化最后一層權(quán)重。例如,如果你要回歸一些平均值為50的值,那么要將最終偏差初始化為50。如果你有一個(gè)不平衡的數(shù)據(jù)集,其正負(fù)比為1:10,那么在你的日志上設(shè)置偏差,使你的網(wǎng)絡(luò)預(yù)測(cè)概率在初始化時(shí)為0.1。正確設(shè)置這些參數(shù)將加快收斂速度,并消除“hockey stick”損失曲線,在最初幾次迭代中,你的網(wǎng)絡(luò)基本上只是學(xué)習(xí)偏差。

human baseline。監(jiān)控人類可解釋和可檢查的損失以外的指標(biāo)(例如準(zhǔn)確性)。盡可能地評(píng)估你自己(人類)的準(zhǔn)確性,并與之進(jìn)行比較。或者,對(duì)測(cè)試數(shù)據(jù)進(jìn)行兩次注釋,對(duì)于每個(gè)示例,將一個(gè)注釋作為預(yù)測(cè),將第二個(gè)注釋作為ground truth。

input-indepent baseline。訓(xùn)練一個(gè)獨(dú)立于輸入的基線(例如,最簡單的方法就是將所有輸入設(shè)置為零)。這應(yīng)該比實(shí)際插入數(shù)據(jù)而不將其歸零的情況更糟。也就是說,可以知道你的模型是否學(xué)會(huì)從輸入中提取任何信息?

在單個(gè)批數(shù)據(jù)上過擬合。只過擬合包含少量例子(例如只有兩個(gè))的一個(gè)batch。為此,我們需要增加模型的容量(例如添加層或過濾器),并驗(yàn)證我們可以達(dá)到的最低損失值(例如0)。我也喜歡在同一個(gè)圖中可視化標(biāo)簽和預(yù)測(cè),并確保一旦達(dá)到最小損失,它們最終會(huì)完美地對(duì)齊。如果沒有完美對(duì)齊,那么在某個(gè)地方就有一個(gè)bug,我們無法繼續(xù)到下一個(gè)階段。

驗(yàn)證訓(xùn)練損失的下降。在這個(gè)階段,你可能希望在數(shù)據(jù)集上實(shí)現(xiàn)欠擬合,因?yàn)樵撾A段的模型是一個(gè)玩具模型。試著增加一點(diǎn)它的容量,在看看訓(xùn)練損失是否下降了。

在輸入網(wǎng)絡(luò)前進(jìn)行可視化。在運(yùn)行y_hat = model(x)(或tf中運(yùn)行sess.run)之前,是可視化數(shù)據(jù)的正確時(shí)間。也就是說,我們需要準(zhǔn)確地可視化輸入給你的網(wǎng)絡(luò)的東西,把原始的數(shù)據(jù)張量和標(biāo)簽解碼并可視化。這是唯一的“真理之源”。這個(gè)過程為我節(jié)省了大量時(shí)間,并揭示了數(shù)據(jù)預(yù)處理和增強(qiáng)方面的問題。

可視化預(yù)測(cè)動(dòng)態(tài)。在訓(xùn)練過程中,我喜歡將固定測(cè)試batch的模型預(yù)測(cè)可視化。這些預(yù)測(cè)如何移動(dòng)的“動(dòng)態(tài)”將為你提供關(guān)于訓(xùn)練進(jìn)展的良好直覺。很多時(shí)候,如果網(wǎng)絡(luò)以某種方式太過波動(dòng),顯示出不穩(wěn)定性,你可能會(huì)覺得網(wǎng)絡(luò)“難以”擬合你的數(shù)據(jù)。非常低或非常高的學(xué)習(xí)率在波動(dòng)的數(shù)量中也很容易被注意到。

使用反向傳播來繪制依賴關(guān)系圖。深度學(xué)習(xí)代碼通常包含復(fù)雜、向量化和broadcast操作。我遇到過的一個(gè)比較常見的bug是,人們使用view而不是在某個(gè)地方進(jìn)行transpose/permute,無意中混淆了批處理的維度信息。然而,你的網(wǎng)絡(luò)通常仍然訓(xùn)練良好,因?yàn)樗鼘W(xué)會(huì)忽略來自其他示例的數(shù)據(jù)。一種debug的方法是將某個(gè)示例i的損失設(shè)置為1.0,然后運(yùn)行反向傳播一直到輸入,并確保只在i-thexample上得到一個(gè)非零梯度。也就是說,梯度提供了網(wǎng)絡(luò)中的依賴關(guān)系信息,這對(duì)于debug非常有用。

一般化特殊案例。這是一種更為通用的編碼技巧,但是我經(jīng)??吹饺藗?cè)谑褂眠@個(gè)技巧時(shí)產(chǎn)生bug,尤其是從頭編寫一個(gè)相對(duì)通用的函數(shù)時(shí)。我喜歡為我正在做的事情寫非常具體的函數(shù),讓這個(gè)函數(shù)能work,然后再一般化,確保得到相同的結(jié)果。這通常適用于向量化代碼,我會(huì)先寫出完整的循環(huán)版本,然后再將它轉(zhuǎn)換為向量化代碼。

3.過擬合

在這個(gè)階段,我們應(yīng)該對(duì)數(shù)據(jù)集有一個(gè)很好的理解,我們有完整的訓(xùn)練和評(píng)估pipeline。對(duì)于任何給定的模型,我們可以(可重復(fù)地)計(jì)算出一個(gè)可信的量度。我們還可以利用獨(dú)立于輸入的baseline的性能(并擊敗了這些基線性能),我們大致了解人類的表現(xiàn)。這一階段的任務(wù)是對(duì)一個(gè)性能不錯(cuò)的模型進(jìn)行迭代。

找到一個(gè)好模型可以分為兩個(gè)極端:首先得到一個(gè)足夠大的模型,它可以是過擬合的,然后在適當(dāng)調(diào)整(放棄一些訓(xùn)練損失,以改善驗(yàn)證損失)。我認(rèn)為采取這兩個(gè)階段的好處是,如果我們根本無法使用任何模型達(dá)到足夠低的錯(cuò)誤率,這種方式可能再次暴露一些問題、bug或錯(cuò)誤配置。

關(guān)于這個(gè)階段的一些提示和技巧:

挑選模型。為了獲得良好的訓(xùn)練損失,需要為數(shù)據(jù)選擇合適的架構(gòu)。我的建議是:不要逞英雄。我見過很多人瘋狂的人,將神經(jīng)網(wǎng)絡(luò)工具箱的各種工具像堆樂高積木一樣堆疊在各種奇異的架構(gòu)中。應(yīng)該在項(xiàng)目早期階段盡力避免這樣做。

我總是建議先找到最相關(guān)的一些論文,先把其中最簡單的架構(gòu)原樣照搬過來,以獲得良好的性能。比如你做得是圖像分類,不要想著當(dāng)英雄,先把ResNet-50拿過來用。后面可以做一些更自定義設(shè)置和改進(jìn),并實(shí)現(xiàn)比它更好的性能。

Adam總沒錯(cuò)。在設(shè)定baseline方法的早期階段,我喜歡使用學(xué)習(xí)率為3e-4的Adam架構(gòu)。根據(jù)我的經(jīng)驗(yàn),Adam對(duì)超參數(shù)更加寬容,包括不良的學(xué)習(xí)率。對(duì)于ConvNets來說,一個(gè)經(jīng)過適當(dāng)調(diào)整的SGD幾乎總會(huì)略優(yōu)于Adam,但前者最佳學(xué)習(xí)率區(qū)域要窄得多,而且受到具體問題所限。(如果使用的是RNN和相關(guān)的序列模型,那么在項(xiàng)目早期階段更常用Adam。再說一遍,不要逞英雄,多參考相關(guān)論文。)

一次只針對(duì)一個(gè)對(duì)象進(jìn)行復(fù)雜化。如果有多個(gè)信號(hào)進(jìn)入分類器,建議逐個(gè)引入,確保每次信號(hào)的引入都獲得預(yù)期的性能提升。一開始不要一股腦地把全部信號(hào)都喂給模型。增加復(fù)雜度還有別的方法,比如可以嘗試先插入較小的圖像,然后再放大,諸如此類。

不要過于相信默認(rèn)的學(xué)習(xí)率衰減。如果是重用來自其他領(lǐng)域的代碼,那么在處理學(xué)習(xí)速度衰減時(shí)一定要非常小心。您不僅希望針對(duì)不同的問題使用不同的衰減計(jì)劃,而且 - 更糟糕的是 - 在典型的實(shí)施中,計(jì)劃將基于當(dāng)前的epoch數(shù),該值會(huì)根據(jù)數(shù)據(jù)集的大小而廣泛變化。

比如,ImageNet將在30個(gè)epoch上衰減10倍。如果你沒有訓(xùn)練ImageNet那么這肯定不是想要的結(jié)果。如果你不小心,代碼可能會(huì)過早地將學(xué)習(xí)率趨零,導(dǎo)致模型無法收斂。在我自己的研究中總是完全禁用學(xué)習(xí)率衰減(學(xué)習(xí)速率為常數(shù))并在最后進(jìn)行調(diào)整。

4.正則化

理想情況下,我們要處理的是大型模型,至少能夠擬合訓(xùn)練集?,F(xiàn)在是時(shí)候通過放棄一些訓(xùn)練準(zhǔn)確性,進(jìn)行一些正則化處理,以獲得一些驗(yàn)證準(zhǔn)確性。以下是這方面一些提示和技巧:

獲取更多的數(shù)據(jù)。首先,在任何實(shí)際環(huán)境中,最佳和首選方法是添加更多真實(shí)的訓(xùn)練數(shù)據(jù)。當(dāng)可以收集更多數(shù)據(jù)時(shí),就不要再花費(fèi)大量時(shí)間嘗試從小型數(shù)據(jù)集中擠性能了。據(jù)我所知,添加更多數(shù)據(jù)幾乎是唯一無限期改善配置良好的神經(jīng)網(wǎng)絡(luò)性能的方式。還有一種方式是合奏(如果你能負(fù)擔(dān)得起的話),但是在5個(gè)模型之后最高。

數(shù)據(jù)增強(qiáng)。僅次于真實(shí)數(shù)據(jù)的半真實(shí)的數(shù)據(jù),需要嘗試更積極的數(shù)據(jù)增強(qiáng)。

創(chuàng)造性數(shù)據(jù)增強(qiáng)。如果半假數(shù)據(jù)不能做到這一點(diǎn),假數(shù)據(jù)也許可以。人們正在尋找擴(kuò)展數(shù)據(jù)集的創(chuàng)新方法;例如,域隨機(jī)化,模擬的使用,巧妙的混合,比如將(可能模擬的)數(shù)據(jù)引入場景,甚至是GAN中。

預(yù)訓(xùn)練。即使有足夠的數(shù)據(jù),如果可以,也很少使用預(yù)訓(xùn)練網(wǎng)絡(luò)。

堅(jiān)持監(jiān)督式學(xué)習(xí)。不要對(duì)無監(jiān)督的預(yù)訓(xùn)練抱有過分的信心。據(jù)我所知,沒有任何一種無監(jiān)督學(xué)習(xí)在現(xiàn)代計(jì)算機(jī)視覺任務(wù)上有很強(qiáng)的表現(xiàn)(雖然現(xiàn)在NLP領(lǐng)域誕生了BERT等優(yōu)秀模型,但這很可能是因?yàn)槲谋緮?shù)據(jù)更成熟的形式,以及更高的信噪比)。

更小的輸入維度。去除可能包含虛假信號(hào)的特征。如果數(shù)據(jù)集很小,任何添加的虛假輸入都可能造成過擬合。同樣,如果低級(jí)細(xì)節(jié)無關(guān)緊要,請(qǐng)嘗試輸入更小的圖像。

較小的模型。很多時(shí)候可以在網(wǎng)絡(luò)上使用域知識(shí)約束來減小模型大小。例如,過去在ImageNet骨干網(wǎng)頂部使用全連接層很流行,但現(xiàn)在已改用簡單的平均池化,從而去掉了過程中的大量參數(shù)。

減小批大小。由于歸一化是基于批大小的,更小的batch size會(huì)具有更明顯的正則化效果。這是因?yàn)榕拷?jīng)驗(yàn)均值/標(biāo)準(zhǔn)是完整均值/標(biāo)準(zhǔn)的更近似版本,因此標(biāo)度和偏移量“擺動(dòng)”您的批次更多。

Drop。添加dropout。對(duì)ConvNets使用dropout2d(空間丟失)。建議謹(jǐn)慎使用dropout,因?yàn)樗坪醪惶贿m合批歸一化。

權(quán)重衰減。增加權(quán)重衰減懲罰。

“早停”:提早停止訓(xùn)練。根據(jù)驗(yàn)證損失停止訓(xùn)練,在出現(xiàn)過擬合之前獲得模型。

嘗試更大的模型。我最后提到這一點(diǎn),并且只是在提前停止之后,但我在過去曾經(jīng)發(fā)現(xiàn)過幾次大模型最終過擬合,但是它們的“早停”性能往往比小模型的性能要好得多。

最后,為了進(jìn)一步確保網(wǎng)絡(luò)是一個(gè)合理的分類器,我喜歡對(duì)網(wǎng)絡(luò)第一層權(quán)重進(jìn)行可視化,并確保獲得有意義的邊緣。如果第一層濾波器看起來像噪音,那么可能需要去掉一些東西。類似地,網(wǎng)絡(luò)中的激活函數(shù)有時(shí)也會(huì)有異常出現(xiàn),暴露出一些問題。

5.精細(xì)調(diào)整

現(xiàn)在應(yīng)該使用數(shù)據(jù)集探索寬泛的模型空間,以獲得低驗(yàn)證損失的體系結(jié)構(gòu)。下面是一些提示和技巧:

隨機(jī)網(wǎng)格搜索。為了同時(shí)調(diào)整多個(gè)超參數(shù),使用網(wǎng)格搜索確保覆蓋所有設(shè)置,這聽起來很誘人,但請(qǐng)記住,最好使用隨機(jī)搜索。直觀地說,這是因?yàn)樯窠?jīng)網(wǎng)絡(luò)通常對(duì)某些參數(shù)比其他參數(shù)更敏感。在極限情況下,如果一個(gè)參數(shù)很重要,但是改變另一個(gè)參數(shù)沒有效果,那還不如對(duì)第一個(gè)參數(shù)進(jìn)行徹底采樣。

超參數(shù)優(yōu)化。目前有很多花哨的貝葉斯超參數(shù)優(yōu)化工具箱,也有一些成功應(yīng)用的實(shí)例,但我個(gè)人的經(jīng)驗(yàn)是,探索優(yōu)質(zhì)大寬度模型和超參數(shù)空間的最好方式是找個(gè)實(shí)習(xí)生。哈哈,開句玩笑。

6.性能壓榨

在確定了最佳類型的體系結(jié)構(gòu)和超參數(shù)后,仍然可以利用一些技巧最后“壓榨”一下系統(tǒng)的性能:

集成。模型是一種非常有保證的方法,可以在任何事情上獲得2%的準(zhǔn)確率。如果您在測(cè)試時(shí)無法負(fù)擔(dān)計(jì)算,請(qǐng)考慮使用黑暗知識(shí)將您的整體提升到網(wǎng)絡(luò)中。

保持訓(xùn)練。我經(jīng)??吹饺藗?cè)隍?yàn)證損失趨于平穩(wěn)時(shí)就想停止模型訓(xùn)練。根據(jù)我的經(jīng)驗(yàn),網(wǎng)絡(luò)會(huì)長時(shí)間不間斷地進(jìn)行訓(xùn)練。有一次我在冬假期間不小心沒有停止訓(xùn)練,當(dāng)我第二1月份回來時(shí),發(fā)現(xiàn)模型性能達(dá)到了SOTA水平。

寫在最后

走到這一步,相信你已經(jīng)獲得了成功的所有要素:對(duì)技術(shù),數(shù)據(jù)集和問題有了深刻的理解,建立了整個(gè)模型的訓(xùn)練/評(píng)估基礎(chǔ)設(shè)施,并對(duì)其準(zhǔn)確性有了很高的信心,并探索了越來越復(fù)雜的模型,以預(yù)測(cè)每一步的方式獲得性能改進(jìn)。現(xiàn)在是時(shí)候開始閱讀大量論文,嘗試大量實(shí)驗(yàn),準(zhǔn)備好獲得SOTA結(jié)果吧。祝你好運(yùn)!

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

    關(guān)注

    42

    文章

    4839

    瀏覽量

    108052
  • AI
    AI
    +關(guān)注

    關(guān)注

    91

    文章

    40642

    瀏覽量

    302301
  • 深度學(xué)習(xí)
    +關(guān)注

    關(guān)注

    73

    文章

    5602

    瀏覽量

    124567

原文標(biāo)題:李飛飛高徒、AI“網(wǎng)紅”Karpathy:訓(xùn)練神經(jīng)網(wǎng)絡(luò)不得不看的33個(gè)技巧

文章出處:【微信號(hào):AI_era,微信公眾號(hào):新智元】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。

收藏 人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評(píng)論

    相關(guān)推薦
    熱點(diǎn)推薦

    內(nèi)置USB聲卡AI神經(jīng)網(wǎng)絡(luò)算法降噪消回音模組A-59U#AI神經(jīng)網(wǎng)絡(luò)#回聲消除#智能降噪

    神經(jīng)網(wǎng)絡(luò)
    深圳市聲訊電子有限公司
    發(fā)布于 :2025年12月24日 17:09:37

    神經(jīng)網(wǎng)絡(luò)的初步認(rèn)識(shí)

    日常生活中的智能應(yīng)用都離不開深度學(xué)習(xí),而深度學(xué)習(xí)則依賴于神經(jīng)網(wǎng)絡(luò)的實(shí)現(xiàn)。什么是神經(jīng)網(wǎng)絡(luò)?神經(jīng)網(wǎng)絡(luò)的核心思想是模仿生物神經(jīng)系統(tǒng)的結(jié)構(gòu),特別是大腦中神經(jīng)
    的頭像 發(fā)表于 12-17 15:05 ?423次閱讀
    <b class='flag-5'>神經(jīng)網(wǎng)絡(luò)</b>的初步認(rèn)識(shí)

    NMSIS神經(jīng)網(wǎng)絡(luò)庫使用介紹

    NMSIS NN 軟件庫是一組高效的神經(jīng)網(wǎng)絡(luò)內(nèi)核,旨在最大限度地提高 Nuclei N 處理器內(nèi)核上的神經(jīng)網(wǎng)絡(luò)的性能并最??大限度地減少其內(nèi)存占用。 該庫分為多個(gè)功能,每個(gè)功能涵蓋特定類別
    發(fā)表于 10-29 06:08

    在Ubuntu20.04系統(tǒng)中訓(xùn)練神經(jīng)網(wǎng)絡(luò)模型的一些經(jīng)驗(yàn)

    本帖欲分享在Ubuntu20.04系統(tǒng)中訓(xùn)練神經(jīng)網(wǎng)絡(luò)模型的一些經(jīng)驗(yàn)。我們采用jupyter notebook作為開發(fā)IDE,以TensorFlow2為訓(xùn)練框架,目標(biāo)是訓(xùn)練一個(gè)手寫數(shù)字識(shí)
    發(fā)表于 10-22 07:03

    CICC2033神經(jīng)網(wǎng)絡(luò)部署相關(guān)操作

    在完成神經(jīng)網(wǎng)絡(luò)量化后,需要將神經(jīng)網(wǎng)絡(luò)部署到硬件加速器上。首先需要將所有權(quán)重?cái)?shù)據(jù)以及輸入數(shù)據(jù)導(dǎo)入到存儲(chǔ)器內(nèi)。 在仿真環(huán)境下,可將其存于一個(gè)文件,并在 Verilog 代碼中通過 readmemh 函數(shù)
    發(fā)表于 10-20 08:00

    液態(tài)神經(jīng)網(wǎng)絡(luò)(LNN):時(shí)間連續(xù)性與動(dòng)態(tài)適應(yīng)性的神經(jīng)網(wǎng)絡(luò)

    1.算法簡介液態(tài)神經(jīng)網(wǎng)絡(luò)(LiquidNeuralNetworks,LNN)是一種新型的神經(jīng)網(wǎng)絡(luò)架構(gòu),其設(shè)計(jì)理念借鑒自生物神經(jīng)系統(tǒng),特別是秀麗隱桿線蟲的神經(jīng)結(jié)構(gòu),盡管這種微生物的
    的頭像 發(fā)表于 09-28 10:03 ?1459次閱讀
    液態(tài)<b class='flag-5'>神經(jīng)網(wǎng)絡(luò)</b>(LNN):時(shí)間連續(xù)性與動(dòng)態(tài)適應(yīng)性的<b class='flag-5'>神經(jīng)網(wǎng)絡(luò)</b>

    【「AI芯片:科技探索與AGI愿景」閱讀體驗(yàn)】+神經(jīng)形態(tài)計(jì)算、類腦芯片

    AI芯片不僅包括深度學(xué)細(xì)AI加速器,還有另外一個(gè)主要列別:類腦芯片。類腦芯片是模擬人腦神經(jīng)網(wǎng)絡(luò)架構(gòu)的芯片。它結(jié)合微電子技術(shù)和新型神經(jīng)形態(tài)器件,模仿人腦
    發(fā)表于 09-17 16:43

    神經(jīng)網(wǎng)絡(luò)的并行計(jì)算與加速技術(shù)

    隨著人工智能技術(shù)的飛速發(fā)展,神經(jīng)網(wǎng)絡(luò)在眾多領(lǐng)域展現(xiàn)出了巨大的潛力和廣泛的應(yīng)用前景。然而,神經(jīng)網(wǎng)絡(luò)模型的復(fù)雜度和規(guī)模也在不斷增加,這使得傳統(tǒng)的串行計(jì)算方式面臨著巨大的挑戰(zhàn),如計(jì)算速度慢、訓(xùn)練時(shí)間長等
    的頭像 發(fā)表于 09-17 13:31 ?1246次閱讀
    <b class='flag-5'>神經(jīng)網(wǎng)絡(luò)</b>的并行計(jì)算與加速技術(shù)

    【「AI芯片:科技探索與AGI愿景」閱讀體驗(yàn)】+AI的未來:提升算力還是智力

    。 耦合振蕩計(jì)算與傳統(tǒng)的計(jì)算的區(qū)別: 3、神經(jīng)符號(hào)計(jì)算 神經(jīng)符號(hào)極端是指將基于神經(jīng)網(wǎng)絡(luò)的方法與基于符號(hào)知識(shí)的方法結(jié)合的AI計(jì)算。 神經(jīng)符號(hào)計(jì)
    發(fā)表于 09-14 14:04

    【「AI芯片:科技探索與AGI愿景」閱讀體驗(yàn)】+第二章 實(shí)現(xiàn)深度學(xué)習(xí)AI芯片的創(chuàng)新方法與架構(gòu)

    連接定義了神經(jīng)網(wǎng)絡(luò)的拓?fù)浣Y(jié)構(gòu)。 不同神經(jīng)網(wǎng)絡(luò)的DNN: 一、基于大模型的AI芯片 1、Transformer 模型與引擎 1.1 Transformer 模型概述 Transformer 模型的出現(xiàn)
    發(fā)表于 09-12 17:30

    無刷電機(jī)小波神經(jīng)網(wǎng)絡(luò)轉(zhuǎn)子位置檢測(cè)方法的研究

    摘要:論文通過對(duì)無刷電機(jī)數(shù)學(xué)模型的推導(dǎo),得出轉(zhuǎn)角:與三相電壓之間存在映射關(guān)系,因此構(gòu)建了一個(gè)以三相電壓為輸人,轉(zhuǎn)角為輸出的小波神經(jīng)網(wǎng)絡(luò)來實(shí)現(xiàn)轉(zhuǎn)角預(yù)測(cè),并采用改進(jìn)遺傳算法來訓(xùn)練
    發(fā)表于 06-25 13:06

    神經(jīng)網(wǎng)絡(luò)專家系統(tǒng)在電機(jī)故障診斷中的應(yīng)用

    摘要:針對(duì)傳統(tǒng)專家系統(tǒng)不能進(jìn)行自學(xué)習(xí)、自適應(yīng)的問題,本文提出了基于種經(jīng)網(wǎng)絡(luò)專家系統(tǒng)的并步電機(jī)故障診斷方法。本文將小波神經(jīng)網(wǎng)絡(luò)和專家系統(tǒng)相結(jié)合,充分發(fā)揮了二者故障診斷的優(yōu)點(diǎn),很大程度上降低了對(duì)電機(jī)
    發(fā)表于 06-16 22:09

    神經(jīng)網(wǎng)絡(luò)RAS在異步電機(jī)轉(zhuǎn)速估計(jì)中的仿真研究

    眾多方法中,由于其結(jié)構(gòu)簡單,穩(wěn)定性好廣泛受到人們的重視,且已被用于產(chǎn)品開發(fā)。但是MRAS仍存在在低速區(qū)速度估計(jì)精度下降和對(duì)電動(dòng)機(jī)參數(shù)變化非常敏感的問題。本文利用神經(jīng)網(wǎng)絡(luò)的特點(diǎn),使估計(jì)更為簡單、快速
    發(fā)表于 06-16 21:54

    基于FPGA搭建神經(jīng)網(wǎng)絡(luò)的步驟解析

    本文的目的是在一個(gè)神經(jīng)網(wǎng)絡(luò)已經(jīng)通過python或者M(jìn)ATLAB訓(xùn)練好的神經(jīng)網(wǎng)絡(luò)模型,將訓(xùn)練好的模型的權(quán)重和偏置文件以TXT文件格式導(dǎo)出,然后通過python程序?qū)xt文件轉(zhuǎn)化為coe
    的頭像 發(fā)表于 06-03 15:51 ?1430次閱讀
    基于FPGA搭建<b class='flag-5'>神經(jīng)網(wǎng)絡(luò)</b>的步驟解析

    AI神經(jīng)網(wǎng)絡(luò)降噪算法在語音通話產(chǎn)品中的應(yīng)用優(yōu)勢(shì)與前景分析

    隨著人工智能技術(shù)的快速發(fā)展,AI神經(jīng)網(wǎng)絡(luò)降噪算法在語音通話產(chǎn)品中的應(yīng)用正逐步取代傳統(tǒng)降噪技術(shù),成為提升語音質(zhì)量的關(guān)鍵解決方案。相比傳統(tǒng)DSP(數(shù)字信號(hào)處理)降噪,AI降噪具有更強(qiáng)的環(huán)境適應(yīng)能力、更高
    的頭像 發(fā)表于 05-16 17:07 ?1708次閱讀
    <b class='flag-5'>AI</b><b class='flag-5'>神經(jīng)網(wǎng)絡(luò)</b>降噪算法在語音通話產(chǎn)品中的應(yīng)用優(yōu)勢(shì)與前景分析