Sinir ağının girdilerini beslemek için bir dizi gösterge arayın. Tartışma. Sonuç değerlendirme aracı. - sayfa 5

 
joo писал(а) >>

Neden görünmüyorlar? Farklılıklar görülebilir. Arama aralığının doğru seçimi ile nöronların aşırı doygunluğu yoktur. "Onları nasıl pişireceğini bilmiyorsun."(c) :)

Farklı karmaşıklıktaki görevler için, haklı olarak belirttiğiniz gibi (tornavidalar) farklı optimal araçlar olacaktır.

Menzil seçimi pahasına çok tartışmalı bir konudur. GA çok uzundur, ORO'dan çok daha uzundur - başka bir dezavantaj.

Ağırlık aralığını seçme tekniğini veya size rehberlik eden şeyi sizden öğrenmek ilginçtir.

joo yazdı >>

Farklı karmaşıklıktaki görevler için, haklı olarak belirttiğiniz gibi (tornavidalar) farklı optimal araçlar olacaktır.

GA, NS için değildir. NS-th için eğitim yöntemleri vardır (optimizasyon). Sadece CV'nin ORO ile nasıl kullanılacağını çözemediği için.

 
rip >> :

Bu doğru, genetik algoritma ağırlıkları ayarlamak için hata işlevini kullanmaz.

Anladığım kadarıyla, m5'i tarihte olabilecek maksimum kârla işaretleyebilir ve bu işaretlemeyi bir uygunluk fonksiyonu olarak kullanabilirsiniz.

Bu, bireyi değerlendirdiğiniz işlevin nasıl göründüğüdür.

Böyle :)

 public double evaluate ( IChromosome a_subject ) {
         this . NNWeights = new double [ a_subject . size ( ) ] ; //создаем вектор весов для нейросети
         for ( int i = 0 ; i < this . NNWeights . length ; i + + )
         {
            DoubleGene g = ( DoubleGene ) a_subject . getGene ( i ) ;
             this . NNWeights [ i ] = g . doubleValue ( ) ; //заполняем вектор весов для нейросети
         }
        net . SetWeights ( this . NNWeights ) ; //устанавливаем веса нейросети
        Trade trade = new Trade ( ) ;
         for ( int i = 0 ; i < this . csv . CSVInputs . length ; i + + )
         {
            trade . TradeCurrentSignal ( net . ComputeForOneNeuronOutLayer ( this . csv . CSVInputs [ i ] ) , this . csv . CSVPrice [ i ] ) ;
         }
        
       return 1000000 + trade . Profit ; //целевая функция должна быть >0
     }
 
rip >> :

Bu bir test örneği hatasıdır. Onlar. eğitim örneğinden sonraki ay alırsınız. Algoritmanıza göre işaretleyin. Çıktıları eğitilmiş ağa gönderin. Sonucu karşılaştırın. Bu sadece bu hataların grafiği ve ilgi çekici.


Ayrıca eğitim örneği hatalarının bir grafiğini alabilir ve aynı zamanda ağınızın nasıl öğrendiğini (veya nesillerin bir gen algoritmasında geliştiğini) değerlendirebilirsiniz.

Antrenman yaparken amaç fonksiyonu artana kadar veya (zaman içinde) sıkılıncaya kadar öğretirim. Dolaylı olarak yeniden eğitimi önemsiyorum - eğitim örneği, sinir ağındaki ağırlıklardan çok daha büyük. ayrıca .mq4'e yüklüyorum (burada bir hata olabilir... Test ediyorum. Test ettim. Her şey doğru çalışıyor.) ve MT4 strateji test cihazı ile ne olduğuna bakıyorum.

"Sonucu karşılaştırın" - Ağı özel olarak yeniden eğitmek ve sonucunu önceki dönemlerde eğitilmiş ağın sonucuyla karşılaştırmak için fikrinizin bu bölümünü anlamıyorum? Ben noktayı görmüyorum.

 
rip >> :

Girdi olarak verdiğiniz tüm setleri karşılaştırdığınızda sonucu gösterin :) Her şeyin yüksek oranda ilişkili olacağını düşünüyorum. Yukarıdaki tüm göstergeler, hesaplama için aynı ilk verileri kullanır.

Tüm setleri karşılaştırmayacağım.... 200 girdi setini bile sıralamak, aslında bunlardan daha fazlası var, uzun zaman alıyor ve çok az mantıklı. bir şeyi kaçırabilirsin.

 
iliarr >> :

Antrenman yaparken amaç fonksiyonu artana kadar veya (zaman içinde) sıkılıncaya kadar öğretirim. Dolaylı olarak yeniden eğitimi önemsiyorum - eğitim örneği, sinir ağındaki ağırlıklardan çok daha büyük. ayrıca, onu .mq4'e yüklüyorum (burada bir hata olabilir... Test ediyorum) ve MT4 strateji test cihazına ne olduğunu görüyorum.

"Sonucu karşılaştırın" - Ağı özel olarak yeniden eğitmek ve sonucunu önceki dönemlerde eğitilmiş ağın sonucuyla karşılaştırmak fikrinizin bu bölümünü anlamıyorum? Ben noktayı görmüyorum.


Neden yeniden eğitim?! Ağı öğrendiğiniz bir örnek var. Şimdi çalışmasını simüle edin, ağa aşina olmadığı bir örnek verin ve ağdan elde edilen sonucu test örneği için beklenen sonuçla karşılaştırın.

 
rip >> :

Neden yeniden eğitim?! Ağı öğrendiğiniz bir örnek var. Şimdi çalışmasını simüle edin, ağa aşina olmadığı bir örnek verin ve ağdan elde edilen sonucu test örneği için beklenen sonuçla karşılaştırın.

Forex için, sunduğunuz şeyin sonucu, eğitimin kalitesini değil, eğitimli ağın tahmin yeteneğini belirleyecektir... ve ağın tahmin yeteneği sadece eğitimin kalitesine değil, aynı zamanda ağ, ağın çıkış yolu ve ağa beslenen bilgiler. Sadece ağa ne gönderileceğini daha iyi anlamak için bu forum başlığının konusunu gündeme getirdim.

 
iliarr >> :

Forex için, sunduğunuz şeyin sonucu, eğitimin kalitesini değil, eğitimli ağın tahmin yeteneğini belirleyecektir... ve ağın tahmin yeteneği sadece eğitimin kalitesine değil, aynı zamanda ağ, ağın çıkış şekli ve ağa beslenen bilgiler. Sadece ağa ne gönderileceğini daha iyi anlamak için bu forum başlığının konusunu gündeme getirdim.

Hmm... Öngörü yeteneği nerede? Bir ağınız var, cevaplarının amaçlanan yorumuyla ağınız var.

Trade() sınıfı, kodunuza bağlı olarak, ticaret sürecini şu veya bu biçimde simüle eder. Pozisyon açma, tutma, kapatma.

Buna dayanarak, bu kişinin size ne kadar uygun olduğuna siz karar verirsiniz. Onlar. ilk etapta bir kural koydun

çıktı yorumlamaları.

 
iliarr >> :

200 girdi setini bile sıralamak için tüm setleri .... karşılaştırmayacağım, aslında onlardan daha fazlası var, uzun bir süre ve çok az mantıklı. bir şeyi kaçırabilirsin.

Hmm... eğitim örneği oluşturma fikri: ( Sinir Ağı kullanan bir sonraki fiyat tahmincisi )


ntr - eğitim setleri

lb - lastBar


// Girdi dizilerini verilerle doldurun; bu örnekte değil=1
for(i=ntr-1;i>=0;i--)
{
outTarget[i]=(Açık[lb+ntr-1-i]/Açık[lb+ntr-i]-1.0);
int fd2=0;
int fd1=1;
for(j=nin-1;j>=0;j--)
{
int fd=fd1+fd2; // Fibonacci gecikmelerini kullan: 1,2,3,5,8,13,21,34,55,89,144...
fd2=fd1;
fd1=fd;
inpTrain[i*nin+j]=Açık[lb+ntr-i]/Açık[lb+ntr-i+fd]-1.0;
}
}

 
rip >> :

Hmm... eğitim örneği oluşturma fikri: ( Sinir Ağı kullanan bir sonraki fiyat tahmincisi )


ntr - eğitim setleri

lb - lastBar


// Girdi dizilerini verilerle doldurun; bu örnekte değil=1
for(i=ntr-1;i>=0;i--)
{
outTarget[i]=(Açık[lb+ntr-1-i]/Açık[lb+ntr-i]-1.0);
int fd2=0;
int fd1=1;
for(j=nin-1;j>=0;j--)
{
int fd=fd1+fd2; // Fibonacci gecikmelerini kullan: 1,2,3,5,8,13,21,34,55,89,144...
fd2=fd1;
fd1=fd;
inpTrain[i*nin+j]=Açık[lb+ntr-i]/Açık[lb+ntr-i+fd]-1.0;
}
}

Teşekkür ederim. Bir bakacağım.

 

IlyaA писал(а) >>

Halk, zamana (dönem sayısı) karşı öğrenme hatasının grafiksel bir temsilini görmek istiyor.

->

iliarr yazdı >>
muhtemelen farklı şeylerden bahsediyoruz... Bir öğretmenle çalışmıyorum (bu şekilde öğrenmede bir öğrenme hatası var)... Maksimum amaç fonksiyonu için çalışıyorum ve mümkün olan maksimum değeri bilmiyorum amaç fonksiyonunun değeridir.

->

rip yazdı >>

Bu bir test örneği hatasıdır. Onlar. eğitim örneğinden sonraki ay alırsınız. Algoritmanıza göre işaretleyin. Çıktıları eğitilmiş ağa gönderin. Sonucu karşılaştırın. Bu sadece bu hataların grafiğidir ve ilgi çekicidir.

Ayrıca eğitim örneği hatalarının bir grafiğini alabilir ve aynı zamanda ağınızın nasıl öğrendiğini (veya nesillerin bir gen algoritmasında geliştiğini) değerlendirebilirsiniz.

Görünüşe göre rip ve IlyaA , iliarr'ın denetimsiz bir öğrenme yöntemi kullandığını asla anlamayacak. Amaç fonksiyonu kâr ise nasıl bir öğrenme hatasından bahsedebiliriz? Yoksa ikiniz de ağı tarih konusunda eğitip, bir test geçmişi üzerinde çalıştırıp kârları karşılaştırdığınızı mı düşünüyorsunuz? Kâr farklı olacaktır, daha az veya daha fazla, ancak farklı olacaktır. Test hikayesi farklı. Yaklaşımın kalitesi için kriterin orijinal fonksiyonun standart sapması ve sonuçta ortaya çıkan fonksiyon olduğu yaklaşıklık ile karıştırmayın.


statbars yazdı >>

Bir nöron aşırı doyduğunda, ORO pratik olarak onu “eğitmeyi” bırakırken, GA bir nöronu kolayca aşırı doyurabilir ve nöronun ağırlıklarını daha da artırmaya devam edebilir.

->

statbars yazdı >>

Menzil seçimi pahasına çok tartışmalı bir konudur. GA çok uzundur, ORO'dan çok daha uzundur - başka bir dezavantaj.

->

statbars yazdı >>

GA, NS için değildir. NS-th için eğitim yöntemleri vardır (optimizasyon). Sadece CV'nin ORO ile nasıl kullanılacağını çözemediği için.

Neden bu kadar kaba anlamıyorum?

İşte aramada tam tersini söyleyen birkaç bağlantı:

http://alglib.sources.ru/dataanalysis/neuralnetworks.php

http://network-journal.mpei.ac.ru/cgi-bin/main.pl?l=ru&n=13&pa=10&ar=3

http://masters.donntu.edu.ua/2004/fvti/solomka/library/article2.htm

http://www.neuropro.ru/memo314.shtml


GA'nın tüm problemler için tek doğru optimizasyon çözümü olduğunu iddia etmedim ve iddia etmiyorum. Diğer tüm çözümlerden daha çok yönlüdür ve genellikle daha hızlıdır ve hemen hemen her göreve kolayca uyarlanır. Başka bir meşru soru ortaya çıkıyor, optimal çözümü bulmak için uygunluk fonksiyonunun gerekli minimum çalıştırma sayısı. Konuşmamız gereken şey bu, optimizasyon algoritmalarının hızı hakkında değil. Ve burada GA diğer algoritmaların çoğuna oran verecektir.

İlgilenen varsa, optimizasyon algoritmaları için eğlenceli test fonksiyonları yayınlamanın ve farklı algoritmaların sonuçlarını yayınlamanın mümkün olacağı ayrı bir şube açabilirim. Sadece NN ile uğraşanlar için değil, birçok açıdan yaptığı işin en iyi sonucunu almak isteyen herkes için çok faydalı olacağını düşünüyorum.

statbars yazdı >>

Ağırlık aralığını seçme tekniğini veya size rehberlik eden şeyi sizden öğrenmek ilginçtir.

Maple veya Mathca'e'de aktivasyon fonksiyonunun çalıştığı ağırlık aralığına bakarım. Bir işlevin tanım alanı [-1; 1] ise, örneğin böyle bir değişken aralığında (-100; 100) "dolaşım"ın anlamı nedir?

Neden: