記事「ニューラルネットワークが簡単に(第88回):Time-series Dense Encoder (TiDE)」についてのディスカッション

 

新しい記事「ニューラルネットワークが簡単に(第88回):Time-series Dense Encoder (TiDE)」はパブリッシュされました:

研究者たちは、より正確な予測を得るために、しばしばモデルを複雑化します。しかし、その結果として、モデルの訓練やメンテナンスにかかるコストも増加します。この増大したコストは常に正当化されるのでしょうか。本記事では、シンプルで高速な線形モデルの特性を活かし、複雑なアーキテクチャを持つ最新モデルに匹敵する結果を示すアルゴリズムを紹介します。

これまでの多くの記事と同様に、環境状態エンコーダモデルは口座の状態やポジションから独立しています。したがって、環境との相互作用が1回だけの訓練サンプルであっても、将来の状態を予測する精度を得るまでモデルを訓練することが可能です。当然ながら、「望ましい予測精度」はモデルの能力を超えることはできません。無理をしても意味はありません。

環境状態を予測するモデルの訓練を終えた後、次の段階であるActorの行動方策の訓練に移ります。このステップでは、ActorモデルとCriticモデルを繰り返し訓練し、一定の期間ごとに経験再生バッファを更新します。

経験再生バッファの更新とは、Actorの現在の行動方策に基づいて、環境との相互作用経験を追加収集することを意味します。私たちが研究している金融市場の環境は非常に多面的であるため、経験再生バッファにはそのすべてを完全に集めることはできません。Actorの現在の政策行動が捉える環境はほんの一部に過ぎません。このデータを分析することで、Actorの行動方策を最適化するための小さな一歩を踏み出します。このセグメントの境界線に近づくと、更新されたActor方策からわずかに可視エリアを広げて追加データを収集する必要があります。

こうした繰り返しの結果、訓練データセットとテストデータセットの両方で利益を生み出せるActor方策を訓練しました。

Model testing results Model testing results

上のチャートでは、最初に負け取引があり、その後明確な利益トレンドに変化しています。収益性の高い取引の割合は40%未満ですが、利益が出ている取引1件につき、ほぼ2件の負け取引があります。しかし、不採算取引は採算取引よりもかなり小さいことが観察されます。平均的な利益取引は、平均的な損失取引のほぼ2倍の額です。このような要因により、テスト期間中に利益を上げることが可能となりました。テスト結果によると、プロフィットファクターは1.23でした。

作者: Dmitriy Gizlyk

 

こんにちは、ドミトリー、

他の複雑なネットワークの代わりにMLPを使用することは、特に結果が良くなるため、非常に興味深いことです。

残念ながら、このアルゴリズムのテスト中にいくつかのエラーが発生しました。以下はログの主な行です:

2024.11.15 00:15:51.269 Core 01 Iterations=100000

2024.11.15 00:15:51.269 Core 01 2024.01.01 00:00:00 TiDEEnc.nnw

2024.11.15 00:15:51.269 Core 01 2024.01.01 00:00 新しいモデルの作成

2024.11.15 00:15:51.269 Core 01 2024.01.01 00:00 OpenCL: GPU デバイス 'GeForce GTX 1060' が選択されました。

2024.11.15 00:15:51.269 Core 01 2024.01.01 00:00 実行カーネルの エラー bool CNeuronBaseOCL::SumAndNormilize(CBufferFloat*,CBufferFloat*,CBufferFloat*,int,bool,int,int,float) MatrixSum: 不明な OpenCL エラー 65536

2024.11.15 00:15:51.269 Core 01 2024.01.01 00:00 Train -> 164

2024.11.15 00:15:51.269 Core 01 2024.01.01 00:00 Train -> 179 -> Encoder 1543.0718994

2024.11.15 00:15:51.269 Core 01 2024.01.01 00:00 ExpertRemove()関数が呼び出されました。

何が原因かわかりますか?

以前はOpenCLはとてもうまく機能していました。

クリス

Dmitriy Gizlyk
Dmitriy Gizlyk
  • 2024.11.13
  • www.mql5.com
Trader's profile
 
Chris カーネルの エラー bool CNeuronBaseOCL::SumAndNormilize(CBufferFloat*,CBufferFloat*,CBufferFloat*,int,bool,int,int,float) MatrixSum: 不明な OpenCL エラー 65536

2024.11.15 00:15:51.269 Core 01 2024.01.01 00:00 Train -> 164

2024.11.15 00:15:51.269 Core 01 2024.01.01 00:00 Train -> 179 -> Encoder 1543.0718994

2024.11.15 00:15:51.269 Core 01 2024.01.01 00:00 ExpertRemove()関数が呼ばれました。

何が原因かわかりますか?

以前はOpenCLは非常にうまく動作していました。

クリス

やあ、クリス。

モデル・アーキテクチャに変更を加えたのですか、それとも記事のデフォルト・モデルを使ったのですか?

 
Dmitriy Gizlyk #:

ハイ、クリス。

モデル・アーキテクチャに変更を加えたのですか、それとも記事のデフォルト・モデルを使ったのですか?

変更はしていません。単に "Experts "フォルダを丸ごとコピーし、コンパイル後のスクリプトをこの順番で実行しただけです:「Research"、"StudyEncoder"、"Study"、"Test "です。エラーは "Test "の段階で現れた。唯一の違いは、EURUSDからEURJPYに変更したことである。

クリス

 

ドミトリー、重要な修正があります。このエラーはStudyEncoderを起動した後に発生しました。以下は別のサンプルです:

2024.11.18 03:23:51.770 Core 01 Iterations=100000

2024.11.18 03:23:51.770 Core 01 2023.11.01 00:00:00 TiDEEnc.nnw

2024.11.18 03:23:51.770 Core 01 2023.11.01 00:00:00 新しいモデルの作成

2024.11.18 03:23:51.770 Core 01 opencl.dll が正常にロードされました。

2024.11.18 03:23:51.770 Core 01 device #0: GPU 'GeForce GTX 1060' with OpenCL 1.2 (10 units, 1771 MHz, 6144 Mb, version 457.20, rating 4444)

2024.11.18 03:23:51.770 Core 01 2023.11.01 00:00:00 OpenCL: GPU デバイス 'GeForce GTX 1060' が選択されました。

2024.11.18 03:23:51.770 Core 01 2023.11.01 00:00:00 実行カーネルの エラー bool CNeuronBaseOCL::SumAndNormilize(CBufferFloat*,CBufferFloat*,CBufferFloat*,int,bool,int,int,float) MatrixSum: 不明な OpenCL エラー 65536

2024.11.18 03:23:51.770 Core 01 2023.11.01 00:00:00 Train -> 164

2024.11.18 03:23:51.770 Core 01 2023.11.01 00:00:00 Train -> 179 -> Encoder 1815.1101074

2024.11.18 03:23:51.770 Core 01 2023.11.01 00:00:00 ExpertRemove()関数呼び出し


クリス