"New Neural "は、MetaTrader 5プラットフォーム用のオープンソース・ニューラルネットワークエンジンプロジェクトです。 - ページ 40

 

これらは、シグモイド迎角の係数を表す関数である。

//+------------------------------------------------------------------+
double ytrans0(double y=0.5)// [0;0.5;1] --> [0;1;500.5] гипербола с перегибом в 0.5
  {
   double x=line0(y);
   return(x>0.5005?0.5005/(1.001-x):x*2.);
  }
//+------------------------------------------------------------------+
double ytrans1(double y=0.)// [-1;0;1] --> [0;1;500.5] сдвинутая гипербола с перегибом в 0.0
  {
   double x=(line1(y)+1.)/2.;
   return(x>0.5005?0.5005/(1.001-x):x*2.);
  }
//+------------------------------------------------------------------+

SZZ これが何のために書かれたのか、説明します。

課題: シグモイドの迎え角をニューロン出力自体で調整する必要がある。出力は[0;1]または[-1;1]の範囲にある。

ここで、[0;1]の変形を考えてみよう。0から0.5の区間ではアタック角を小さくして出力温度を下げ、0.5から1の区間では逆に角度を大きくしますが、トランジションがなくスムーズであることが重要です。

与えられた中点で変曲する双曲線が必要です。アタック角の制御には1つの出力だけを使うか、複数の出力を算術平均で扱うか、そうしないと閾値関数を発するアタック角の方向にロックすることになります。

HZZ 与えられた入力を使用する場合、line0()line1( ) は必要ありませんが、ytrans1() は 入力範囲 [0;1] にシフトする必要があります。

 
TheXpert です。

ちなみに。

シグモイド型関数が必要です。

要件は -- 関数とその導関数の正規形(計算があまり難しくないもの)、逆関数とその導関数の正規形です。

これらは、上記のシグモイド関数の逆数である。

//+------------------------------------------------------------------+
double Invsigma0(double c)//  вход [0;1] обратные
  {
   return(-log((1.-c)/c));
  }
//+------------------------------------------------------------------+
double Invsigma1(double c)//  вход [-1;1]
  {
   return(-log((1.-c)/(1.+c)));
  }
//+------------------------------------------------------------------+
double Dsigma0(double c)//  вход [0;1] производные
  {//exp(-c)/(1+exp(-c))^2
   double e=exp(-c);
   double c2=1.+e;
   return(e/(c2*c2));
  }
//+------------------------------------------------------------------+
double Dsigma1(double c)//  вход [-1;1]
  {// (2*E^-c)/(1+E^-c)^2 
   double e=exp(-c);
   double c2=1.+e;
   return(2.*e/(c2*c2));
  }
//+------------------------------------------------------------------+
double DInvsigma0(double c)// вход [0;1] производные обратной сигмы
  {
   return(1./(c-c*c));
  }
//+------------------------------------------------------------------+
double DInvsigma1(double c)// вход [-1;1]
  {
   return(-2./(c*c-1.));
  }
//+------------------------------------------------------------------+

が、2つ目はチェックが必要で、そうしないと#INDに遭遇する可能性があります。

ZZY チェックしていませんが、#INDにぶつからないためには、すべてチェックする必要があります。

ZZZY すみません、四角を忘れてました、訂正します。

 
ウラン です。
4つの関数は、すべてのXについて定義されている必要があります。
 
ウラン です。

これは上記のシグモイド関数の逆数である。

が、2つ目はチェックを入れないと#INDになる可能性があります。


関数に次のようなものを挿入します。

if(x>0.9999999)
x=1.0;
if(x<-0.9999999)
x=-1.0;
 
ジュ

このようなものを関数に入れます。

リニアアクチベーターと呼ぶことも可能で、そのまま紛らわしい数式を混同する必要はない。

ZS 39ページ、最後の2つの関数line0()とline1()。

ZZYは39ページで、Mline()が過剰であるかどうかをチェックする別の関数を追加した -#IND #IND

 
バカだなぁ。
 
TheXpert です。


?

 

なぜかというと、好きだからです。

名前はもう問題ないんですね?

 
TheXpert です。

なぜかというと、好きだからです。

名前は問題外かな?

))

開発の過程では、いつものように百発百中で変化していきます。

 

すべてがクールに見えるが、何かが間違っているか、不要か、欠けているか......。

その理由はよくわからない。よく見ると、埋め合わせになるものがまったくないからだ。

アバターには頭をつけているのでしょうか?

あるいは、寝てしまった方がいい。これからどうするか。そして明日はカマスを狙います。