素晴らしいコミュニティモジュール

シナプスビルドステータス https://synapticjs.slack.com でチャットに参加してください

重要: Synaptic 2.x は現在議論の段階にあります! ぜひご参加ください。

Synaptic は、 node.jsおよびブラウザー用の JavaScript ニューラル ネットワーク ライブラリです。その一般化されたアルゴリズムはアーキテクチャに依存しないため、基本的にあらゆる種類の 1 次または2 次のニューラル ネットワークアーキテクチャを構築してトレーニングできます

このライブラリには、多層パーセプトロン多層長短期記憶ネットワーク (LSTM)、液体ステート マシンまたはホップフィールドネットワークなどのいくつかの組み込みアーキテクチャと、組み込みのトレーニング タスク/テストを含む、任意のネットワークをトレーニングできるトレーナーが含まれています。 XOR を解く、Distracted Sequence Recall タスクやEmbedded Reber Grammarテストを完了するなど、さまざまなアーキテクチャのパフォーマンスを簡単にテストして比較できます。

このライブラリによって実装されるアルゴリズムは、Derek D. Monner の論文から引用されています。

二次リカレント ニューラル ネットワーク用の一般化された LSTM のようなトレーニング アルゴリズム

その論文には、ソース コードを通じてコメントされた方程式への参照があります。

導入

ニューラル ネットワークに関する予備知識がない場合は、まずこのガイドを読んでください。

ニューラル ネットワークにデータをフィードする方法の実践的な例が必要な場合は、この記事を参照してください

この記事も参照してください

デモ

これらのデモのソース コードは、このブランチにあります

はじめる

例を試してみるには、gh-pagesブランチをチェックアウトしてください。

git checkout gh-pages

他の言語

この README は他の言語でも入手できます。

概要

Installation

ノード内

npmを使用して Synaptic をインストールできます

1
npm install synaptic --save
ブラウザで

bowerを使用して Synaptic をインストールできます

1
bower 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 6
var 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;

これで、ネットワークの作成、トレーニング、またはArchitectからの組み込みネットワークの使用を開始できるようになります

Examples

パーセプトロン

これは、単純なパーセプトロンを作成する方法です

パーセプトロン

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22
function 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 9
var 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 46
function 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 run testnpm run buildを必ず実行してください。これにより、すべてのテスト仕様が実行され、Web 配布ファイルがビルドされます。

サポート

このプロジェクトが気に入ってサポートを示したい場合は、魔法のインターネットマネーでビールを買ってください:

1 2 3 4
BTC: 16ePagGBbHfm2d6esjMXcUBTNgqpnLWNeK ETH: 0xa423bfe9db2dc125dd3b56f215e09658491cc556 LTC: LeeemeZj6YL6pkTTtEGHFD6idDxHBF2HXa XMR: 46WNbmwXpYxiBpkbHjAgjC65cyzAxtaaBQjcGpAZquhBKw2r8NtPQniEgMJcwFMCZzSBrEJtmPsTR54MoGBDbjTi2W1XmgM

<3