学習の起点重みはコードにも素材にもVCSにも残らない入力 — 記録しないと再学習の再現性は成立しない
機械学習
運用
再現性
判断
運用
原則
モデルを逐次 fine-tune で育てている場合、出荷中モデルの品質を決めているのは素材でも epoch 数でもなく「どのチェックポイントから学習を始めたか」であることがある。起点重みはソースにも学習素材にもバージョン管理にも残らないため、「同じ素材・同じコードで回せば同じ品質が出る」という前提が静かに崩れる。
観測された事実
1クラス物体検出器で、素材とコードを完全に固定したまま起点だけ変えた比較:
- 汎用事前学習から 80 epoch: 誤検出 0.057/枚
- 出荷中モデルの起点から 25 epoch: 0.017〜0.027/枚
- 出荷中モデル自身: 0.037/枚
学習スクリプトの既定が「汎用事前学習から」だったため、手順書どおりに再学習した担当者は現行に届かず、「再学習すると退化する」という誤った結論に至った。原因はモデルでも素材でもなく、既定値と現行モデルの作られ方の食い違いだった。
判断基準
- 現行モデルと数値を比較する回は、現行モデルと同じ起点から回す。起点が違う数値どうしを並べて優劣を論じない
- 起点をゼロに戻す学習(棚卸し)は明示的な操作として分け、その回は「現行を下回るのが普通」という前提で判定基準を別に置く
- 実行した run の起点・epoch 数を成果物と一緒に必ず記録する。後から復元できない入力なので、書かなければ永久に比較不能になる
- 手順書の既定値が現行モデルの作られ方と一致しているかを定期的に照合する。既定値は「最も安全な選択」ではなく「最初に書かれた選択」であることが多い
退化を調査するときの順序
再学習の結果が悪化したら、モデルの実力やデータ品質を疑う前に実行条件が比較対象の作られ方と一致しているかを先に確認する。学習ログの冒頭に出る「事前学習パラメータの読み込み数」「1 epoch 目の損失値」は起点の判別に使える。読み込み数が全一致なら同系列のチェックポイント、一部不一致なら別タスクの汎用事前学習であり、1 epoch 目の損失が明らかに大きければ実質スクラッチである。
副作用として受け入れていること
逐次 fine-tune を続ける限り、出荷中モデルは素材とコードから再現できない個体であり続ける。過去ラウンドに含まれていた不具合(誤ったラベル変換など)も重みの中に残り続ける。再現性を取り戻すにはスクラッチで同等品質に到達できる設定を探す必要があり、それが取れるまでは「起点の記録」が唯一の防御になる。