"New Neural" ist ein Open-Source-Projekt für neuronale Netzwerke für die MetaTrader 5-Plattform. - Seite 54

 
TheXpert:
Ich schlage vor, als erstes entweder Echo oder SOM auf dem Weg zu implementieren, und die Schnittstellen können fertiggestellt werden.

Komm schon, was ist näher an dir dran?

Die einfachste wäre MLP.

 
Urain:
Komm schon, was ist näher an dir dran?
Näher am Echo, leichter am SOM. Wahrscheinlich ist das SOM besser, weil es mit oder ohne Lehrer durchgeführt werden kann.
 
TheXpert:
Engeres Echo, helleres SOM. Wahrscheinlich besser als SOM, denn es kann mit oder ohne Lehrer durchgeführt werden.

SOM ist so.

1. Mascheninitialisierung
2. Arbeitshub der Masche
3. Lehrmasche

Wer macht was?

Oder sollten wir vielleicht zuerst die Klassenhierarchie anpassen?

 
Urain:

Ich habe darüber nachgedacht, wie man es so gestalten kann, dass während des Trainings neue Neuronen an den richtigen Stellen geboren werden, aber nach dem Studium der Algorithmen kam ich zu dem Schluss, dass sie keine gemeinsame Formalisierung haben, es gibt praktisch keine Schnittpunkte. Deshalb habe ich mich geweigert und mich auf den Aufbau eines vertikalen Netzes konzentriert. Art:

Daten --> Neuron --> gekapseltes neuronales Netz --> Container neuronales Netz

Es ist möglich, GAs amorph zu machen. Das menschliche Genom bestand nicht immer aus 28000 Genen.

Autsch...

 
joo:
Oh, Sie sind online. Antwort zur Topologie.
 

Erste Schätzungen

class IEvolvable // интерфейс для подключения эволюционных алгоритмов
{
public:
   virtual void GetWeightsAsVector(double& weights[]) const; // получаем все изменяемые веса собранные в одном векторе для генетики
   virtual void ApplyWeightsVector(double weights[]); // применяем подобранные генетикой веса к сети
   
   virtual void FeedInput(double inData[]); // подаем вход
   virtual void PropagateSignal(); // прогоняем входной сигнал
   virtual void GetOutput(double& outData[]) const; // берем выход
};

class ISerializable // сохранение
{
public:
   virtual bool LoadFromFile(string filePath);
   virtual bool SaveToFile(string filePath) const;
};

class IBasicNet
   : public IEvolvable
   , public ISerializable
{
public:
   virtual void FeedInput(double inData[]); // вход можно брать из коллекции или отдельно. Подразумевается, что коллекция включает в себя обработку входов, поэтому отдельные входы надо преобразовывать коллекцией
   virtual void FeedInput(int index);
   virtual void PropagateSignal();
   virtual void GetOutput(double& outData[]) const;
   virtual void Init(); // инициализация. Инициализатор можно подавать в конструкторе, можно в функцию, посмотрим как будет удобно
}

class ISupervised // сеть с учителем
   : public IBasicNet
{
public:
   virtual void SetPatternCollection(PatternCollection* collection); // у сетей с учителем обязательно каждому входному образу соответствует выходной поэтому лучше их сразу организовывать по парам
   virtual void CountError(); // подсчет ошибки. сюда например будет входить ОРО для MLP
   virtual void Learn(); // изменение весов. никаких итераций внутри, чтобы можно было на каждом шаге просмотреть состояние
};

class IUnsupervised // сеть без учителя
   : public IBasicNet
{
public:
   virtual void SetInputCollection(InputCollection* collection); // у сетей без учителя только входы
   virtual void Learn();
};

class IInitializer // инициализатор
{
public:
   virtual void Init(double& value);
   virtual void Init(double& value[]);
   virtual void Init(Matrix& value);
};

 
TheXpert:
Oh, Sie sind online. Antwort zur Topologie.
Meines Erachtens kann und sollte das Topologiemanagement als genetische Programmierung betrachtet werden. Hier bin ich nicht sehr stark - das ist ein eigenes großes Wissensgebiet. Aber wenn es nötig ist, werde ich mich mit dieser Frage näher befassen. Es ist ein GA, bei dem sich die Chromosomenlänge dynamisch ändern kann. In meiner GA hat das Chromosom eine feste Länge. Es ist jedoch möglich, dies zu umgehen, indem man zusätzliche Flaggen einführt, um einzelne Gene einzufrieren und die Länge des Chromosoms mit einer Reserve zu belegen.
 
TheXpert:

Erste Schätzungen

Geben Sie einen Kommentar dazu ab
 
joo:
Das ist das "Ups", das es ist.
OK, fürs Erste gibt es eine Möglichkeit, das Problem zu umgehen, wir werden darüber nachdenken, wenn wir die Genetik machen.
 
Urain:
Dies ist der nächste Schritt und steht nicht in direktem Zusammenhang mit dem Motor, seine Implementierung erfolgt durch einen externen GA, der verschiedene Topologien erstellt, die Objekte verschiedener Motoren initialisieren.

Und ja, Sie sollten wahrscheinlich mehr als einen GA verwenden. Eine für die Topologie und eine für die Anpassung aller Gewichte aller Netze. Dann würde der zweite GA nur einige der Gene einfrieren, je nach der aktuellen Topologie.