0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

WideResNetで見る、記憶と汎化の境界

0
Last updated at Posted at 2026-05-04

はじめに

  • ディープラーニングの不思議な性質の一つに、「ランダムなラベルでも訓練データをほぼ完全に覚えられる」というものがあります。これは Zhang et al. の Understanding deep learning requires rethinking generalization や、Arpit et al. の A Closer Look at Memorization in Deep Networks で議論されている有名な観察です。
  • 通常、CIFAR-10 のような画像分類では、モデルは画像の特徴とクラスの対応関係を学んでいると考えます。しかし、もしラベルをランダムに付け替えても train error がほぼゼロになるなら、モデルは少なくとも訓練データに対しては「意味のある規則」だけでなく「個別サンプルの記憶」もできていることになります。
  • この記事では、CIFAR-10 を使ってこの現象を小さく追試します。WideResNet のサイズをいくつか変え、正しいラベルとランダムラベルのそれぞれについて、train_error < 0.01 に到達するまでに何 epoch 必要かを比較しました。
  • 今回の実験では、データ拡張は使わず、学習後の train set 全体に対する誤分類率を train_error として測っています。なお、現時点の結果は weight decay を入れた条件で得られたものなので、「完全に正則化なしの記憶実験」ではなく、「通常の CIFAR-10 学習に近い設定で、ランダムラベルをどれくらい覚えられるか」を見る実験として解釈します

実験

データセットには CIFAR-10 の training split を使った。CIFAR-10 は 32x32 ピクセルのカラー画像 50,000 枚からなる 10 クラス分類データセットである。今回の目的は汎化性能ではなく、訓練データそのものをどれだけ速く fitting できるかを見ることなので、test split は使わない。

比較したラベル条件は 2 つである。

条件 内容
true labels CIFAR-10 に元から付いている正しいラベル
random labels 各 training sample に対して、0 から 9 のラベルを一様ランダムに割り当てたもの

random labels は epoch ごとに変えるのではなく、実験開始時に一度だけ生成して固定した。つまり、同じ画像 index には学習中ずっと同じ random label が対応する。これは「毎回ノイズを加える」実験ではなく、「意味のない固定ラベルを記憶できるか」を見るためである。

モデルには CIFAR 用の WideResNet を使った。モデルサイズの影響を見るため、depth と widen factor を変えた複数の構成を比較した。

model depth widen factor parameters
WRN-10x1 10 1 77,850
WRN-10x2 10 2 303,706
WRN-16x1 16 1 175,066
WRN-16x2 16 2 691,674
WRN-28x2 28 2 1,467,610
WRN-28x4 28 4 5,849,050

学習には SGD を使った。momentum は 0.9、初期 learning rate は 0.1、learning rate schedule は cosine decay とした。batch size は 512、評価時の batch size は 4096 とした。epoch の上限は 200 に設定し、train error が 0.01 を下回った時点でその条件の学習を打ち切った。

項目 値
optimizer SGD
momentum 0.9
initial learning rate 0.1
scheduler cosine decay
batch size 512
eval batch size 4096
max epochs 200
stopping criterion train_error < 0.01
seed 0
random label seed 12345

train error は、各 epoch の終了後に train split 全体を評価モードで forward して計算した。学習中の mini-batch 上で逐次集計した誤分類率も batch_error としてログに残しているが、停止判定や結果の比較には使っていない。この記事で主に扱う指標は train_error である。

今回の主実験では、データ拡張は使っていない。random crop や horizontal flip を入れると、1 つの画像に対して複数の変形画像が同じ random label を持つことになり、「固定された training samples を記憶できるか」という問いから少し外れるためである。

一方で、weight decay は 5e-4 のまま実行した。これは通常の CIFAR-10 学習でよく使われる設定に近いが、完全に正則化なしの memorization 実験ではない。したがって、今回の結果は「weight decay ありの条件で、正しいラベルとランダムラベルの fitting 速度がどう違うか」として読むのが正確である。正則化なしの挙動を確認するには、別途 weight_decay=0 の実験を走らせる必要がある。

結果

モデル パラメータ数 true label epochs true label train error random label epochs random label train error random / true
WRN-10x1 77,850 134 0.00698 未到達 0.19584 -
WRN-10x2 303,706 80 0.00008 125 0.00916 1.56x
WRN-16x1 175,066 93 0.00812 147 0.00372 1.58x
WRN-16x2 691,674 71 0.00886 110 0.00330 1.55x
WRN-28x2 1,467,610 92 0.00310 109 0.00098 1.18x
WRN-28x4 5,849,050 88 0.00864 91 0.00880 1.03x

期待通りの結果となりました。

  • 正しいラベルを使ったほうが収束が速い
  • ランダムラベルでモデルが極端に小さい場合、収束しなかった

追記

shuffled pixels, random pixelsの結果も追加

モデル パラメータ数 true label epochs true label train error random label epochs random label train error shuffled pixels epochs shuffled pixels train error random pixels epochs random pixels train error
WRN-10x1 77,850 134 0.00698 未到達 0.19584 161 0.00876 未到達 0.13390
WRN-10x2 303,706 80 0.00008 125 0.00916 96 0.00194 118 0.00582
WRN-16x1 175,066 93 0.00812 147 0.00372 119 0.00022 140 0.00062
WRN-16x2 691,674 71 0.00886 110 0.00330 98 0.00774 107 0.00306
WRN-28x2 1,467,610 92 0.00310 109 0.00098 104 0.00080 103 0.00374
WRN-28x4 5,849,050 88 0.00864 91 0.00880 101 0.00028 86 0.00992
0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?