スクリプト形式のニューラルネットワーク - ページ 9

 
Andy_Kon писал (а)>>

シグモイドの精度はどの程度重要なのでしょうか?

20を超えると精度は9桁に...。


トレーニングでは、効果を発揮します。時には、学習不能に至るまで、収束に非常に深刻な影響を及ぼすことがあります。

GAをトレーニングに使用する場合は問題ないはずです。

 
YuraZ писал (а)>>

3 - 何を応募するか(応募数が明確であること)

4-再教育のタイミング

5-どの学習アルゴリズムを選ぶか

GA - 遺伝子

BP


3.本当に問題です。すべては想像力にかかっています :) .

4.ここで、ごまかしが効く。忘れる力を持ったネットワークを作る。そんなに難しいことではないんです。

次のようなことができたとしましょう(BPで学習するには最適です)。

パターン数を制限する--1000とする。

次のパターンが現れたとき(新しいTFとする)

- 一番古いパターンを削除する

- 学習のサイクルを回す

- 新しいパターンは5回教える必要があります。



何を得るか?

+ トレーニングサイクルは長くは続かない。

+ 旧パターンはすぐには忘れられない。

- 新しいパターンもすぐには覚えられませんが

+が、積極的な学習(5回ONCE)により古いパターンが忘れられるより速い。

- BPの学習用としてのみ使用可能



5.ジレンマである。

GA - 最適な状態まで着実に落とし、その特性からローカルミニマムから保護されるが、メモリを大量に消費し、速度が極端に低下する。

BPは結果を保証するものではありませんが、確率は非常に高く(つまりGAが学習できればBPも学習する)、高速でメモリを消費しませんが、Momentum(ローカルミニマムを取り除く)やAdaptive Step(ミニマムもスキップし、学習速度も何倍にもなる)などの機能が必要です。



私はBPに賛成です。

 
TheXpert писал (а)>>

3.本当に問題です。すべては想像力にかかっています :) .

4.ここで、ごまかしが効くのです。忘れる力を持ったネットワークを作る。そんなに難しいことではないんです。

次のようなことができたとしましょう(BPで学習するには最適です)。

パターン数を制限する--1000とする。

次のパターンが現れたとき(新しいTFとする)

- 一番古いパターンを削除する

- 学習のサイクルを回す

- 新しいパターンは5回教える必要があります。



何を得るか?

+ トレーニングサイクルは長くは続かない。

+ 旧パターンはすぐには忘れられない。

- 新しいパターンもすぐには覚えられませんが

+が、積極的な学習(5回ONCE)により古いパターンが忘れられるより速い。

- BPの学習用としてのみ使用可能



5.ジレンマである。

GA - 最適な状態まで着実に落とし、その特性からローカルミニマムから保護されるが、メモリを大量に消費し、速度が極端に 低下する。

BPは結果を保証するものではありませんが、確率は非常に高く(つまりGAが教示できればBPの95%も教示できる)、高速でメモリを消費しませんが、Momentum(ローカルミニマムを取り除く)、Adaptive Step(ミニマムもスキップし、学習速度を何倍にも高める)といった機能が必要です。



私はBPに賛成です。


これはGAの作品の一例です。

SIのソース...


GAが速いと評価されているのは

さらに勇気のいるMGAもあります。


---

基本的にGAやMGAは高速な最大・最小探索です。

少なくとも METAQUOTESはGAをスピードのために使った のであって、他の何かではない.

ファイル:
dio.zip  4 kb
 
YuraZ писал (а)>>


スピードの面では、GAは速いと評価されています。

MGAもあって、さらに活気がありますね。


---

基本的にGAやMGAは高速な最大・最小探索です。

少なくとも、 METAQUOTESの 専門家は、 テストにGAを使用 し、他の何かではなく、 スピードのために使用 しました....


GA は BP よりも確実に遅いです。

MetaquotesはGAが野暮ったいので、かなり正しく適用しました。もちろん、単純なオーバーキルよりも高速になります。

文字を認識するのは神経細胞ではなく、特殊なアルゴリズムで、FRネットワークは使っていないのです。

同様に、学習用アルゴリズムも専門的なものを使った方が、先験的に優れています。

 
TheXpert писал (а)>>

GA は BP よりも明らかに遅い。

Metaquotesは、GAがワイルドな汎用性を持っているので、かなり正しく適用しました。もちろん、単純なブルートフォースよりも高速になります。

問題は、ニューロンと同じで、文字もニューロンではなく、FRネットワークが使わない特殊なアルゴリズムで認識することなんです。

同様に、学習にも特殊なアルゴリズムを使用した方が、先験的に優れていると言えます。

そして、その情報は秘密でないとしたら、どこから来るのでしょうか?では、FRを例題でトレーニングするのはどうでしょうか?

また、特殊なアルゴリズムと学習させたニューラルネットワークは(原理的に)どう違うのでしょうか?

 
Sergey_Murzinov писал (а)>>

秘密でもないのに、この情報はどこから来たのでしょうか?例を挙げてのFRトレーニングはどうでしょうか?

また、特化型アルゴリズムと学習済み(トレーニング済み)ニューラルネットワークの(原理的な)違いは何でしょうか?

まず第一に、ニューラルネットワークは文字認識のための最適なソリューションではありません。ネオコグニトロンは辞書で99.7%を達成しましたが、回転のある文字では、本当に意味がありません。

RSDN.ruにアクセスして、ニューラルネットワークに関連するスレッドを読んでみてください。ちなみに、ここにはとても賢い人たちがいますよ。


こんな風に、見よう見まねで学ぶことについて。

- ベクトル化する(スケルトンにする)

- 交差点とその相対位置を数える

- は、例えば、第一フーリエ変換の係数をいくつか取り、サイズに影響されないようにあらかじめ正規化します。ちなみに、FTでは、EMMNIPという回転不感帯を得ることができます。

- 例平均

- ベースにリファレンスとして入れる


どう違うのですか?

特殊なアルゴリズムを使うときは、その仕組みを知っているものです。

ニューラルネットワークがどうなっているのか知らないんですね。ニューラルネットワークで定義されたこの特定の関数は、高い精度で入力を出力に補間することができるというだけのことです。

 

やべええええええええええええええええええええええええええええええええええええええええ

ちなみにRSDN.RUはプログラマーのためのフォーラムであり、ニューラルネットワークのアルゴリズムやそのアプリケーションの開発者ではありません。

FineReaderは、ニューラルネットワーク技術ブロック(最新版)を使用していることをお知らせします。また、ニューラルネットワークについて知るためには、(一般的な科学論文ではなく)特別な文献を読んだり、専門的なフォーラムの枝を読んだりすることをお勧めします。

学習済みネットワークも 特殊なアルゴリズムである。最も簡単な例は、NeuroShell2というプログラムでCコードを生成することで見ることができます。ネットワークコードもバッチリ見えます。

 
Sergey_Murzinov писал (а)>>

ただ、FineReader はニューラル・ネットワーク・テクノロジー・ブロック(最新バージョン)を使用しています。そして、ニューラルネットワークを理解するためには、(ポピュラーサイエンスではない)特別な文献を読んだり、専門的なフォーラムの枝を読んだりすることをお勧めします。

では、このテーマについて、いくつかリンクを張ってもらってもいいですか?
 

2 ユーラズ

早速ですが、ニューラルネットワークのコード、本当にありがとうございました。

詳細な解析の結果、ニューラルオフセット法(配列 _threshold と _t_change )とパルス法(Momentum パラメータ)を使って計算を高速化していることがわかりました。

その実装について、いくつか質問があります。
1) 重み補正関数で _t_change を変更したが、その補正を新しい重みの _threshold 配列を計算するためにどこにも使用しない。

2) シグモイド関数に出力を渡すとき、_thresholdパラメータを合計から引くが、文献に書かれているように、この閾値の重みは-1ではなく、+1である。だから、引き算ではなく、足し算をすべきなのです。ましてや、ウェイトを調整するときは、-1ではなく、きっちり+1して供給します。
実は、この閾値とパルスをいじってみたところ、本当に計算のスピードが速くなることがわかりました。時間が数倍短縮されます。

3) シグモイド関数にも興味を持った。私の理解では、そのパラメータはこの分野の実務経験によるものですが、Ussermanの本を読むと、{0,1}の範囲は最適ではないと書かれていますね。ウェイト補正の値は出力レベルに比例し、出力レベルがゼロの場合はウェイトが変化しないことになる。また、2値の入力ベクトルでは、平均して半分の値が0になるので、それらに関連する重みも学習されない。
解決策は、入力を {-0.5,0.5} の範囲にし、シグモイドに 0.5 のオフセットを追加することです。このようなシグモイド [1/(1+Exp(-x))-0.5] は、範囲 {-0.5,0.5} で収束時間を30-50%短縮することができます。
この場合、唯一の問題は、入力ベクトルを{-0.5,0.5}の範囲に縮小することである。ノーマライズする必要がありそうですね。やってみたのですが、なぜかS状結像の結果はいつも陽性でした。この件に関するご意見をお聞かせください。

4)さて、入力の設定の仕方はどうでしょう。このプロセスを自動化すべきかもしれませんね。出力では、いつものように100、010、001の値を期待します。
出力の配列を自動的に設定するには、各バーの次のインターバルでの最高値と最低 値の比率を定義することをお勧めします(例えば、1分足のバーで5000本)。この比率の値は、価格がどこに移動したかを示す指標となる。1前後であれば、フラットです。1を超えたらアップです。0から1の間であれば、ダウンしている。しかし、分析に最適な範囲は [0, +_404] ではなく、 [-EЄ, -A; -A, A; A, +_404] であると思います。ちなみに、これは私たちの出力ベクトルに対応します
. ネットワーク入力はN個の移動平均の最後のK個の値(またはMAと平均バー価格の差)であると思われます。したがって、入力は合計でN*Kとなる。

もう少し軽く、わかりやすいベースコード(御社の関数のライブラリ)を貼り付けています。一般的に言って、このような開発の初期段階では、Expert Advisorの完全な製品を作る必要はないでしょう。まず、スクリプトに明確な計算ロジックを実装してみよう。すべてをテストして、それをもとに標準的なインジケーターを書いてみよう。バックリンクやネットワークの委員会など、おそらく面白いことがたくさんあるのでしょう。

P.S.
これからも開発状況を教えてほしいので、ちょっとしたお願いがあります。もしよろしければ、エディタオプションの「スペースを挿入する」を削除してください、ちょっとコードが読みにくいです。新バージョンに期待します。共同テストの提案も可能です。

ファイル:
 
sergeev писал (а)>>

2 ユーラズ


2) シグモイド関数に出力を送る際、_thresholdパラメータを合計から引いていますが、文献によるとこの閾値の重みは-1ではなく、+1になっています。だから、引き算ではなく、足し算をすべきなのです。ましてや、ウェイトを調整するときは、-1ではなく、きっちり+1して供給します。
実は、この閾値とパルスをいじってみたところ、本当に計算のスピードが速くなることがわかりました。時間が数倍短縮されます。

3) シグモイド関数にも興味を持った。私の理解では、このようなそのパラメータは、この分野の実務経験によるものですが、Ussermanの本を読むと、{0,1}の範囲は最適でないと書いてありますね。ウェイト補正の値は出力レベルに比例し、出力レベルがゼロの場合はウェイトが変化しないことになる。また、2値の入力ベクトルでは、平均して半分の値が0になるので、それらに関連する重みも学習されない。
解決策は、入力を {-0.5,0.5} の範囲にし、シグモイドに 0.5 のオフセットを追加することです。このようなシグモイド [1/(1+Exp(-x))-0.5] は、範囲 {-0.5,0.5} で収束時間を30-50%短縮することができます。
この場合、唯一の問題は、入力ベクトルを{-0.5,0.5}の範囲に縮小することである。ノーマライズする必要がありそうですね。やってみたのですが、なぜかS状結像の結果はいつも陽性でした。この件に関するご意見をお聞かせください。

2.元の式は次のようになる -- S[j] = Sum(i)(y[i]*w[i,j] - t[j]).S[j]=Sum(i)(y[i])である。つまり、閾値が取られるから、閾値と呼ばれるようになったのです。また、再計算の式にある2つのマイナスはプラスになる、つまり、閾値の使用やパラメータの再計算に間違いはないのです。

もし私が間違っていたら、著者が訂正してください。

3.これはシグモイドではなく、ハーフシグモイドです。これらの関数の収束時間は、ネットワークへの入力データに依存する。ビシグモイドの方が何倍も早く収束することもありますが、データが違えば全く違う絵になるかもしれません。