Sinir ağları, bunlara nasıl hakim olunur, nereden başlamalı? - sayfa 16

 
Neutron >> :

Tabii ki mümkün!

10 derste kuralını sadece o öğrenecek, peki ya sonra?

Bu algoritma, bir sinir ağı oluşturmak için basit bir örnek olarak alınmıştır, çünkü basit bir şekilde öğrenmeniz gerekir....

mumun aralığı belirli bir katsayı ile son beş mumun ortalama aralığından büyükse (mum yükseliyorsa - al, mum düşüyorsa - sat.)


Bu algoritmaya göre, giriş parametreleri, son beş çubuğun ortalama aralığındaki artışın katsayıları olacaktır ?


 

Kullandığınız terimleri tanımlarsınız. "Mum aralığı" nedir? Ağ örneklerden öğrenmelidir. Ağınız için olumlu ve olumsuz bir örnek olarak kabul edilen nedir (sizin bakış açınızdan)? "Fazla oran" nedir?

 
Neutron >> :

Kullandığınız terimleri tanımlarsınız. "Mum aralığı" nedir? Ağ örneklerden öğrenmelidir. Ağınız için olumlu ve olumsuz bir örnek olarak kabul edilen nedir (sizin bakış açınızdan)? "Fazla oran" nedir?

son oluşturulan çubuğun aralığı= Yüksek[1]-Düşük[1];

double dppb // son beş çubuğun ortalama aralığı

for(i=1;i<5;i++){

sdppb=sdppb+(Yüksek[1]-Düşük[1])/5;

}

satın alma koşulu

if(son oluşturulan çubuğun aralığı>son beş çubuğun ortalama aralığı*katsayı && Kapat[1]>Aç[1]){

pazardan satın al

}

Ağ için olumlu bir olumsuz örnek, belki de işlemin sonucu belirlemenin ne kadar kolay olduğunu söyleyin?

 

диапазон последнего сформировавшегося бара>средний диапазон пяти последних баров* коэффицент

Bu koşul, ağ eğitim algoritmasını ve mimarisini belirleyecektir. Ulusal Meclis için olumlu bir sonuç, bir pozisyonun açılmasıyla başlayan ve pozisyonu tersine çevirmek için bir sinyal alındığında kapanmasıyla biten teklifin öngörülen hareketinin çakışması olacaktır. Olumsuz - sırasıyla - tesadüf değil. Ağ kırpmanın sonucu , katsayının optimal (kendi bakış açısından) değerini bulmak olacaktır. Ağın 7 girişi olacaktır. Birincisine sabit bir önyargı uygulayacağız (ağın hesaplama gücünü arttırır ve öğrenmeyi hızlandırır), ikincisine 1. çubuğun aralığını, üçüncüsüne - ikincisine vb. beşinci bara ve yedinci (Ulusal Meclis'in son girişi) sıfır bar (mevcut) aralığını vereceğiz, böylece onunla karşılaştırır.

En basit ağı seçiyoruz - doğrusal bir algılayıcı. Öğrenme sürecinde, her bir çubuğa en uygun katsayıları atayacaktır (sahip olduğunuz gibi beşi için bir değil, her çubuk için bir birey (w0, w1...w6)) ve prensipte mümkünse, NN, neredeyse hiç hatasız bir şekilde alım satım yapacağınızı tahmin edecek!

 
Neutron >> :

Bu koşul, ağ eğitim algoritmasını ve mimarisini belirleyecektir. NN için olumlu bir sonuç, bir pozisyonun açılmasıyla başlayan ve pozisyonu tersine çevirmek için bir sinyal alındığında kapanmasıyla biten teklifin öngörülen hareketinin çakışması olacaktır. Olumsuz - sırasıyla - tesadüf değil. Ağ kırpmanın sonucu, katsayının optimal (kendi bakış açısından) değerini bulmak olacaktır. Ağın 7 girişi olacaktır. Birincisine sabit bir önyargı uygulayacağız (ağın hesaplama gücünü arttırır ve öğrenmeyi hızlandırır), ikincisine 1. çubuğun aralığını, üçüncüsüne - ikincisine vb. beşinci bara ve yedinci (Ulusal Meclis'in son girişi) sıfır bar (mevcut) aralığını vereceğiz, böylece onunla karşılaştırır.

En basit ağı seçiyoruz - doğrusal bir algılayıcı. Öğrenme sürecinde, her bir çubuğa en uygun katsayıları atayacaktır (sahip olduğunuz gibi beşi için bir değil, her çubuk için bir birey (w0, w1...w6)) ve prensipte mümkünse, NN, neredeyse hiç hatasız bir şekilde alım satım yapacağınızı tahmin edecek!

Çok teşekkür ederim Nötron.


Doğru anladıysam, girişler Wn olarak belirlendi, öyleyse, sonraki görevim her girişi bir kodla açıklamak, örneğin:

int w0 = постоянное смещение ( вот с этим не совсем понятно ) ;  
double w1 = High [ 1 ] - Low [ 1 ] ;
double w2 = High [ 1 ] - Low [ 2 ] ;
double w3 = High [ 1 ] - Low [ 3 ] ;
double w4 = High [ 1 ] - Low [ 4 ] ;
double w5 = High [ 1 ] - Low [ 5 ] ;
double w6 = High [ 1 ] - Low [ 0 ] ;


Her şey doğru mu?

 

Her şey doğru!

Peki ya kalıcı girdi net değil? Giriş verilerini önceden normalleştirmeliyiz, bu prosedür gerekli değildir, ancak istenir (ağın daha hızlı öğrenmesine yardımcı olur ve tahmin gücünü artırır). Bu prosedürün bir sonucu olarak, tüm giriş sinyalleri (-sonsuzdan +sonsuz'a) sonlu bir +/-1 aralığına eşlenecektir. Sabit bir önyargı olarak, NN'nin ilk girişine +1 vereceğiz (kesinlik için). Çıkış bir sinyal verecektir Out>0 Bue anlamına gelir ve Out<0 Sat anlamına gelir.

 
Neutron >> :

Her şey doğru!

Peki ya kalıcı girdi net değil? Giriş verilerini önceden normalleştirmeliyiz, bu prosedür gerekli değildir, ancak istenir (ağın daha hızlı öğrenmesine yardımcı olur ve tahmin gücünü artırır). Bu prosedürün bir sonucu olarak, tüm giriş sinyalleri (-sonsuzdan +sonsuz'a) sonlu bir +/-1 aralığına eşlenecektir. Sabit bir önyargı olarak, NN'nin ilk girişine +1 vereceğiz (kesinlik için).

 int    w0 = 1 ; // это для того, чтобы все ниже описаные входы были проработаны на истории?
double w1 = High [ 1 ] - Low [ 1 ] ;
double w2 = High [ 1 ] - Low [ 2 ] ;
double w3 = High [ 1 ] - Low [ 3 ] ;
double w4 = High [ 1 ] - Low [ 4 ] ;
double w5 = High [ 1 ] - Low [ 5 ] ;
double w6 = High [ 1 ] - Low [ 0 ] ;
 
Andrey4-min писал(а) >>

Her şey doğru mu?

Hala doğru değil.

Bu ayarda, sinir ağının girişleri yalnızca pozitif genlik sinyallerine sahip olacak ve ağ, analizin gerçekleştirileceği temele dayalı olarak tüm olası bilgileri almayacaktır. Daha iyisi, giriş değerlerinizi mumun rengiyle çarpın: mum yukarıysa +1 ve aşağıysa -1. Ve +/-1 bile değil, artışın kendisinin değeri: Kapat[i]-Aç[i].

Şu şekilde ortaya çıkacak:

w1 =( High [ 1 ] - Low [ 1 ])/Point*( Close[1]-Open[1] )/Point;

w1 =( High [2 ] - Low [2 ])/Point*( Close[2]-Open[2] )/Point;

w1 =( High [3 ] - Low [3 ])/Point*( Close[3]-Open[3] )/Point;

Henüz normalleşmedi.

PS Bunu anlamadım: // aşağıda açıklanan tüm girdilerin geçmiş üzerinde çalışılmasını sağlamak için mi?

 
Neutron >> :

Hala doğru değil.

Bu ayarda, sinir ağının girişleri yalnızca pozitif genlik sinyallerine sahip olacak ve ağ, analizin gerçekleştirileceği temele dayalı olarak tüm olası bilgileri almayacaktır. Daha iyisi, giriş değerlerinizi mumun rengiyle çarpın: mum yukarıysa +1 ve aşağıysa -1. Ve +/-1 bile değil, artışın kendisinin değeri: Kapat[i]-Aç[i].

Şu şekilde ortaya çıkacak:

w1 =( High [ 1 ] - Low [ 1 ])/Point*( Close[1]-Open[1] )/Point;

w1 =( High [2 ] - Low [2 ])/Point*( Close[2]-Open[2] )/Point;

w1 =( High [3 ] - Low [3 ])/Point*( Close[3]-Open[3] )/Point;

Henüz normalleşmedi.

PS Bunu anlamadım: // aşağıda açıklanan tüm girdilerin geçmiş üzerinde çalışılmasını sağlamak için mi?

Örneğinizde, her üç satırda da w1 var, böyle mi olmalı?

PS Bunu anlamadım: // aşağıda açıklanan tüm girdilerin geçmiş üzerinde çalışılmasını sağlamak için mi?

w0'ın hangi işlevi yerine getireceğini anlamaya çalışıyorum ve bunun tarihe bir adım gibi olduğunu varsaydım, peki, döngülerde olduğu gibi, değilse, daha ayrıntılı olarak açıklayın ...

 
Andrey4-min писал(а) >>

Örneğinizde, üç satırda da w1 var, böyle mi olmalı?

w0'ın hangi işlevi yerine getireceğini anlamaya çalışıyorum ve bunun tarihe bir adım gibi olduğunu varsaydım, peki, döngülerde olduğu gibi, değilse, daha ayrıntılı olarak açıklayın ...

w0'ın hangi işlevi yerine getireceğini anlamak için, yine de, ders kitaplarıyla başlamalı ve Ulusal Meclise bir baskınla, IMHO ile atlamamalısınız.