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 を試す価値はありそうだ。