chinese直男口爆体育生外卖, 99久久er热在这里只有精品99, 又色又爽又黄18禁美女裸身无遮挡, gogogo高清免费观看日本电视,私密按摩师高清版在线,人妻视频毛茸茸,91论坛 兴趣闲谈,欧美 亚洲 精品 8区,国产精品久久久久精品免费

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

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

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

機(jī)器學(xué)習(xí)模型切實(shí)可行的優(yōu)化步驟

汽車玩家 ? 來源:AI公園 ? 作者:Cecelia Shao ? 2020-05-04 12:08 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

導(dǎo)讀

這篇文章提供了可以采取的切實(shí)可行的步驟來識(shí)別和修復(fù)機(jī)器學(xué)習(xí)模型的訓(xùn)練、泛化和優(yōu)化問題。

眾所周知,調(diào)試機(jī)器學(xué)習(xí)代碼非常困難。即使對于簡單的前饋神經(jīng)網(wǎng)絡(luò)也是這樣,你經(jīng)常會(huì)在網(wǎng)絡(luò)體系結(jié)構(gòu)做出一些決定,重初始化和網(wǎng)絡(luò)優(yōu)化——所有這些會(huì)都導(dǎo)致在你的機(jī)器學(xué)習(xí)代碼中出現(xiàn)bug。

正如Chase Roberts在一篇關(guān)于“How to unit test machine learning code”的優(yōu)秀文章中所寫的,他遇到的麻煩來自于常見的陷阱:

代碼不會(huì)崩潰,不會(huì)引發(fā)異常,甚至不會(huì)變慢。

訓(xùn)練網(wǎng)絡(luò)仍在運(yùn)行,損失仍將下降。

幾個(gè)小時(shí)后,數(shù)值收斂了,但結(jié)果很差

那么我們該怎么做呢?

本文將提供一個(gè)框架來幫助你調(diào)試神經(jīng)網(wǎng)絡(luò):

從最簡單的開始

確認(rèn)你的損失

檢查中間輸出和連接

對參數(shù)進(jìn)行診斷

跟蹤你的工作

請隨意跳轉(zhuǎn)到特定的部分或通讀下面的內(nèi)容!請注意:我們不包括數(shù)據(jù)預(yù)處理或特定的模型算法選擇。對于這些主題,網(wǎng)上有很多很好的資源。

1. 從最簡單的開始

一個(gè)具有復(fù)雜結(jié)構(gòu)和正則化以及學(xué)習(xí)率調(diào)度程序的神經(jīng)網(wǎng)絡(luò)將比一個(gè)簡單的網(wǎng)絡(luò)更難調(diào)試。我們在第一點(diǎn)上有點(diǎn)欺騙性,因?yàn)樗c調(diào)試你已經(jīng)構(gòu)建的網(wǎng)絡(luò)沒有什么關(guān)系,但是它仍然是一個(gè)重要的建議!

從最簡單的開始:

首先建立一個(gè)更簡單的模型

在單個(gè)數(shù)據(jù)點(diǎn)上訓(xùn)練模型

首先,構(gòu)建一個(gè)更簡單的模型

首先,構(gòu)建一個(gè)只有一個(gè)隱藏層的小型網(wǎng)絡(luò),并驗(yàn)證一切正常。然后逐步增加模型的復(fù)雜性,同時(shí)檢查模型結(jié)構(gòu)的每個(gè)方面(附加層、參數(shù)等),然后再繼續(xù)。

在單個(gè)數(shù)據(jù)點(diǎn)上訓(xùn)練模型

作為一個(gè)快速的完整性檢查,你可以使用一兩個(gè)訓(xùn)練數(shù)據(jù)點(diǎn)來確認(rèn)你的模型是否能夠過擬合。神經(jīng)網(wǎng)絡(luò)應(yīng)該立即過擬合,訓(xùn)練精度為100%,驗(yàn)證精度與你的模型隨機(jī)猜測相匹配。如果你的模型不能對這些數(shù)據(jù)點(diǎn)進(jìn)行過擬合,那么要么是它太小,要么就是存在bug。

即使你已經(jīng)驗(yàn)證了模型是有效的,在繼續(xù)之前也可以嘗試訓(xùn)練一個(gè)(或幾個(gè))epochs。

2. 確認(rèn)你的損失

你的模型的損失是評估你的模型性能的主要方法,也是模型評估的重要參數(shù),所以你要確保:

損失適合于任務(wù)(對于多分類問題使用類別交叉熵?fù)p失或使用focal loss來解決類不平衡)

你的損失函數(shù)在以正確的尺度進(jìn)行測量。如果你的網(wǎng)絡(luò)中使用了不止一種類型的損失,例如MSE、adversarial、L1、feature loss,那么請確保所有損失都按正確的順序進(jìn)行了縮放

注意,你最初的損失也很重要。如果模型一開始就隨機(jī)猜測,檢查初始損失是否接近預(yù)期損失。在Stanford CS231n coursework中,Andrej Karpathy提出了以下建議:

在隨機(jī)表現(xiàn)上尋找正確的損失。確保在初始化小參數(shù)時(shí)得到預(yù)期的損失。最好先單獨(dú)檢查數(shù)據(jù)的loss(將正則化強(qiáng)度設(shè)置為零)。例如,對于使用Softmax分類器的CIFAR-10,我們期望初始損失為2.302,因?yàn)槲覀兤谕總€(gè)類的隨機(jī)概率為0.1(因?yàn)橛?0個(gè)類),而Softmax損失是正確類的負(fù)對數(shù)概率,因此:-ln(0.1) = 2.302。

對于二分類的例子,只需對每個(gè)類執(zhí)行類似的計(jì)算。假設(shè)數(shù)據(jù)是20%的0和80%的1。預(yù)期的初始損失是- 0.2ln(0.5) - 0.8ln(0.5) = 0.693147。如果你的初始損失比1大得多,這可能表明你的神經(jīng)網(wǎng)絡(luò)權(quán)重不平衡(即初始化很差)或者你的數(shù)據(jù)沒有標(biāo)準(zhǔn)化。

3. 檢查內(nèi)部的輸出和連接

要調(diào)試神經(jīng)網(wǎng)絡(luò),通常了解神經(jīng)網(wǎng)絡(luò)內(nèi)部的動(dòng)態(tài)以及各個(gè)中間層所起的作用以及這些中間層之間如何連接是很有用的。你可能會(huì)遇到以下錯(cuò)誤:

梯度更新的表達(dá)式不正確

權(quán)重更新沒有應(yīng)用

梯度消失或爆炸

如果梯度值為零,這可能意味著優(yōu)化器中的學(xué)習(xí)率可能太小,或者你遇到了上面的錯(cuò)誤#1,其中包含梯度更新的不正確的表達(dá)式。

除了查看梯度更新的絕對值之外,還要確保監(jiān)視激活的大小、權(quán)重的大小和每個(gè)層的更新相匹配。例如,參數(shù)更新的大小(權(quán)重和偏差)應(yīng)該是1-e3。

有一種現(xiàn)象叫做“死亡的ReLU”或“梯度消失問題”,ReLU神經(jīng)元在學(xué)習(xí)了一個(gè)表示權(quán)重的大的負(fù)偏置項(xiàng)后,會(huì)輸出一個(gè)零。這些神經(jīng)元再也不會(huì)在任何數(shù)據(jù)點(diǎn)上被激活。

你可以使用梯度檢查來檢查這些錯(cuò)誤,通過使用數(shù)值方法來近似梯度。如果它接近計(jì)算的梯度,則正確地實(shí)現(xiàn)了反向傳播。

Faizan Shaikh描述了可視化神經(jīng)網(wǎng)絡(luò)的三種主要方法:

初步方法- 向我們展示訓(xùn)練模型整體結(jié)構(gòu)的簡單方法。這些方法包括打印出神經(jīng)網(wǎng)絡(luò)各層的形狀或濾波器以及各層的參數(shù)。

基于激活的方法- 在這些方法中,我們解碼單個(gè)神經(jīng)元或一組神經(jīng)元的激活情況,以直觀地了解它們在做什么

基于梯度的方法- 這些方法傾向于在訓(xùn)練模型時(shí)操作由前向和后向傳遞形成的梯度(包括顯著性映射和類激活映射)。

有許多有用的工具可以可視化單個(gè)層的激活和連接,比如ConX和Tensorboard。

使用ConX生成的動(dòng)態(tài)呈現(xiàn)可視化示例

4. 參數(shù)診斷

神經(jīng)網(wǎng)絡(luò)有大量的參數(shù)相互作用,使得優(yōu)化變得困難。請注意,這是一個(gè)活躍的研究領(lǐng)域,所以下面的建議只是簡單的出發(fā)點(diǎn)。

Batch size- 你希望batch size足夠大,能夠準(zhǔn)確地估計(jì)錯(cuò)誤梯度,但又足夠小,以便小批隨機(jī)梯度下降(SGD)能夠使你的網(wǎng)絡(luò)歸一化。小的batch size將導(dǎo)致學(xué)習(xí)過程以訓(xùn)練過程中的噪聲為代價(jià)快速收斂,并可能導(dǎo)致優(yōu)化困難。論文On Large-Batch Training for Deep Learning: Generalization Gap and Sharp Minima描述了:

在實(shí)踐中已經(jīng)觀察到,當(dāng)使用一個(gè)較大的batch size時(shí),模型的質(zhì)量會(huì)下降,這可以通過它的泛化能力來衡量。我們研究了在大批量情況下泛化下降的原因,并給出了支持large-batch方法趨向于收斂于訓(xùn)練和測試函數(shù)的sharp的極小值這一觀點(diǎn)的數(shù)值證據(jù)——眾所周知,sharp的極小值導(dǎo)致較差的泛化。相比之下,小batch size的方法始終收斂于平坦的最小值,我們的實(shí)驗(yàn)支持一個(gè)普遍的觀點(diǎn),即這是由于梯度估計(jì)中的固有噪聲造成的。

學(xué)習(xí)速率- 學(xué)習(xí)率過低將導(dǎo)致收斂速度慢或陷入局部最小值的風(fēng)險(xiǎn),而學(xué)習(xí)速率過大導(dǎo)致優(yōu)化分歧,因?yàn)槟阌刑^損失函數(shù)的更深但是更窄部分的風(fēng)險(xiǎn)??紤]將學(xué)習(xí)率策略也納入其中,以隨著訓(xùn)練的進(jìn)展降低學(xué)習(xí)率。CS231n課程有一大部分是關(guān)于實(shí)現(xiàn)退火學(xué)習(xí)率的不同技術(shù)。

梯度裁剪- 在反向傳播期間的通過最大值或最大范數(shù)對梯度進(jìn)行裁剪。對于處理可能在上面的步驟3中遇到的任何梯度爆炸非常有用。

Batch normalization- Batch normalization用于對每一層的輸入進(jìn)行歸一化,以解決內(nèi)部協(xié)變量移位問題。如果你同時(shí)使用Dropout和Batch Norm,請確保在Dropout上閱讀下面的要點(diǎn)。

本文來自Dishank Bansal的”TensorFlow中batch norm的陷阱和訓(xùn)練網(wǎng)絡(luò)的健康檢查“,里面包括了很多使用batch norm的常見錯(cuò)誤。

隨機(jī)梯度下降(SGD)- 有幾種使用動(dòng)量,自適應(yīng)學(xué)習(xí)率的SGD,和Nesterov相比并沒有訓(xùn)練和泛化性能上的優(yōu)勝者。一個(gè)推薦的起點(diǎn)是Adam或使用Nesterov動(dòng)量的純SGD。

正則化- 正則化對于構(gòu)建可泛化模型至關(guān)重要,因?yàn)樗黾恿四P蛷?fù)雜度或極端參數(shù)值的代價(jià)。它顯著降低了模型的方差,而沒有顯著增加其偏差。如CS231n課程所述:

通常情況下,損失函數(shù)是數(shù)據(jù)損失和正則化損失的總和(例如L2對權(quán)重的懲罰)。需要注意的一個(gè)危險(xiǎn)是正則化損失可能會(huì)超過數(shù)據(jù)損失,在這種情況下,梯度將主要來自正則化項(xiàng)(它通常有一個(gè)簡單得多的梯度表達(dá)式)。這可能會(huì)掩蓋數(shù)據(jù)損失的梯度的不正確實(shí)現(xiàn)。

為了檢查這個(gè)問題,應(yīng)該關(guān)閉正則化并獨(dú)立檢查數(shù)據(jù)損失的梯度。

Dropout- Dropout是另一種正則化你的網(wǎng)絡(luò),防止過擬合的技術(shù)。在訓(xùn)練過程中,只有保持神經(jīng)元以一定的概率p(超參數(shù))活動(dòng),否則將其設(shè)置為零。因此,網(wǎng)絡(luò)必須在每個(gè)訓(xùn)練批中使用不同的參數(shù)子集,這減少了特定參數(shù)的變化成為主導(dǎo)。

這里需要注意的是:如果您同時(shí)使用dropout和批處理規(guī)范化(batch norm),那么要注意這些操作的順序,甚至要同時(shí)使用它們。這仍然是一個(gè)活躍的研究領(lǐng)域,但你可以看到最新的討論:

來自Stackoverflow的用戶MiloMinderBinder:Dropout是為了完全阻斷某些神經(jīng)元的信息,以確保神經(jīng)元不相互適應(yīng)。因此,batch norm必須在dropout之后進(jìn)行,否則你將通過標(biāo)準(zhǔn)化統(tǒng)計(jì)之后的數(shù)據(jù)傳遞信息。”

來自arXiv:Understanding the Disharmony between Dropout and Batch Normalization by Variance Shift — 從理論上講,我們發(fā)現(xiàn),當(dāng)我們將網(wǎng)絡(luò)狀態(tài)從訓(xùn)練狀態(tài)轉(zhuǎn)移到測試狀態(tài)時(shí),Dropout會(huì)改變特定神經(jīng)單元的方差。但是BN在測試階段會(huì)保持其統(tǒng)計(jì)方差,這是在整個(gè)學(xué)習(xí)過程中積累的。當(dāng)在BN之前的使用Dropout時(shí),該方差的不一致性(我們將此方案命名為“方差漂移”)導(dǎo)致不穩(wěn)定的推斷數(shù)值行為,最終導(dǎo)致更多的錯(cuò)誤預(yù)測。

5. 跟蹤你的網(wǎng)絡(luò)

你很容易忽視記錄實(shí)驗(yàn)的重要性,直到你忘記你使用的學(xué)習(xí)率或分類權(quán)重。通過更好的跟蹤,你可以輕松地回顧和重現(xiàn)以前的實(shí)驗(yàn),以減少重復(fù)的工作(也就是說,遇到相同的錯(cuò)誤)。

然而,手工記錄信息對于多個(gè)實(shí)驗(yàn)來說是很困難的。工具如Comet.ml可以幫助自動(dòng)跟蹤數(shù)據(jù)集、代碼更改、實(shí)驗(yàn)歷史和生產(chǎn)模型(這包括關(guān)于模型的關(guān)鍵信息,如超參數(shù)、模型性能指標(biāo)和環(huán)境細(xì)節(jié))。

你的神經(jīng)網(wǎng)絡(luò)對數(shù)據(jù)、參數(shù)甚至版本中的細(xì)微變化都非常敏感,這會(huì)導(dǎo)致模型性能的下降。跟蹤你的工作是開始標(biāo)準(zhǔn)化你的環(huán)境和建模工作流的第一步。

機(jī)器學(xué)習(xí)模型切實(shí)可行的優(yōu)化步驟

快速回顧

我們希望這篇文章為調(diào)試神經(jīng)網(wǎng)絡(luò)提供了一個(gè)堅(jiān)實(shí)的起點(diǎn)。要總結(jié)要點(diǎn),你應(yīng)該:

從簡單的開始— 先建立一個(gè)更簡單的模型,然后通過對幾個(gè)數(shù)據(jù)點(diǎn)的訓(xùn)練進(jìn)行測試

確認(rèn)您的損失— 檢查是否使用正確的損失,并檢查初始損失

檢查中間輸出和連接— 使用梯度檢查和可視化檢查看圖層是否正確連接,以及梯度是否如預(yù)期的那樣更新

診斷參數(shù)— 從SGD到學(xué)習(xí)率,確定正確的組合(或找出錯(cuò)誤的)

跟蹤您的工作— 作為基線,跟蹤你的實(shí)驗(yàn)過程和關(guān)鍵的建模組件

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

掃碼添加小助手

加入工程師交流群

    評論

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

    芯行紀(jì)機(jī)器學(xué)習(xí)優(yōu)化工具AmazeME-Place簡介

    布局(Placement)是芯片后端設(shè)計(jì)中最需要全局視角的步驟,它前置約束所有后續(xù)環(huán)節(jié),直接決定了PPAC(Performance、Power、Area、Congestion)各項(xiàng)指標(biāo)趨勢和設(shè)計(jì)目標(biāo)實(shí)現(xiàn)的可行性。
    的頭像 發(fā)表于 08-13 14:11 ?3104次閱讀
    芯行紀(jì)<b class='flag-5'>機(jī)器</b><b class='flag-5'>學(xué)習(xí)</b><b class='flag-5'>優(yōu)化</b>工具AmazeME-Place簡介

    超小型Neuton機(jī)器學(xué)習(xí)模型, 在任何系統(tǒng)級芯片(SoC)上解鎖邊緣人工智能應(yīng)用.

    Neuton 是一家邊緣AI 公司,致力于讓機(jī)器 學(xué)習(xí)模型更易于使用。它創(chuàng)建的模型比競爭對手的框架小10 倍,速度也快10 倍,甚至可以在最先進(jìn)的邊緣設(shè)備上進(jìn)行人工智能處理。在這篇博文
    發(fā)表于 07-31 11:38

    FPGA在機(jī)器學(xué)習(xí)中的具體應(yīng)用

    隨著機(jī)器學(xué)習(xí)和人工智能技術(shù)的迅猛發(fā)展,傳統(tǒng)的中央處理單元(CPU)和圖形處理單元(GPU)已經(jīng)無法滿足高效處理大規(guī)模數(shù)據(jù)和復(fù)雜模型的需求。FPGA(現(xiàn)場可編程門陣列)作為一種靈活且高效的硬件加速平臺(tái)
    的頭像 發(fā)表于 07-16 15:34 ?2640次閱讀

    模型在半導(dǎo)體行業(yè)的應(yīng)用可行性分析

    的應(yīng)用,比如使用機(jī)器學(xué)習(xí)分析數(shù)據(jù),提升良率。 這一些大模型是否真的有幫助 能夠在解決工程師的知識(shí)斷層問題 本人純小白,不知道如何涉足這方面 應(yīng)該問什么大模型比較好,或者是看什么視頻能夠
    發(fā)表于 06-24 15:10

    Vgg16模型無法使用模型優(yōu)化器重塑怎么解決?

    Vgg16 模型無法使用模型優(yōu)化器重塑。
    發(fā)表于 03-06 06:29

    使用OpenVINO?進(jìn)行優(yōu)化后,為什么DETR模型在不同的硬件上測試時(shí)顯示不同的結(jié)果?

    通過模型優(yōu)化優(yōu)化了 DETR 模型。 在 SPR 計(jì)算機(jī)上使用優(yōu)化模型(DETR
    發(fā)表于 03-05 10:27

    使用各種TensorFlow模型運(yùn)行模型優(yōu)化器時(shí)遇到錯(cuò)誤非法指令怎么解決?

    使用各種 TensorFlow 模型運(yùn)行模型優(yōu)化器時(shí)遇到 [i]錯(cuò)誤非法指令
    發(fā)表于 03-05 09:56

    機(jī)器學(xué)習(xí)模型市場前景如何

    當(dāng)今,隨著算法的不斷優(yōu)化、數(shù)據(jù)量的爆炸式增長以及計(jì)算能力的飛速提升,機(jī)器學(xué)習(xí)模型的市場前景愈發(fā)廣闊。下面,AI部落小編將探討機(jī)器
    的頭像 發(fā)表于 02-13 09:39 ?627次閱讀

    如何優(yōu)化BP神經(jīng)網(wǎng)絡(luò)的學(xué)習(xí)

    優(yōu)化BP神經(jīng)網(wǎng)絡(luò)的學(xué)習(xí)率是提高模型訓(xùn)練效率和性能的關(guān)鍵步驟。以下是一些優(yōu)化BP神經(jīng)網(wǎng)絡(luò)學(xué)習(xí)率的方
    的頭像 發(fā)表于 02-12 15:51 ?1447次閱讀

    帶通濾波器的設(shè)計(jì)步驟優(yōu)化方法

    帶通濾波器作為信號(hào)處理領(lǐng)域的重要組件,其設(shè)計(jì)步驟優(yōu)化方法對于確保濾波器性能滿足特定應(yīng)用需求至關(guān)重要。本文將詳細(xì)闡述帶通濾波器的設(shè)計(jì)步驟,并深入探討優(yōu)化方法,以期為相關(guān)領(lǐng)域的研究者和工
    的頭像 發(fā)表于 02-05 16:48 ?2972次閱讀

    【「基于大模型的RAG應(yīng)用開發(fā)與優(yōu)化」閱讀體驗(yàn)】+Embedding技術(shù)解讀

    今天學(xué)習(xí)模型RAG 檢索增強(qiáng)生成技術(shù)Embedding,即嵌入,是一種將離散數(shù)據(jù)(如文字、圖像、音頻等)轉(zhuǎn)換為連續(xù)的密集向量表示的技術(shù)。這些向量能夠反映原始數(shù)據(jù)之間的關(guān)系,使得計(jì)算機(jī)能夠更好地處
    發(fā)表于 01-17 19:53

    【「基于大模型的RAG應(yīng)用開發(fā)與優(yōu)化」閱讀體驗(yàn)】+大模型微調(diào)技術(shù)解讀

    今天學(xué)習(xí)<基于大模型的RAG應(yīng)用開發(fā)與優(yōu)化>這本書。大模型微調(diào)是深度學(xué)習(xí)領(lǐng)域中的一項(xiàng)關(guān)鍵技術(shù),它指的是在已經(jīng)預(yù)訓(xùn)練好的大型深度
    發(fā)表于 01-14 16:51

    Triton編譯器在機(jī)器學(xué)習(xí)中的應(yīng)用

    1. Triton編譯器概述 Triton編譯器是NVIDIA Triton推理服務(wù)平臺(tái)的一部分,它負(fù)責(zé)將深度學(xué)習(xí)模型轉(zhuǎn)換為優(yōu)化的格式,以便在NVIDIA GPU上高效運(yùn)行。Triton編譯器支持
    的頭像 發(fā)表于 12-24 18:13 ?1639次閱讀

    《具身智能機(jī)器人系統(tǒng)》第7-9章閱讀心得之具身智能機(jī)器人與大模型

    醫(yī)療領(lǐng)域,手術(shù)輔助機(jī)器人需要毫米級的精確控制,書中有介紹基于視覺伺服的實(shí)時(shí)控制算法,以及如何利用大模型優(yōu)化手術(shù)路徑規(guī)劃。工業(yè)場景中,協(xié)作機(jī)器人面臨的主要挑戰(zhàn)是快速適應(yīng)新工藝流程。具身智
    發(fā)表于 12-24 15:03

    AI大語言模型開發(fā)步驟

    開發(fā)一個(gè)高效、準(zhǔn)確的大語言模型是一個(gè)復(fù)雜且多階段的過程,涉及數(shù)據(jù)收集與預(yù)處理、模型架構(gòu)設(shè)計(jì)、訓(xùn)練與優(yōu)化、評估與調(diào)試等多個(gè)環(huán)節(jié)。接下來,AI部落小編為大家詳細(xì)闡述AI大語言模型的開發(fā)
    的頭像 發(fā)表于 12-19 11:29 ?1226次閱讀