Wprowadzenie do symulatora sieci neuronowych SNNS (Stuttgart Neural Network Simulator)

I. Instalacja i kompilacja pakietu SNNS wersja 4.2

1. Ściąganie źródeł i dokumentacji

wget http://www-ra.informatik.uni-tuebingen.de/downloads/SNNS/SNNSv4.2.tar.gz
wget http://www-ra.informatik.uni-tuebingen.de/downloads/SNNS/SNNSv4.2.Manual.pdf

2. Rozpakowanie i kompilacja

gunzip -c SNNSv4.2.tar.gz | tar xf -
cd SNNSv4.2

Uwaga 1: należy poprawić błąd, w wierszu 495 pliku xgui/sources/ui_config.c należy wiersz o postaci:

  for (i=0; (i<UI_NO_LEARN_PARAMS+UI_NO_OF_CASCADE_PARAMS); i++){
zamienić na:
  for (i=0; (i<UI_NO_LEARN_PARAMS+UI_NO_OF_CASCADE_PARAMS) AND (i<noParams) ; i++){

Uwaga 2: na moim Linuksie Ubuntu 5.10 (Breezy Badger) konieczne okazało się ustawienie dodatkowej flagi do kompilacji:

  setenv CFLAGS -DMAXFLOAT=HUGE
Tak to wygląda w C-shellu, a jeśli ktoś używa basha to:
  CFLAGS=-DMAXFLOAT=HUGE
  export CFLAGS
Ustawiamy to sobie w środowisku swojego własnego interpretera poleceń przed wywołaniem ./configure i to się przepropaguje do wszystkich plików konfiguracyjnych.

I już lecimy konfigurację i kompilację:

  ./configure --with-x
Najprostsza konfiguracja przygotowuje pakiet SNNS do instalacji w podkatalogach SNNS. Jeśli ktoś chciałby zrobić instalację systemową, np. dla wielu użytkowników, na serwerze, itp., to powinien użyć również opcji --enable-global która utworzy ścieżki do instalacji w katalogu /usr/local.
  make
  make install

3. Gotowe kompilanty

Alternatywnie można ściągnąć i zainstalować gotowe binarne kompilanty dostępne dla: Windowsa, Linuxa, i Suna ze strony:

http://www-ra.informatik.uni-tuebingen.de/downloads/SNNS/Executables/

4. Pakiet SNNS

Sprawdzamy, że SNNS się zainstalował wywołując:

  xgui &

Cały pakiet SNNS składa się z programu interfejsu graficznego xgui, oraz z szeregu pomocniczych programów znajdujących się w podkatalogu tools:

analyze          isnns            netlearn         snnsbat
batchman         linknets         netperf          td_bignet
convert2snns     mkhead           pat_sel
feedback-gennet  mkout            pat_sel_simple
ff_bignet        mkpat            snns2c

II. Dokumentacja

Dokumentacja programu SNNS jest przydatnym podręcznikiem, z którego można nauczyć się o budowie wielu rodzajów sieci neuronowych, znaleźć rady i przykłady jak skonfigurować i dobrać parametry funkcji uczących dla tych sieci, jak również (oczywiście) opisuje dokładnie działanie i sposób posługiwania się samym programem.

Dokumentacja ma postać dokumentu w formacie książki, jest dostępna w postaci źródłowej w Latexu, można ją czytać w postaci PDF, można też wydrukować na papierze A4.

III. Uruchamianie przykładów załączonych w podkatalogu examples

1. Przykład „letters”

Pierwsza sieć: matryca 5x7 do wyświetlania literek i wyjście z sieci je rozpoznaje. Pliki: letters.pat zawiera wzorce a letters.net wyuczoną sieć. Sieć letters3D.net zawiera podobną sieć, ale skonfigurowaną do wyświetlania w trzech wymiarach.

2. Przykład „font”

Plik font.pat zawiera 150 wzorców różnych liter (małych i dużych), cyfr, i innych znaków ASCII, w sumie 75 znaków, po dwa wzorce, razem 150 wzorców. Znaki są zapisane w rastrze 24x24, co odpowiada sieci o warstwie wejściowej składającej się z 576 neuronów. SNNS pozwala budować sieci o dowolnym układzie neuronów, więc w tej sieci warstwa wejściowa została zbudowana w układzie 24x24. Po minimalnym przeformatowaniu pliku wzorców możemy te znaki łatwo zobaczyć w pliku font_wp.pat.

Plik font.net zawiera zapis gotowej (wyuczonej) sieci. Można ją załadować do SNNS, a następnie załadować plik wzorców, i następnie posługując się panelem CONTROL:

3. Przykład „watch”

Przykład pokazuje jak można wyuczyć sieć do pewnych typowych obliczeń, na zbiorze danych o pewnych ustalonych rozmiarach, i używać jej do przetwarzania zbiorów danych o innych rozmiarach, tu przetwarzaniu obrazów 2D.

watch.README            example of using neural networks for image processing
watch.cfg                (demonstrates new subpattern processing capability)
watch.net
watch.pat
watch_2out.README       advanced example of using neural networks
watch_2out.cfg           for image processing with sub
watch_2out.net
watch_2out.pat
watch_edge.pgm
watch_edge_invert.pgm
watch_orig.pgm

4. Przykład „som_cube”

Przykład pokazuje uczenie się bez nauczyciela na sieci Kohonena. Sieć Kohonena usiłuje zgrupować wzorce wejściowe w grupy neuronów na płaszczyźnie 2D. W efekcie sieć Kohonena jest samobieżnym, samokonfigurującym się klasyfikatorem, który potrafi czasami inteligentnie pogrupować wzorce wejściowe.

W przykładzie wzorce są punktami w przestrzeni 3D stanowiącymi wierzchołki sześcianu (stąd nazwa przykładu). Sieć Kohonena o tym nie wie, i próbuje pogrupować te punkty na płaszczyźnie 2D.