Numerai MeetUp Japan 2021
NN StarterのモデルをベイズNNにして分析してみたNumerai Meetup JAPAN 2021 12/18habakan (@habakan_f)1
View Slide
自己紹介2habakanJobs・医療系スタートアップのエンジニア・機械学習を活用したプロダクトを開発・扱うデータは動画像が中心Account・Twitter: @habakan_f・https://numer.ai/habakan・https://signals.numer.ai/habakan
(1) NumeraiにおけるNNの活用事例とモデル構築の課題(2) 課題に基づいたベイズNNへのモチベーション(3) ベイズNNの検証(4) Numeraiにおけるベイズアプローチに関してまとめ3AgendaNN Starterのモデルをベイズ化することで様々な視点でモデルを評価
ForumでのNNの議論事例・ResNetによる特徴量変換[1]・特徴量の正負反転やノイズ付与などのData Augmentation [1]・Metric Learningによるera間の分析[2]・ランキング学習の枠組みでLossを定義して学習[3]・Denoising Auto Encoderによるデノイズ[4]・End2EndではなくNNで事前学習をした特徴量を利用[5]・Pseudo Labellingを利用した学習[6]4NumeraiにおけるNNの活用アーキテクチャや損失関数などを活用した柔軟なモデル構築ForumでもNNの利用はいくつか議論されている
NNは学習設定が多く、学習結果の要因が分析しにくい特徴選択, アーキテクチャ, Loss, ミニバッチ方法, Optimizer, Epoch数, 学習率, 正則化 etc…Forumでのアイデア共有があっても、設定の違いにより上手くいかないケースがある初期値のseedを変更するだけパフォーマンスが大きくかわる・設定した初期化分布からパラメータの初期値をサンプル再現性を考慮した評価に基づいたモデル選択が必要・K-foldや初期値のseed値を変えて複数モデルを構築し、 評価やアンサンブルをすることで安定化5NNの評価に課題がある初期値によって評価が変動し、再現性を担保しにくい結果的に検証コストが高くなる
モデル選択のために複数モデルを構築し評価・運用↓ベイズの枠組みでパラメータの分布を推定し複数モデルを構築することで評価ができないか?6
7ベイズNNについて目的変数の生成モデルとして表現NNのパラメータを確率分布としてモデリングCharles 15 [7]生成モデル:関数f(x)をNNで表現事前分布:正規分布とする場合事後分布の計算(学習)通常のNN ベイズNN
1. 分布をもとにパラメータを複数サンプルして評価・複数パラメータを利用したアンサンブル・評価指標を分布としてモデルを評価2. 不確実性を利用したBurn Eraの検出評価予測分布のstdを活用した、Burn Era検出の評価を比較3. targetの生成過程を考慮した確率モデルの構築・評価複数targetの生成過程などもモデルに考慮して分析8検証内容パラメータの分布を推定して、分布を活用してモデルを新たな視点で評価できないか?
katsuさん公開のNN Starter Notebook [8]https://www.kaggle.com/code1110/numerai-nn-baseline-with-new-massive-data・Borutaで選択した38個の特徴量を入力・4層の全結合層で構成・Dropout, ガウスノイズによる正則化・複数targetを予測シンプルにしたものをbaselineとして検証・Borutaで選択した38個の特徴量を入力・4層の全結合層で構成・正則化レイヤーなし・targetは一つのみ予測9NN Starterをベースに検証
ベースライン・損失関数: MSE・パラメータはHeの初期化・学習率: 1e-2・バッチサイズ: 4096・エポック数: 30・最適化手法: Adam・early stoppingなし10ベイズNN・事後分布の計算: SVI(変分推論)・以下の生成モデルを仮定・priorのscaleはHe初期化に準拠・学習率: 1e-3・バッチサイズ: 4096・エポック数: 30・最適化手法: Adam・early stoppingなし学習方法training_data.csvを学習に、validation_dataを評価データとして利用validation_dataを監視したearly stoppingなどはなし30エポック決め打ちでのvalidation_dataの結果を評価
一様分布非正則な分布として設定正規分布MAP推定の場合、L2正則化(Ridge)に相当ガウスノイズの追加をパラメータの分布として考えるラプラス分布MAP推定の場合、L1正則化(Lasso)に相当全結合層のパラメータがスパースな行列となる11事前分布の設定正則化を考慮し、事前分布を設定して比較ベイズNNの評価学習後、1000組のパラメータをサンプルして評価に利用・1000組の予測それぞれで評価を計算することで評価の分布を作成・1000組の予測を平均して1つの評価を計算
検証1:パラメータを複数サンプルして評価12
ベースラインと各事前分布をおいたベイズNNのアンサンブルを比較・validation corrはベースラインよりベイズNNのほうが高い・sharpe ratioは一様分布が一番高いだが、ベースラインが二番目・正規分布とラプラス分布の比較ではラプラス分布のほうが高い・Epochを監視すると、ベースライン※でもパフォーマンスは出る (ただvalを監視してるので、正当な評価ではない)13ベースラインと各事前分布のアンサンブル比較ベースライン一様分布ベイズNN正規分布ベイズNNラプラス分布ベイズNNベースライン(Best※)NN Starter[3]validationcorr0.0145 0.0199 0.0167 0.0185 0.191 0.0153SharpeRatio 0.6422 0.6454 0.5038 0.5573 0.6489 0.5035※エポックごとに監視し、 Val Corrが高かった時点を採用した参考値 (5epoch目)検証1:アンサンブルとベースラインの比較
評価分布の平均とアンサンブル比較それぞれの評価を平均 < アンサンブル →アンサンブルが寄与している?141000サンプルモデルそれぞれの評価の平均とアンサンブルの評価を比較一様分布 正規分布 ラプラス分布val corr(平均±std)0.0142±0.00230.0049±0.00720.0123±0.0020val corr(アンサンブル)0.0199 0.0167 0.0185SharpeRatio(平均±std)0.5764±0.09080.2107±0.30210.4989±0.0673SharpeRatio(アンサンブル)0.6454 0.5038 0.5573検証1:パフォーマンスの分布の評価評価の分布正規分布はばらつきがある一様分布・ラプラス分布はシャープ
検証2:不確実性に利用したBurn Eraの検出評価15
ベイズNNの予測分布を活用複数の予測から標準偏差を計算し、予測の不確実性とする不確実性から、あるEraで自身の予測がBurnするか検出できないか?平均不確実性によるBurn判定をAUCで計算Validationの各eraのCorrで負の値になったときをBurn Eraとする各データの標準偏差をEraごとに平均し、閾値でBurnを検出ことを想定閾値による実運用も考慮して、相関ではなくAUCで評価したAUCが良いほど標準偏差が機能して事後分布を計算できているBurn検出もそうだが、事後分布も適切かどうかを評価したい16検証2:不確実性による自身のBurn Eraの検出
Val Corr・Sharpe Ratioの高かった一様分布はチャンスレート以下不確実性という意味では正則化をおいたほうが良さそう精度のみの比較では一様分布だが、今回の評価も加味するとラプラス分布もモデル候補として上がる17検証2:不確実性による自身のBurn Eraの検出事前分布によってはチャンスレート(0.5)を超えている分布比較ではラプラス分布が一番良かった事前分布 AUC Burn Era数一様分布 0.4679 28正規分布 0.6010 33ラプラス分布 0.6245 31
検証3:複数targetの確率モデルの構築・評価18
種類の異なるtargetの利用・target_nomi・target_janet・target_george19検証3:targetの確率モデルの構築モデル出力を複数targetにして事後分布を計算することで、target_nomiの予測精度がどうなるか比較上記に異なる仮定をおいた確率モデルを構築し比較予測期間の異なるtargetの利用・target_nomi (20d)・target_nomi_60d
20検証3:targetの確率モデルの構築μtargetnomitargetjanettargetgeorgeμtargetnomitargetjanettargetgeorgeμ μ複数種類のtargetを複数生成するモデルを構築生成過程の仮説を元に設計して検証仮説1targetは同じ分布からサンプル仮説2 (NN Starter)分布は異なるがμは同じ潜在変数から変換
21検証3:targetの確率モデルの構築一様分布 正規分布 ラプラス分布仮説1 0.0151(0.5794) 0.0110(0.3735) 0.0122(0.4161)仮説2 0.0171(0.5891) 0.0080(0.3236) 0.0075(0.3040)検証1のベイズNN0.0199(0.6454) 0.0167(0.5038) 0.0185(0.5573)仮説1・2の検証結果target1つのみのベイズNNと比較すると評価が劣後・仮説1の同一分布の仮定は厳しそう・仮説2ではないなら共通する潜在変数は一部 or 存在しない?・ただ、正規分布, ラプラス分布が大きく劣後している →パラメータ増加によって事後分布の計算が影響していないか?
22検証3:targetの確率モデルの構築targetnomi 20dtargetnomi 60dμ μtargetnomi 20dtargetnomi 60dμμ予測期間の異なるtargetを複数生成するモデルを構築生成過程の仮説を元に設計して検証仮説3分布は異なるがμは同じ潜在変数から変換仮説460日後targetのμは20日後targetの説明変数
23検証3:targetの確率モデルの構築一様分布 正規分布 ラプラス分布仮説3 0.0130(0.5458) 0.0136(0.6621) 0.0136(0.5867)仮説4 0.0146(0.6991) 0.0144(0.7036) 0.0139(0.6379)検証1のベイズNN0.0199(0.6454) 0.0167(0.5038) 0.0185(0.5573)仮説3・4の検証結果全体的にSharpe Ratioの向上は確認60日targetの併用がある程度寄与している?ただ仮説4の60日targetから20日targetへの重みの分布は0付近で対称にばらつきがある→本来の相関は正のはずなので検証が必要
まとめ24
評価の分布による分析とアンサンブル予測・アンサンブル評価は似ているが、評価の分布にばらつきがある・評価の分布の期待値 < アンサンブルの評価 →NNにおいてもアンサンブルが寄与している不確実性によるBurn Era、事後分布の評価Validationの評価だと、一様分布が良かったがBurn Era検出の不確実性の評価だとラプラス分布などが良かった複数targetの生成過程をモデリングにいれる・nomi, janet, georgeは同一分布ではなさそう・target_60dを含めると良さそうだが、さらなる検証が必要25今回のベイズNNでの検証まとめ
モデルの情報量が増えたことで、様々な角度で分析が可能に今回の分析において、ベイズアプローチの本質的な価値はモデルのパラメータ・予測を期待値ではなく分布で取得できるという点分析情報量が増えることで、Numerai特有の課題を理解しやすくなるかも長期的モデル選択・難読化データ・回帰タスクとして難しい・Valを妄信できない既存モデルをベイズ化しただけで、良いモデルが作れるわけではない単純にベイズ化して精度向上できるかはわからないデータを理解をして、良いモデルを構築するための一つの分析手法従来と同様にベイズモデリングでも上流工程に依存・Signals:データの用意・特徴量の設計・選択ご利用は計画的に26Numeraiにとってのベイズアプローチ
ご清聴ありがとうございました。27
Appendix28
アーキテクチャによる比較隠れ層の総数を減らすことによってどのように変化するかを検証結果的には単調増加していない29隠れ層の数 ベースライン 一様分布 正規分布 ラプラス分布0(線形モデル)0.0156(0.5838) 0.0134(0.4077) 0.0093(0.3236) 0.0115(0.3679)1 0.0164(0.5481) 0.0199(0.6599) 0.0174(0.5152) 0.0171(0.5114)2 0.0169(0.5948) 0.0175(0.6086) 0.0147(0.4641) 0.0132(0.4483)3(Baseline)0.0145(0.6422) 0.0199(0.6454) 0.0167(0.5038) 0.0185(0.5573)アーキテクチャの比較隠れ層の数 隠れ層のユニット数0(線形モデル) -1 (128)2 (128, 64)3(Baseline) (128, 64, 64)
アーキテクチャによる比較隠れ層の数が1・3層の時の分布が似ている30隠れ層数 0 1 2 30 0.0 1.4725 1.1164 2.42321 1.4725 0.0 1.9590 0.08552 1.1164 1.9590 0.0 2.02223 2.4232 0.0855 2.0222 0.0モデルごとのCorr Meanの分布の距離正規分布のJensen-Shanon Divergenceで計算アーキテクチャの比較
損失関数を自由に設計することが難しい設計するのは損失関数ではなく、予測分布になった回帰問題であれば正規分布、分類問題ではカテゴリカル分布で良いがランキング学習はどのような分布か考える必要ありライブラリが整備されたとはいえ、手軽に試せる手法ではなさそうモデルの設計も含めて、ベイズモデリングの知識が必要アウトプットも悪く言えば、通常評価に+αが追加された形それが重要かどうかは分析タスクと分析者の方針次第分析要素として低Priorityならオーバースペックになると個人的に思う31ベイズモデリングの課題
[1]https://forum.numer.ai/t/feature-reversing-input-noise/1416[2]https://forum.numer.ai/t/deep-metric-learning-to-find-a-close-era-to-live/1268[3]https://forum.numer.ai/t/differentiable-spearman-in-pytorch-optimize-for-corr-directly/2287[4]https://forum.numer.ai/t/autoencoder-and-multitask-mlp-on-new-dataset-from-kaggle-jane-street/4338/11[5]https://forum.numer.ai/t/nn-architecture-for-0-03-corr-on-validation-set/3145[6]https://forum.numer.ai/t/self-supervised-learning-on-pseudo-labels/3371[7]https://www.kaggle.com/code1110/numerai-nn-baseline-with-new-massive-data[8]Weight Uncertainty in Neural Networks32参考文献