記事"ディープニューラルネットワーク(その5)DNNハイパーパラメータのベイズ最適化"についてのディスカッション - ページ 3

 
Vladimir Perervenko:

ベイズの場合、パスの数だけでなく、得点数でも勝負する必要がある。より速いオプションを探さなければならない。これは非常に面倒だ。

これを高速化するには、BayesianOptimisationを呼び出すときのパラメータに以下を追加します。

maxit = 1 #1 instead of 100 - 超平面予測のためのGP_fitの繰り返し数
100回の繰り返しでは1回に比べて改善が見られなかったので、今は1回にしています。
Ie.

BayesianOptimization(все как у вас , maxit = 1)

maxit=1 via ...はGPfit:: GP_fitに渡され、最適化は100回ではなく1回実行されます。

control = c(20*d, 10*d, 2*d);#default - control = c(200*d, 80*d, 2*d) - 200*dから80*dの最適なものを選択し、2*dのクラスタを構築 - ここでdは最適化されるパラメータの数です。

これらのパラメーターの説明はこちらhttps://github.com/cran/GPfit/blob/master/R/GP_fit.R

Vladimir Perervenko

PS.TensorFlowに乗り換えないのですか?レベルが高いだけです。

Darch 30%でトレーニング、36%でテストができるようだ。
Darchはサポートが悪いものの、修正・改善されている部分もあるが、1月にはエラーが修正されていないという理由でCRANからアーカイブに送られた(検証を伴うトレーニングモードでのエラー評価で1つあった)。5月にはバージョン13がリリースされたが、その後バージョン12に戻された。どうやら完成したようだ。
 
elibrarius:

スピードアップするには、BayesianOptimisationを呼び出す際に、パラメータに以下を追加する。

maxit = 1 #1 instead of 100 - 超平面予測のためのGP_fitの繰り返し回数
100回では1回に比べて改善が見られなかったので、1回にしています。
Ie.

maxit=1 via ...はGPfit:: GP_fitに渡され、最適化は100回ではなく1回実行されます。
また、次のように渡すこともできます:
control = c(20*d, 10*d, 2*d);#default - control = c(200*d, 80*d, 2*d) - 200*dから80*dを最適に選び、2*dのクラスタを構築 - dは最適化されるパラメータの数

はい、Darchがトレーニングで30%、テストで36%とうまくいっているようです。
Darchはサポートが不十分で、修正・改善されている部分もありますが、1月にはエラーが修正されていないという理由でCRANからアーカイブに送られました(検証を伴うトレーニングモードでのエラー推定に関するものがありました)。5月にはバージョン13がリリースされたが、その後バージョン12にロールバックされた。どうやら完成したようだ。

情報をありがとう。あなたのパラメータで試してみます。

長い間、Githubにアクセスしていなかったんだ。提案書を書かなければならないだろう。darchパッケージはGPUの使い方を提供しているのだが、これに使っているパッケージをCRANから削除してしまった(3.4.4用)。GPUがスピードとクオリティにどう影響するかは興味深い。

幸運を祈る。

 

別のブレーキはこちら

https://github.com/yanyachen/rBayesianOptimization/blob/master/R/Utility_Max.R

また、100の代わりに maxit = 1と した

を通して ...を渡すことはできないので、Utility_Max関数をRにロードして、修正したバージョンを使うことができます。

 
elibrarius:

もう一人の知恵遅れ

https://github.com/yanyachen/rBayesianOptimization/blob/master/R/Utility_Max.R

また、100の代わりに maxit = 1に設定した。

を通して ...を渡すことができないので、Utility_Max関数をRにロードして修正したものを使えばよい。

PartVIの記事のニューラルネットワークアンサンブルの最適化でチェックしました。maxitもcontrolも計算時間に目に見える影響はない。最大の影響は隠れ層のニューロン数です。私はこのようにしました。

 OPT_Res <- BayesianOptimization(fitnes, bounds = bonds,
                                  init_grid_dt = NULL, init_points = 20, 
                                  n_iter = 20, acq = "ucb", kappa = 2.576, 
                                  eps = 0.0, verbose = TRUE,
                                  maxit = 100, control = c(100, 50, 8))
elapsed = 14.42 Round = 1       numFeature = 9.0000     r = 7.0000      nh = 36.0000    fact = 9.0000   Value = 0.7530 
elapsed = 42.94 Round = 2       numFeature = 4.0000     r = 8.0000      nh = 46.0000    fact = 6.0000   Value = 0.7450 
elapsed = 9.50  Round = 3       numFeature = 11.0000    r = 5.0000      nh = 19.0000    fact = 5.0000   Value = 0.7580 
elapsed = 14.17 Round = 4       numFeature = 10.0000    r = 4.0000      nh = 35.0000    fact = 4.0000   Value = 0.7480 
elapsed = 12.36 Round = 5       numFeature = 8.0000     r = 4.0000      nh = 23.0000    fact = 6.0000   Value = 0.7450 
elapsed = 25.61 Round = 6       numFeature = 12.0000    r = 8.0000      nh = 44.0000    fact = 7.0000   Value = 0.7490 
elapsed = 8.03  Round = 7       numFeature = 12.0000    r = 9.0000      nh = 9.0000     fact = 2.0000   Value = 0.7470 
elapsed = 14.24 Round = 8       numFeature = 8.0000     r = 4.0000      nh = 45.0000    fact = 2.0000   Value = 0.7620 
elapsed = 9.05  Round = 9       numFeature = 7.0000     r = 8.0000      nh = 20.0000    fact = 10.0000  Value = 0.7390 
elapsed = 17.53 Round = 10      numFeature = 12.0000    r = 9.0000      nh = 20.0000    fact = 6.0000   Value = 0.7410 
elapsed = 4.77  Round = 11      numFeature = 9.0000     r = 2.0000      nh = 7.0000     fact = 2.0000   Value = 0.7570 
elapsed = 8.87  Round = 12      numFeature = 6.0000     r = 1.0000      nh = 40.0000    fact = 8.0000   Value = 0.7730 
elapsed = 14.16 Round = 13      numFeature = 8.0000     r = 6.0000      nh = 41.0000    fact = 10.0000  Value = 0.7390 
elapsed = 21.61 Round = 14      numFeature = 9.0000     r = 6.0000      nh = 47.0000    fact = 7.0000   Value = 0.7620 
elapsed = 5.14  Round = 15      numFeature = 13.0000    r = 3.0000      nh = 3.0000     fact = 5.0000   Value = 0.7260 
elapsed = 5.66  Round = 16      numFeature = 6.0000     r = 9.0000      nh = 1.0000     fact = 9.0000   Value = 0.7090 
elapsed = 7.26  Round = 17      numFeature = 9.0000     r = 2.0000      nh = 25.0000    fact = 1.0000   Value = 0.7550 
elapsed = 32.09 Round = 18      numFeature = 11.0000    r = 7.0000      nh = 38.0000    fact = 6.0000   Value = 0.7600 
elapsed = 17.18 Round = 19      numFeature = 5.0000     r = 3.0000      nh = 46.0000    fact = 6.0000   Value = 0.7500 
elapsed = 11.08 Round = 20      numFeature = 6.0000     r = 4.0000      nh = 20.0000    fact = 6.0000   Value = 0.7590 
elapsed = 4.47  Round = 21      numFeature = 6.0000     r = 2.0000      nh = 4.0000     fact = 2.0000   Value = 0.7390 
elapsed = 5.27  Round = 22      numFeature = 6.0000     r = 2.0000      nh = 21.0000    fact = 10.0000  Value = 0.7520 
elapsed = 7.96  Round = 23      numFeature = 7.0000     r = 1.0000      nh = 41.0000    fact = 7.0000   Value = 0.7730 
elapsed = 12.31 Round = 24      numFeature = 7.0000     r = 3.0000      nh = 41.0000    fact = 3.0000   Value = 0.7730 
elapsed = 7.64  Round = 25      numFeature = 8.0000     r = 4.0000      nh = 16.0000    fact = 7.0000   Value = 0.7420 
elapsed = 6.24  Round = 26      numFeature = 13.0000    r = 5.0000      nh = 6.0000     fact = 1.0000   Value = 0.7600 
elapsed = 8.41  Round = 27      numFeature = 11.0000    r = 8.0000      nh = 8.0000     fact = 7.0000   Value = 0.7420 
elapsed = 8.48  Round = 28      numFeature = 6.0000     r = 7.0000      nh = 15.0000    fact = 2.0000   Value = 0.7580 
elapsed = 10.11 Round = 29      numFeature = 12.0000    r = 6.0000      nh = 17.0000    fact = 4.0000   Value = 0.7310 
elapsed = 6.03  Round = 30      numFeature = 8.0000     r = 3.0000      nh = 12.0000    fact = 1.0000   Value = 0.7540 
elapsed = 8.58  Round = 31      numFeature = 13.0000    r = 5.0000      nh = 18.0000    fact = 2.0000   Value = 0.7300 
elapsed = 6.78  Round = 32      numFeature = 13.0000    r = 2.0000      nh = 15.0000    fact = 8.0000   Value = 0.7320 
elapsed = 9.54  Round = 33      numFeature = 10.0000    r = 3.0000      nh = 37.0000    fact = 9.0000   Value = 0.7420 
elapsed = 8.19  Round = 34      numFeature = 6.0000     r = 1.0000      nh = 42.0000    fact = 3.0000   Value = 0.7630 
elapsed = 12.34 Round = 35      numFeature = 7.0000     r = 2.0000      nh = 43.0000    fact = 8.0000   Value = 0.7570 
elapsed = 20.47 Round = 36      numFeature = 7.0000     r = 8.0000      nh = 39.0000    fact = 2.0000   Value = 0.7670 
elapsed = 11.51 Round = 37      numFeature = 5.0000     r = 9.0000      nh = 18.0000    fact = 3.0000   Value = 0.7540 
elapsed = 32.71 Round = 38      numFeature = 7.0000     r = 7.0000      nh = 40.0000    fact = 6.0000   Value = 0.7540 
elapsed = 28.33 Round = 39      numFeature = 7.0000     r = 9.0000      nh = 38.0000    fact = 5.0000   Value = 0.7550 
elapsed = 22.87 Round = 40      numFeature = 12.0000    r = 6.0000      nh = 48.0000    fact = 3.0000   Value = 0.7580 

 Best Parameters Found: 
Round = 12      numFeature = 6.0000     r = 1.0000      nh = 40.0000    fact = 8.0000   Value = 0.7730                                  maxit = 100, control = c(100, 50, 8))

ベスト10

OPT_Res %$% History %>% dp$arrange(desc(Value)) %>% head(10) %>%
    dp$select(-Round) -> best.init
  best.init
   numFeature r nh fact Value
1           6 1 40    8 0.773
2           7 1 41    7 0.773
3           7 3 41    3 0.773
4           7 8 39    2 0.767
5           6 1 42    3 0.763
6           8 4 45    2 0.762
7           9 6 47    7 0.762
8          11 7 38    6 0.760
9          13 5  6    1 0.760
10          6 4 20    6 0.759

平均F1。悪くないパフォーマンスだ。

計算を高速化するために、パッケージの関数をいくつか書き換える必要がある。まず、たくさんあるncol(), nrow()をすべてdim()[1], dim()[2]に置き換える。これらの関数は数十倍速く実行される。そして、おそらく行列演算しかないので、GPU(gpuRパッケージ)を使う。自分ではできないので、開発者に提案してみようか。

幸運を祈る。

 
Vladimir Perervenko:

PartVI論文のニューラルネットワーク・アンサンブルの最適化でチェックした。maxitもcontrolも目に見える実行時間はない。最も影響が大きいのは隠れ層のニューロン数である。私はこのようにした。

ベスト10

平均F1。悪くないパフォーマンス。

計算を高速化するために、パッケージの関数をいくつか書き換える必要がある。まず、すべてのncol(), nrow()関数をdim()[1], dim()[2]に置き換える。これらの関数は実行速度が数十倍速くなる。そして、おそらく行列演算しかないので、GPU(gpuRパッケージ)を使う。自分ではできないので、開発者に提案してみようか?

幸運を祈る。

数個のパラメータを最適化するだけで、私は20個最適化しましたが、既知の点が20〜40個になると、GPfitだけの計算で数十分かかるようになります。

また、ニューロンの数はNS自体の計算時間のみに影響します。

 
elibrarius:

数個のパラメータを最適化するだけで、私は20個を最適化したが、既知のポイントが20~40個になると、GPfitの計算だけで数十分かかる。

ニューロンの数はNS自体の計算時間だけに影響する。

そうですね。

 
具体的にどのように使えばいいのか、自分の取引システムをニューラル・ネットワークやより複雑なEA自動取引にするにはどうすればいいのか。
削除済み  
MetaQuotes Software Corp.:

新しい記事Deep Neural Networks (Part V).DNNハイパーパラメータのベイズ最適 化が掲載されました:

著者ウラジミール・ペレヴェンコ

こんにちは、ウラジミール、
私はアンドロイドの携帯電話のためのMACDの誘導体に取り組んでおり、プロパティのパラメータを記入するフォーム上の正確なアルゴリズムを記述するために助けを必要としています。 あなたは、レベルの設定がどのように配置することができ、私は通信を続けることができるかどうかを含めることができるでしょうか。
ありがとうございました、
ポール