Skip to content

Latest commit

 

History

History
77 lines (52 loc) · 4.35 KB

architect.md

File metadata and controls

77 lines (52 loc) · 4.35 KB

Perceptron

フィードフォワードニューラルネットワークとも呼ばれる、多層パーセプトロンを作成できます。 一連の層で構成され、それぞれが完全に次の層に接続されています。

multilayer perceptron

最低でも3つの層(入力、非表示、出力)を提供する必要がありますが、必要な数だけ隠し層を使用することができます。 例えば、入力層に2つのニューロン、隠れ層に3つのニューロン、出力層に1つのニューロンを持つPerceptron(パーセプトロン)を設定する場合:

var myPerceptron = new Architect.Perceptron(2,3,1);

入力層に2つのニューロン、それぞれ10のニューロンを持つ4つの隠れ層、出力層に1つのニューロンを持つ深層マルチレイヤパーセプトロンの設定ですとこうなります。

var myPerceptron = new Architect.Perceptron(2, 10, 10, 10, 10, 1);

LSTM

long short-term memory(長い短期記憶)は、イベント間で非常に長いタイムラグがある時系列を分類、処理、予測するのに適したアーキテクチャです。

long short-term memory

少なくとも1つの入力層、1つのメモリブロックアセンブリ、および出力層を設定する必要があります。 ブロックアセンブリは入力ゲート、メモリセル、忘却ゲートおよび出力ゲートの4つの層があります。

var myLSTM = new Architect.LSTM(2,6,1);

メモリブロックの多くの層を設定することもできます。

var myLSTM = new Architect.LSTM(2,4,4,4,1);

この例のLSTMネットワークには3つのメモリブロックアセンブリがあります。 各アセンブリには4つのメモリセル、入力ゲート、メモリセル、忘却ゲートおよび出力ゲートがあります。 各ブロックは依然として前の層と最初の層から入力を受け取ります。 Neatapticは、よりシーケンシャルなアーキテクチャとトレーニング中にネットワークをクリアするオプションを備えており、シーケンス予測の方がより優れています。

Liquid

LiquidアーキテクチャではLiquid State Machine(液体状態機械)を作成できます。ニューロンは互いにランダムに接続されています。 時変入力はActivationの時空間パターンに変わります。

入力層のサイズ、プールのサイズ、出力レイヤのサイズ、プール内のランダムな接続の数、および接続の中のランダムなゲートの数を入力する必要があります。

var input = 2;
var pool = 20;
var output = 1;
var connections = 30;
var gates = 10;

var myLiquidStateMachine = new Architect.Liquid(input, pool, output, connections, gates);

Hopfield

Hopfield(ホップフィールド)アーキテクチャはコンテンツアドレス可能なメモリに使用されます。 最初にパターンを記憶するように訓練されています。 新しいパターンを取得すると覚えて訓練されたパターンから最も類似したパターンを返します。

var hopfield = new Architect.Hopfield(10) // create a network for 10-bit patterns

// teach the network two different patterns
hopfield.learn([
	[0, 1, 0, 1, 0, 1, 0, 1, 0, 1],
	[1, 1, 1, 1, 1, 0, 0, 0, 0, 0]
])

// feed new patterns to the network and it will return the most similar to the ones it was trained to remember
hopfield.feed([0,1,0,1,0,1,0,1,1,1]) // [0, 1, 0, 1, 0, 1, 0, 1, 0, 1]
hopfield.feed([1,1,1,1,1,0,0,1,0,0]) // [1, 1, 1, 1, 1, 0, 0, 0, 0, 0]

Networkクラスを拡張することで独自のアーキテクチャを作成できます。Examplesのセクションを参照してください。