日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 人工智能 > ChatGpt >内容正文

ChatGpt

parallels desktop网络初始化失败_秘籍在手,训练不愁!特斯拉AI负责人Karpathy的超全神经网络训练套路...

發(fā)布時(shí)間:2023/12/19 ChatGpt 31 豆豆
生活随笔 收集整理的這篇文章主要介紹了 parallels desktop网络初始化失败_秘籍在手,训练不愁!特斯拉AI负责人Karpathy的超全神经网络训练套路... 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

大數(shù)據(jù)文摘出品

編譯:周素云、宋欣儀、熊琰、ZoeY、顧晨波

訓(xùn)練神經(jīng)網(wǎng)絡(luò)到底有訣竅和套路嗎?

Andrej Karpathy認(rèn)為,還的確有。

這位特斯拉的人工智能研究負(fù)責(zé)人、李飛飛的斯坦福高徒剛剛難得更新了博客,推出了一篇長(zhǎng)文《神經(jīng)網(wǎng)絡(luò)的訓(xùn)練秘籍》,詳細(xì)講述了我們?cè)谟?xùn)練神經(jīng)網(wǎng)絡(luò)時(shí)候可以遵循的套路。

據(jù)Andrej Karpathy推特說(shuō),他本來(lái)是在推特上寫(xiě)了一些自己訓(xùn)練神經(jīng)網(wǎng)絡(luò)的經(jīng)驗(yàn)教訓(xùn),結(jié)果網(wǎng)友們反響強(qiáng)烈,所以他決定把相關(guān)內(nèi)容更完整的在一篇文章中呈現(xiàn)給大家。

在這篇長(zhǎng)文中,Andrej Karpathy像一個(gè)操心的老父親一樣,詳細(xì)且循循善誘地對(duì)所有機(jī)器學(xué)習(xí)從業(yè)者講述了構(gòu)建神經(jīng)網(wǎng)絡(luò)的難處,以及如何才能循序漸進(jìn)地構(gòu)造神經(jīng)網(wǎng)絡(luò)。講述細(xì)致,邏輯清晰,非常值得一看。

文摘菌也在第一時(shí)間對(duì)文章做了翻譯,以下是翻譯原文,enjoy~

以下內(nèi)容翻譯至Andrej Karpathy的博客:A Recipe for Training Neural Networks。

神經(jīng)網(wǎng)絡(luò)訓(xùn)練是一個(gè)漏洞百出的抽象概念

都說(shuō)萬(wàn)事開(kāi)頭難,但隨著訓(xùn)練神經(jīng)網(wǎng)絡(luò)的一些即插即用的工具的出現(xiàn),很多30行代碼解決問(wèn)題的案例讓人誤以為訓(xùn)練神經(jīng)網(wǎng)絡(luò)很簡(jiǎn)單,就像這樣:

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

這些庫(kù)和例子是不是對(duì)你來(lái)說(shuō)很熟悉?比如Request庫(kù)。

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

這些分享非常酷炫, 一些開(kāi)發(fā)人員提供了理解查詢字符串,URL,GET / POST請(qǐng)求,HTTP連接等等,并且在很大程度上隱藏了幾行代碼背后的復(fù)雜性。

但不幸的是,神經(jīng)網(wǎng)絡(luò)并不是這樣的。它們不是“現(xiàn)成的”技術(shù),這個(gè)可以在我之前寫(xiě)的“你該知道backprop"一文中有介紹。

文章鏈接

https://medium.com/@karpathy/yes-you-should-understand-backprop-e2f06eab496b

Backprop + SGD并沒(méi)有神奇地讓你的網(wǎng)絡(luò)運(yùn)作,批量規(guī)范也不會(huì)神奇地使其收斂得更快。RNN也不會(huì)地讓輕而易舉地你“插入”文本。你可以用RL制定問(wèn)題也不意味你應(yīng)該這么做。

如果你堅(jiān)持使用該神經(jīng)網(wǎng)絡(luò)訓(xùn)練而不了解其工作原理,就很容易會(huì)失敗。

訓(xùn)練失敗的神經(jīng)網(wǎng)絡(luò)

當(dāng)你錯(cuò)誤配置代碼時(shí),通常會(huì)遇到某種異常。比如你在一個(gè)預(yù)期字符串的位置插入了整數(shù)。因?yàn)樵摵瘮?shù)只需要3個(gè)參數(shù),所以輸入失敗。對(duì)此我們通常可以為特定功能創(chuàng)建一個(gè)單元測(cè)試。

這只是訓(xùn)練神經(jīng)網(wǎng)絡(luò)的一個(gè)開(kāi)始。但可能出現(xiàn)所有語(yǔ)法正確,整個(gè)事情就是不對(duì)的情況,而且很難說(shuō)清楚哪里不對(duì)。

“可能的錯(cuò)誤“的覆蓋面非常大,而且是邏輯性的(與語(yǔ)法相反),這很難通過(guò)單元測(cè)試判斷出來(lái)。例如,在數(shù)據(jù)增強(qiáng)期間需要左右翻轉(zhuǎn)圖像時(shí),你可能忘記翻轉(zhuǎn)標(biāo)簽。你的網(wǎng)絡(luò)仍然可以繼續(xù)工作得非常好,因?yàn)樗梢栽趦?nèi)部學(xué)習(xí)檢測(cè)翻轉(zhuǎn)的圖像,然后左右翻轉(zhuǎn)其預(yù)測(cè)。

這之后,或許你的自回歸模型會(huì)因?yàn)橐粋€(gè)錯(cuò)誤的錯(cuò)誤而將它想要預(yù)測(cè)的東西作為輸入。或者你希望裁剪你的梯度但是模型裁剪了缺失值,導(dǎo)致模型忽略異常值。或者你會(huì)從預(yù)訓(xùn)練檢查點(diǎn)初始化權(quán)重,但沒(méi)有使用原始均值。或者你只是搞砸了正則化強(qiáng)度,學(xué)習(xí)率,衰減率,模型大小等設(shè)置。因此,錯(cuò)誤配置的神經(jīng)網(wǎng)絡(luò)只有在你運(yùn)氣好的時(shí)候才會(huì)讓你發(fā)現(xiàn)異常,大部分時(shí)間它會(huì)自己訓(xùn)練,默默工作,然后越來(lái)越糟糕。

過(guò)猶不及,訓(xùn)練神經(jīng)網(wǎng)絡(luò)的“快速和大強(qiáng)度”的方法不起作用,只能帶來(lái)一系列麻煩,這在過(guò)去是對(duì)的。但現(xiàn)在,這些麻煩可以成為讓神經(jīng)網(wǎng)絡(luò)運(yùn)作良好的一個(gè)部分,主要通過(guò)可視化來(lái)達(dá)到。深度學(xué)習(xí)要想成功,最需要的品質(zhì)是耐心和對(duì)細(xì)節(jié)的關(guān)注。

秘籍在手,訓(xùn)練不愁

基于上文講述的兩個(gè)問(wèn)題,我為自己開(kāi)發(fā)了一套神經(jīng)網(wǎng)絡(luò)訓(xùn)練”套路”。本文中我將嘗試描述這個(gè)套路。這個(gè)套路非常重視上述兩個(gè)原則,并且從簡(jiǎn)到繁,在每一步都對(duì)將要發(fā)生的事情做出具體假設(shè),然后通過(guò)實(shí)驗(yàn)驗(yàn)證或進(jìn)行檢查,直到問(wèn)題出現(xiàn)。

避免一次性地引入多個(gè)“未經(jīng)驗(yàn)證的”復(fù)雜因素,這會(huì)導(dǎo)致你長(zhǎng)時(shí)間的查找錯(cuò)誤配置(如果有的話)。如果編寫(xiě)神經(jīng)網(wǎng)絡(luò)代碼就像訓(xùn)練一樣,最好控制學(xué)習(xí)速率,作出猜測(cè),然后在每次迭代后評(píng)估完整的測(cè)試集。

1.開(kāi)始訓(xùn)練前,先對(duì)數(shù)據(jù)了熟于心

訓(xùn)練神經(jīng)網(wǎng)絡(luò)的第一步不是研究神經(jīng)網(wǎng)絡(luò)代碼,而是從徹底檢查數(shù)據(jù)開(kāi)始。這一步至關(guān)重要。我喜歡花費(fèi)大量時(shí)間(以小時(shí)為單位)瀏覽數(shù)千個(gè)示例,了解它們的分布并尋找規(guī)律。幸運(yùn)的是,我們的大腦非常擅長(zhǎng)這一點(diǎn)。

有一次我發(fā)現(xiàn)數(shù)據(jù)集中包含重復(fù)的例子,還有一次我發(fā)現(xiàn)了損壞的圖像/標(biāo)簽。我會(huì)嘗試尋找數(shù)據(jù)的不平衡和偏見(jiàn)。我通常也會(huì)關(guān)注我自己的數(shù)據(jù)分類過(guò)程,從中可以看到我們最終要探索的各種架構(gòu)。

這個(gè)數(shù)據(jù)集的背景是什么?有多少變化,它采取什么形式?什么變化是假的,可以預(yù)處理?空間位置是否重要,或者我們是否想要將其平均化?細(xì)節(jié)有多重要,我們可以在多大程度上對(duì)圖像進(jìn)行縮減采樣?標(biāo)簽有多少?

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

一旦獲得定性意義,編寫(xiě)一些簡(jiǎn)單的代碼來(lái)搜索/過(guò)濾/排序也是一個(gè)好主意(例如標(biāo)簽的類型,注釋的大小,注釋的數(shù)量等),你可以可視化它們的分布,發(fā)現(xiàn)沿任何軸的異常值,注意,異常值幾乎總能揭示數(shù)據(jù)質(zhì)量或預(yù)處理中的一些錯(cuò)誤。

2. 設(shè)置端到端的評(píng)估框架

當(dāng)你了解數(shù)據(jù)就可以利用多尺度ASPP FPN ResNet并開(kāi)始訓(xùn)練模型了么?那你真是想多了。

下一步應(yīng)該做的是建立一個(gè)完整的訓(xùn)練模型+評(píng)估框架,并通過(guò)一系列實(shí)驗(yàn)獲得對(duì)其正確性的信任。在這個(gè)階段, 你最好選擇一種有把握的簡(jiǎn)單模型,例如線性分類器或非常小的ConvNet。訓(xùn)練的內(nèi)容通常包括可視化損失、準(zhǔn)確度、模型預(yù)測(cè)等,并在此過(guò)程中使用伴有明確假設(shè)的一系列消融實(shí)驗(yàn)。

固定隨機(jī)種子

始終使用固定的隨機(jī)種子來(lái)確保當(dāng)你運(yùn)行代碼兩次時(shí),還可以獲得相同的結(jié)果。這種方法可以消除差異因素的影響。

簡(jiǎn)化

不要野心太大加入過(guò)多數(shù)據(jù), 這個(gè)階段一定要關(guān)閉其他數(shù)據(jù)庫(kù)的擴(kuò)充,在我們以后的正規(guī)訓(xùn)練中可能會(huì)嘗試擴(kuò)充數(shù)據(jù), 但現(xiàn)在加入無(wú)疑是給自己找麻煩。

在評(píng)估中添加有效數(shù)字

當(dāng)你在整個(gè)大的測(cè)試集進(jìn)行評(píng)估并出現(xiàn)失敗時(shí), 不要繼續(xù)進(jìn)行批量的測(cè)試然后指望在Tensorboard進(jìn)行平滑處理。我們需要追求準(zhǔn)確,但也需要在適當(dāng)?shù)臅r(shí)候保持理智的放棄。

驗(yàn)證損失函數(shù)

用正確的損失值來(lái)驗(yàn)證損失函數(shù), 例如,如果要保證初始化最后一層的正確, 你需要在softmax初始化時(shí)測(cè)試log(1/n_classes), 相同的默認(rèn)值可以是L2 回歸、Huber losses等。

初始化正確

確定初始化最終圖層權(quán)重正確。例如,如果你回歸一些平均值為50的值,則將最終偏差初始化為50。如果你有一個(gè)比例為1:10的不平衡數(shù)據(jù)集:正數(shù):負(fù)數(shù),請(qǐng)?jiān)O(shè)置對(duì)數(shù)的偏差,以便你的網(wǎng)絡(luò)預(yù)測(cè)概率在初始化時(shí)為0.1。在最初的幾次迭代中,你的網(wǎng)絡(luò)只是基本地學(xué)習(xí)偏差,正確設(shè)置這些將加速收斂并消除“曲棍球棒”損失曲線。

人為設(shè)置基準(zhǔn)

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

輸入-獨(dú)立基準(zhǔn)

訓(xùn)練一個(gè)輸入-獨(dú)立的基準(zhǔn),最簡(jiǎn)單的方法是將所有輸入設(shè)置為零。如果不清零,當(dāng)你插入數(shù)據(jù)時(shí)就變得很糟糕,因?yàn)槟愕哪P涂赡軙?huì)從輸入中提取信息。

先過(guò)擬合一部分?jǐn)?shù)據(jù)

我們可以增加模型的容量(例如添加層或過(guò)濾器)以驗(yàn)證我們可以達(dá)到可實(shí)現(xiàn)的最低損失(例如零)。然后可以在同一個(gè)圖中同時(shí)顯示標(biāo)簽和預(yù)測(cè),并確保一旦達(dá)到最小損失,它們就會(huì)完美對(duì)齊。如果沒(méi)有對(duì)齊,那么就意味著哪里有一個(gè)錯(cuò)誤,我們將無(wú)法進(jìn)入下一個(gè)階段。

自我驗(yàn)證

在使用玩具模型的階段,數(shù)據(jù)集和你的模型越不合適越好。嘗試稍微增加容量,然后看看你的訓(xùn)練損失是否隨之下降了。

提前可視化數(shù)據(jù)

在運(yùn)行y_hat = model(x)或sess.run在tf指令之前,最好先明確數(shù)據(jù)的位置,也就是說(shuō)可視化網(wǎng)絡(luò)中的內(nèi)容,將原始的大量數(shù)據(jù)和標(biāo)簽可視化。使它成為唯一的事實(shí)來(lái)源”。這個(gè)步驟無(wú)數(shù)次地節(jié)省了我的時(shí)間,并且為我揭示了數(shù)據(jù)預(yù)處理和擴(kuò)充中的問(wèn)題。

可視化預(yù)測(cè)動(dòng)態(tài)

我喜歡在訓(xùn)練模型過(guò)程中對(duì)固定測(cè)試批次上的模型預(yù)測(cè)進(jìn)行可視化。這些預(yù)測(cè)的“動(dòng)態(tài)”可以讓你直觀地了解到模型訓(xùn)練的進(jìn)展情況。如果你看到網(wǎng)絡(luò)劇烈擺動(dòng),顯示出不穩(wěn)定性,那就可能是你選擇的模型不適合這套數(shù)據(jù)。學(xué)習(xí)率非常低或非常高地情況下抖動(dòng)量也會(huì)很明顯。

使用反向傳播來(lái)繪制依賴關(guān)系

深度學(xué)習(xí)代碼通常包含復(fù)雜的,矢量化的和工作量巨大的操作。一個(gè)相對(duì)常見(jiàn)的錯(cuò)誤是人們弄錯(cuò)指令(例如在應(yīng)該使用transpose?permute到地方使用了view并且無(wú)意中在不同維度上混合信息。

令人沮喪的是,機(jī)器學(xué)習(xí)模型仍然可以正常訓(xùn)練,因?yàn)樗鼤?huì)學(xué)習(xí)忽略其他示例中的數(shù)據(jù)。調(diào)試此問(wèn)題(以及其他相關(guān)問(wèn)題)的一種方法是將一個(gè)案例的的缺失值設(shè)定為1.0,然后反向傳遞一直運(yùn)行到輸入,確保在這個(gè)案例到其他案例上獲得一個(gè)非零梯度值。梯度值可以提供網(wǎng)絡(luò)中關(guān)鍵內(nèi)容的信息,這對(duì)調(diào)試很有用。

使用特例

編寫(xiě)特例是一個(gè)通用的編碼技巧,但我經(jīng)常看到人們寫(xiě)下一個(gè)非常復(fù)雜的例子。我建議先從相對(duì)一般的功能開(kāi)始。我喜歡為我現(xiàn)在正在做的事情編寫(xiě)一個(gè)非常具體的函數(shù),讓它運(yùn)行,之后概括它得出的的結(jié)果。這非常適用于矢量化代碼,我一般都是先寫(xiě)出一個(gè)完全循環(huán)的版本,然后一次一個(gè)循環(huán)地將它轉(zhuǎn)換為矢量化代碼。

3.過(guò)擬合

到這個(gè)階段,我們應(yīng)該對(duì)數(shù)據(jù)集有了很好的理解,同時(shí)我們必須保證我們的模型能夠滿足訓(xùn)練與驗(yàn)證結(jié)果的要求。對(duì)于任意模型,我們能夠計(jì)算得出一個(gè)我們足以信任的指標(biāo)。同時(shí),我們也對(duì)我們的模型性能提出不基于輸入的性能指標(biāo)(模型性能不應(yīng)受輸入影響),我們模型的性能應(yīng)當(dāng)勝過(guò)傻瓜模型(比如隨機(jī)分類)的性能,我們也應(yīng)當(dāng)對(duì)于人工的性能有一定的了解(我們希望我們的模型能夠達(dá)到人類智能的層次)。到了處理擬合的這個(gè)階段,我們將對(duì)模型進(jìn)行迭代,從而提高模型的質(zhì)量。

我用來(lái)尋找高質(zhì)量模型的方法就是兩步:首先找一個(gè)過(guò)擬合的模型(比如說(shuō),過(guò)擬合的判定標(biāo)準(zhǔn)可以是訓(xùn)練損失),然后我對(duì)這個(gè)模型進(jìn)行規(guī)范化(regularize)處理從而使這個(gè)過(guò)擬合的模型變成一個(gè)高質(zhì)量的模型(以降低部分訓(xùn)練損失的代價(jià)提高驗(yàn)證損失的質(zhì)量——即以提高一點(diǎn)訓(xùn)練誤差的代價(jià)降低較多的驗(yàn)證誤差)。我喜歡用兩步法的原因很簡(jiǎn)單,如果我們不能在第一步中根本不能使用任何模型取得較低的誤差,這意味著我們的機(jī)器學(xué)習(xí)存在著一些問(wèn)題,或者bug,或者錯(cuò)誤配置。

這一步的一些提示與技巧:

  • 挑選模型。為了取得較好的訓(xùn)練損失(較低的訓(xùn)練誤差),你應(yīng)當(dāng)根據(jù)數(shù)據(jù)選取合適的網(wǎng)絡(luò)結(jié)構(gòu)。在選擇模型時(shí),我的第一條建議是:不要想著一口吃能胖子。我看到了好多人,如同堆樂(lè)高玩具一般,使用神經(jīng)網(wǎng)絡(luò)工具箱瘋狂調(diào)整網(wǎng)絡(luò)結(jié)構(gòu),狂熱地妄想著創(chuàng)造詭異的神經(jīng)網(wǎng)絡(luò),一步取得高質(zhì)量的模型。在你項(xiàng)目的初期階段,千萬(wàn)要抑制自己產(chǎn)生這樣的想法。我經(jīng)常建議人們就簡(jiǎn)簡(jiǎn)單單地查查和自己項(xiàng)目相關(guān)的論文,然后把他們模型的簡(jiǎn)化版應(yīng)用在自己的項(xiàng)目來(lái)取得較好的性能。比如說(shuō),你想對(duì)圖片分類,那就別先急著創(chuàng)建自己的神經(jīng)網(wǎng)絡(luò),簡(jiǎn)簡(jiǎn)單單把ResNet-50抄過(guò)來(lái)試一試。在這之后,你就可以在這個(gè)網(wǎng)絡(luò)上做一些自己的調(diào)整,并且用調(diào)整后的新網(wǎng)絡(luò),告訴ResNet-50誰(shuí)才是真的爸爸。

  • Adam優(yōu)化是靠譜的。在最初的訓(xùn)練階段,我會(huì)使用學(xué)習(xí)速率為3e-4的Adam作為網(wǎng)絡(luò)參數(shù)的優(yōu)化/迭代方法。對(duì)于ConvNets(卷積神經(jīng)網(wǎng)絡(luò))而言,精準(zhǔn)調(diào)參的隨機(jī)梯度下降(Stochastic Gradient Descent)會(huì)比Adam擁有更好地性能,但是最優(yōu)學(xué)習(xí)速率的區(qū)間會(huì)更窄,對(duì)于不同的問(wèn)題會(huì)有不同的最優(yōu)學(xué)習(xí)速率區(qū)間。(注意:如果你在使用遞歸神經(jīng)網(wǎng)絡(luò)或者相關(guān)的序列模型,Adam的使用就更加廣泛了。在你項(xiàng)目的初期,我再?gòu)?qiáng)調(diào)一次,不要想著一步登天,跟著論文依樣畫(huà)瓢。)

  • 提高模型復(fù)雜程度時(shí),每次只改動(dòng)一處。如果你有多個(gè)想要加入到分類器里的東西,我建議你依次加入它們(比如先加入dropout再加入batch normalization),來(lái)保證你得到你期待的性能。不要把所有東西都一股腦地一下塞到自己的模型里。先用較少的數(shù)據(jù)集進(jìn)行訓(xùn)練,然后再加入更多的數(shù)據(jù)集,循序漸進(jìn),一步步提高模型的性能。

  • 不要相信默認(rèn)的學(xué)習(xí)速率衰減率。如果你將原有的訓(xùn)練代碼運(yùn)用在一些新的領(lǐng)域時(shí),你應(yīng)該對(duì)學(xué)習(xí)速率衰減率萬(wàn)分警惕。對(duì)于不同的問(wèn)題,你不僅僅應(yīng)該用不同的學(xué)習(xí)速率衰減方法,更應(yīng)該注意的是,對(duì)于特定的問(wèn)題,衰減速率應(yīng)當(dāng)基于當(dāng)前的epoch數(shù)(epoch number),這會(huì)基于你當(dāng)前數(shù)據(jù)集的尺寸。比如說(shuō),ImageNet的學(xué)習(xí)速率在第30個(gè)epoch的時(shí)候,會(huì)減少10。如果你不在訓(xùn)練ImageNet,那你最好就不要那么做。如果你改代碼調(diào)參的時(shí)候不小心,然后讓你模型參數(shù)的學(xué)習(xí)速率下降過(guò)快,你的模型參數(shù)可能會(huì)不收斂。在我自己的工作中,我會(huì)完全地取消學(xué)習(xí)速率的衰減率(我就用常值學(xué)習(xí)速率),然后在最后的最后來(lái)調(diào)節(jié)學(xué)習(xí)速率衰減率。

4.正則化

理想情況下,我們現(xiàn)在已經(jīng)擁有一個(gè)有效的模型,至少對(duì)于訓(xùn)練集來(lái)說(shuō)是有效的。現(xiàn)在是時(shí)候放棄一些訓(xùn)練精度,使它更規(guī)范并且具有更高的測(cè)算精度了。下面是一些提示和技巧:

  • 獲取更多數(shù)據(jù)。首先,目前為止,在任何實(shí)際環(huán)境中規(guī)范模型的最佳和首選方法是添加更多真實(shí)的訓(xùn)練數(shù)據(jù)。一個(gè)很常見(jiàn)的錯(cuò)誤是,當(dāng)你可以收集更多的數(shù)據(jù)時(shí),你卻絞盡腦汁花大量的工程周期在一個(gè)小數(shù)據(jù)集中提高效率。據(jù)我所知,添加更多的數(shù)據(jù)幾乎是唯一能夠保證提高配置良好的神經(jīng)網(wǎng)絡(luò)性能的方法。另一種方法則是集成學(xué)習(xí)器(如果你能負(fù)擔(dān)得起的話),但它只有在集成5個(gè)個(gè)體學(xué)習(xí)器以上才能展現(xiàn)比較好的效果。

  • 數(shù)據(jù)擴(kuò)增。除了真正數(shù)據(jù),你還可以使用半真半假的數(shù)據(jù)-嘗試更具有挑戰(zhàn)性的數(shù)據(jù)增強(qiáng)。

  • 創(chuàng)意性地造數(shù)據(jù)。如果半真半假的數(shù)據(jù)不起作用,那么可以嘗試假數(shù)據(jù)。人們正在尋找擴(kuò)展數(shù)據(jù)集的創(chuàng)造性方法;例如,域隨機(jī)化、模擬、甚至是GAN。

  • 預(yù)訓(xùn)練。即使你有足夠的數(shù)據(jù),如果可以的話,建議使用一個(gè)經(jīng)過(guò)預(yù)先訓(xùn)練的網(wǎng)絡(luò)。

  • 堅(jiān)持有監(jiān)督學(xué)習(xí)。不要太執(zhí)著于無(wú)監(jiān)督的預(yù)先訓(xùn)練。據(jù)我所知,與2008年的博客文章所告訴你的不同,目前為止還沒(méi)有任何一個(gè)現(xiàn)代計(jì)算機(jī)視覺(jué)領(lǐng)域的無(wú)監(jiān)督學(xué)習(xí)網(wǎng)絡(luò)呈現(xiàn)了好的效果(盡管近幾天BERT模型表現(xiàn)不俗,但這很可能是由于文本的謹(jǐn)慎性和更高的信噪比)。

  • 減小輸入維度。刪除可能包含虛假信號(hào)的輸入。如果數(shù)據(jù)集很小,任何的偽輸入都將是一個(gè)過(guò)擬合的機(jī)會(huì)。同樣,如果低層次的細(xì)節(jié)不太重要,嘗試輸入較小的圖像。

  • 縮減模型大小。在許多情況下,你可以使用域知識(shí)來(lái)約束并縮減模型大小。例如,過(guò)去流行在ImageNet的主干網(wǎng)頂部使用完全連接層,但是這些層后來(lái)被簡(jiǎn)單的平均池化所取代,這個(gè)過(guò)程消除了大量的參數(shù)使用。

  • 減小batch大小。由于batch內(nèi)部的規(guī)范化,較小的batch在一定程度上對(duì)應(yīng)著較強(qiáng)的規(guī)范化。這是因?yàn)橄鄬?duì)于完全平均值-標(biāo)準(zhǔn)差比,batch的經(jīng)驗(yàn)平均值-標(biāo)準(zhǔn)差比更加有效,所以比例和偏移對(duì)于你的batch影響更大

  • 防止過(guò)擬合。添加dropout。對(duì)ConvNets使用dropout2d(一種dropout方法)。當(dāng)然,請(qǐng)謹(jǐn)慎地使用,因?yàn)閐ropout似乎不能很好地處理批處理規(guī)范化。

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

  • 及時(shí)停止訓(xùn)練。基于已測(cè)量驗(yàn)證的損失,及時(shí)停止訓(xùn)練,防止模型過(guò)擬合。

  • 嘗試大一點(diǎn)的模型。我在最后,并且是在“及時(shí)停止”之后提到這一點(diǎn),是因?yàn)槲以谶^(guò)去發(fā)現(xiàn)過(guò)幾次,更大的模型最終會(huì)有更大程度的過(guò)擬合,但它們的“及時(shí)停止”性能往往比較小的模型好得多。

最后,為了讓你更確信自己的神經(jīng)網(wǎng)絡(luò)已經(jīng)是一個(gè)合理的分類器了,我建議你可視化網(wǎng)絡(luò)的第一層權(quán)重,并確保你的結(jié)果是有意義的。如果你的第一層過(guò)濾器看起來(lái)像噪音,那么也許哪里是有問(wèn)題的。同樣,網(wǎng)絡(luò)內(nèi)的激活函數(shù)有時(shí)會(huì)顯示奇怪的效應(yīng),你可以利用這些信息去追蹤問(wèn)題所在。

5.開(kāi)始調(diào)參

你現(xiàn)在應(yīng)該把你的數(shù)據(jù)集放在“循環(huán)迭代中”,為模型探索更寬泛的空間,以實(shí)現(xiàn)低驗(yàn)證成本的體系結(jié)構(gòu)。以下是關(guān)于這一步的一些提示和技巧:

  • 隨機(jī)網(wǎng)格搜索。為了同時(shí)調(diào)整多個(gè)超參數(shù),使用網(wǎng)格搜索來(lái)確保能夠覆蓋所有設(shè)置參數(shù),這顯然聽(tīng)起來(lái)很誘人,但請(qǐng)記住,最好使用隨機(jī)搜索。直觀地說(shuō),這是因?yàn)樯窠?jīng)網(wǎng)絡(luò)通常對(duì)某些參數(shù)比其他參數(shù)更敏感。在極限情況下,如果一個(gè)參數(shù)很重要但是改變參數(shù)b并沒(méi)有效果。那么你應(yīng)該多次采樣,因?yàn)檫@比簡(jiǎn)單采樣幾個(gè)固定點(diǎn)更好。

  • 超級(jí)參數(shù)優(yōu)化。目前有很多貝葉斯超參數(shù)優(yōu)化工具箱可以供我們參考使用,當(dāng)然,我的一些朋友也有成功使用他們的案例,但我的個(gè)人經(jīng)驗(yàn)是,探索一個(gè)非常好的、應(yīng)用廣泛的模型以及高級(jí)別的訓(xùn)練方法是使用實(shí)習(xí)生:)。哈哈哈…只是開(kāi)玩笑。

6.再“榨”點(diǎn)東西出來(lái)

一旦你找到體系結(jié)構(gòu)和超參數(shù)的最佳方法,你仍然可以使用一些技巧,從系統(tǒng)中提煉出一些精髓和方法:

  • 集合/合并。模型集合是一種非常有保證非常靠譜的方法,可以在任何事情上提升2%的精度。如果你在測(cè)試時(shí)無(wú)法承受計(jì)算的成本,請(qǐng)考慮使用“黑匣子”進(jìn)行整體提升。

  • 自行訓(xùn)練。把模型放在一邊然后讓它自己一直訓(xùn)練。有些人在模型的驗(yàn)證損失幾乎趨于平穩(wěn)時(shí)就直接停止了訓(xùn)練。這是不對(duì)的,根據(jù)我的經(jīng)驗(yàn),模型的網(wǎng)絡(luò)可以長(zhǎng)時(shí)間不間斷地進(jìn)行訓(xùn)練并不斷優(yōu)化提升。有一次我在寒假期間,在訓(xùn)練模型的時(shí)候不小心離開(kāi)了,然后模型自己一直訓(xùn)練,當(dāng)我1月份回來(lái)時(shí),它是SOTA(達(dá)到了最好的狀態(tài))

結(jié)論

一旦你做到了以上所有這些,你會(huì)對(duì)技術(shù),數(shù)據(jù)集和問(wèn)題有更加深刻的理解,因?yàn)槟阋呀?jīng)建立了整個(gè)神經(jīng)網(wǎng)絡(luò)訓(xùn)練的邏輯,并了解了提高準(zhǔn)確性的信心與把握,而且你已經(jīng)探索了越來(lái)越復(fù)雜的模型,模型可以每一步都能按照你預(yù)測(cè)的方法途徑進(jìn)行訓(xùn)練優(yōu)化并且得到相應(yīng)的進(jìn)步。

現(xiàn)在你可以閱讀大量的論文,嘗試大量實(shí)驗(yàn),并獲得你的SOTA結(jié)果。

祝好運(yùn)!

相關(guān)報(bào)道:

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

實(shí)習(xí)/全職編輯記者招聘ing

加入我們,親身體驗(yàn)一家專業(yè)科技媒體采寫(xiě)的每個(gè)細(xì)節(jié),在最有前景的行業(yè),和一群遍布全球最優(yōu)秀的人一起成長(zhǎng)。坐標(biāo)北京·清華東門,在大數(shù)據(jù)文摘主頁(yè)對(duì)話頁(yè)回復(fù)“招聘”了解詳情。簡(jiǎn)歷請(qǐng)直接發(fā)送至zz@bigdatadigest.cn

志愿者介紹

后臺(tái)回復(fù)“志愿者”加入我們

點(diǎn)「在看」的人都變好看了哦

總結(jié)

以上是生活随笔為你收集整理的parallels desktop网络初始化失败_秘籍在手,训练不愁!特斯拉AI负责人Karpathy的超全神经网络训练套路...的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。