"New Neural "は、MetaTrader 5プラットフォーム用のオープンソース・ニューラルネットワークエンジンプロジェクトです。 - ページ 54

 
TheXpert です。
途中でechoかSOMのどちらかを最初に実装することを提案し、インターフェースを確定させることができます。

さあ、もっと近くにあるのは?

一番シンプルなのはMLPでしょう。

 
ウラン です。
さあ、もっと近くにあるのは?
エコーに近く、SOMに軽い。先生の有無にかかわらずできるので、おそらくSOMの方がいいと思います。
 
TheXpert:
Closer echo, lighter SOM.先生の有無にかかわらずできるので、おそらくSOMよりも優れていると思います。

SOMはこんな感じです。

1. メッシュの初期化
2. メッシュの作業ストローク
3.ティーチングメッシュ

誰が何をするのか?

それとも、まずクラスの階層を調整すべきなのでしょうか?

 
ウラン です。

トレーニング中に新しいニューロンが適切な場所に生まれるようにするにはどうしたらいいか考えていましたが、アルゴリズムを検討した結果、共通の形式化ができない、実質的に交点がない、という結論に達しました。だから、私はそれを拒否して、縦のネットワークを作ることに集中した。タイプです。

データ ニューロン カプセル化されたニューラルネットワーク コンテナニューラルネットワーク

GAをアモルファス化することは可能です。ヒトゲノムは、昔から28000個の遺伝子で構成されていたわけではありません。

痛い...

 
ジュ
あ、オンラインになったんですね。トポロジーについてお答えください。
 

最初の見積もり

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 です。
あ、オンラインになったんですね。トポロジーについてお答えください。
トポロジーの管理は、遺伝的プログラミングと考えるのが妥当でしょう。ここはあまり得意ではありません。別途、膨大な知識が必要な分野です。しかし、必要であれば、この質問をじっくりと取り上げるつもりです。染色体の長さを動的に変化させることができるGAです。私のGAでは、染色体の長さは固定されています。ただし、個々の遺伝子を凍結するフラグを追加で導入し、予備で染色体の長さを取ることで回避することは可能です。
 
TheXpert です。

最初の見積もり

解説をつける
 
ジュ
それが「おっとっと」なのです。
よし、とりあえず問題を回避する方法はある、遺伝子をやるときに考えよう。
 
ウラン です。
これは次のステップで、エンジンとは直接関係ありません。その実装は、異なるトポロジーを作成し、異なるエンジンのオブジェクトを初期化する外部のGAを介して行われます。

そして、そうですね、複数のGAを使うべきでしょう。1つはトポロジー用、もう1つは全ネットワークの重みを調整するためのものです。そうすると、2回目のGAでは、現在のトポロジーに応じて、一部の遺伝子をフリーズさせるだけとなります。