#お楽しみください!
<3
ありがとうございます。
<3
ありがとうございます。
//||
//+------------------------------------------------------------------+
bool CreateDescriptions(CArrayObj*actor, CArrayObj *critic, CArrayObj *オートエンコーダ)
{
--- デバッグ用のスマートな print 文
Print("Creating layer descriptions...");
CLayerDescription *descr;
int layerNumber = 0; レイヤ番号を管理する。
--- 入力配列が NULL の場合、チェックし初期化する。
if (!actor)
{
actor = new CArrayObj();
if (!アクタ)
return false;
}
if (!critic)
{
critic = new CArrayObj();
if (!critic)
return false;
}
if (!autoencoder)
{
autoencoder = new CArrayObj();
if (!autoencoder)
return false;
}
--- アクター
アクターClear();
--- レイヤー1:入力レイヤー
layerNumber++;
Print("Creating actor - Input Layer ", layerNumber, ": 入力レイヤー");
if (!( descr = new CLayerDescription())))
return false;
descr.type = defNeuronBaseOCL;
int prev_count = descr.count = (HistoryBars * BarDescr);
descr.activation = None;
descr.optimisation = ADAM;
if (!actor.Add(descr))
{
descr.を削除します;
return false;
}
--- レイヤー2
layerNumber++;
Print("Creating actor - Batch Normalisation Layer ", layerNumber);
if (!( descr = new CLayerDescription())))
false を返します;
descr.type = defNeuronBatchNormOCL;
descr.count = prev_count;
descr.batch = 1000;
descr.activation = None;
descr.optimisation = ADAM;
if (!actor.Add(descr))
{
descr.を削除します;
return false;
}
--- レイヤー3
layerNumber++;
Print("Creating actor - Convolutional Layer ", layerNumber);
if (!( descr = new CLayerDescription())))
false を返します;
descr.type = defNeuronConvOCL;
prev_count = descr.count = prev_count - 1;
descr.window = 2;
descr.step = 1;
descr.window_out = 8;
descr.activation=LReLU;
descr.optimisation = ADAM;
if (!actor.Add(descr))
{
descr.を削除します;
return false;
}
--- レイヤー4
layerNumber++;
Print("Creating actor - Convolutional Layer ", layerNumber);
if (!( descr = new CLayerDescription())))
false を返します;
descr.type = defNeuronConvOCL;
prev_count = descr.count = prev_count;
descr.window = 8;
descr.step = 8;
descr.window_out = 8;
descr.activation=LReLU;
descr.optimisation = ADAM;
if (!actor.Add(descr))
{
descr.を削除します;
return false;
}
--- レイヤー5
layerNumber++;
Print("Creating actor - Dense/Base Layer ", layerNumber);
if (!( descr = new CLayerDescription())))
false を返します;
descr.type = defNeuronBaseOCL;
descr.count = 2048;
descr.optimisation = ADAM;
descr.activation = LReLU;
if (!actor.Add(descr))
{
descr.を削除します;
return false;
}
--- レイヤー6
layerNumber++;
Print("Creating actor - Dense/Base Layer ", layerNumber);
if (!( descr = new CLayerDescription())))
false を返します;
descr.type = defNeuronBaseOCL;
prev_count = descr.count = 1024;
descr.activation = LReLU;
descr.optimisation = ADAM;
if (!actor.Add(descr))
{
descrを削除します;
return false;
}
//--- レイヤー 7
layerNumber++;
Print("Creating actor - SoftMax Layer ", layerNumber);
if(!(descr = new CLayerDescription()))
return false;
descr.type = defNeuronSoftMaxOCL;
prev_count = descr.count = prev_count / 16;
descr.step = 16;
descr.optimisation = ADAM;
descr.activation = None;
if(!actor.Add(descr))
{
descrを削除します;
return false;
}
//--- レイヤー 8 マルチレイヤー・マルチヘッド・アテンション・レイヤー
layerNumber++;
Print("Creating actor - Multilayer Multi-Head Attention Layer ", layerNumber);
if(!(descr = new CLayerDescription()))
return false;
descr.type = defNeuronMLMHAttentionOCL;
descr.count = prev_count;
descr.window = 16;
descr.window_out = 8;
descr.step = 4;
descr.layers = 3;
descr.optimisation = ADAM;
descr.activation = なし;
if(!actor.Add(descr))
{
descrを削除;
return false;
}
//--- レイヤー9
layerNumber++;
Print("Creating actor - Concatenate Layer ", layerNumber);
if (!(descr = new CLayerDescription()))
return false;
descr.type = defNeuronConcatenate;
descr.count = LatentCount;
descr.window = prev_count;
descr.step = AccountDescr;
descr.optimisation = ADAM;
descr.activation = SIGMOID;
if (!actor.Add(descr))
{
descrを削除します;
return false;
}
//--- レイヤー10
layerNumber++;
Print("Creating actor - SoftMax Layer ", layerNumber);
if(!(descr = new CLayerDescription()))
return false;
descr.type = defNeuronSoftMaxOCL;
prev_count = descr.count = prev_count / 16;
descr.step = 16;
descr.optimisation = ADAM;
descr.activation = None;
if(!actor.Add(descr))
{
descrを削除します;
return false;
}
//--- 第11層マルチヘッド注意レイヤ
layerNumber++;
Print("Creating actor - Multilayer Multi-Head Attention Layer ", layerNumber);
if(!(descr = new CLayerDescription()))
return false;
descr.type = defNeuronMLMHAttentionOCL;
descr.count = prev_count;
descr.window = 16;
descr.window_out = 8;
descr.step = 4;
descr.layers = 3;
descr.optimisation = ADAM;
descr.activation = なし;
if(!actor.Add(descr))
{
descrを削除;
return false;
}
//--- レイヤー12
layerNumber++;
Print("Creating actor - Dense/Base Layer ", layerNumber);
if (!(descr = new CLayerDescription()))
return false;
descr.type = defNeuronBaseOCL;
descr.count = 2048;
descr.activation = LReLU;
descr.optimisation = ADAM;
if (!actor.Add(descr))
{
descrを削除します;
return false;
}
//--- レイヤー 13
layerNumber++;
Print("Creating actor - Dense/Base Layer ", layerNumber);
if (!(descr = new CLayerDescription()))
return false;
descr.type = defNeuronBaseOCL;
descr.count = 2048;
descr.activation = LReLU;
descr.optimisation = ADAM;
if (!actor.Add(descr))
{
descrを削除します;
return false;
}
//--- レイヤー 14
layerNumber++;
Print("Creating actor - Dense/Base Layer ", layerNumber);
if (!(descr = new CLayerDescription()))
return false;
descr.type = defNeuronBaseOCL;
descr.count = 2 * NActions;
descr.activation = LReLU;
descr.optimisation = ADAM;
if (!actor.Add(descr))
{
descrを削除します;
return false;
}
//--- レイヤー 15
layerNumber++;
Print("Creating actor - VAE Output Layer ", layerNumber);
if (!(descr = new CLayerDescription()))
return false;
descr.type = defNeuronVAEOCL;
descr.count = NActions;
descr.optimise = ADAM;
if (!actor.Add(descr))
{
descr.を削除します;
return false;
}
//--- 批評家
critic.Clear();
//--- レイヤ 1: 入力レイヤ
layerNumber++;
Print("Creating critic - Input Layer ", layerNumber, ": 入力レイヤー");
if (!(descr = new CLayerDescription()))
return false;
descr.type = defNeuronBaseOCL;
prev_count = descr.count = LatentCount;
descr.activation = None;
descr.optimisation = ADAM;
if (!critic.Add(descr))
{
descrを削除;
return false;
}
//--- レイヤー2
layerNumber++;
Print("Creating critic - Concatenate Layer ", layerNumber);
if (!(descr = new CLayerDescription()))
return false;
descr.type = defNeuronConcatenate;
descr.count = LatentCount;
descr.window = prev_count;
descr.step = NActions;
descr.optimisation = ADAM;
descr.activation = LReLU;
if (!critic.Add(descr))
{
descrを削除;
return false;
}
//--- レイヤー3
layerNumber++;
Print("Creating critic - Dense/Base Layer ", layerNumber);
if (!(descr = new CLayerDescription()))
return false;
descr.type = defNeuronBaseOCL;
descr.count = LatentCount;
descr.activation = LReLU;
descr.optimisation = ADAM;
if (!critic.Add(descr))
{
descrを削除;
return false;
}
//--- レイヤー4
layerNumber++;
Print("Creating critic - Dense/Base Layer ", layerNumber);
if (!(descr = new CLayerDescription()))
return false;
descr.type = defNeuronBaseOCL;
descr.count = LatentCount;
descr.activation = LReLU;
descr.optimisation = ADAM;
if (!critic.Add(descr))
{
descrを削除;
return false;
}
//--- レイヤー5
layerNumber++;
Print("Creating critic - Dense/Base Layer ", layerNumber);
if (!(descr = new CLayerDescription()))
return false;
descr.type = defNeuronBaseOCL;
descr.count = 1;
descr.optimisation = ADAM;
descr.activation = None;
if (!critic.Add(descr))
{
descrを削除する;
return false;
}
//--- オートエンコーダ
autoencoder.Clear();
//--- レイヤ 1: 入力レイヤ
layerNumber++;
Print("Creating autoencoder - Dense/Base Layer ", layerNumber, ": Input layer");
if (!(descr = new CLayerDescription()))
return false;
descr.type = defNeuronBaseOCL;
prev_count = descr.count = LatentCount;
descr.activation = None;
descr.optimisation = ADAM;
if (!autoencoder.Add(descr))
{
descrを削除する;
return false;
}
//--- レイヤー2
layerNumber++;
Print("Creating autoencoder - Dense/Base Layer ", layerNumber);
if (!(descr = new CLayerDescription()))
return false;
descr.type = defNeuronBaseOCL;
prev_count = descr.count = prev_count / 2;
descr.optimisation = ADAM;
descr.activation = LReLU;
if (!autoencoder.Add(descr))
{
descrを削除する;
return false;
}
//--- レイヤー3
layerNumber++;
Print("Creating autoencoder - Dense/Base Layer ", layerNumber);
if (!(descr = new CLayerDescription()))
return false;
descr.type = defNeuronBaseOCL;
prev_count = descr.count = prev_count / 2;
descr.activation = LReLU;
descr.optimisation = ADAM;
if (!autoencoder.Add(descr))
{
descrを削除する;
return false;
}
//--- レイヤー4
layerNumber++;
Print("Creating autoencoder - Dense/Base Layer ", layerNumber);
if (!(descr = new CLayerDescription()))
return false;
descr.type = defNeuronBaseOCL;
prev_count = descr.count = 20;
descr.count = LatentCount;
descr.activation = LReLU;
descr.optimisation = ADAM;
if (!autoencoder.Add(descr))
{
descrを削除する;
return false;
}
//--- レイヤー5
layerNumber++;
Print("Creating autoencoder - Dense/Base Layer ", layerNumber);
if (!(descr = new CLayerDescription()))
false を返します;
if (!(descr.Copy(autoencoder.At(2))))
{
descrを削除する;
return false;
}
if (!autoencoder.Add(descr))
{
descrを削除します;
return false;
}
//--- レイヤー6
layerNumber++;
Print("Creating autoencoder - Output Layer ", layerNumber);
if (!(descr = new CLayerDescription()))
false を返します;
if (!(descr.Copy(autoencoder.At(1))))
{
descrを削除する;
return false;
}
if (!autoencoder.Add(descr))
{
descrを削除します;
return false;
}
//--- レイヤー7
layerNumber++;
Print("Creating autoencoder - Output Layer ", layerNumber);
if (!(descr = new CLayerDescription()))
false を返します;
if (!(descr.Copy(autoencoder.At(0))))
{
descrを削除する;
return false;
}
if (!autoencoder.Add(descr))
{
descrを削除します;
return false;
}
//--- デバッグ用のスマートなprint文
Print("Layer descriptions created successfully!");
return true;
}
リサーチが またグリーンゾーンに 入れない。マイナスのMinProfitは役に立ちません。値を-10000にしました。一般的に、それは奇妙です。もしパラメーターの初期値がランダムに選ばれるのであれば、少なくともいくつかはプラスになるはずです。しかし、これは観察されることすらない。
皆さん、こんにちは。私はこのバージョンを持っていますが、3-4サイクル(データベース収集-トレーニング-テスト)した後、テストではただの直線を与えるようになりました。取引は開きません。トレーニングはすべての回500 000反復を行った。そして2-3サイクルの間、両方の批評家の誤差は0になります。そしてテストでは、Test.mqhは直線を与え、取引はありません。Research.mqhのパスには、負の利益と取引のパスがあります。また、取引がなく結果がゼロのパスもある。1つのサイクルでプラスの結果が出たパスは5つしかなかった。
全般的におかしい。すべての記事でドミトリーの指示通りに厳しくトレーニングしているのに、どの記事からも結果を得ることができない。何が間違っているのか理解できない。
zip圧縮されたフォルダをダウンロードしたのですが、中に他のフォルダがたくさんありました。
可能であれば、デプロイとトレーニングの方法を説明してほしいです。
本当におめでとうございます!
ありがとうございました。

取引の機会を逃しています。
- 無料取引アプリ
- 8千を超えるシグナルをコピー
- 金融ニュースで金融マーケットを探索
新しい記事「ニューラルネットワークが簡単に(第51回):Behavior-Guided Actor-Critic (BAC)」はパブリッシュされました:
最後の2つの記事では、エントロピー正則化を報酬関数に組み込んだSoft Actor-Criticアルゴリズムについて検討しました。このアプローチは環境探索とモデル活用のバランスをとりますが、適用できるのは確率モデルのみです。今回の記事では、確率モデルと確定モデルの両方に適用できる代替アプローチを提案します。
まず、環境全般について学ぶ必要性について話しましょう。このプロセスが必要であることには誰もが同意すると思います。しかし、正確には何のために、どの段階ででしょうか。
簡単な例から始めましょう。同じドアが3つある部屋にいて、通りに出る必要があるとします。どうするべきでしょうか。必要なドアが見つかるまで、ドアを1つずつ開けていきます。再び同じ部屋に入ったとき、すべてのドアを開けて外に出るのではなく、すぐに既知の出口に向かうようになります。別のタスクがある場合は、いくつかのオプションが考えられます。すでに知っている出口を除くすべてのドアを再び開き、正しい出口を探すことができます。あるいは、出口を探すときに以前にどのドアを開けたか、そしてその中に必要なドアがあったかどうかを最初に思い出すことができます。正しいドアを思い出したら、そこに向かって進みます。それ以外の場合は、これまでに試したことのないドアを確認します。
結論:正しい行動を選択するには、不慣れな状況における環境を研究する必要があります。必要なルートを見つけた後、さらに環境を探索しても邪魔になるだけです。
ただし、既知の状態でタスクが変化する場合は、環境をさらに調査する必要がある場合があります。これには、より最適なルートの検索が含まれる場合があります。上の例では、これは、さらにいくつかの部屋を通過する必要がある場合、または建物の間違った側にいることに気付いた場合に発生する可能性があります。
したがって、未踏の状態では環境探査を強化し、以前に探査された状態では環境探査を最小限に抑えることを可能にするアルゴリズムが必要です。
作者: Dmitriy Gizlyk