NEWSIO+ 教育系列01 自己訓練一個 AI02 從照片還原 3D03 深度學習
主線 B · 模組 B5動手做 // 四個實驗台

泛化
工具箱

模型背答案時,有哪幾種方法逼它學「規則」?

把 training loss 壓到接近 0 不難,夠大的模型幾乎都做得到。難的是:loss 一樣是 0 的解有很多個,有的只是把訓練資料背起來,換一批新資料就錯。這個模組是一個工具箱:處罰太大的權重、訓練時隨機關掉神經元、把「哪些變化不該改答案」寫進資料、在剛好的時候停下來、借用別人已經學好的特徵。每一種工具說的都是同一句話:別想得太複雜。

SEC.01 / WEIGHT PENALTY

背太多細節:把權重拉小

下面 12 個橘點是從一條平滑的曲線抽出來、再加上雜訊。多項式的次數越高,曲線越能彎來彎去穿過每一個點,train error 可以變成 0,但它穿過的是雜訊。藍色空心點是模型沒看過的 held-out 資料,用來量「換一批資料還準不準」。L2 regularization 在 loss 後面加一項 λ‖w‖²:權重越大罰越多。把 λ 從 0 往右拉,看曲線怎麼變平。

PROBE A / 多項式與 L2動手做 // 拉次數和 λ

每一項的權重 長條高度是相對大小

train error(12 個訓練點的平均平方誤差)0
held-out error(40 個沒看過的點)0
權重大小 ‖w‖0
剛好等於 0 的權重0
計算中
三件事值得試。(1)次數 11、λ = 0:12 個參數剛好穿過 12 個點,train error 是 0,held-out error 卻很大,這就是 overfitting。(2)同樣 11 次,λ 拉到 0.1 到 1:train error 變大一點,held-out error 掉到接近雜訊本身的大小。講義對 regularization 的定義就是這樣:用一點 training error 換 generalization error。(3)λ 拉到最大:曲線被壓平,兩個 error 都高,這是 underfitting。最後把懲罰換成 L1,看下面的長條圖:很多權重變成剛好 0。曲線、雜訊、點數都是示意;擬合是真的在解最小平方(內部用 Legendre 多項式當基底讓數字穩定,λ = 0 時補一個 10⁻⁹ 讓方程式有解)。
train error 0 不是目標12 個點、12 個參數,一定穿得過去。穿過的那條線背下了雜訊,換一批資料就錯。
λ 是一個旋鈕,不是越大越好太小等於沒加,太大模型被壓到什麼都學不到。它是超參數,要靠 validation 挑。
L2 讓權重分散,L1 讓權重變 0L2 偏好「每個輸入都用一點」;L1 偏好「只留幾個,其他關掉」,等於自動挑特徵。
細看 · 四個層次、L1 與 L2、λ 怎麼挑

定義:講義的說法是「對學習演算法做的修改,目的是降低 generalization error,而不是 training error,通常代價是 training error 變高」。另一種說法:加上一些刻意「不幫忙擬合訓練集」的限制。過參數化的模型有很多 training loss 接近 0 的解,regularization 幫你在裡面挑比較平滑的那個。

Regularization 可以作用在 4 個層次(講義第 3 頁):

  • 參數層級:weight decay(L2 regularization、AdamW)、L1 regularization。
  • 結構層級:訓練時往模型裡加隨機性。Dropout、Stochastic Depth / DropPath / LayerDrop、R-Drop(同一個輸入做兩次 dropout forward,讓兩次輸出的 KL 差距變小,NLP 常見)、Batch Norm。
  • Data / Target 層級:data augmentation、label smoothing。
  • 最佳化層級:early stop、SAM(Sharpness-Aware Minimization,找「周圍 loss 都低」的平坦區,每步要多算一次梯度)、SWA(Stochastic Weight Averaging)。
L2:L = Ldata + (λ/2)‖w‖² → 梯度多一項 λw → w ← (1 − ηλ)w − η∇Ldata 每一步先把權重縮一點,所以叫 weight decay
L1:L = Ldata + λ Σ|w| → 梯度多一項 λ·sign(w) 不管權重多小,每一步都推固定的量,推到 0 就停在 0

L2 在整個訓練過程做了什麼:講義用二次近似(Hessian 的特徵分解)說明。沿著「對降低 loss 很有貢獻」的方向(特徵值遠大於懲罰強度),權重幾乎不動;沿著「沒什麼貢獻」的方向(特徵值遠小於懲罰強度),權重被持續衰減掉。所以 L2 是有選擇地縮小不重要的方向,不是把所有權重均勻縮小。直觀上它重罰「集中在少數幾維的尖峰型權重」,偏好「分散的權重」。

L1 的結果是稀疏:同樣的分析會發現,最佳解裡有更多分量剛好等於 0。這相當於一種隱式的特徵選擇。Probe A 切到 L1 就看得到。

AdamW:Adam 加 L2 penalty 和「把 weight decay 跟梯度更新分開」(decoupled weight decay)不是同一件事,後者實務上比較穩(A3 講過 AdamW)。講義的用法:bias 和 normalization 的參數不做 decay,其他層設 0.01 到 0.1,依模型和資料量調;太大會欠擬合。

Label smoothing:把 one-hot 標籤變得稍軟,例如正確類 0.9、其他類平分 0.1。降低過度自信、改善校準;代價是會削弱知識蒸餾的效果。ImageNet 上常見設定是 K = 1000 類、ε = 0.1(講義 3-3 附錄)。

λ 怎麼挑:cross-validation,由粗到細(講義 3-3 附錄)。第一階段每組參數只跑幾個 epoch,大略看哪個範圍可行;第二階段跑久一點、搜細一點,必要時重複。小技巧:cost 一旦超過原本的 3 倍,就提早中斷這一組。最值得調的是網路架構(容量)、learning rate(講義說最重要,含 decay schedule 和 update type)、regularization 強度(L2、dropout)。

Grid search vs random search:講義的建議是實務上用 random search,而且在 log 空間取樣(像 Probe A 的 λ 是 0.0001、0.001、0.01 這樣跳)。理由:通常只有少數幾個超參數真正重要,grid 在重要的那一維只試到幾個值,random 每一次都試到不同的值。資源少就一次跑一個模型、依序搜尋;資源多就平行跑很多個。

SEC.02 / DROPOUT

隨機關掉一部分神經元

每一次 forward,隨機把一部分神經元的輸出設成 0,關掉的機率 p 是超參數,講義說 0.5 很常見。網路不能依賴任何一個神經元,因為它隨時可能不在,講義叫這個「抑制 co-adaptation」(神經元彼此依賴)。只在訓練時這樣做,推論時全部打開。問題來了:推論時打開的神經元比訓練時多,輸出不會變大嗎?

PROBE B / 一層 16 個神經元動手做 // 拉 p,重抽 mask
這次關掉的神經元0
留下的值要乘上×1
這一次的輸出(16 個值的平均)0
訓練時輸出的期望值(理論)0
抽 500 次 mask 的平均(實際算)0
推論時輸出(全部打開、不縮放)0
計算中
灰色、打叉的是這次被關掉的神經元,長條是它往下一層送的值,虛線框是原本的值。按幾次「重抽」:每次關掉的不一樣,輸出跳來跳去;但抽 500 次平均,會落在推論時的值附近。原因是 inverted dropout 把留下的值放大 1/(1−p) 倍:每個神經元留下的機率是 1−p,放大之後期望值剛好不變,推論時直接全部打開就好。取消勾選 inverted:訓練時的平均只有推論時的 (1−p) 倍,推論時就得自己乘回去。16 個 activation 是示意的隨機數,這裡的 p 是「關掉」的機率。
每次訓練一個瘦身版網路每個 mask 對應一個子網路,它們共用同一組權重。每個 mini-batch 練的是不同的組合。
推論 = 把子網路平均起來全部打開(並縮放好)的預測,近似於把指數多個子網路的預測平均。Dropout 其實是一種便宜的 ensemble。
縮放放在訓練時做inverted dropout 在訓練時就乘 1/(1−p),推論的程式完全不用改,也比較快。
細看 · test time、放哪裡、變體、共同機制、ensemble 與 SWA

Test time:有 dropout 的網路輸出是隨機的,推論時要的是「對所有 mask 取平均」的結果。直接算太貴,近似做法是全部打開、再乘上保留機率。講義說更常見的是 inverted dropout:把縮放挪到訓練時,推論的 forward 不用動,推論更快,也更容易決定 dropout 開或不開、放哪裡。注意講義引用的程式碼裡 p 是「保留」的機率,這頁的 p 是「關掉」的機率,所以這裡寫成 1/(1−p)。

放哪裡:conv 層或 FC 層的 activation 之後。常見設定:FC 層 p = 0.5 或 0.4;conv 層 0.1 或 0.2(原始論文在 conv 層用的是保留機率 0.7)。用 PyTorch 或 TensorFlow 一定要切換 training / test 模式(PyTorch 的 model.train() / model.eval()),Keras 看起來會自動處理。講義也提到 Curriculum Dropout:p 隨訓練慢慢變大。

為什麼 conv 層少用:conv 層參數少,本來就不太需要 regularization;而且梯度會在整張 feature map 上平均,相鄰位置高度相關,丟掉一個點,旁邊的點還保有幾乎一樣的資訊。所以影像上的變體大多改成「整塊丟」。

  • Dropout:完全隨機丟單一神經元。
  • SpatialDropout:按整個 channel 丟。
  • Stochastic Depth:按整個 residual block 丟,等於訓練時隨機變淺。
  • DropBlock:在 feature map 上按空間區塊丟。
  • Cutout:在輸入影像上按空間區塊丟(Probe C 可以切)。
  • DropConnect:丟的是連接(權重),神經元本身不丟。
  • MixOut:微調大型預訓練語言模型用。被選到的參數不是換成 0,而是換回預訓練時的值,防止災難性遺忘。Dropout 等於把模型拉向原點,MixOut 把它拉向預訓練的起點。

Regime 很重要:小到中型資料、fine-tuning 時,dropout 常常有效;用上兆 token 做大規模預訓練的語言模型,資料本身已經夠多樣,常用很低或 0 的 dropout。講義特別說:這是 regime 的差異,不是 dropout「過時」。

共同機制:訓練時的隨機性、推論時的確定性平均。Dropout、Batch Norm、data augmentation、DropConnect、fractional max pooling、stochastic depth 做法各不相同,但都是「訓練時加入某種隨機雜訊,測試時把雜訊平均掉(marginalize)」。講義的速查表:

  • 小資料:小幅 label smoothing、加在 FC 層或分類頭的 dropout、SWA,配強一點的資料增強。
  • 深網路 / ViT:weight decay 加 stochastic depth(越深的層 drop rate 越高),視情況加 SAM。
  • NLP / LLM 微調:Mixout 或 LayerDrop、輕量 weight decay、R-Drop;資料很少時,early stop 和凍結底層也常見。

Model ensembles:訓練好幾個獨立的模型,推論時平均它們的結果,講義說大約可以多 2% 的表現,競賽常用。模型越多通常越好但效益遞減,彼此越不一樣效果越明顯。不想訓練很多個獨立模型時的做法:同一個模型不同初始化(差異只來自初始化)、cross-validation 裡表現最好的前幾個、同一個模型訓練過程中的不同 checkpoint(便宜)、訓練中參數的移動平均(便宜)。

Snapshot ensembles:搭配循環的 learning rate(每次降到底再跳回高點),每個低點存一份,「訓練一個,免費得到 M 個」。Polyak averaging:最佳化可能在山谷兩側跳來跳去,從沒走到谷底;但兩側位置的平均會很接近谷底。所以推論時不用最後一組權重,而用權重的指數移動平均。SWA:訓練後期用循環或較高的固定 learning rate,把多個權重快照平均成一組。它偏好比較平坦的解,幾乎不用改程式,PyTorch 1.6 之後內建。和 ensemble 不同,最後只有一個模型,推論成本不變。

SEC.03 / DATA AUGMENTATION

寫下「哪些變化不該改答案」

講義把 data augmentation 的本質寫成一句話:把「哪些變化不該改 label」寫進資料。翻轉的貓還是貓,變暗的貓還是貓。Mixup 和 CutMix 更進一步:把兩張不同類別的圖混在一起,標籤也照比例混。下面是 A1 那兩隻 8×8 的貓和狗,標籤是三類(貓、狗、船)的向量。

PROBE C / Mixup 與 CutMix動手做 // 拉 λ,切換混合方式

貓 (1, 0, 0)

狗 (0, 1, 0)

混出來的圖

新的標籤 (貓, 狗, 船)(1, 0, 0)
標籤長條
這張圖怎麼來的計算中
框起來那一格的像素值計算中
Mixup 是每個像素按 λ 加權平均,標籤從 one-hot 變成 (λ, 1−λ, 0),這叫 soft label。模型被要求:混了 70% 貓的圖,就回答 70% 貓。這逼它在兩類之間給出平滑的過渡,而不是一刀切。CutMix 不混像素,而是剪下狗的一塊、貼到貓的同一個位置,標籤照「實際貼上去的面積」算。格子只能是整數,所以實際比例會和 λ 有一點差,標籤跟著實際面積走。Cutout 只把一塊塗黑,標籤不變,那塊資訊直接消失。圖案和 8×8 的大小是示意。
增強不只是變多資料翻轉、裁切產生的圖不是從真實分佈抽出來的新樣本。它的作用是教模型對某種變換不變(invariance),等於在控制模型複雜度。
選錯變換會教錯規則「b」和「d」、「6」和「9」翻轉後是另一個字。方向盤角度的資料左右翻轉時,角度也要跟著變號。
混合讓邊界變平滑講義引用的分析:用 Mixup 訓練的網路,loss 地景比較平,類別之間的決策邊界彎曲得比較少。
細看 · 三種增強、ImageNet 配方、Mixup 家族、自監督、TTA

三種增強(講義第 37 頁):

  • Geometry:crop、flip、resize,教位置與尺度的 invariance。
  • Appearance:color jitter、blur、noise,教照明與感測器的變化。
  • Distribution:Mixup、CutMix、AugMix,擴張訓練分佈。

ImageNet 的增強:隨機裁切與縮放、水平翻轉、color jitter。簡單版是隨機調對比和亮度;複雜版是對整個訓練集的 RGB 像素做 PCA,沿主成分方向抽一個「顏色偏移」,加到整張圖的每個像素上(AlexNet 2012、ResNet 都這樣做)。講義 3-3 附錄的 baseline 配方:訓練時隨機裁出面積 8% 到 100%、長寬比 3/4 到 4/3 的區塊並縮成 224×224;0.5 的機率水平翻轉;亮度、飽和度、對比乘上 0.6 到 1.4 的係數;加 N(0, 0.1) 的 PCA 雜訊;減均值、除標準差。推論時把短邊縮到 256、從中央裁 224×224。

加雜訊也是增強:雜訊可以加在輸入、hidden units、輸出、甚至權重上,但雜訊量要小心。這類方法對分類最好用,因為 label 不用變;像 density estimation 這種任務就不容易套。

方向盤角度的例子(講義第 38 頁):自駕車從影像預測方向盤角度。用左右兩側的鏡頭、水平翻轉、垂直平移、隨機加陰影,一筆資料變 16 筆。講義說像 steering angle regression 這類任務,要靠資料增強才做得好。

Mixup:x = t·x₁ + (1−t)·x₂  y = t·y₁ + (1−t)·y₂ 例:0.7·(1,0,0) + 0.3·(0,1,0) = (0.7, 0.3, 0)

Mixup 的兩種讀法:一種說它是資料增強,用不同類別之間的線性插值造新樣本,讓模型看到類別之間的過渡地帶;另一種說它主要是 regularization,訓練出來的網路 loss 地景較平。優點是降低尖銳的決策邊界、提升 robustness;代價是像分割、定位這類 dense prediction,線性混合的語意不一定合理。它也不是在每個資料集都穩定有效。小提醒:PyTorch 的 target 通常不是 one-hot,要自己轉;或者不混標籤,改成對兩個原標籤各算一次 cross-entropy 再按比例加權,兩者等價。

CutMix:混的是區域,不是整張圖的線性疊加。標籤依區塊面積比例混合。比 Mixup 自然(Mixup 的疊影有時不像真實照片),又比 Cutout 保留更多資訊(Cutout 那塊直接變黑);同時逼模型看完整的物體,而不是只盯最有辨識度的一小塊。

AugMix:不混兩張不同的圖,而是對同一張圖套好幾條隨機增強鏈,把結果混起來,再加一個一致性 loss,要求模型對同一張圖的不同版本給出相近的預測。結果比 CutMix、Mixup 自然,對影像損壞(corruption)和分佈偏移比較有韌性。只是把很多增強串在一起的話,圖會偏離原圖很遠、變得失真。自動化的路線:AutoAugment(要花時間搜尋策略)→ RandAugment(2 個參數)→ TrivialAugment(幾乎免調)。偵測與分割有 Mosaic、Copy-Paste;近年也有用 diffusion 模型生成或編輯樣本的做法,但要小心標籤歧義和偽影。

其他模態:NLP 有 EDA(同義詞替換、插入、對調、刪除)、back-translation(翻成另一種語言再翻回來),以及用 LLM 生成指令資料(如 Self-Instruct);語音辨識有 SpecAugment,對梅爾頻譜做時間和頻率的遮罩與扭曲。

什麼時候少用:醫學影像,或任何幾何、亮度帶有物理意義的任務,過強的變形會破壞真相;偵測任務裡,如果標註(例如關鍵點座標)沒有跟著圖一起變換,增強反而會製造錯的標籤。

自監督學習是增強思路的延伸:第一階段在不需要人工標籤的「代理任務」(pretext task)上訓練,第二階段用學到的特徵、配少量標籤訓練真正的分類器。例子一:rotation prediction,把圖轉 0、90、180、270 度,讓網路猜轉了多少,看似無關,卻逼它學到物體結構和方向的特徵。例子二:用 IMU(慣性感測器)訊號設計代理任務,說明這個想法可以延伸到影像以外。

Test Time Augmentation(TTA):推論時也做增強,對同一張輸入做好幾種變換(例如翻轉、不同裁切),把預測平均起來。可以改善長尾、分佈偏移時的表現和不確定性估計,代價是推論變慢好幾倍。

SEC.04 / EARLY STOPPING & TRANSFER

停在剛好的地方,站在別人的肩膀上

兩個最便宜的工具。Early stopping:一邊訓練一邊看 validation loss,它一段時間不再變好就停,拿回最好的那份權重。講義的標題是「把訓多久也當成 regularizer」。Transfer learning:資料不夠時不從零開始,借一個在大資料集上訓練好的網路,只重新訓練其中一部分。

PROBE D / 什麼時候停、凍結幾層動手做 // 拖停止點,選凍結層數
上半:early stopping(真的在你的瀏覽器裡訓練)

loss 曲線 train validation

停在這一步的模型 橘線是模型,虛線是真正的曲線

你停的地方0
validation loss 最低的地方0
照 patience 規則會怎麼做0
訓練中
下半:transfer learning,凍結前 k 層
要訓練的參數0
凍結(直接沿用預訓練)的參數0
常見的建議計算中
計算中
上半是一個 50 個 tanh 神經元的小網路,用 Adam 學那些帶雜訊的點,跑 4000 步,每 40 步檢查一次 validation loss。train loss 一路往下掉,validation loss 先降後升:後半段它在背雜訊。拖到 validation 最低的那一步,下面那張圖的橘線最接近虛線。換成 40 個點:回升變小,因為雜訊比較難背。下半是遷移學習常見的四格建議(資料多或少 × 和預訓練資料像不像):資料少又相似,凍結前 4 層、只訓練最後一層;資料多就可以往下多解凍幾層。資料點、層的形狀都是示意;參數量是照每層形狀真的算出來的(3×3 conv 的參數 = 9 × 輸入 channel × 輸出 channel + 輸出 channel)。
訓練步數也是超參數限制步數等於限制模型能走多遠、能變多複雜。代價只是多存一份權重和留一份 validation 資料。
淺層通用,深層專門淺層學邊緣、顏色這類 low level 特徵,跟任務關係不大;越深越 task specific。所以凍結淺層、重訓深層。
遷移是常態,不是例外講義的原話:transfer learning with CNNs is the norm。手上資料少於一百萬張,先找大資料集上預訓練好的模型。
細看 · early stopping、transfer、LoRA、domain、adversarial、bag of tricks

怎麼做 early stopping:訓練時同時輸出 validation error;每次它變好,就存一份權重;一段時間(patience)沒有改善就停。優點:有效率(只多存一份權重)、簡單(模型和演算法都不用改)。缺點:要切一份 validation 資料出來,不能拿去訓練。

把 validation 資料要回來:第一次 early stop 之後再訓練第二次。做法一:從頭開始,用 train + validation 一起訓練,訓練到上一次的 epoch 數。做法二:從第一次的權重接著訓練,用 train + validation,直到 validation loss 低於第一次停下時的 training loss。

不同 regime:小資料時 validation 不再改善就停,避免後期 overfit;fine-tuning 比 pretraining 更需要挑 checkpoint;大規模預訓練更常用固定的 token 預算加 annealing,而不是傳統的 early stop。

Transfer learning 的兩種:任務遷移,資料可以一樣,但任務不同,例如影像分類到影像分割、機器翻譯到情緒分析、時間序列預測到時間序列分類。資料遷移,任務一樣,資料領域不同,例如日常物品照片到醫學影像、中文到英文、一個病人的生理訊號到另一個病人。理由都一樣:相似的特徵在不同任務、或不同但相關的資料之間仍然有用。講義的實務建議:資料少於一百萬張,先在一個內容相似的大資料集上訓練大的 ConvNet(或直接用框架提供的 Model Zoo),再遷移到自己的資料上。

Taskonomy:系統性地量了 26 個電腦視覺任務兩兩之間的遷移效率,做成一張關聯矩陣,再求解「預算有限時,哪些任務從零訓練、其他靠遷移」。結論是遷移路徑差很多,挑對來源任務能省大量資料;講義備註提到,要有效率地解 10 個任務,照它的策略可以少用約 2/3 的訓練資料。

Multi-task learning:把多個任務的樣本放在一起學來改善泛化。結構分兩部分:共用的 shared layers,加上每個任務自己的 task-specific layers。

LLM 時代:PEFT(Parameter-Efficient Fine-Tuning)只新增很少的參數,例如 Adapters、LoRA、Prefix / Prompt Tuning、BitFit,大幅降低記憶體和算力需求。LoRA(low rank adaptation)把大模型的權重凍結,旁邊放一個小模型;forward 時把兩邊的輸出合併,backward 時只算小模型的梯度。講義備註說,因為小模型要「很努力」才改變得了大模型,LoRA 的 learning rate 通常可以設高一點。

Domain adaptation vs domain generalization:兩者都在處理分佈偏移(distribution shift)。Domain adaptation 訓練時同時用來源資料和(沒有標籤的)目標資料,縮小兩個領域的差距;domain generalization 訓練時完全看不到目標資料,要靠學到跨領域都成立的東西。另外還有 source-free adaptation,以及 test-time adaptation:推論時邊看資料邊調整,例如 TENT 用熵最小化只更新 normalization(像 BN)的參數。

Adversarial training:網路可以被刻意構造的樣本(adversarial examples)騙過,人看起來一樣,模型卻答錯。Adversarial training 把這些樣本放進訓練,等於明確加上「輸入附近,輸出應該不變」的先驗,壓制過度敏感的線性行為。

Bag of tricks(講義 3-3 附錄):模型架構(input stem、downsample)、data augmentation、mixup、label smoothing、learning rate schedule(cosine decay、warmup)。Efficient training:large-batch training、linear scaling learning rate(batch 放大 k 倍,learning rate 也乘 k,兩者的更新會很接近)、learning rate warmup、把 residual block 裡第二個 BN 的 γ 設成 0(剛開始等於恆等映射,比較好訓練)、bias 不做 decay、低精度訓練。Training refinements:cosine learning rate decay(一開始降得慢、中間近似線性、最後又變慢)、knowledge distillation、mixup、label smoothing。

trick 不是穩賺:講義列了一個逐項疊加的實驗,VGG16 在 CUB-200-2011 上從零訓練(沒有 ImageNet 預訓練,lr 0.01、batch 64):baseline 64.60% → 加 xavier init 和 warmup 66.07% → 加 no bias decay 70.14% → 加 label smoothing 71.20% → 加 linear scaling 71.21%。但 random erasing 掉了約 4 個百分點,cutout 和 cosine decay 各掉約 1 點。同一招換一個資料集,可能有害,要在自己的 validation 上驗。

講義的 TL;DR,最常用的 regularization:L2、Dropout、Early stopping、Ensemble、Data augmentation(如果知道該用哪些變換、也容易實作)。

SEC.05 / MISCONCEPTIONS

常見誤解

這個模組最常被講錯的幾句話。

Dropout 是所有情況的預設選項,加 0.5 就對了。講義第 10 頁的標題就是「有效,但不要把它當所有 regime 的 default」。小資料、FC 層常有效;現代 CNN 主幹常設很小或不用;超大量預訓練的語言模型常用很低或 0。
資料增強就是把資料變多。翻轉、裁切出來的圖不是真實分佈的新樣本。它的作用是寫入「哪些變化不該改 label」;選錯變換(把 6 翻成 9)會教錯規則。
Regularization 越強越好,反正是在防 overfitting。λ 拉到最大,曲線被壓平,train 和 held-out 一起變差,這是 underfitting。強度是超參數,要用 validation 挑。
Transfer learning 只對很相似的任務有用。淺層特徵在很多任務之間通用:分類可以遷移到分割,日常照片可以遷移到醫學影像。不相似時多解凍幾層;Taskonomy 量的正是哪些任務之間遷移得好。