mj∼Bernoulli(β),ϵ^=β−1(m⊙ϵ)m_j\sim\mathrm{Bernoulli}(\beta),\quad \hat\epsilon=\beta^{-1}(m\odot\epsilon)
Em[ϵ^j∣ϵ]=ϵj\mathbb E_m[\hat\epsilon_j\mid\epsilon]=\epsilon_j

完整講解與原文對照 / Full explanation and source comparison

動機:Vanilla SAM 太慢

Vanilla SAM 每步需兩次反向傳播(算 ϵ∗\boldsymbol{\epsilon}^* 一次、在 w+ϵ∗\boldsymbol{w}+\boldsymbol{\epsilon}^* 再算一次),計算量是標準 SGD 的約兩倍。Efficient SAM(ESAM) [14] 用兩招把成本降下來:Stochastic Weight Perturbation(SWP) 與 Sharpness-sensitive Data Selection(SDS)。此外,原始 SAM 對權重尺度敏感,Adaptive SAM(ASAM) [26] 則讓 sharpness 量測具尺度不變性。

SWP:隨機子集擾動 — 式 (54)

SWP 不對全部 nn 個權重做擾動,而是每步抽一個隨機二元遮罩 m=[m1,…,mn]⊤\boldsymbol{m}=[m_1,\ldots,m_n]^{\top},其中 mi∼i.i.d.Bernoulli(β)m_i\stackrel{\text{i.i.d.}}{\sim}\mathrm{Bernoulli}(\beta)(以機率 β\beta 選中第 ii 個權重)。用遮罩近似 ϵ∗(w)\boldsymbol{\epsilon}^*(\boldsymbol{w}):

ϵ^(w)≈1β m⊤ϵ∗(w)(54) \widehat{\boldsymbol{\epsilon}}(\boldsymbol{w})\approx \frac{1}{\beta}\,\boldsymbol{m}^{\top}\boldsymbol{\epsilon}^{*}(\boldsymbol{w}) \tag{54}

只對被遮罩選中的權重子集計算擾動,大幅減少內層 max 的計算量。關鍵性質:E[ϵ^(w)i]=E[ϵ∗(w)i]\mathbb{E}[\widehat{\boldsymbol{\epsilon}}(\boldsymbol{w})_i]=\mathbb{E}[\boldsymbol{\epsilon}^*(\boldsymbol{w})_i]——期望上與完整 SAM 一致,因 E[mi]=β\mathbb{E}[m_i]=\beta 且 mim_i 與 ϵ∗\boldsymbol{\epsilon}^* 獨立。

SDS:只對「銳度敏感」樣本做 SAM — 式 (55)

SWP 省的是權重維度;SDS 則省資料維度——不是整個 mini-batch B\mathcal{B} 都走 SAM,而是挑出對 sharpness 更敏感的子集:

B+:={(xi,yi)∈B∣L(w+ϵ∗(w))−L(w)>α}(55) \mathcal{B}^{+}:=\bigl\{(x_i,y_i)\in\mathcal{B}\mid \mathcal{L}(\boldsymbol{w}+\boldsymbol{\epsilon}^{*}(\boldsymbol{w}))-\mathcal{L}(\boldsymbol{w})\gt \alpha\bigr\} \tag{55} B−:={(xi,yi)∈B∣L(w+ϵ∗(w))−L(w)<α} \mathcal{B}^{-}:=\bigl\{(x_i,y_i)\in\mathcal{B}\mid \mathcal{L}(\boldsymbol{w}+\boldsymbol{\epsilon}^{*}(\boldsymbol{w}))-\mathcal{L}(\boldsymbol{w})\lt \alpha\bigr\}

B+\mathcal{B}^{+} 是銳度敏感子集(擾動後損失漲幅超過閾值 α>0\alpha\gt 0);SAM 只對 B+\mathcal{B}^{+} 計算損失與梯度,樣本數更少、每步更快。

Adaptive SAM:尺度不變的 sharpness — 式 (56)–(57)

原始 SAM 用固定半徑 ρ\rho 約束 ∥ϵ∥p≤ρ\|\boldsymbol{\epsilon}\|_p\leq\rho。若把權重乘以可逆矩陣 A\boldsymbol{A} 做 re-scaling,同一解的 sharpness 數值會改變——優化穩定性與泛化可能受影響。ASAM 引入正規化算子 Tw−1T_{\boldsymbol{w}}^{-1},滿足 TAw−1A=Tw−1T_{\boldsymbol{A}\boldsymbol{w}}^{-1}\boldsymbol{A}=T_{\boldsymbol{w}}^{-1}(式 56),改為優化自適應 sharpness:

maximize⁡ϵ: ∥Tw−1ϵ∥p≤ρ L(w+ϵ)−L(w)(57) \underset{\boldsymbol{\epsilon}:\,\|T_{\boldsymbol{w}}^{-1}\boldsymbol{\epsilon}\|_{p}\leq\rho}{\operatorname{maximize}}\ \mathcal{L}(\boldsymbol{w}+\boldsymbol{\epsilon})-\mathcal{L}(\boldsymbol{w}) \tag{57}

約束改成 ∥Tw−1ϵ∥p≤ρ\|T_{\boldsymbol{w}}^{-1}\boldsymbol{\epsilon}\|_p\leq\rho 而非 ∥ϵ∥p≤ρ\|\boldsymbol{\epsilon}\|_p\leq\rho。對 scaled 權重 Aw\boldsymbol{A}\boldsymbol{w} 做變數替換可證:式 (57) 的 sharpness 與權重尺度無關(scale-invariant),而式 (50) 的 regular sharpness 則會隨尺度改變。

三者比較

方法 解決的問題 核心技巧
Vanilla SAM 找平坦極小值 完整 min-max,兩次反傳
ESAM (SWP) 權重維度計算貴 隨機子集擾動,期望不變
ESAM (SDS) 資料維度計算貴 只對 B+\mathcal{B}^{+} 做 SAM
ASAM 權重 re-scaling 敏感 自適應約束 ∥Tw−1ϵ∥p≤ρ\|T_{\boldsymbol{w}}^{-1}\boldsymbol{\epsilon}\|_p\leq\rho

教授祕笈:ESAM 與 ASAM——遮罩與只挑銳樣本

一句話地圖,一個比喻貫通

主線比喻是「驗屋師傅的兩把省力尺:遮罩抽檢、只驗漏水戶」。KP-13 的 Vanilla SAM 每間房子的每面牆都敲兩遍(兩次反向傳播),工時大約是普通 SGD 的兩倍。Efficient SAM(ESAM)請師傅改用兩招偷懶但不偷工:SWP 是隨機遮罩,只敲一部分牆再按比例放大;SDS 是先輕敲一遍,只對「真的漏水」的樣本做完整 SAM。另外,尺如果不管房子實際大小、永遠用同一把 ρ\rho,量出來的銳度會被權重尺度唬弄——Adaptive SAM(ASAM)就是讓尺跟著房子縮放,sharpness 才具尺度不變性。

鷹架式:先直覺,再符號

先講白話:Vanilla SAM 正確但貴;ESAM 用「少敲幾面牆、少驗幾戶」把成本降下來,ASAM 則修正「同一間屋換個單位制、銳度數字就不一樣」的毛病。

為什麼需要它們?權重有 nn 維、一個 mini-batch 有一堆樣本,兩次反傳乘上全維度、全批次,訓練大型網路會痛。SWP 省的是權重維度,SDS 省的是資料維度,ASAM 解的是尺度敏感,三件事不要攪成一鍋。

符號逐個拆(式 54–57)

SWP(Stochastic Weight Perturbation,隨機權重擾動)。每步抽一個二元遮罩 m=(m1,…,mn)⊤\boldsymbol{m}=(m_1,\ldots,m_n)^{\top},每個 mim_i 獨立來自 Bernoulli(β)(\beta)——以機率 β\beta 選中第 ii 個權重去擾動。近似(式 54;分量是逐元相乘,再除以 β\beta 把被丟掉的機率補回來):

ϵ^i(w)≈1β mi ϵi∗(w). \widehat{\epsilon}_{i}(\boldsymbol{w})\approx\frac{1}{\beta}\,m_{i}\,\epsilon^{*}_{i}(\boldsymbol{w}).

關鍵性質:E[mi]=β\mathbb{E}[m_i]=\beta 且 mim_i 與 ϵ∗\boldsymbol{\epsilon}^* 獨立,所以

E[ϵ^i]=1βE[mi] E[ϵi∗]=E[ϵi∗]. \mathbb{E}[\widehat{\epsilon}_{i}]=\frac{1}{\beta}\mathbb{E}[m_i]\,\mathbb{E}[\epsilon^{*}_{i}]=\mathbb{E}[\epsilon^{*}_{i}].

期望上跟完整 SAM 一樣,只是每步只算子集。

SDS(Sharpness-sensitive Data Selection,銳度敏感資料挑選)。不是整個 mini-batch B\mathcal{B} 都走第二次反傳,只留擾動後損失漲太多的樣本(式 55):

B+:={(xi,yi)∈B∣L(w+ϵ∗)−L(w)>α}. \mathcal{B}^{+}:=\bigl\{(x_i,y_i)\in\mathcal{B}\mid \mathcal{L}(\boldsymbol{w}+\boldsymbol{\epsilon}^{*})-\mathcal{L}(\boldsymbol{w})\gt \alpha\bigr\}.

α>0\alpha\gt 0 是閾值;B+\mathcal{B}^{+} 是銳樣本,B−\mathcal{B}^{-} 是漲幅不夠的鈍樣本。SAM 的第二趟損失與梯度只在 B+\mathcal{B}^{+} 上算。

ASAM(Adaptive SAM)。Vanilla 用固定 ∥ϵ∥p≤ρ\|\boldsymbol{\epsilon}\|_p\leq\rho。若把權重用可逆矩陣 A\boldsymbol{A} 做重新縮放,同一個解的銳度數字會變。ASAM 引入正規化算子 Tw−1T_{\boldsymbol{w}}^{-1},滿足 TAw−1A=Tw−1T_{\boldsymbol{A}\boldsymbol{w}}^{-1}\boldsymbol{A}=T_{\boldsymbol{w}}^{-1}(式 56),改優化(式 57):

maximize⁡ϵ: ∥Tw−1ϵ∥p≤ρ L(w+ϵ)−L(w). \underset{\boldsymbol{\epsilon}:\,\|T_{\boldsymbol{w}}^{-1}\boldsymbol{\epsilon}\|_{p}\leq\rho}{\operatorname{maximize}}\ \mathcal{L}(\boldsymbol{w}+\boldsymbol{\epsilon})-\mathcal{L}(\boldsymbol{w}).

約束從「擾動本身的長度」改成「經 Tw−1T_{\boldsymbol{w}}^{-1} 正規化後的長度」,sharpness 對權重尺度不變。

數值真的算一遍:遮罩、銳樣本、尺度尺

接 KP-13 的 ϵ∗=(0.06,0.08,0.10,0.12)\boldsymbol{\epsilon}^{*}=(0.06,0.08,0.10,0.12)(四個權重),取 β=0.5\beta=0.5,這一抽的遮罩 m=(1,0,1,0)\boldsymbol{m}=(1,0,1,0)——只敲第 1、第 3 面牆。SWP 擾動:

ϵ^=10.5 (0.06,  0,  0.10,  0)=(0.12,  0,  0.20,  0). \widehat{\boldsymbol{\epsilon}}=\frac{1}{0.5}\,(0.06,\;0,\;0.10,\;0)=(0.12,\;0,\;0.20,\;0).

被選中的分量乘 22、沒選中的變 00。長期下來,因為選中機率正好是 1/21/2,期望仍回到 (0.06,0.08,0.10,0.12)(0.06,0.08,0.10,0.12)。

同一 mini-batch 四筆樣本,擾動前後損失差與 α=0.10\alpha=0.10:

樣本 L(w+ϵ∗)−L(w)\mathcal{L}(\boldsymbol{w}+\boldsymbol{\epsilon}^{*})-\mathcal{L}(\boldsymbol{w}) 跟 α=0.10\alpha=0.10 比 進不進 B+\mathcal{B}^{+}
1 0.030.03 小於 否(鈍)
2 0.180.18 大於 是(銳)
3 0.070.07 小於 否(鈍)
4 0.250.25 大於 是(銳)

第二次反傳只打 2、4 兩筆,資料成本砍半。師傅的邏輯很生活:漏水的戶才值得做完整驗屋,本來就不漏的敲了也是浪費工。

ASAM 用一維函數看尺度。令 L(w)=(w−2)2\mathcal{L}(w)=(w-2)^{2},在谷底 w=2w=2 處 L=0\mathcal{L}=0。Vanilla 取 ∣ε∣≤ρ=0.1| \varepsilon |\leq\rho=0.1,銳度 =0.12=0.01=0.1^{2}=0.01。把參數改寫成 w~=w/2\tilde{w}=w/2(同一個函數變成 L~(w~)=4(w~−1)2\tilde{\mathcal{L}}(\tilde{w})=4(\tilde{w}-1)^{2}),在對應點 w~=1\tilde{w}=1 再用同一個 ρ=0.1\rho=0.1,銳度變成 4×0.01=0.044\times 0.01=0.04——屋沒變,尺讀數卻跳了四倍。若 Tw=∣w∣T_{w}=|w|,ASAM 允許 ∣ε∣≤ρ∣w∣|\varepsilon|\leq\rho|w|:在 w=2w=2 可擾 0.20.2,銳度 0.040.04;在 w~=1\tilde{w}=1 可擾 0.10.1,銳度也是 0.040.04。尺跟著房子縮,數字才比得了。

懸念與反轉

你大概會覺得:「隨機丟掉一半權重、再丟掉一半樣本,這不就變粗糙了嗎?」反轉在於:SWP 不是亂丟,是無偏抽樣——乘 1/β1/\beta 正是為了讓期望對得上完整 ϵ∗\boldsymbol{\epsilon}^*;SDS 也不是隨機丟資料,是把預算花在「真的尖」的樣本上。真正會讓銳度失真的,反而是你以為最無害的那件事:把權重整體放大縮小。Vanilla 的固定 ρ\rho 球會被尺度愚弄,ASAM 才對症。

舉一反三的出口

把驗屋換成工廠抽檢:一千顆螺絲不必顆顆用扭力板手(Vanilla),可以隨機抽 β\beta 比例再加權還原(SWP),也可以先用聽音篩出「共振異常」的才做全檢(SDS);量測公差還得依螺絲直徑自動調整(ASAM)。換一組數自己算:β=0.25\beta=0.25,ϵ∗=(0.8,0.4)\boldsymbol{\epsilon}^{*}=(0.8,0.4),m=(0,1)\boldsymbol{m}=(0,1),寫出 ϵ^\widehat{\boldsymbol{\epsilon}};並說明為什麼 E[ϵ^2]\mathbb{E}[\widehat{\epsilon}_{2}] 仍應等於 0.40.4。

常見誤解點名

跨知識點掛勾

換句話重述

ESAM 與 ASAM 一句話重講:SWP 用 Bernoulli 遮罩只擾一部分權重並除以 β\beta 保持期望無偏,SDS 只對損失漲幅超過 α\alpha 的銳樣本做 SAM,ASAM 把 ∥ϵ∥≤ρ\|\boldsymbol{\epsilon}\|\leq\rho 改成 ∥Tw−1ϵ∥≤ρ\|T_{\boldsymbol{w}}^{-1}\boldsymbol{\epsilon}\|\leq\rho 讓銳度不隨權重縮放而變——三招分別砍維度成本、砍資料成本、校正尺。

一句收尾口訣

「遮罩抽牆補 1/β1/\beta,銳樣本才驗第二遍;尺要跟著權重縮,否則銳度被尺度騙。」