# ハイパーパラメータの比較 (Hyperparameter Sweep)

CNN の学習のハイパーパラメータ（学習率・weight decay・バッチサイズ・入力解像度・学習の長さ）を 1 つずつ変えて，[TEST_04](TEST_04_クラス不均衡対策の実験.md) までの基準の構成と比べた結果（ユーザーの依頼で約 1 時間の枠で実施）．まず seed 42 の分割で 14 通りを試し，効果が見えた入力解像度 320 だけを seed 43・44 でも回して確かめた．

| 項目 | 内容 |
| --- | --- |
| 実行日時 | 2026-09-28 12:11〜13:07（約 56 分） |
| 実行場所 | Archimedes の RTX A6000（GPU 1 の 1 枚．未使用の GPU のみを使用．他の GPU は使用中または利用者ありだった） |
| 本数 | 18 本（seed 42 で 14 通り＋入力解像度 320 の seed 43・44 を 2 モデル × 2） |
| 条件 | ややあり除外（TEST_03〜05 で最も良かった条件）．評価は common（「あり」と淡紅）の macro F1 |
| 基準の構成 | ConvNeXt-Tiny・重み `inverse`（学習率 1e-4）と ResNet-50（学習率 1e-3・対策なし）．いずれも batch 32・weight decay 0.05・入力 224・最大 40 エポック・patience 8 |
| 設定 | `configs/hparam/`（基準の設定から 1 項目だけを変えたもの） |
| コード | `d9f67e5-dirty`（コードの変更なし．未コミットの設定ファイルを含むため dirty） |

## seed 42 での比較 (Sweep on Seed 42)

1 項目だけを変えた結果（5 fold の平均）．「内側の検証 F1」は各 fold の早期終了に使った検証データでの最良の macro F1 で，**held_out を見ずに構成を選ぶための値**．「基準との差」は同じ fold どうしの held_out の差．

| モデル | 変更 | 内側の検証 F1 | held_out common F1 | 基準との差 | 上回った fold | 淡白 recall | 紫 recall | 1 本の秒数 |
| --- | --- | --- | --- | --- | --- | --- | --- | --- |
| ConvNeXt-Tiny | 基準 | 0.714 | 0.627 ± 0.034 | — | — | 0.57 | 0.37 | 159 |
| ConvNeXt-Tiny | 学習率 3e-5 | 0.708 | 0.608 ± 0.050 | −0.019 | 1 / 5 | 0.51 | 0.29 | 137 |
| ConvNeXt-Tiny | 学習率 2e-4 | 0.730 | 0.621 ± 0.020 | −0.005 | 3 / 5 | 0.65 | 0.39 | 180 |
| ConvNeXt-Tiny | 学習率 4e-4 | 0.691 | 0.598 ± 0.052 | −0.028 | 1 / 5 | 0.59 | 0.48 | 211 |
| ConvNeXt-Tiny | weight decay 0.005 | **0.731** | 0.627 ± 0.061 | −0.000 | 3 / 5 | 0.66 | 0.32 | 142 |
| ConvNeXt-Tiny | weight decay 0.2 | 0.695 | 0.614 ± 0.066 | −0.012 | 3 / 5 | 0.67 | 0.46 | 142 |
| ConvNeXt-Tiny | batch 16 | 0.705 | 0.588 ± 0.092 | −0.039 | 1 / 5 | 0.47 | 0.36 | 210 |
| ConvNeXt-Tiny | 最大 60 エポック・patience 15 | 0.708 | 0.599 ± 0.069 | −0.028 | 1 / 5 | 0.57 | 0.28 | 189 |
| ConvNeXt-Tiny | 入力 320 | 0.699 | **0.654 ± 0.078** | **+0.028** | **4 / 5** | 0.66 | 0.32 | 222 |
| ResNet-50 | 基準 | 0.723 | 0.627 ± 0.056 | — | — | 0.60 | 0.36 | 117 |
| ResNet-50 | 学習率 3e-4 | 0.683 | 0.633 ± 0.063 | +0.005 | 2 / 5 | 0.48 | 0.28 | 124 |
| ResNet-50 | 学習率 3e-3 | 0.705 | 0.599 ± 0.031 | −0.029 | 1 / 5 | 0.66 | 0.32 | 82 |
| ResNet-50 | weight decay 0.005 | 0.709 | 0.641 ± 0.029 | +0.013 | 2 / 5 | 0.63 | 0.41 | 119 |
| ResNet-50 | weight decay 0.2 | 0.706 | 0.630 ± 0.051 | +0.003 | 2 / 5 | 0.63 | 0.32 | 110 |
| ResNet-50 | batch 16 | 0.706 | 0.653 ± 0.032 | +0.025 | 3 / 5 | 0.64 | 0.41 | 159 |
| ResNet-50 | 入力 320 | **0.742** | **0.664 ± 0.096** | **+0.036** | 3 / 5 | 0.58 | 0.45 | 188 |

- 学習率・weight decay・学習の長さは，**今の値（ConvNeXt 1e-4・ResNet-50 1e-3・weight decay 0.05・40 エポック）がほぼ最良**だった．どれを変えても held_out は ±0.03 の範囲で，多くは下がる
- 内側の検証 F1 で選ぶと，ConvNeXt は weight decay 0.005（held_out は基準と同じ），ResNet-50 は入力 320 になる．内側の検証 F1 と held_out の順位はあまり一致しない（検証データが各 fold 約 100 枚と少ないため）
- 2 モデルとも held_out が上がったのは**入力 320 だけ**だったので，seed を変えて確かめた

## 入力解像度 320 の確認 (Resolution Check)

seed 42・43・44 の 15 fold で，入力 224（TEST_03・TEST_04 の結果）と 320 を同じ fold どうしで比べた．

| モデル | 入力 224 | 入力 320 | 差（320 − 224） | 320 が上回った fold | seed ごとの差（42 / 43 / 44） | 紫 recall | 1 本の秒数 |
| --- | --- | --- | --- | --- | --- | --- | --- |
| ConvNeXt-Tiny（重み inverse） | 0.632 ± 0.060 | 0.634 ± 0.072 | +0.002 ± 0.065 | 8 / 15 | +0.028 / +0.001 / −0.022 | 0.34 → 0.39 | 約 220 |
| ResNet-50（lr 1e-3） | 0.637 ± 0.062 | **0.653 ± 0.076** | +0.016 ± 0.072 | 8 / 15 | +0.036 / +0.011 / +0.001 | 0.39 → 0.47 | 約 180 |

- **seed 42 で見えた改善は，seed を増やすとほぼ消えた**．ConvNeXt は差なし，ResNet-50 は +0.016 だが上回った fold は半分（8/15）で，ばらつきの範囲内
- 紫の再現率は 2 モデルとも少し上がった（+0.05〜0.08）．解像度を上げると細部の色むらが見えるという見込み（TEST_04「次の一手」）と矛盾しないが，確かな差ではない
- ResNet-50・入力 320 の 0.653 は CNN の中では最も高く，色特徴＋ロジスティック回帰（[TEST_05](TEST_05_色特徴分類器の実験.md)．除外で 0.644）とほぼ同じ

## 分かったこと (Findings)

1. **学習のハイパーパラメータを変えても性能はほとんど変わらない**．今の設定はすでに妥当な範囲にあり，ハイパーパラメータの調整で大きく伸ばせる余地は小さい
2. **seed 1 つ（5 fold）での比較は当てにならない**．seed 42 では +0.03 に見えた入力 320 の効果が，3 seed では +0.00〜0.02 になった．fold 間の標準偏差（0.03〜0.10）が効果の大きさより大きいため，今後の比較も最低 3 seed で行う
3. 内側の検証 F1（各 fold 約 100 枚）で構成を選んでも held_out の良さとは一致しにくい．選び方を公平にするための入れ子の交差検証は，このデータ量では選択の精度自体が低い
4. 以上から，CNN の性能の頭打ち（common macro F1 0.63〜0.65）はハイパーパラメータではなく**データ量やラベルのあいまいさ**によるものと考えられる．色特徴だけの分類器が同じ水準に届く（TEST_05）こととも整合する

## 注意 (Caveats)

- 1 項目ずつ変えただけで，組み合わせ（例: 入力 320 ＋ batch 16）は試していない
- seed 42 だけの比較（上の表）は，どの差もばらつきの範囲内である
- 条件はややあり除外だけ．ややあり込みでは試していない
- 重み（`checkpoints/`）は保存したが，Archimedes の共用ディスクを圧迫するためユーザーの判断で削除した（本実験の 18 本ぶん 8.8 GB と TEST_04 の 36 本ぶん 18 GB．削除後の空き 52 GB．TEST_03「サーバの容量について」）．同じ設定で数分で作り直せる

## 次の一手 (Next Steps)

- ハイパーパラメータの調整は打ち切り，性能を伸ばすなら**情報を増やす方向**を試す: CNN と色特徴の併用（アンサンブル），「ややあり」のソフトラベル化
- 入力 320 は紫の再現率に効いている可能性があるので，併用を試すときの CNN 側の候補に残す

## 実験 ID (Run IDs)

手元の `runs/` に回収済み（`.gitignore` 対象）．名前の `cv_hp_<モデル>_<変更>` が構成を表す．実験 ID の日時は 2026-09-28 12:11〜13:03．

```bash
ls -d runs/*_cv_hp_*
```
