記事「ニューラルネットワークが簡単に(第57回):Stochastic Marginal Actor-Critic (SMAC)」についてのディスカッション - ページ 2

 
JimReaper #:
//--- レイヤー5
if (!(descr = new CLayerDescription()))return false;
descr.type = defNeuronConvOCL;
prev_count = descr.count = prev_count - 1;
descr.window = 3;
descr.step = 1;
descr.window_out = 8;
descr.activation = LReLU;
descr.optimisation=ADAM;
if(!actor.Add(descr))
{
descrを削除します;
false を返す;
}

コードを挿入するには、対応するボタンを適用する必要があります。

ウラジミール

 
JimReaperによって 提案されたスキームに従うか、または単にインジケータを追加するか、HistoryBarsの深さを50または100増やすと、Research Expert Advisorによってテスターで例のデータベースを作成するとき、最適化の1つのパスのために保存される例が少なくなります。MinProfitパラメータは-10000に設定され、何の効果もありません。例えば、50パスを設定しましたが、データベースに入るのは41パスだけです。さらに、HistoryBarsの履歴の 深さを捉えようとすればするほど、データベースに保存されるパスは少なくなります。また、トレーニングの反復中に追加のパスを収集すると、パスごとにデータベースに保存されるパスの数が減っていく。また、*.bdファイルのサイズが 3GBを超えてはいけないことにも気づきました。まるで何かがサイズにぶつかっているかのようです。これを克服する方法を教えてください。
 
どなたか、記事のコードをテストやデモ取引に使用する方法を理解する手助けをしていただけないでしょうか。 皆様のご協力をお願いします!
 

テストEAを通過するたびに、まるでモデルが以前のものすべてと異なるかのように、劇的に異なる結果が生成される。テストEAを通過するたびにモデルが進化するのは明らかですが、このEAの挙動は進化とは言い難いものです。

ここにいくつかの写真があります:

グラフ1

グラフ2

グラフ3

 

売買取引は、テストスクリプトやおそらくリサーチスクリプトでは十分に制御されていないようです。以下はそのメッセージの一部である:

2024.04.27 13:40:29.423 Core 01 2024.04.22 18:30:00 現在の口座の状態:残高: 9892.14, クレジット: 0.00, 手数料: 0.00, 累積:0.00, 資産: 0.00, 負債:0.00, エクイティ: 9892.14, マージン: 0.00, フリーマージン: 9892.14

2024.04.27 13:40:29.423 Core 01 2024.04.22 18:30:00 口座の状態を計算しました:資産: 0.00、負債:0.00, 純資産: 9892.14, マージン: 11359.47, フリーマージン: -1467.33
2024.04.27 13:40:29.423 Core 01 2024.04.22 18:30:00資金不足[market buy 0.96 EURUSD.pro sl: 1.06306 tp: 1.08465].

2024.04.27 13:40:29.423 Core 01 2024.04.22 18:30:00 成行買い0.96 EURUSD.pro sl: 1.06306 tp: 1.08465[資金なし]に失敗しました。

証拠金超過が意図されていない限り、275 行目以降の buy_lot と 296 行目以降の sell_lot に単純な制限をかけるだけで、テスト・スクリプトのこのような動作はなくなります。

 
Chris #:

テストEAを通過するたびに、まるでモデルが以前のものすべてと異なるかのように、劇的に異なる結果が生成される。テストEAを通過するたびにモデルが進化するのは明らかですが、このEAの挙動は進化とは言い難いものです。

ここにいくつかの写真があります:


このモデルはアクターの確率的政治を使用している。そのため、研究の初期には、すべてのパスでランダムな取引を見ることができる。このパスを集め、モデルの研究を再開する。このプロセスを何度か繰り返す。アクターが良い政治的行動を見つける間に。

 

別の言い方をしよう。サンプルを収集(研究)し、それを処理(研究)した後、テストスクリプトを実行します。ResearchもStudyも行わず、何度か連続して実行すると、得られる結果は全く異なる。

テストスクリプトは OnInit サブルーチン(99 行目)で学習済みモデルをロードします。ここでは、テスト処理中に変化してはならないモデルを EA に与えます。私が理解する限り、それは安定しているはずです。そうすれば、最終的な結果は変わらないはずです。

その間、モデルのトレーニングは行いません。より多くのサンプルを集めることだけがテストによって行われる。

ランダム性はむしろResearchモジュールで観察され、場合によってはStudyモジュールでポリシーの最適化中に観察される。

アクターは、フィードフォワード結果を計算するために240行目で起動される。作成時にランダムに初期化されていないのであれば、ランダムに動作することはないはずです。

上記の推論に誤りはありませんか?

 
Chris #:

別の言い方をしよう。サンプルを収集(研究)し、それを処理(研究)した後、テストスクリプトを実行します。調査も研究もしていない状態で、何度か連続して実行すると、得られる結果はまったく異なるものになる。

テストスクリプトは OnInit サブルーチン(99 行目)で学習済みモデルをロードします。ここでは、テスト処理中に変化してはならないモデルを EA に与えます。私が理解する限り、それは安定しているはずです。そのため、最終的な結果は変化しないはずです。

その間、モデルのトレーニングは行いません。テストでは、サンプルの収集のみを行います。

ランダム性は、むしろリサーチ・モジュールで観察され、場合によっては、ポリシーの最適化中にスタディで観察される。

アクターは、フィードフォワード結果を計算するために240行目で起動される。もし生成時にランダムに初期化されていないのであれば、ランダムに動作することはないはずです。

上記の推論に誤りはありませんか?

アクターは確率的ポリシーを使っています。VAEで 実装しています。

//--- レイヤー10
   if(!(descr = new CLayerDescription()))
      return false;
   descr.type = defNeuronBaseOCL;
   descr.count = 2 * NActions;
   descr.activation = SIGMOID;
   descr.optimization = ADAM;
   if(!actor.Add(descr))
     {
      delete descr;
      return false;
     }
//--- レイヤー11
   if(!(descr = new CLayerDescription()))
      return false;
   descr.type = defNeuronVAEOCL;
   descr.count = NActions;
   descr.optimization = ADAM;
   if(!actor.Add(descr))
     {
      delete descr;
      return false;
     }

レイヤCNeuronVAEOCLは前のレイヤのデータをガウス分布の平均と標準偏差として使用し、この分布から同じアクションをサンプリングする。最初にモデルにランダムな重みを入れる。そのため、ランダムな平均と標準偏差が生成される。最終的に、モデルテストのすべてのパスで、ランダムなアクションを持つ。学習時に、モデルはすべての状態についていくつかの平均を見つけ、STDはゼロになる傾向がある。

Neural networks made easy (Part 21): Variational autoencoders (VAE)
Neural networks made easy (Part 21): Variational autoencoders (VAE)
  • www.mql5.com
In the last article, we got acquainted with the Autoencoder algorithm. Like any other algorithm, it has its advantages and disadvantages. In its original implementation, the autoenctoder is used to separate the objects from the training sample as much as possible. This time we will talk about how to deal with some of its disadvantages.
 
むしろ、このテストスクリプトは、アルゴリズムの他の部分の能力についての洞察を提供する。VAEを作成する段階では、可変の未登録初期ウェイト値という形で自由度が残っているため、完全な最適モデルを確立して再現することはできない。それがこのスクリプトの目的だったのでしょうか?
 
素晴らしいルックスだ。