哈哈哈哈哈操欧洲电影,久草网在线,亚洲久久熟女熟妇视频,麻豆精品色,久久福利在线视频,日韩中文字幕的,淫乱毛视频一区,亚洲成人一二三,中文人妻日韩精品电影

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

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

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

為什么SAM可以實現(xiàn)更好的泛化?如何在Pytorch中實現(xiàn)SAM?

深度學(xué)習(xí)自然語言處理 ? 來源:AI公園 ? 作者:Sean Benhur J ? 2021-04-03 14:48 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

導(dǎo)讀 使用SAM(銳度感知最小化),優(yōu)化到損失的最平坦的最小值的地方,增強(qiáng)泛化能力。

動機(jī)來自先前的工作,在此基礎(chǔ)上,我們提出了一種新的、有效的方法來同時減小損失值和損失的銳度。具體來說,在我們的處理過程中,進(jìn)行銳度感知最小化(SAM),在領(lǐng)域內(nèi)尋找具有均勻的低損失值的參數(shù)。這個公式產(chǎn)生了一個最小-最大優(yōu)化問題,在這個問題上梯度下降可以有效地執(zhí)行。我們提出的實證結(jié)果表明,SAM在各種基準(zhǔn)數(shù)據(jù)集上都改善了的模型泛化。

深度學(xué)習(xí)中,我們使用SGD/Adam等優(yōu)化算法在我們的模型中實現(xiàn)收斂,從而找到全局最小值,即訓(xùn)練數(shù)據(jù)集中損失較低的點。但等幾種研究表明,許多網(wǎng)絡(luò)可以很容易地記住訓(xùn)練數(shù)據(jù)并有能力隨時overfit,為了防止這個問題,增強(qiáng)泛化能力,谷歌研究人員發(fā)表了一篇新論文叫做Sharpness Awareness Minimization,在CIFAR10上以及其他的數(shù)據(jù)集上達(dá)到了最先進(jìn)的結(jié)果。

在本文中,我們將看看為什么SAM可以實現(xiàn)更好的泛化,以及我們?nèi)绾卧赑ytorch中實現(xiàn)SAM。

SAM的原理是什么?

在梯度下降或任何其他優(yōu)化算法中,我們的目標(biāo)是找到一個具有低損失值的參數(shù)。但是,與其他常規(guī)的優(yōu)化方法相比,SAM實現(xiàn)了更好的泛化,它將重點放在領(lǐng)域內(nèi)尋找具有均勻的低損失值的參數(shù)(而不是只有參數(shù)本身具有低損失值)上。

由于計算鄰域參數(shù)而不是計算單個參數(shù),損失超平面比其他優(yōu)化方法更平坦,這反過來增強(qiáng)了模型的泛化。

(左))用SGD訓(xùn)練的ResNet收斂到的一個尖銳的最小值。(右)用SAM訓(xùn)練的相同的ResNet收斂到的一個平坦的最小值。

注意:SAM不是一個新的優(yōu)化器,它與其他常見的優(yōu)化器一起使用,比如SGD/Adam。

在Pytorch中實現(xiàn)SAM

在Pytorch中實現(xiàn)SAM非常簡單和直接

import torch

class SAM(torch.optim.Optimizer):

def __init__(self, params, base_optimizer, rho=0.05, **kwargs):

assert rho 》= 0.0, f“Invalid rho, should be non-negative: {rho}”

defaults = dict(rho=rho, **kwargs)

super(SAM, self).__init__(params, defaults)

self.base_optimizer = base_optimizer(self.param_groups, **kwargs)

self.param_groups = self.base_optimizer.param_groups

@torch.no_grad()

def first_step(self, zero_grad=False):

grad_norm = self._grad_norm()

for group in self.param_groups:

scale = group[“rho”] / (grad_norm + 1e-12)

for p in group[“params”]:

if p.grad is None: continue

e_w = p.grad * scale.to(p)

p.add_(e_w) # climb to the local maximum “w + e(w)”

self.state[p][“e_w”] = e_w

if zero_grad: self.zero_grad()

@torch.no_grad()

def second_step(self, zero_grad=False):

for group in self.param_groups:

for p in group[“params”]:

if p.grad is None: continue

p.sub_(self.state[p][“e_w”]) # get back to “w” from “w + e(w)”

self.base_optimizer.step() # do the actual “sharpness-aware” update

if zero_grad: self.zero_grad()

def _grad_norm(self):

shared_device = self.param_groups[0][“params”][0].device # put everything on the same device, in case of model parallelism

norm = torch.norm(

torch.stack([

p.grad.norm(p=2).to(shared_device)

for group in self.param_groups for p in group[“params”]

if p.grad is not None

]),

p=2

return norm

代碼取自非官方的Pytorch實現(xiàn)。

代碼解釋:

首先,我們從Pytorch繼承優(yōu)化器類來創(chuàng)建一個優(yōu)化器,盡管SAM不是一個新的優(yōu)化器,而是在需要繼承該類的每一步更新梯度(在基礎(chǔ)優(yōu)化器的幫助下)。

該類接受模型參數(shù)、基本優(yōu)化器和rho, rho是計算最大損失的鄰域大小。

在進(jìn)行下一步之前,讓我們先看看文中提到的偽代碼,它將幫助我們在沒有數(shù)學(xué)的情況下理解上述代碼。

bf4472f8-92a2-11eb-8b86-12bb97331649.jpg

正如我們在計算第一次反向傳遞后的偽代碼中看到的,我們計算epsilon并將其添加到參數(shù)中,這些步驟是在上述python代碼的方法first_step中實現(xiàn)的。

現(xiàn)在在計算了第一步之后,我們必須回到之前的權(quán)重來計算基礎(chǔ)優(yōu)化器的實際步驟,這些步驟在函數(shù)second_step中實現(xiàn)。

函數(shù)_grad_norm用于返回矩陣向量的norm,即偽代碼的第10行

在構(gòu)建這個類后,你可以簡單地使用它為你的深度學(xué)習(xí)項目通過以下的訓(xùn)練函數(shù)片段。

from sam import SAM

。。.

model = YourModel()

base_optimizer = torch.optim.SGD # define an optimizer for the “sharpness-aware” update

optimizer = SAM(model.parameters(), base_optimizer, lr=0.1, momentum=0.9)

。。.

for input, output in data:

# first forward-backward pass

loss = loss_function(output, model(input)) # use this loss for any training statistics

loss.backward()

optimizer.first_step(zero_grad=True)

# second forward-backward pass

loss_function(output, model(input)).backward() # make sure to do a full forward pass

optimizer.second_step(zero_grad=True)

。。.

總結(jié)

雖然SAM的泛化效果較好,但是這種方法的主要缺點是,由于前后兩次計算銳度感知梯度,需要花費兩倍的訓(xùn)練時間。除此之外,SAM還在最近發(fā)布的NFNETS上證明了它的效果,這是ImageNet目前的最高水平,在未來,我們可以期待越來越多的論文利用這一技術(shù)來實現(xiàn)更好的泛化。

英文原文:https://pub.towardsai.net/we-dont-need-to-worry-about-overfitting-anymore-9fb31a154c81
編輯:lyn

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

    關(guān)注

    0

    文章

    118

    瀏覽量

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

    關(guān)注

    73

    文章

    5604

    瀏覽量

    124609
  • pytorch
    +關(guān)注

    關(guān)注

    2

    文章

    813

    瀏覽量

    14921

原文標(biāo)題:【過擬合】再也不用擔(dān)心過擬合的問題了

文章出處:【微信號:zenRRan,微信公眾號:深度學(xué)習(xí)自然語言處理】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。

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

掃碼添加小助手

加入工程師交流群

    評論

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

    AT91SAM SAM3N系列ARM閃存MCU技術(shù)解析

    AT91SAM SAM3N系列ARM閃存MCU技術(shù)解析 在當(dāng)今的電子設(shè)計領(lǐng)域,微控制器(MCU)扮演著至關(guān)重要的角色。Atmel的SAM3N系列ARM閃存MCU憑借其高性能、低功耗和豐富的外設(shè)功能
    的頭像 發(fā)表于 04-16 17:00 ?344次閱讀

    Atmel SAM D21 系列微控制器:低功耗與高性能的完美結(jié)合

    Atmel SAM D21 系列微控制器:低功耗與高性能的完美結(jié)合 在電子工程師的日常設(shè)計工作,選擇一款合適的微控制器至關(guān)重要。Atmel | SMART? SAM D21 系列微控制器憑借其出色
    的頭像 發(fā)表于 04-07 16:55 ?401次閱讀

    探索AT91SAM ARM-based Flash MCU SAM3N系列:高性價比32位微控制器的卓越之選

    探索AT91SAM ARM-based Flash MCU SAM3N系列:高性價比32位微控制器的卓越之選 在電子設(shè)計領(lǐng)域,選擇一款合適的微控制器對于項目的成功至關(guān)重要。Atmel的SAM3N系列
    的頭像 發(fā)表于 04-06 14:20 ?666次閱讀

    探索AT91SAM SAM7SE512/256/32:高性能ARM微控制器的卓越之選

    探索AT91SAM SAM7SE512/256/32:高性能ARM微控制器的卓越之選 在嵌入式系統(tǒng)開發(fā)的廣闊領(lǐng)域中,選擇一款合適的微控制器是項目成功的關(guān)鍵。Atmel的SAM7SE系列微控制器
    的頭像 發(fā)表于 04-06 11:05 ?731次閱讀

    深度解析Atmel SAM7S系列ARM微控制器:從特性到應(yīng)用

    應(yīng)用場景展現(xiàn)出卓越的優(yōu)勢。本文將深入剖析SAM7S系列微控制器的特性、架構(gòu)、內(nèi)存管理、系統(tǒng)控制以及外設(shè)功能,為電子工程師在設(shè)計過程中提供全面的參考。 文件下載: AT91SAM
    的頭像 發(fā)表于 04-06 11:05 ?732次閱讀

    Atmel SAM7S系列ARM微控制器深度解析

    Atmel SAM7S系列ARM微控制器深度解析 一、引言 在嵌入式系統(tǒng)的設(shè)計領(lǐng)域,微控制器的選擇至關(guān)重要。Atmel的SAM7S系列ARM微控制器憑借其高性能、低功耗以及豐富的外設(shè)功能,成為眾多
    的頭像 發(fā)表于 04-06 11:05 ?279次閱讀

    深入解析AT91SAM SAM3N系列ARM Flash MCU

    深入解析AT91SAM SAM3N系列ARM Flash MCU 在當(dāng)今的電子設(shè)計領(lǐng)域,微控制器(MCU)扮演著至關(guān)重要的角色。Atmel的SAM3N系列ARM Flash MCU以其高性能、低功耗
    的頭像 發(fā)表于 03-31 17:05 ?339次閱讀

    深入解析SAM7SE512/256/32:強(qiáng)大的ARM微控制器

    深入解析SAM7SE512/256/32:強(qiáng)大的ARM微控制器 在嵌入式系統(tǒng)開發(fā)領(lǐng)域,一款性能卓越、功能豐富的微控制器往往能為項目帶來極大的便利和優(yōu)勢。Atmel的SAM7SE512/256
    的頭像 發(fā)表于 03-30 12:05 ?238次閱讀

    深入解析Atmel SAM3S系列Flash微控制器

    深入解析Atmel SAM3S系列Flash微控制器 在當(dāng)今電子技術(shù)飛速發(fā)展的時代,微控制器作為電子設(shè)備的核心大腦,其性能和功能直接影響著產(chǎn)品的質(zhì)量和競爭力。Atmel的SAM3S系列Flash
    的頭像 發(fā)表于 03-25 11:35 ?207次閱讀

    PyTorch RuntimeError分析

    原生實現(xiàn)。這是一個已知的 PyTorch 限制,常見于 Stable Diffusion、ComfyUI 等使用 interpolate(..., mode=\'nearest\') 的模型
    發(fā)表于 03-06 06:02

    Atmel SAM C20系列微控制器:工業(yè)自動的理想之選

    Atmel SAM C20系列微控制器:工業(yè)自動的理想之選 在工業(yè)自動、家電及其他5V應(yīng)用領(lǐng)域,微控制器的性能和功能至關(guān)重要。Atmel推出的SAM C20系列微控制器,憑借其強(qiáng)大
    的頭像 發(fā)表于 02-26 15:50 ?219次閱讀

    SAM(通用圖像分割基礎(chǔ)模型)丨基于BM1684X模型部署指南

    前言SAM是Meta提出的一個分割一切的提示型模型,其在1100萬張圖像上訓(xùn)練了超過10億個掩碼,實現(xiàn)了強(qiáng)大的零樣本,突破了分割界限。本例程對S
    的頭像 發(fā)表于 01-12 16:17 ?479次閱讀
    <b class='flag-5'>SAM</b>(通用圖像分割基礎(chǔ)模型)丨基于BM1684X模型部署指南

    ?SAM G55音頻開發(fā)板技術(shù)解析與應(yīng)用指南

    Microchip Technology SAM G55音頻Curiosity開發(fā)板(EV78Y10A)是一款用于基于SAM G55微控制器的音頻應(yīng)用的演示和開發(fā)平臺。SAM G55 MCU是高性能
    的頭像 發(fā)表于 10-13 15:11 ?758次閱讀
    ?<b class='flag-5'>SAM</b> G55音頻開發(fā)板技術(shù)解析與應(yīng)用指南

    橢偏儀與DIC系統(tǒng)聯(lián)用測量半導(dǎo)體超薄圖案SAM薄膜厚度與折射率

    高對比度圖像指導(dǎo)測量位置,結(jié)合改進(jìn)的橢偏分析模型,實現(xiàn)對圖案SAM薄膜厚度與折射率的高精度無損表征。費曼儀器薄膜厚度測量技術(shù)貫穿于材料研發(fā)、生產(chǎn)監(jiān)控到終端應(yīng)用的全流程
    的頭像 發(fā)表于 08-11 18:02 ?989次閱讀
    橢偏儀與DIC系統(tǒng)聯(lián)用測量半導(dǎo)體超薄圖案<b class='flag-5'>化</b><b class='flag-5'>SAM</b>薄膜厚度與折射率

    超聲波T-SAM與C-SAM模式的區(qū)別

    本文介紹了超聲波的T-SAM與C-SAM兩種模式的區(qū)別。
    的頭像 發(fā)表于 05-21 15:26 ?1837次閱讀
    超聲波T-<b class='flag-5'>SAM</b>與C-<b class='flag-5'>SAM</b>模式的區(qū)別
    勃利县| 绥中县| 当阳市| 宜宾市| 沙坪坝区| 江口县| 沙坪坝区| 淮滨县| 高邮市| 台北市| 邻水| 彭泽县| 津南区| 红河县| 西峡县| 襄汾县| 筠连县| 尚志市| 名山县| 通河县| 会泽县| 集贤县| 彝良县| 永丰县| 昌平区| 沂水县| 昭苏县| 望江县| 清镇市| 保定市| 济南市| 大方县| 金湖县| 马龙县| 河间市| 上蔡县| 福贡县| 乡宁县| 上饶县| 平武县| 乐都县|