Sztuczne sieci neuronowe. Klasyfikacja sieci neuronowych

Sztuczne sieci neuronowe. Klasyfikacja sieci neuronowych
Historia modeli sieci neuronowych oraz ich klasyfikacja.

1943 Historycznie pierwszy model neuronu wprowadzony przez neurofizjologa Warrena McCullocha i matematyka Waltera Pittsa (1). Potrafił rozpoznawać dwie kategorie obiektów na podstawie progowania wartości funkcji f(x) = ∑i wixi. Jednak wagi musiały być wybrane przez operatora. Badacze napisali pracę opisującą, jak mogą działać neurony i w jej ramach wymodelowali prostą sieć neuronową za pomocą obwodów elektrycznych.

1. Model neuronu McCullocha-Pittsa

1948 Donald Oldigin Hebb wysunął hipotezę na temat nauki maszynowej, opartą na mechanizmie plastyczności neuronów, która stała się znana jako uczenie Hebbowskie. Jest to rodzaj nauki nienadzorowanej. Naukowcy zaczęli stosować te idee w modelach obliczeniowych w 1948 r. dzięki maszynom typu B Turinga.

1957-58 Frank Rosenblatt opracowuje perceptron, który potrafił uczyć się poprawnych wag na podstawie próbek różnych kategorii (ale tylko dla sieci jednowarstwowej, wejściowo-wyjściowej). Perceptron jest najprostszym elementem decyzyjnym, obliczającym decyzje na podstawie ważonej sumy zmiennych wejściowych. Odpowiednio dobierając wagi w1, ..., wn i wartość progu, możemy zamodelować pewne proste schematy decyzyjne.

Sygnałom wejściowym mającym duży pozytywny wpływ na pożądaną wartość wyjścia nadajemy duże wartości wag, a wejściom mającym mniejszy wpływ nadajemy odpowiednio mniejsze wagi. Oraz, co ważniejsze, możemy nauczyć się właściwych wartości tych parametrów na podstawie odpowiedniego zbioru treningowego. Wczesne modele zapoczątkowały pierwszą rewolucyjną falę zainteresowania sztucznymi sieciami neuronowymi. Ta rewolucja bazowała głównie na obietnicach i przewidywaniach, a nie na konkretnych projektach i zastosowaniach. Algorytm perceptronu po raz pierwszy zaimplementowano w maszynie Mark I (2).

 2. Perceptron Mark I

1959 Bernard Widrow i Marcian Hoff ze Stanfordu opracowali modele sieci neuronowych o nazwach ADALINE i MADALINE (Multiple + ADAptive LINear Elements), które zwracały wartość f(x), próbując przewidzieć liczbę rzeczywistą na podstawie wartości wejść, i same uczyły się swoich wag z danych. ADALINE został opracowany w celu rozpoznawania wzorców binarnych - gdy odczytywał bity z linii telefonicznej, mógł przewidzieć następny bit. MADALINE była pierwszą siecią neuronową zastosowaną do problemu świata rzeczywistego, wykorzystującą filtr adaptacyjny eliminujący echo na liniach telefonicznych.

1962 Widrow & Hoff opracowali procedurę uczenia, która bada wartość, zanim waga dostosuje ją (tj. 0 lub 1) zgodnie z regułą: Weight Change = (wartość przed korektą wagi) * (Error/(Number of Inputs)). Opiera się ona na założeniu, że podczas gdy jeden aktywny perceptron może mieć duży błąd, można dostosować wartości wag, aby rozłożyć go na całą sieć lub przynajmniej na sąsiednie perceptrony. Zastosowanie tej reguły nadal skutkuje błędem, jeśli linia przed wagą wynosi 0, choć w końcu się to naprawi. Jeśli błąd jest zachowany tak, że cały jest dystrybuowany do wszystkich wag, to błąd jest wyeliminowany.

1969 Pierwsza fala zainteresowania sieciami neuronowymi została, jak się uważa, utrącona przez Marvina Minsky’ego, założyciela MIT AI Lab, i Seymoura Paperta, dyrektora laboratorium, którzy w książce pt. "Perceptrony" (3) dowodzili, że podejście Rosenblatta do sieci neuronowych oparte na pojedynczej percepcji nie może być skutecznie przełożone na wielowarstwowe sieci neuronowe. Jednym z kluczowych argumentów była niezdolność sieci neuronowej (jednowarstwowej) do obliczenia tak prostej funkcji logicznej jak XOR (Exclusive-OR).

Aby ocenić prawidłowe względne wartości wag neuronów rozłożonych w warstwach na podstawie ostatecznego wyjścia, trzeba by wykonać kilka, jeśli nie nieskończoną liczbę iteracji, a obliczenie zajęłoby bardzo dużo czasu. Minsky w swoim tekście wyłożył te i inne problemy wiążące się z sieciami neuronowymi, skutecznie doprowadzając społeczność naukową, a przede wszystkim instytucje finansujące, do wniosku, że dalsze badania w tym kierunku będą prowadzić donikąd. Ograniczyło to finansowanie projektów sieci neuronowych na ponad dekadę. Rozpoczął się okres nazywany niekiedy "zimą AI".

3. Okładka książki Minsky’ego i Paperta

lata 70.-80. XX wieku Kluczowym bodźcem do ponownego zainteresowania sieciami neuronowymi i uczeniem się było opracowanie przez Paula Werbosa algorytmu wstecznej propagacji, który pozwolił na praktyczny trening sieci wielowarstwowych. Algorytm wstecznej propagacji błędów pozwalał skutecznie uczyć wielowarstwowe sieci neuronowe, przezwyciężając problem funkcji XOR, i wiele innych barier.

Wsteczna propagacja rozprowadza składnik błędu z powrotem w górne warstwy sieci, wykorzystując zarazem modyfikację wag w każdym węźle sieci neuronowej. Stało się to nie od razu. Dopiero w 1986 roku praca "Learning representations by back-propagating errors" Davida Rumelharta, Geoffreya Hintona, Ronalda Williamsa (4) spowodowała ponowne zainteresowanie, a nawet coś w rodzaju kolejnej eksplozji zainteresowania sztucznymi sieciami neuronowymi. W połowie lat 80. równoległe przetwarzanie rozproszone stało się popularne pod nazwą konektywizmu.

4. David Rumelhart, Geoffrey Hinton, Ronald Williams

1982 Sieci asocjacyjne - zwane sieciami Hopfielda, wymyślone przez amerykańskiego fizyka Johna Hopfielda, to taka klasa sieci rekurencyjnych, które dają możliwość rekonstrukcji i rozpoznawania wcześniej zapamiętanych wzorców na podstawie skojarzeń, bazując na dostępnym fragmencie wzorca lub wzorca podobnego do niego. Są wykorzystywane do modelowania pamięci skojarzeniowej. W tych sieciach nie ma wyszczególnionych warstw, każda jednostka przetwarzająca jest złączona ze wszystkimi innymi jednostkami z wyjątkiem samej siebie. Procesy obliczeniowe polegają na nauczeniu sieci wzorcowych danych, a w dalszej kolejności na prezentacji dowolnych danych na wejściu. Sygnał rozprzestrzenia się po sieci aż do momentu samoczynnego uzyskania stanu stabilnego, kiedy już nie zachodzą zmiany aktywacji żadnych jednostek.

lata 90. XX wieku Tony Robinson z uniwersytetu w Cambridge opracowuje techniki wykorzystania sieci rekurencyjnych do rozpoznawania mowy. W 1995 roku założył SoftSound Ltd., firmę zajmującą się technologią mowy, która została przejęta przez pioniera w dziedzinie wyszukiwania, firmę Autonomy, z zamiarem wykorzystania tej technologii do łatwego przeszukiwania nieustrukturyzowanych danych głosowych i wideo. Robinson pomógł zbudować najszybszy dostępny w tamtym czasie system rozpoznawania mowy o dużym zasobie słów, działający w większej liczbie języków niż jakikolwiek inny model, opierający się na rekurencyjnych sieciach neuronowych.

1992 Wprowadzono funkcje max-pooling, czyli obliczania wartości maksymalnych z pewnych podobszarów w celu zapewnienia najmniejszej niezmienniczości przesunięcia i tolerancji na deformacje, co miało pomóc w rozpoznawaniu obiektów 3D. W 2010 roku trening sieci neuronowych metodą propagacji wstecznej przez max-pooling został przyspieszony przez wykorzystanie procesorów graficznych i wykazał swoją przewagę nad innymi wariantami łączenia.

1995 Jürgen Schmidhuber wraz z zespołem z uczelni w Monachium opracowuje technikę Long Short-Term Memory (LSTM), w której, inaczej niż w tradycyjnych sieciach rekurencyjnych, "długa pamięć krótkoterminowa" obejmuje tysiące, miliony czy nawet więcej wykonanych kroków (5). Schmidhuber zastosował wielopoziomową hierarchię sieci trenowanych po jednym poziomie naraz metodą uczenia nienadzorowanego i dostrajanych metodą wstecznej propagacji. Dziś stojąca za Google firma Alphabet, chińskie Baidu i inne koncerny z branży IT opierają swoje systemy rozpoznawania mowy, tagowania obrazów czy tłumaczenia maszynowego właśnie na sieciach LSTM.

5. Schemat pamięci Long Short-Term Memory

1999 Rok ten można uznać za narodziny procesorów graficznych GPU, które odegrały wielką rolę w rozwoju sieci neuronowych i modeli uczenia maszynowego w kolejnych latach. Jako pierwsza tego terminu użyła firma Nvidia, wprowadzając na rynek karty graficzne GeForce 256 w 1999 roku (6). Głównym zadaniem GPU było wykonywanie obliczeń potrzebnych do uzyskania grafiki 3D, co spowodowało uwolnienie głównego procesora (CPU) od konieczności wykonywania tego zadania. W tej sytuacji mógł on zająć się innymi obliczeniami, co skutkowało zwiększeniem wydajności komputera podczas renderowania grafiki. Nowoczesne procesory graficzne wyposażone są w szereg rozkazów, których nie ma CPU komputera.

6. GPU GeForce 256

2006 Narodziny głębokich sieci neuronowych i deep learning. Pod koniec lat 90. XX wieku entuzjazm świata naukowego związany ze sztucznymi sieciami neuronowymi zaczął wygasać. Możliwości techniczne sztucznych sieci neuronowych były limitowane przez technikę komputerową i przez ilość dostępnych danych - zbiory danych liczyły maksymalnie tysiące próbek. Dla implementacji sieci zdolnej do choćby minimalnie skomplikowanych obliczeń potrzebna była sieć wielowarstwowa, lecz uczenie wielu warstw przy dużej liczbie neuronów było obliczeniowo niepraktyczne (tygodnie, miesiące lub lata obliczeń). Dominował również pogląd, że możliwości sieci o większej liczbie warstw ukrytych nie przewyższają sieci z jedną warstwą ukrytą.

Geoffrey Hinton, Simon Osindero i Yee-Whye Teh opublikowali w 2006 roku pracę (7), która została uznana za na tyle znaczący przełom, że na nowo rozbudziła zainteresowanie sieciami neuronowymi "A fast learning algorithm for deep belief nets". Hinton i koledzy zaproponowali uczenie wysokiego poziomu reprezentacji za pomocą kolejnych warstw binarnych lub rzeczywisto-wartościowych zmiennych ukrytych z wykorzystaniem maszyny Boltzmanna do modelowania każdej warstwy. Po nauczeniu się wystarczająco wielu warstw, głęboka architektura może być użyta jako model generatywny poprzez odtworzenie danych podczas próbkowania w dół modelu ("przejście przez przodków") z aktywacją cech na najwyższym poziomie. Od tego czasu główny nurt poszukiwań skierował się na wykorzystanie nowych, ogromnych zbiorów danych.

Należy dodać, że ten przełom stał się możliwy także dzięki postępom w rozwoju technologii komputerowej. Niemały udział miało w nim pojawienie się szybkich kart graficznych GPU z tysiącami rdzeni, które budowane są do przetwarzania elementów obrazu, ale mogą być wykorzystane do dowolnych obliczeń.

7. Ilustracja z pracy Geoffreya Hintona, Simona Osindero i Yee-Whye Teha

2009 Opracowanie przez Kevina Jarreta z Uniwersytetu Stnaforda modelu sieci konwolucyjnej do nienadzorowanego uczenia.

2012 Andrew Ng z zespołem tworzy sieć, która nauczyła się rozpoznawać pojęcia wyższego rzędu, takie jak koty, tylko na podstawie oglądania nieoznakowanych obrazów z filmów z YouTube (8).

8. Obraz kota generowany przez sieć neuronową

2014 Przejęcie przez Google firmy DeepMind Technologies Limited,  brytyjskiego przedsiębiorstwa zajmującego się sztuczną inteligencją, utworzonego w 2010 roku. Stworzyło sieć neuronową, która uczy się grać w gry komputerowe w sposób, w jaki czynią to ludzie, jak również Neural Turing Machine - sieć neuronową, która może mieć dostęp do pamięci zewnętrznej jak konwencjonalna maszyna Turinga, czego rezultatem jest komputer naśladujący krótkotrwałą pamięć ludzkiego mózgu. Przedsiębiorstwo ogłosiło w 2016 roku, że jego program AlphaGo po raz pierwszy pokonał zawodowego gracza go. DeepMind stanowi symbol epoki szybkiego rozwoju techniki sieci neuronowych, która trwa obecnie i przynosi kolejne zadziwiające osiągnięcia.

9. Logo DeepMind Technologies Limited

Klasyfikacja sieci neuronowych

I. Sieci jednokierunkowe

  • Perceptron jest jednym z pierwszych modeli neuronu zastosowanych w sztucznych sieciach neuronowych (ANN - Artificial Neural Networks). Perceptron jest prostym elementem obliczeniowym realizującym ważoną sumę wielu wejść połączoną z progowaniem. Perceptron jest najprostszym elementem decyzyjnym, obliczającym decyzje na podstawie ważonej sumy zmiennych wejściowych. Odpowiednio dobierając wagi w1, ..., wn i wartość progu, możemy modelować pewne proste schematy decyzyjne. Sygnałom wejściowym mającym duży pozytywny wpływ na pożądaną wartość wyjścia nadajemy duże wartości wag, a wejściom mającym mniejszy wpływ nadajemy odpowiednio mniejsze wagi.
  • Perceptron wielowarstwowy (MLP) składa się z szeregu warstw neuronów, z których pierwszą warstwę, do której podłączone są sygnały wejściowe, nazywamy wejściową, ostatnią warstwę, z której pobierany jest/są sygnały wyjściowe, nazywamy wyjściową, a pośrednie warstwy, których może być wiele, nazywamy warstwami ukrytymi. Dzięki warstwowej budowie model podejmowania decyzji w MLP może być znacznie bardziej złożony. Neurony warstwy wejściowej, zamiast podejmować ostateczne decyzje, mogą rozpoznawać pewne elementarne cechy sygnału wejściowego. Analogicznie, kolejne warstwy mogą obliczać coraz to bardziej złożone wielkości, i neurony warstwy wyjściowej mogą podejmować ostateczne decyzje na podstawie znacznie bardziej istotnych kategorii niż surowe zmienne wejściowe.

II. Sieci rekurencyjne

W sieciach rekurencyjnych (recurrent networks) sygnał z neuronów warstw dalszych może być przesyłany zwrotnie do warstw wcześniejszych. Ze względu na czas propagacji sygnału wynikający z niezerowego czasu pobudzenia neuronów takie pętle nie prowadzą do nieskończonych oscylacji, tylko stwarzają możliwości realizacji zupełnie nowych procesów obliczeniowych. Mianem sieci rekurencyjnej określa się sieć, w której połączenia między neuronami stanowią graf z cyklami. Wśród różnorodności modeli rekurencyjnych sztucznych sieci neuronowych wyróżnić można:

  • sieć Hopfielda - układ gęsto połączonych ze sobą neuronów (każdy z każdym, ale bez połączeń zwrotnych), realizującą dynamikę gwarantującą zbieżność do preferowanych wzorców;
  • maszyna Boltzmanna - opracowana przez Geoffa Hintona i Terry’ego Sejnowskiego stochastyczna modyfikacja sieci Hopfielda, która pozwoliła na uczenie neuronów ukrytych i likwidację wzorców pasożytniczych kosztem zwiększenia czasu symulacji.

Sieci Hopfielda i maszyny Boltzmanna stosuje się jako pamięci adresowane kontekstowo, do rozpoznawania obrazów, rozpoznawania mowy, a także do rozwiązywania problemów minimalizacji (np. problemu komiwojażera).


III. Samoorganizujące się mapy

Samoorganizujące się mapy (Self Organizing Maps, SOM), zwane też sieciami Kohonena, to sieci neuronów, z którymi są stowarzyszone współrzędne na prostej, płaszczyźnie lub w dowolnej n-wymiarowej przestrzeni. Nazwa pochodzi od nazwiska fińskiego uczonego, Teuvo Kohonena. Uczenie tego rodzaju sieci polega na zmianach współrzędnych neuronów, tak, by dążyły one do wzorca zgodnego ze strukturą analizowanych danych. Sieci zatem "rozpinają się" wokół zbiorów danych, dopasowując do nich swoją strukturę. Sieci te stosowane są do klasyfikacji wzorców, np. głosek mowy ciągłej, tekstu, muzyki. Do najciekawszych zastosowań należy rozpinanie siatki wokół komputerowego modelu skanowanego obiektu.

IV. Inne

Popularnymi modelami są również maszyny wektorów wspierających (SVM), sieci oparte na radialnych funkcjach bazowych (sieci radialne, RBF) i sieci przesyłające żetony (ang. counter-propagation neural networks). Stosunkowo nowym modelem są sieci oparte na neuronach impulsujących.

M.U.