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
- brain-0.3.5.min.js Kompletna biblioteka - 30k
- neuralnetwork.js Tylko sieć neuronowa - 8k (uwaga na ostatnią linijkę!)
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: ai, javascript, neuralnetwork
Red 18:53
Prześlij komentarz