Technologie i wydarzenia
Artykuł
Mateusz Brzostek, Wtorek, 27 września 2016, 18:13

Co to jest sieć neuronowa?

Wspomniany perceptron jest najprostszą siecią neuronową, złożoną z jednego sztucznego neuronu. Perceptron ma kilka wejść, do których przypisane są wagi, określające, jak duży wpływ ma wielkość z danego wejścia na wynik. Zestaw danych ze wszystkich wejść jest podstawiany do pewnego wzoru określonego przez programistę – w oryginalnym perceptronie było to dodawanie. Jeśli suma wszystkich wejść (z uwzględnieniem wag) przekroczy określony z góry próg, perceptron da odpowiedź pozytywną (logiczne 1), a jeśli nie – negatywną (logiczne 0). Łatwo zauważyć, że taki układ jest niewiele lepszy od zwykłych bramek logicznych. Dziś stosuje się inny rodzaj sztucznych neuronów, które dają odpowiedź w formie liczby rzeczywistej, czyli nie tylko 0 lub 1, ale dowolną liczbę pomiędzy.

Sieć neuronowa uczy się na przykładach: trzeba jej przedstawić jakąś liczbę już rozwiązanych przykładów. Tok uczenia sieci można zacząć od przypisania równych lub losowych wag każdemu wejściu. Sprawdzamy, czy odpowiedź sieci jest zgodna z pożądanym wynikiem, a następnie zmieniamy wagi tak, żeby wynik zbliżał się do pożądanej odpowiedzi. We wspomnianym pierwszym perceptronie z lat 50. XX wieku do regulacji wag służyły potencjometry, początkowo regulowane ręcznie. Mechanizm regulacji wag jest też jednak częścią sieci neuronowej, tak zwaną regułą uczenia, i działa automatycznie. Perceptron jako neuron jest trudny w uczeniu, bo zmiany wielkości wejściowych lub wag mają skutek albo całkowity, albo zerowy – nie można obserwować, jak drobne zmiany przybliżają odpowiedź sieci do pożądanego wyniku.

Jeden sztuczny neuron ma mizerne możliwości rozwiązywania problemów. Wiele neuronów można połączyć w warstwy, gdzie jedna warstwa przekazuje wyniki kolejnej, aż do najwyższej warstwy, dającej odpowiedź.

Ilustracja za Wikipedią, CC-BY-1.0

Na powyższym diagramie zielone neurony stanowią warstwę wejściową, niebieskie – warstwę ukrytą, a żółty – warstwę wyjściową. Warstw ukrytych może być wiele; w uproszczeniu można przyjąć, że im więcej sieć ma warstw, tym głębsze zależności może znaleźć w danych wejściowych. Nie jest to jednak ścisłą zasadą i zależy również od reguł uczenia.

Najprostsze sieci neuronowe podają informacje tylko w jednym kierunku – każdy neuron reaguje na jeden zestaw danych wejściowych tylko raz. Bardziej złożone sieci są rekurencyjne, co znaczy, że dane wychodzące z którejś z ukrytych warstw są podawane do jednej z poprzednich warstw. Sprzężenie zwrotne powoduje, że sieć po jakimś czasie osiąga stan równowagi i „decyduje się” na konkretną odpowiedź.

Topologia sieci Google Inception V3 służącej do rozpoznawania obrazów

Topologia sieci Google Inception V3, służącej do rozpoznawania obrazów. Najnowsza wersja jest jeszcze bardziej skomplikowana

Jak maszyna się uczy?

Uczenie się kojarzy się z procesem i zmianami, a algorytm – z czymś określonym z góry i niezmiennym. Jak zatem uczy się sieć neuronowa i gdzie zapamiętuje to, czego się nauczyła? 

Struktura sieci (połączenia między neuronami) oraz mechanizm działania każdego neuronu (wzór, do którego podstawia się wielkości wejściowe) zwykle są określone z góry. Podstawową pamięcią sieci jest zestaw wag, parametrów określających stopień wpływu poszczególnych wejść na wynik danego neuronu. Sieci zazwyczaj mają dwa wykluczające się tryby pracy: tryb uczenia i tryb działania. W tym drugim nie zmieniają już wagi połączeń między neuronami; sieć daje tylko odpowiedzi, ale nie uczy się na każdym kolejnym przedstawionym przykładzie.

Proces uczenia może być nadzorowany przez człowieka, jeśli problem do rozwiązania jest w jakimś stopniu zrozumiały i spodziewamy się, jakie powinny być pośrednie kroki prowadzące do rozwiązania. Określa się wtedy, jakich cech sieć ma poszukiwać w zestawie danych wejściowych. Na przykład przy rozpoznawaniu twarzy na obrazach sieci neuronowe trenuje się tak, żeby wcześnie wykrywały obszary o dużym kontraście, zwykle oznaczające obraz nosa i oczu.

Kiedy problem jest zbyt skomplikowany albo określone przez ludzi cechy prowadzą do niesatysfakcjonującego rozwiązania, można używać nienadzorowanego uczenia. Sieć ucząca się w taki sposób musi być odpowiednio złożona, wielowarstwowa, żeby mogła wykrywać w danych wejściowych abstrakcje wyższego rzędu. Ponieważ sieci uczone bez nadzoru nie dążą do zadanego wyniku, mają potencjał wykrywania prawidłowości i zależności, o których wcześniej nie wiedzieliśmy. To powoduje, że są użyteczne do analizy zjawisk, których model jest niedokładny albo niekompletny – a to można powiedzieć prawie o wszystkich zjawiskach społecznych albo finansowych.

Klasyfikacja sieci neuronowych

Powiedzieliśmy, że sieci neuronowe mogą mieć różną organizację (topologię), różne metody działania i różne metody uczenia. Zwykle dzieli się je pod tymi trzema względami:

  • topologia – począwszy od prostych sieci z małą liczbą warstw przekazujących informacje w jednym kierunku aż do wielowarstwowych sieci ze sprzężeniem zwrotnym. Sieć szersza (z większą liczbą neuronów w warstwie wejściowej) może obserwować więcej danych. Głębsza sieć (z większą liczbą warstw) ma większy potencjał wykrywania wysokopoziomowych zależności i abstrakcji w danych wejściowych.
  • metody działania – sieci mogą mieć różny stopień wewnętrznej dynamiki, czyli przekazywania danych pomiędzy warstwami ukrytymi i stopniowego dochodzenia do wyniku. Wielopoziomowe sieci rekurencyjne mają „dłuższą pamięć” – jeden zestaw danych może przechodzić tok wyuczonego postępowania w bardzo wielu etapach, a pośrednie wnioski można odnosić do siebie nawzajem.
  • metody uczenia – sieci mogą być uczone pod nadzorem (dążyć do zadanego wyniku) lub bez nadzoru (dążyć do wykrycia nieznanych zależności). Oprócz tego różnią się tym, czy w trakcie uczenia sieci była wykorzystywana rekurencja, jak długo sieć dążyła do optymalnego wyniku albo jak bardzo jest dopasowana do konkretnego zestawu danych wejściowych.
Ocena artykułu:
Ocen: 17
Zaloguj się, by móc oceniać
Artykuły spokrewnione
Facebook
Ostatnio komentowane