skip to content

乱数シードで、「当たり学習」と「ハズレ学習」がある

/ 4 min read

Table of Contents

ドル円の期待値予測モデルの学習を実行するとき、乱数シードを設定する。

同じモデル構造、同じ特徴量、同じ学習期間でも、乱数シードだけを変えるとパフォーマンスが変わる。

乱数シードによって、

「当たり学習」と「ハズレ学習」がある

ように感じる。

もちろん、単なる偶然や評価期間のブレもある。

ただ、複数の期間で見ても、明らかに強い seed と弱い seed が存在する。

学習初期のわずかな差が、最終的な性能差につながりやすいようだ。

パターン1: 本当に弱い解に入る

予測が全体的に弱いモデル になるケース。

初期重みの違いで、勾配が微妙な方向へ進み、

  • pred が全体的に弱い
  • confidence(予測値の振れ幅)が小さい
  • 閾値を超えにくい
  • 学習 loss は悪くないのに、Forward Test が弱い

という状態になる。

「何も自信を持てていないモデル」に近い。

パターン2: 過学習方向の解に入る

逆に、強気すぎるモデルもある。

train / validation loss は良いのに、

予測分布が尖りすぎる。

train では勝つが、Forward Test や live で崩れる。

ノイズを強く信じすぎてしまっている状態とも言える。

これは、

「強そうに見えるが危険なモデル」

だ。

学習初期の偶然はかなり大きい

Adam系 optimizer は、

最初の数 epoch の方向性がかなり重要

例えば、

epoch 1〜5 で偶然良い特徴を拾う
→ 強いモデルへ
epoch 1〜5 でノイズ方向へ行く
→ 弱いモデルへ

ということが起こる。

ニューラルネットの最適化は非凸なので、後から巻き返しにくい。

結果として、

「最初にどの山を登り始めたか」

が、最終性能にかなり影響する。

では、弱いシードは捨てるべきか?

今のところ、

弱い seed は、わざわざ採用しなくて良い

と思っている。

もちろん選択バイアスはあり、都合よく「勝った seed だけ選ぶ」のは危険だ。

ただ、複数の Forward Window を通して安定して弱い seed なら、無理に採用する理由は薄い。

一方で、

単体性能は弱くても、他モデルと相関が低い seed は価値がある場合もある。

アンサンブルに入れると、違うタイミングで signal を出し、全体が安定することがあるからだ。

少なくとも、

seed を変えるだけで性能差が出るのは普通

という前提で、複数 seed を試す価値はありそうだ。