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

 
joo :

Hangisinin daha hızlı olduğu açık. Ancak tüm eğitim için bir dosyaya kaç kez yazmanız gerekiyor? - bir Zamanlar?

Bu nedenle, burada hız kritik değildir, ancak görsel kontrol basitleştirilmiştir.

xml dosyasının görsel olarak kontrol edilmesinin kolay olacağını söyleyemem.

bir xml dosyası biçiminde bir tür şablon hala mümkündür, ancak bir katmanda 1500 nöronlu bir ızgarayı görselleştirmek tam bir saçmalık olacak, xml oluşturma ile ilgili saçmalıklarımız olduğu ortaya çıkıyor ve görselleştirme hala normal değil . Reddetmesem de kaydederken xml'de yineleme yapmak mümkün.

MetaSürücü :

Burada sorularım var. Başlatma ile ne kastedilmektedir . Ağırlıkları yüklemek bir şeyse. Izgarayı yapılandırmak + yükleme ağırlıkları oldukça farklıdır.

--

Şu anda. Şarkı söyleyeceğim.

Ağın konfigürasyonunun (yapısı, türü) mql5 kodunda bir ara temsilini görüntülemenin iki yolu vardır.

Birincisi: kütüphane sınıflarından başlatma sırasında ağın dinamik olarak yapılandırılması. Böyle bir ağ, dinamik diziler ve işaretçiler aracılığıyla bağlantılarla doludur. Bu yaklaşım şimdiye kadar dolaylı olarak egemen oldu.

Ancak ikinci bir yol daha var: Önceden yapılandırdıktan ve xml'de görüntüledikten sonra katı bir ızgara oluşturun (statik diziler ve istenen adreslere (dizinler) doğrudan çağrılarla).

Böyle bir motor, oluşturulan ağın daha yüksek (önemli ölçüde) performansı nedeniyle kullanıcılar için çok daha çekici olabilir. Ama uygulaması daha zor. Aslında, bir xml2mql derleyicisi yapmanız gerekecek.

Ben, sobsno, ikinci yol için. Umarım sıkışırsak meta alıntılar yardımcı olur.

İlk yol.

İkinci alternatif kökünden atıldı (tam hatırlamıyorum ama ilk sayfalarda), çünkü gelecekte F7'nin ne olduğunu bilmeyen kişiler “kullanıcı” kategorisine dahil edilecek.

Ek olarak, motorun kolayca genişletilebilir olacağı varsayılır ve F7'nin amacını bilen herkes kendilerine başka bir ızgara türü ekleyebilir veya kendi icat edebilir.

ZY Şablon kodlamaya olan bağlılığınızı anlıyorum, ancak ikinci şekilde hem öğrenme algoritmalarının uygulanmasında hem de nöron türlerinin genişletilmesinde büyük sorunlarımız olacağı konusunda hemfikiriz, ayrıca yine de GPU için optimize edilmesi gerekecek. Burada ilk seçenekte ciddi problemler var, herkesin yapabileceği en basit şeyler, ama sadece evrensel bir motor projesini anlatmak beyni yakıyor.

 

Yarın, ağ prototiplerini depolamak, eğitim görevlerini ayarlamak, çalışan bilgisayarımdan bulunan çözümleri depolamak konusundaki çalışmamı buraya kopyalayacağım.

xml'deki her şey

xml dosyalarını ayrıştırmanın kaynak yoğunluğu bence çok abartılı

Bunun tek seferlik bir prosedür olduğunu unutmayın.

Ayrıca, MQL5'e özgü xml dosyaları için bir ayrıştırıcı yazmak, bir sinir ağı projesinin karmaşıklığına kıyasla önemsiz bir iştir.

 
Ukrayna :

İlk yol.

İkinci alternatif kökünden atıldı (tam hatırlamıyorum ama ilk sayfalarda), çünkü gelecekte F7'nin ne olduğunu bilmeyen kişiler “kullanıcı” kategorisine dahil edilecek.

Ek olarak, motorun kolayca genişletilebilir olacağı varsayılır ve F7'nin amacını bilen herkes kendilerine başka bir ızgara türü ekleyebilir veya kendi icat edebilir.

Burada tek bir sorum kaldı. Ağ tipolojisinde yetersiz yeterlilik nedeniyle.

1. Herhangi bir ızgara türü, bir bağlantı tablosu kullanılarak benzersiz bir şekilde belirlenebilir mi? Demek istediğim, türünün yalnızca belirli bir bağlantı tablosundan geldiği evrensel bir soyut ağ oluşturmak mümkün müdür? Başka bir deyişle, gerçekten evrensel bir ağ mı?

Yanıt evet ise, ızgara türü, ara gösterimi oluşturmadan ÖNCE ağ yapılandırma düzenleyicisi tarafından belirlenir ve evrensel kitaplıkta herhangi bir değişiklik yapılması gerekmez. Bir anlamda, ağ yapısı ne olursa olsun (buggy olmadığı sürece) asla gerekli olmayacaktır. Belki de optimizasyonu ile meşgul olmak, doğrusal olmayan dönüştürücüler kitaplığı, öğretme yöntemleri vb. oluşturmak dışında mümkündür.

Cevap hayır ise - o zaman bu yaklaşıma uymayan istisnaları tanımak için bir tür referansta burnunuzu sokun, pliz.

--

Şimdi alternatifler için. Ağ açıklamasının xml temsili dikkatlice düşünülürse ve mql uygulamasından tamamen soyutlanırsa (ki bu doğrudur), alternatifler çelişkili görünmez. Sadece her ikisi de değil, aynı zamanda kendi aralarında da uygulanabilirler.

 
MetaSürücü :
...

Cevap ikili değil,

bir yandan cevap olumsuz, bağlantı tablosunun kendisi nöronların tipini belirtmiyor.

Öte yandan, cevap olumludur, türlerin atanması sayısal biçimde oldukça gerçekleştirilebilir (bir anahtarla ortak bir atadan miras alınan belirli bir türde bir nesne yaratırsınız).

Yani kombinasyon halinde, parametrik dizi ve bağlantı tablosu oldukça uygundur.

Ama öte yandan, konfigürasyon düzenleyicinin bile parametreleri vardır (katman sayısı, her katmandaki nöron sayısı, katmandaki nöron türleri) ve bu, bağlantıları oluşturmadan önce bile olur.

 
MetaSürücü :

Başka bir deyişle, gerçekten evrensel bir ağ mı?

İleri beslemeden, evet. Geri kalanı için topolojiye bakmanız gerekir.
 
TheXpert :
İleri beslemeden, evet. Geri kalanı için topolojiye bakmanız gerekir.

Böylece topoloji bağlantı tablosu tarafından verilir ....

?

 
MetaSürücü :

Böylece topoloji bağlantı tablosu tarafından verilir ....

Ve bağlı parçaların işlevselliği.
 
TheXpert :
Ve bağlı parçaların işlevselliği.

TAMAM. Burada biraz daha ayrıntılı konuşalım.

Bu işlevsellik sonlu (küçük) bir tablo tarafından verilebilir mi? Farklı tipteki nöronlar nasıl farklılık gösterir (aktivasyon işlevleri hariç)?

 
MetaSürücü :

TAMAM. Burada biraz daha ayrıntılı konuşalım.

Bu işlevsellik sonlu (küçük) bir tablo tarafından verilebilir mi? Farklı tipteki nöronlar nasıl farklılık gösterir (aktivasyon işlevleri hariç)?

Kesinlikle, hayır.

İlk olarak, basit bir dava. Örneğin lineer, sigmoid, teğet nöronlarımız var. Yeni bir aktivasyon türü eklemek istersek, aktivasyon türlerinin listesini genişletmek zorunda kalırız.

Prensip olarak, olduğu gibi, cehenneme. Ama ilk olarak, örneğin bir kohonen ağında neden çıktı katmanında bazı aktivasyon fonksiyonları hakkında bir işaret var? Bu gereksiz bir bilgidir.

İkincisi, bu liste teorik olarak sınırsızdır.

Üçüncüsü, her ağın işletimde ve cihazda özellikleri olabilir. Örneğin, bir Kohonen ağı (SOM) için, bu, sonuçların çıktı olarak mı yoksa yalnızca lider olarak mı verileceği (lider olmayanları sıfırlayarak) komşu işlevi ve bir bayrak için ayarlar olabilir.

Mantıksal modellerde, örneğin, etkinleştirme işlevinde yapılandırılabilir parametreler bulunur. Bu genel modelde de var mı?

MLP katmanı için bu, tek bir nöronun varlığı için bir işaret olabilir.

____________________________

Bu arada, xml'nin geçerliliğini kontrol etmek ikili gösterimden çok daha kolaydır. Ve kaydetme \ geri yükleme aslında zaman açısından kritik değildir.

 
TheXpert :

1. Kesinlikle, hayır.

İlk olarak, basit bir dava. Örneğin lineer, sigmoid, teğet nöronlarımız var. Yeni bir aktivasyon türü eklemek istersek, aktivasyon türlerinin listesini genişletmek zorunda kalırız.

Prensip olarak, olduğu gibi, cehenneme. Ama ilk olarak, örneğin bir kohonen ağında neden çıktı katmanında bazı aktivasyon fonksiyonları hakkında bir işaret var? Bu gereksiz bir bilgidir.

İkincisi, bu liste teorik olarak sınırsızdır.

Üçüncüsü, her ağın işletimde ve cihazda özellikleri olabilir. Örneğin, bir Kohonen ağı (SOM) için, bu, sonuçların çıktı olarak mı yoksa yalnızca lider olarak mı verileceği (lider olmayanları sıfırlayarak) komşu işlevi ve bir bayrak için ayarlar olabilir.

Mantıksal modellerde, örneğin, etkinleştirme işlevinde yapılandırılabilir parametreler bulunur. Bu genel modelde de var mı?

MLP katmanı için bu, tek bir nöronun varlığı için bir işaret olabilir.

____________________________

2. Bu arada, xml'nin geçerliliğini kontrol etmek ikili gösterimden çok daha kolaydır. Ve kaydetme \ geri yükleme aslında zaman açısından kritik değildir.

1. Neden olmasın . Benim fikrim şöyle bir şey - herhangi bir türden bir sinir ağının "lehimlenebileceği" (genişletilebilir olabilir) evrensel bir "eleman tabanı" oluşturmak. Bu tabandaki unsurlar, kesin ve net tanımlar-formülasyonlarla belirlenir. Gerekirse, sözde kod kullanarak. Ancak uygulamalardan ayrılmayı sağlamak için mql kodu biçiminde değil - zamanla geliştirilebilirler. Soyut eleman tabanı oluşturulduktan sonra (mümkünse), ağ elemanları arasındaki tüm bağlantıları tanımlayabilen bir xml dosya formatı oluşturabilirsiniz. xml açıklamasının onaylanmasından sonra proje kolayca paralelleştirilebilir:

1) öğelerin uygulanması. => çıktıda - bir bileşen kitaplığı.

2) ağ tipinin/yapısının yapılandırıcı(lar)ı => çıktıda - bir grafiksel, adım adım veya yapılandırmayı bir xml dosyasına kaydeden başka bir yapılandırıcı/yapılandırıcı.

3) çevirmen(ler)den mql koduna. => çıktı, ya (1) bir xml dosyasını parametre olarak alan, süper-duper kendi kendini yapılandıran bir mql sinir ağıdır, ya da (2) belirli bir mql sabit ağına bir derleyicidir.

Bunun gibi bir şey. Zor görünüyor.

2. Evet.