Sieci neuronowe ukryte w SPSS Modeler

Start / Blog / Sieci neuronowe ukryte w SPSS Modeler

Kontynując poprzedni temat chciałbym podzielić się odkryciem, którego dokonałem podczas przeglądania dokumentacji SPSS Modeler i Python. 

Odkrycie to sprowadza się do wniosku, iż w narzędziu IBM SPSS Modeler istnieją dwa węzły do budowy sztucznych sieci neuronowych. Jeden z węzłów dostępny jest standardowo w palecie węzłów na karcie modele, natomiast drugi, a właściwie pierwszy, można wywołać jedynie korzystając ze skryptu:

import modeler.api
stream = modeler.script.stream()
stream.create(„neuralnet”, „Neural Net”)

Python5

Ukryty węzeł pochodzi z czasów, gdy program IBM SPSS Modeler nazywał się jeszcze Clementine. Następnie po akwizycji przez (jeszcze wtedy nie IBM) SPSS nastąpił proces standaryzacji procedur analitycznych, podczas którego stary węzeł został zastąpiony nowym. Pierwotny węzeł nie został jednak całkowicie usunięty, co miało zapewnić, że strumienie danych napisane we wcześniejszych wersjach programu nie przestaną działać.

Tyle tytułem wprowadzenia. Między starym, a nowym węzłem występują dość duże różnice jeśli chodzi o funkcjonalności. Pierwotny węzeł dostarcza więcej opcji budowy sieci oraz pozwala zachować większą kontrolę nad procesem uczenia. Dodatkowo, stary węzeł pozwalał na zapisywanie raportu z procesu uczenia sieci.

 

Po otwarciu węzła, w karcie model, użytkownik może wybrać jedną z sześciu opcji budowy sieci:

 

Python4

 

  • Szybka – zbliżona do opcji dostępnych w nowym węźle, czyli budowa sieci o wyspecyfikowanej topologii.

  • Dynamiczna – działa podobnie jak szybka, ale w procesie uczenia dodaje lub odejmuje neurony warstwy ukrytej w zależności od wartości błędu.

  • Wieloraka – buduje wiele sieci o różnej topologii, i wybiera najlepszą.

  • Przycinanie – proces w wyniku którego budowana i trenowana jest relatywnie duża sieć. Następnie przeprowadzona jest analiza wrażliwości i usuwane są najmniej istotne neurony warstwy wejściowej i ukrytej, a proces uczenia jest kontynuowany. Podejście to wydaję się bardzo efektywne, ale zajmuje też bardzo dużo czasu.

  • RBFN – tworzy sieć o radialnej funkcji bazowej. Metoda jest analogiczna do metody stosowanej obecnie.

  • Przycinanie wyczerpujące – działa podobnie jak przycinanie tylko staruje od największej możliwej sieci, co czyni proces jeszcze bardziej czasochłonnym.

Powyższe fajnie ilustruje karta zaawansowane, która zmienia się dynamicznie w zależności od wybranego modelu sieci.

 

Karta zaawansowane dla metody szybka:

Python3

Karta zaawansowane dla metody przycinanie:

Python2

Karta zaawansowane dla metody przycinanie wyczerpujące:

 

Python1

Jak widać, w zależności od metody możemy wyspecyfikować parametry uczenia, topologię sieci oraz właściwości typowe dla poszczególnych metod. W zakładce Opcje znajduje się kolejna ciekawa opcja: Pokaż wykres sprzężenia zwrotnego, który pokazuje jak wygląda trafność modelu najlepszego w porównaniu z trafnością modelu obecnego. Oprócz oglądania modelu użytkownik ma też możliwość zatrzymania procesu uczenia w dowolnym momencie.

Zachęcam do testowania węzła!