シナプス

重要:Synaptic 2.xは現在議論の段階にあります!お気軽に参加してください
Synapticはnode.jsとブラウザ用のjavascriptニューラルネットワークライブラリであり、その一般化されたアルゴリズムはアーキテクチャフリーであるため、基本的にあらゆるタイプの1次または2次ニューラルネットワークアーキテクチャを構築およびトレーニングできます。
このライブラリには、多層パーセプトロン、多層長短期記憶ネットワーク(LSTM)、液体状態マシンまたはホップフィールドネットワークなどのいくつかの組み込みアーキテクチャ、および組み込みのトレーニングタスク/テストを含む任意のネットワークをトレーニングできるトレーナーが含まれています。 XORの解決、Distracted SequenceRecallタスクまたはEmbeddedReber Grammarテストの完了など、さまざまなアーキテクチャのパフォーマンスを簡単にテストおよび比較できます。
このライブラリによって実装されるアルゴリズムは、Derek D.Monnerの論文から引用されています。
2次リカレントニューラルネットワーク用の一般化されたLSTMのようなトレーニングアルゴリズム
その論文には、ソースコードを通じてコメントされた方程式への参照があります。
序章
ニューラルネットワークについての予備知識がない場合は、このガイドを読むことから始める必要があります。
ニューラルネットワークにデータを供給する方法の実際的な例が必要な場合は、この記事をご覧ください。
また見撮りたいことがあり、この記事を。
デモ
これらのデモのソースコードは、このブランチにあります。
入門
例を試すには、gh-pagesブランチをチェックアウトしてください。
git checkout gh-pages
他の言語
このREADMEは、他の言語でも利用できます。
概要
Installation
ノード内
npmでsynapticをインストールできます:
1npm install synaptic --save
ブラウザで
1bower install synaptic
または、CDNjsから提供されたCDNリンクを使用することもできます
1<script src="https://cdnjs.cloudflare.com/ajax/libs/synaptic/1.1.4/synaptic.js"></script>
Usage
1
2
3
4
5
6var synaptic = require('synaptic'); // this line is not needed in the browser
var Neuron = synaptic.Neuron,
Layer = synaptic.Layer,
Network = synaptic.Network,
Trainer = synaptic.Trainer,
Architect = synaptic.Architect;
これで、ネットワークの作成、トレーニング、またはアーキテクトの組み込みネットワークの使用を開始できます。
Examples
パーセプトロン
これは、単純なパーセプトロンを作成する方法です。
。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22function Perceptron(input, hidden, output)
{
// create the layers
var inputLayer = new Layer(input);
var hiddenLayer = new Layer(hidden);
var outputLayer = new Layer(output);
// connect the layers
inputLayer.project(hiddenLayer);
hiddenLayer.project(outputLayer);
// set the layers
this.set({
input: inputLayer,
hidden: [hiddenLayer],
output: outputLayer
});
}
// extend the prototype chain
Perceptron.prototype = new Network();
Perceptron.prototype.constructor = Perceptron;
これで、トレーナーを作成し、パーセプトロンにXORを学習するように教えることで、新しいネットワークをテストできます。
1
2
3
4
5
6
7
8
9var myPerceptron = new Perceptron(2,3,1);
var myTrainer = new Trainer(myPerceptron);
myTrainer.XOR(); // { error: 0.004998819355993572, iterations: 21871, time: 356 }
myPerceptron.activate([0,0]); // 0.0268581547421616
myPerceptron.activate([1,0]); // 0.9829673642853368
myPerceptron.activate([0,1]); // 0.9831714267395621
myPerceptron.activate([1,1]); // 0.02128894618097928
長短期記憶
これは、入力ゲート、忘却ゲート、出力ゲート、およびのぞき穴接続を備えた単純な長期短期記憶ネットワークを作成する方法です。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46function LSTM(input, blocks, output)
{
// create the layers
var inputLayer = new Layer(input);
var inputGate = new Layer(blocks);
var forgetGate = new Layer(blocks);
var memoryCell = new Layer(blocks);
var outputGate = new Layer(blocks);
var outputLayer = new Layer(output);
// connections from input layer
var input = inputLayer.project(memoryCell);
inputLayer.project(inputGate);
inputLayer.project(forgetGate);
inputLayer.project(outputGate);
// connections from memory cell
var output = memoryCell.project(outputLayer);
// self-connection
var self = memoryCell.project(memoryCell);
// peepholes
memoryCell.project(inputGate);
memoryCell.project(forgetGate);
memoryCell.project(outputGate);
// gates
inputGate.gate(input, Layer.gateType.INPUT);
forgetGate.gate(self, Layer.gateType.ONE_TO_ONE);
outputGate.gate(output, Layer.gateType.OUTPUT);
// input to output direct connection
inputLayer.project(outputLayer);
// set the layers of the neural network
this.set({
input: inputLayer,
hidden: [inputGate, forgetGate, memoryCell, outputGate],
output: outputLayer
});
}
// extend the prototype chain
LSTM.prototype = new Network();
LSTM.prototype.constructor = LSTM;
これらは説明のための例であり、アーキテクトにはすでに多層パーセプトロンと多層LSTMネットワークアーキテクチャが含まれています。
助ける
Synapticは、アルゼンチンのブエノスアイレスで開始されたオープンソースプロジェクトです。世界中の誰もがプロジェクトの開発に貢献することを歓迎します。
気軽にPRを送信したい場合は、送信する前に必ずnpm runtestとnpmrun buildを実行してください。こうすることで、すべてのテスト仕様を実行し、Web配布ファイルをビルドできます。
サポート
このプロジェクトが好きで、あなたのサポートを示したいのなら、あなたは私に魔法のインターネットのお金でビールを買うことができます:
1
2
3
4BTC: 16ePagGBbHfm2d6esjMXcUBTNgqpnLWNeK
ETH: 0xa423bfe9db2dc125dd3b56f215e09658491cc556
LTC: LeeemeZj6YL6pkTTtEGHFD6idDxHBF2HXa
XMR: 46WNbmwXpYxiBpkbHjAgjC65cyzAxtaaBQjcGpAZquhBKw2r8NtPQniEgMJcwFMCZzSBrEJtmPsTR54MoGBDbjTi2W1XmgM
<3