Up モデルの訓練 作成: 2026-02-28
更新: 2026-03-02


    「訓練」の内容は:
      訓練データを使って,
      損失関数を定義して,
      最適化アルゴリズム(例:SGD, Adam)で,
      重みを更新していく。

    テストの度に訓練をするわけだが,毎回フルに訓練して評価するのは,計算コストがとんでもない。
    そこで,「性能推定戦略」 というものが考え出される。
    これには,つぎのものがある:
    1. 代理タスク(Proxy Task)
      本番のタスクよりも小さなデータセットや短いエポック数で訓練して,ざっくり性能を見積もる。
    2. 重み共有(weight sharing)
      一つの巨大なスーパーグラフ(Supernet)を作って,複数のアーキテクチャで重みを共有。
      そこから部分的にアーキテクチャを切り出して評価する。
      これにより,毎回ゼロから訓練しなくても済む。
    3. 性能予測モデル(Performance Predictor)
      過去に評価したアーキテクチャと性能のデータを使って,新しいアーキテクチャの性能を予測するモデルを訓練する──サロゲートモデル (代理モデル)。
      これで,実際に訓練せずとも「良さそうな構造」を見つけやすくなる。
    4. Early Stopping
      性能が悪そうなら途中で訓練を打ち切る


    以下,特に,代理タスクの
       「早期打ち切り (Early Stopping) 」
    を見ていく。

    通常のモデル訓練では,50〜100エポックくらいかけて性能を最大化する。
    NASでは最初の数エポック (たとえば5エポック) だけで見切りをつける。

    この方法の根拠は,
      「良いモデルは最初から伸びがいい」
    という傾向のあることが,多くの研究からわかっていること。
    最初の数エポックでの精度が高いモデルは,最終的にも高性能になる可能性が高い。

    これは,あくまでも「性能の見込み」を測るための方法で,実際の最終モデルは,後でちゃんとフル訓練する。



    註. 「エポック (epoch)」
    機械学習や深層学習で使われる基本用語で,意味は「訓練データを1回すべて使って学習すること」。
    そこで,
      エポック数を増やす = 繰り返し学習して精度を上げる

    「ビックデータ」 で訓練と言っているのは,大きなデータセットを繰り返し何エポックも使っているということ。
    たとえばこんな感じ:
      訓練データが 100万件あるとする。
      それを「 1エポック で全部」使って訓練。
      50〜100エポック 繰り返すと,
       100万 × 50〜100回 = 5000万〜1億回分の学習

    ただし,「過学習(overfitting)」になることもあるので,注意が必要。
    「過学習」 とは:
     「訓練データには強くなるが,新しいデータには弱くなる」