"New Neural", MetaTrader 5 platformu için bir sinir ağı motorunun Açık Kaynak projesidir. - sayfa 39

 

Radyal-temel ağlar kuracak mıyız?

güçlü bir hataları var, çabuk öğrenirken, bilinmeyen veriler üzerinde kötü tahminde bulunurlar.

 
Ukrayna :

u - aktivatör girişi

y ek bir güç faktörüdür.

Nerede bir üs varsa, 32 biti aşan büyük sayılar elde etmemek için pozitif sayıların üslerini hesaplamaktan kaçınılmalıdır. Örneğin, sigma'yı hesaplamak böyle daha iyidir

çift x = -y*u;

çift e=exp(-|x|);

if(x<=0) dönüş ( 1 ./( 1 .+e));

if(x>0) dönüş (e/( 1 .+e));

Bu formüller oldukça basit bir şekilde türetilmiştir. Üs argümanı negatifse, formülü değiştirmeden bırakırız. Olumluysa, payı ve paydayı aynı argümanın üssüyle, ancak eksi işaretiyle çarpın.

 
şarap :

Djvu görüntüleme ile ilgili bazı sorunlarınız var. Bütün kitapları okudum.
 
gpwr :

Nerede bir üs varsa, 32 biti aşan büyük sayılar elde etmemek için pozitif sayıların üslerini hesaplamaktan kaçınılmalıdır. Örneğin, sigma'yı hesaplamak böyle daha iyidir

çift x = -y*u;

çift e=exp(-|x|);

if(x<=0) return ( 1 ./( 1 .+e));

if(x>0) dönüş (e/( 1 .+e));

Bu formüller oldukça basit bir şekilde türetilmiştir. Üs argümanı negatifse, formülü değiştirmeden bırakırız. Olumluysa, payı ve paydayı aynı argümanın üssüyle, ancak eksi işaretiyle çarpın.

İşin garibi, sigmoidin kendisi büyük negatif girişler durumunda bile doğru çalışıyor, ancak hipertanjant işlevi başarısız oluyor, bu yüzden klasik algoritmalara ek olarak kaydırılmış sigmoid tıkacını getirdim. İşlev hipertanjant ile aynı limitte çalışır ancak daha hızlıdır ve #IND ile herhangi bir sorunu yoktur.

Ayrıca, saldırı açısını ayarlarken (y katsayısının küçük değerlerinde), hipertanjant -1'e ulaşmaz; 1, kaydırılan sigmoidin böyle bir sorunu yoktur.

Genel olarak, hipertanjantı düzeltmek isteyen herkes, ancak işlevin ümit verici olmadığını düşünüyorum, yalnızca sonucu kaydetmeniz gerekmez, üs hesaplaması iki kez kullanıldığından, ayrıca kontrollere ihtiyacınız vardır, artı ulaşmama sorunları da vardır. Saldırıyı ayarlarken sınırlar.

Vardığım sonuç bir hipertanjant, kaydırılmış bir sigmoid kuralı.

 
Ukrayna :

Vardığım sonuç bir hipertanjant, kaydırılmış bir sigmoid kuralı.

destek.
 
joo :
destek.

[-1; 1] limitinde gerçekten sigmoidin daha basit bir uygulamasını yapabilirsiniz.

 double sigma( double u, double y= 1 .) // [-1;1]
  {   
   return ( exp (-y*u));
  }

ancak bu uygulamanın #IND ile de bir sorunu var, bu nedenle çok sayıda kontrol yazmaktansa birkaç basit işlem eklemek daha iyidir

+ - / buraya eklenir, bir grup kontrole karşı toplam 3 ek işlem için

 double sigmah( double u, double y= 1 .) // [-1;1] сдвинутый сигмоид
  {
   return (( 2 ./( 1 .+ exp (-y*u)))- 1 .);
  }
 
Ukrayna :
 double sigmah( double u, double y= 1 .) // [-1;1] сдвинутый сигмоид
  {
   return (( 2 ./( 1 .+ exp (-y*u)))- 1 .);
  }

Bu, hem [-1; 1] çalışma aralığının rahatlığı hem de hız açısından en iyi seçenektir. Tanım alanı tam sayı doğrusudur.

Son zamanlardan beri kullandığım, birçok alternatifi denediğim, yürütme hızı için test ettiğim bu etkinleştirme işlevi.

 

Ve yankı ızgarasında bu favorim var:

 class RSDNFunction
{
public :
         static const NeuronType Type = ETYPE_RSDN;
public :
         double F( double x)
        {
                 // coeffs were added to adjust this function to bisigmoid for values from -5 to 5
                 return 5 *x/( 5 * sqrt (abs( 5 *x) ) + 5 );
        }

         double dF( double x)
        {
                 double root = sqrt ( 5 *abs( 5 *x) ) + 1 ;

                 return (root + 1 )/( 2 *root*root); // derived function 
        }
};
 

Bu arada.

Sigmoid tipi bir fonksiyona ihtiyacımız var.

Gereksinimler, fonksiyonun kendisinin ve türevinin (hesaplanması çok zor olmayan) normal formu ve ters fonksiyonun ve türevinin normal formudur.