Sieci Neuronowe

poniedziałek, 11 lipca 2011

Brain

Dziś chciał bym opisać pewną drobną ale niezwykłą bibliotekę

Brain to implementacja sieci neuronowej napisana w Javascript.

Główny plik liczy sobie 8k. Dotychczas, zawsze gdy miałem ochotę pobawić się z sieciami neuronowymi, na przeszkodzie stawała konieczność przetrawienia ton ciężkostrawnej dokumentacji. Jednak w tym przypadku można zacząć zabawę nieomal z marszu.

Instalacja

Na początek parę słów o instalacji, bo wielość środowisk sprawia że można podejść do tego w bardzo różny sposób.

Przeglądarka

Serwer

Tu można jeszcze prościej. Używając środowiska RingoJS, wystarczą dwa polecenia:

ringo-admin install harthur/brain
ringo-admin install documentcloud/underscore

Na stronie autora opisane są analogiczne polecenia dla Node.js

Hello, world

Początkowo chciałem zamieścić nieco bardziej złożony przykład, ale kawałek kodu, nad którym siedziałem przestał już być prosty i czytelny.

Niech więc wystarczy typowy przykład implementacji bramki logicznej XOR

var brain = require('brain');

var net = new brain.NeuralNetwork();
net.train([
    {input:[0,0], output:[0]},
    {input:[0,1], output:[1]},
    {input:[1,0], output:[1]},
    {input:[1,1], output:[0]}
]);

print(net.run([1,0]));

Ten przykład nie oddaje w pełni uroku tej biblioteki. Tak to zwykle bywa z HelloWorld

Znacznie wymowniejsza była by nauka rozpoznawania kolorów:

net.train([
    {input:{r:1,g:0,b:0}, output:{czerwony:1}},
    ...
]);

Na koniec

Główną zaletą tej konkretnej biblioteki jest nastawienie na format JSON. Dane treningowe, wyniki, wyszkolona sieć - wszystko to może być zapisane w tym formacie i to chyba jest główna przyczyna niesamowitej prostoty, która tak mnie zafascynowała.

Niewielkie rozmiary kodu, oraz to że jest on napisany w bardzo przejrzysty sposób, czynią tą bibliotekę wspaniałym narzędziem edukacyjnym dla każdego kto ma ochotę poznać podstawy sieci neuronowych.

Na koniec cukierek:

net.toFuncion().toString()

Linki

Etykiety: , ,

Red 18:53

Komentarze

Prześlij komentarz

Archiwum

Subskrybuj

RSS / Atom