偷偷摘套内射激情视频,久久精品99国产国产精,中文字幕无线乱码人妻,中文在线中文a,性爽19p

半天2k贊,李飛飛高徒發(fā)布33條神經(jīng)網(wǎng)絡(luò)訓(xùn)練秘技

新聞 機(jī)器學(xué)習(xí)
AI大佬Andrej Karpathy (簡稱AK) ,剛剛發(fā)布了一篇長長長長博客,苦口婆心地列舉了33條技巧和注意事項,全面避免大家踩坑,已有2,300多贊。

[[263815]]

本文經(jīng)AI新媒體量子位(公眾號ID:QbitAI)授權(quán)轉(zhuǎn)載,轉(zhuǎn)載請聯(lián)系出處。

同學(xué),現(xiàn)在有一份33條神經(jīng)網(wǎng)絡(luò)訓(xùn)練秘笈,擺在你面前。

AI大佬Andrej Karpathy (簡稱AK) ,剛剛發(fā)布了一篇長長長長博客,苦口婆心地列舉了33條技巧和注意事項,全面避免大家踩坑,已有2,300多贊。

AK在斯坦福讀博的時候,是飛飛實驗室的成員,畢業(yè)去了OpenAI,然后又成了特斯拉的AI負(fù)責(zé)人,直到如今。

他的博客雖然一年一更,但一字一句皆是皆是多年心血凝結(jié)而成,每次更新必有重大回響。

有生之年,我們把內(nèi)文翻譯如下:

訓(xùn)練模型的“處方”

總的來說,Andrej Karpathy的技巧就是:不要心急 (文章結(jié)尾會道出原因) ,從簡單到復(fù)雜逐步完善你的神經(jīng)網(wǎng)絡(luò)。

1、先別著急寫代碼

訓(xùn)練神經(jīng)網(wǎng)絡(luò)前,別管代碼,先從預(yù)處理數(shù)據(jù)集開始。我們先花幾個小時的時間,了解數(shù)據(jù)的分布并找出其中的規(guī)律。

Andrej有一次在整理數(shù)據(jù)時發(fā)現(xiàn)了重復(fù)的樣本,還有一次發(fā)現(xiàn)了圖像和標(biāo)簽中的錯誤。所以先看一眼數(shù)據(jù)能避免我們走很多彎路。

由于神經(jīng)網(wǎng)絡(luò)實際上是數(shù)據(jù)集的壓縮版本,因此您將能夠查看網(wǎng)絡(luò)(錯誤)預(yù)測并了解它們的來源。如果你的網(wǎng)絡(luò)給你的預(yù)測看起來與你在數(shù)據(jù)中看到的內(nèi)容不一致,那么就會有所收獲。

一旦從數(shù)據(jù)中發(fā)現(xiàn)規(guī)律,可以編寫一些代碼對他們進(jìn)行搜索、過濾、排序。把數(shù)據(jù)可視化能幫助我們發(fā)現(xiàn)異常值,而異常值總能揭示數(shù)據(jù)的質(zhì)量或預(yù)處理中的一些錯誤。

2、設(shè)置端到端的訓(xùn)練評估框架

處理完數(shù)據(jù)集,接下來就能開始訓(xùn)練模型了嗎?并不能!下一步是建立一個完整的訓(xùn)練+評估框架。

在這個階段,我們選擇一個簡單又不至于搞砸的模型,比如線性分類器、CNN,可視化損失。獲得準(zhǔn)確度等衡量模型的標(biāo)準(zhǔn),用模型進(jìn)行預(yù)測。

這個階段的技巧有:

· 固定隨機(jī)種子

使用固定的隨機(jī)種子,來保證運(yùn)行代碼兩次都獲得相同的結(jié)果,消除差異因素。

· 簡單化

在此階段不要有任何幻想,不要擴(kuò)增數(shù)據(jù)。擴(kuò)增數(shù)據(jù)后面會用到,但是在這里不要使用,現(xiàn)在引入只會導(dǎo)致錯誤。

· 在評估中添加有效數(shù)字

在繪制測試集損失時,對整個測試集進(jìn)行評估,不要只繪制批次測試損失圖像,然后用Tensorboard對它們進(jìn)行平滑處理。

· 在初始階段驗證損失函數(shù)

驗證函數(shù)是否從正確的損失值開始。例如,如果正確初始化一層,則應(yīng)在softmax初始化時測量-log(1/n_classes)。

· 初始化

正確初始化一層的權(quán)重。如果回歸一些平均值為50的值,則將最終偏差初始化為50。如果有一個比例為1:10的不平衡數(shù)據(jù)集,請設(shè)置對數(shù)的偏差,使網(wǎng)絡(luò)預(yù)測概率在初始化時為0.1。正確設(shè)置這些可以加速模型的收斂。

· 人類基線

監(jiān)控除人為可解釋和可檢查的損失之外的指標(biāo)。盡可能評估人的準(zhǔn)確性并與之進(jìn)行比較?;蛘邔y試數(shù)據(jù)進(jìn)行兩次注釋,并且對于每個示例,將一個注釋視為預(yù)測,將第二個注釋視為事實。

· 設(shè)置一個獨(dú)立于輸入的基線

最簡單的方法是將所有輸入設(shè)置為零,看看模型是否學(xué)會從輸入中提取任何信息。

· 過擬合一個batch

增加了模型的容量并驗證我們可以達(dá)到的損失。

· 驗證減少訓(xùn)練損失

嘗試稍微增加數(shù)據(jù)容量。

· 在訓(xùn)練模型前進(jìn)行數(shù)據(jù)可視化

將原始張量的數(shù)據(jù)和標(biāo)簽可視化,可以節(jié)省了調(diào)試次數(shù),并揭示了數(shù)據(jù)預(yù)處理和數(shù)據(jù)擴(kuò)增中的問題。

· 可視化預(yù)測動態(tài)

在訓(xùn)練過程中對固定測試批次上的模型預(yù)測進(jìn)行可視化。

· 使用反向傳播來獲得依賴關(guān)系

一個方法是將第i個樣本的損失設(shè)置為1.0,運(yùn)行反向傳播一直到輸入,并確保僅在第i個樣本上有非零的梯度。

· 概括一個特例:對正在做的事情編寫一個非常具體的函數(shù),讓它運(yùn)行,然后在以后過程中確保能得到相同的結(jié)果。

3、過擬合

首先我們得有一個足夠大的模型,它可以過擬合,減少訓(xùn)練集上的損失,然后適當(dāng)?shù)卣{(diào)整它,放棄一些訓(xùn)練集損失,改善在驗證集上的損失)。

這一階段的技巧有:

· 挑選模型

為了獲得較好的訓(xùn)練損失,我們需要為數(shù)據(jù)選擇合適的架構(gòu)。不要總想著一步到位。如果要做圖像分類,只需復(fù)制粘貼ResNet-50,我們可以在稍后的過程中做一些自定義的事。

· Adam方法是安全的

在設(shè)定基線的早期階段,使用學(xué)習(xí)率為3e-4的Adam 。根據(jù)經(jīng)驗,亞當(dāng)對超參數(shù)更加寬容,包括不良的學(xué)習(xí)率。

· 一次只復(fù)雜化一個

如果多個信號輸入分類器,建議逐個輸入,然后增加復(fù)雜性,確保預(yù)期的性能逐步提升,而不要一股腦兒全放進(jìn)去。比如,嘗試先插入較小的圖像,然后再將它們放大。

· 不要相信學(xué)習(xí)率衰減默認(rèn)值

如果不小心,代碼可能會過早地將學(xué)習(xí)率減少到零,導(dǎo)致模型無法收斂。我們完全禁用學(xué)習(xí)率衰減避免這種狀況的發(fā)生。

4、正則化

理想的話,我們現(xiàn)在有一個大模型,在訓(xùn)練集上擬合好了。

現(xiàn)在,該正則化了。舍棄一點(diǎn)訓(xùn)練集上的準(zhǔn)確率,可以換取驗證集上的準(zhǔn)確率。

這里有一些技巧:

· 獲取更多數(shù)據(jù)

至今大家最偏愛的正則化方法,就是添加一些真實訓(xùn)練數(shù)據(jù)。

不要在一個小數(shù)據(jù)集花太大功夫,試圖搞出大事情來。有精力去多收集點(diǎn)數(shù)據(jù),這是一個確保性能單調(diào)提升的方法。

· 數(shù)據(jù)擴(kuò)增

把數(shù)據(jù)集做大,除了繼續(xù)收集數(shù)據(jù)之外,就是擴(kuò)增了。旋轉(zhuǎn),翻轉(zhuǎn),拉伸,做擴(kuò)增的時候可以野性一點(diǎn)。

· 有創(chuàng)意的擴(kuò)增

還有什么辦法擴(kuò)增數(shù)據(jù)集?比如域隨機(jī)化 (Domain Randomization) ,模擬 (Simulation) ,巧妙的混合 (Hybrids) ,比如把數(shù)據(jù)插進(jìn)場景里去。甚至可以用上GAN。

· 預(yù)訓(xùn)練

當(dāng)然,就算你手握充足的數(shù)據(jù),直接用預(yù)訓(xùn)練模型也沒壞處。

· 跟監(jiān)督學(xué)習(xí)死磕

不要對無監(jiān)督預(yù)訓(xùn)練太過興奮了。至少在視覺領(lǐng)域,無監(jiān)督到現(xiàn)在也沒有非常強(qiáng)大的成果。雖然,NLP領(lǐng)域有了BERT,有了會講故事的GPT-2,但我們看到的效果很大程度上還是經(jīng)過了人工挑選。

· 輸入低維一點(diǎn)

把那些可能包含虛假信號的特征去掉,因為這些東西很可能造成過擬合,尤其是數(shù)據(jù)集不大的時候。

同理,如果低層細(xì)節(jié)不是那么重要的話,就輸入小一點(diǎn)的圖片,捕捉高層信息就好了。

· 模型小一點(diǎn)

許多情況下,都可以給網(wǎng)絡(luò)加上領(lǐng)域知識限制 (Domain Knowledge Constraints) ,來把模型變小。

比如,以前很流行在ImageNet的骨架上放全連接層,但現(xiàn)在這種操作已經(jīng)被平均池化取代了,大大減少了參數(shù)。

·減小批尺寸

對批量歸一化 (Batch Normalization) 這項操作來說,小批量可能帶來更好的正則化效果 (Regularization) 。

· Dropout

給卷積網(wǎng)絡(luò)用dropout2d。不過使用需謹(jǐn)慎,因為這種操作似乎跟批量歸一化不太合得來。

· 權(quán)重衰減

增加權(quán)重衰減 (Weight Decay) 的懲罰力度。

· 早停法

不用一直一直訓(xùn)練,可以觀察驗證集的損失,在快要過擬合的時候,及時喊停。

· 也試試大點(diǎn)的模型

注意,這條緊接上條 (且僅接上條) 。

我發(fā)現(xiàn),大模型很容易過擬合,幾乎是必然,但早停的話,模型可以表現(xiàn)很好。

如果想要更加確信,自己訓(xùn)練出的網(wǎng)絡(luò),是個不錯的分類器,就把權(quán)重可視化一下,看看邊緣 (Edges) 美不美。

如果過濾器看起來像噪音,就需要再搞一搞了。同理,激活 (Activations) 有時候也會看出瑕疵來,那樣就要研究一下哪里出了問題。

5、調(diào)參

讀到這里,你的AI應(yīng)該已經(jīng)開始探索廣闊天地了。這里,有幾件事需要注意。

· 隨機(jī)網(wǎng)格搜索

在同時調(diào)整多個超參數(shù)的情況下,網(wǎng)格搜索聽起來是很誘人,可以把各種設(shè)定都包含進(jìn)來。

但是要記住,隨機(jī)搜索更好一些。

直覺上說,這是因為網(wǎng)絡(luò)通常對其中一些參數(shù)比較敏感,對其他參數(shù)不那么敏感。

如果參數(shù)a是有用的,參數(shù)b起不了什么作用,就應(yīng)該對a取樣更徹底一些,不要只在幾個固定點(diǎn)上多次取樣。

· 超參數(shù)優(yōu)化

世界上,有許多許多靚麗的貝葉斯超參數(shù)優(yōu)化工具箱,很多小伙伴也給了這些工具好評。

但我個人的經(jīng)驗是,State-of-the-Art都是用實習(xí)生做出來的 (誤) 。

6、還能怎么壓榨**

當(dāng)你已經(jīng)找到了好用的架構(gòu)和好用的超參數(shù),還是有一些技巧,可以在幫你現(xiàn)有模型上獲得更好的結(jié)果,榨干潛能:

· 模型合體

把幾個模型結(jié)合在一起,至少可以保證提升2%的準(zhǔn)確度,不管是什么任務(wù)。

如果,你買不起太多的算力,就用蒸餾 (Distill) 把模型們集合成一個神經(jīng)網(wǎng)絡(luò)。

· 放那讓它訓(xùn)練吧

通常,人類一看到損失趨于平穩(wěn),就停止訓(xùn)練了。

但我感覺,還是訓(xùn)練得昏天黑地,不知道多久了,比較好。

有一次,我意外把一個模型留在那訓(xùn)練了一整個寒假。

我回來的時候,它就成了State-of-the-Art。

One More Thing

無獨(dú)有偶,前兩天有只“陣亡的程序猿”說:

AWS的錢,不是花在你用了多少,而是花在你忘了關(guān)電腦。

同學(xué),如果你也曾經(jīng)有這樣的經(jīng)歷,那么恭喜,你也有訓(xùn)練出State-of-the-Art的潛力。

原文鏈接:

http://karpathy.github.io/2019/04/25/recipe/

 

責(zé)任編輯:張燕妮 來源: 量子位
相關(guān)推薦

2019-04-29 12:11:53

神經(jīng)網(wǎng)絡(luò)AI深度學(xué)習(xí)

2021-10-15 10:32:42

神經(jīng)網(wǎng)絡(luò)AI算法

2022-07-14 14:54:00

特斯拉AI自動駕駛

2023-05-29 09:48:36

AI李飛飛

2017-12-22 08:47:41

神經(jīng)網(wǎng)絡(luò)AND運(yùn)算

2022-12-30 12:11:33

2017-08-28 21:31:37

TensorFlow深度學(xué)習(xí)神經(jīng)網(wǎng)絡(luò)

2024-12-05 09:53:18

智能體AI

2018-07-03 16:10:04

神經(jīng)網(wǎng)絡(luò)生物神經(jīng)網(wǎng)絡(luò)人工神經(jīng)網(wǎng)絡(luò)

2017-07-19 11:39:25

深度學(xué)習(xí)人工智能boosting

2017-09-28 16:15:12

神經(jīng)網(wǎng)絡(luò)訓(xùn)練多層

2024-11-21 13:45:00

神經(jīng)網(wǎng)絡(luò)AI

2017-03-27 16:18:30

神經(jīng)網(wǎng)絡(luò)TensorFlow人工智能

2021-12-28 08:48:54

PyTorch神經(jīng)網(wǎng)絡(luò)人工智能

2024-11-04 15:30:00

機(jī)器人訓(xùn)練

2020-03-06 15:25:23

網(wǎng)絡(luò)神經(jīng)人工智能數(shù)據(jù)

2017-08-29 13:50:03

TensorFlow深度學(xué)習(xí)神經(jīng)網(wǎng)絡(luò)

2018-12-14 08:02:55

神經(jīng)網(wǎng)絡(luò)機(jī)器學(xué)習(xí)二值模型

2022-10-17 15:43:14

深度學(xué)習(xí)回歸模型函數(shù)

2022-05-20 11:01:06

模型性能框架
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號