資料擴增
一隻貓無論被左右翻轉、移到角落、在偏暖的光線下拍攝,還是稍微放大,牠仍是一隻貓。資料擴增藉由為每張訓練影像生成許多經過變換、卻保持相同標籤的副本,免費地把這些不變性教給模型。它同時做兩件事:實際上倍增你的資料集規模以對抗過擬合,並明確告訴模型哪些變化不該影響答案以建立穩健性。對視覺而言,它不是可有可無的潤飾——它往往是一個能泛化的模型與一個只會死記的模型之間的差別。
經典的幾何與光度變換是主力:隨機水平翻轉、隨機裁切與縮放、小幅旋轉與縮放,以及色彩抖動(擾動亮度、對比、飽和度與色相)。每一種都必須尊重任務真正的對稱性——水平翻轉對自然物體沒問題,但對文字、或對 6 與 9 這類數字就是錯的,而對偵測或分割,邊界框與遮罩必須與影像同步變換。除此之外,AutoAugment 與 RandAugment 等學習式與隨機式策略會搜尋或隨機組合強力的變換序列,而 Cutout/隨機擦除會遮掉隨機區塊,迫使模型使用整個物體而非某個洩漏答案的部分。
一個強大的現代家族是混合樣本而非變換單張。Mixup 在兩張影像及其標籤的凸組合上訓練(0.7 的貓加 0.3 的狗,搭配對應混合的目標),而 CutMix 把一張影像的矩形區塊貼到另一張上,並按面積混合標籤。它們作為強力正則化器、平滑模型的決策邊界並改善校準;連同重度擴增,它們是視覺 transformer 之所以能成功訓練的部分原因——後者缺乏 CNN 內建的平移偏好,否則會過擬合。
擴增也支撐著現代視覺的兩塊基石。在自監督學習中,SimCLR 與 DINO 等方法完全透過擴增來定義什麼算「同一個東西」:模型被訓練成讓同一張影像的兩個不同擴增視圖給出相符的表徵,所以擴增的選擇實際上選定了學到的特徵將具有哪些不變性。而在部署時,測試時擴增(test-time augmentation)對一個輸入的數個變換版本平均預測,以擠出一點額外準確率。一個警告:擴增只施加於訓練集、必須保留標籤,且過於激進的擴增會摧毀訊號而有害。
標準的 ImageNet 訓練變換:以隨機長寬比取一塊覆蓋影像 8% 到 100% 的隨機裁切,縮放到 224×224,再以 0.5 的機率水平翻轉。單一來源影像因此實際上產生無限多個相異的訓練視圖。