Jak nauczyliśmy maszyny liczyć i myśleć za nas? Część 50. Rozwój sieci neuronowych

Obecnie obok tradycyjnych sieci typu MLP (i podobnych) bardzo powszechnie używane są sieci tzw. głębokiego uczenia. Mają one wiele warstw ukrytych o zróżnicowanych funkcjach i też odnoszą liczne sukcesy!

Publikacja: 13.07.2023 21:00

Jak nauczyliśmy maszyny liczyć i myśleć za nas? Część 50. Rozwój sieci neuronowych

Foto: AdobeStock

W poprzednim odcinku tego cyklu felietonów opisałem eksperyment Franka Rosenblatta, który zbudował pierwszą sieć neuronową rozpoznającą obrazy, nazwaną perceptronem. Zainteresowanie perceptronami było po publikacjach Rosenblatta naprawdę powszechne. Pospiesznie budowali swoje pierwsze perceptrony Japończycy, Francuzi, Niemcy, Włosi (którzy nazywali swój perceptron „Pandemonium”) oraz Rosjanie. Wśród tych ostatnich na wskazanie zasługuje Michaił Mojsiewicz Bongard, który w 1970 r. ideę perceptronu twórczo uogólnił i zaangażował do rozpoznawania formuł matematycznych. To mogła być prawdziwa sensacja w sztucznej inteligencji, niestety Bongard zginął w 1971 r. podczas górskiej wspinaczki i do tego tematu do dziś nikt nie wrócił.

Pierwsze sztuczne sieci neuronowe i ich uczenie

Obok perceptronu Rosenblatta dużą popularnością cieszyła się też sieć MADALINE zbudowana w 1960 r. przez Bernarda Widrowa z Uniwersytetu Stanforda. Sieć ta składała się z adaptacyjnych liniowych elementów nazywanych ADALINE (od Adaptive Linear Element), a ponieważ można je było łączyć w zespoły, stąd literka M w nazwie MADALINE. Sztuczne neurony ADALINE mogły się uczyć na zasadzie elektrochemicznej, a zainteresowanie nimi było na tyle duże, że sieci MADALINE były produkowane i oferowane komercyjnie. Korzystano z nich głównie do adaptacyjnej filtracji sygnałów (w radarach, sonarach i telefonach). Widrow i Hoff wprowadzili w tej sieci metodę uczenia sieci opartą na wykrywaniu i niwelowaniu błędów poszczególnych neuronów, która to metoda nazwana DELTA była potem powszechnie stosowana.

Czytaj więcej

Jak nauczyliśmy maszyny liczyć i myśleć za nas? Część 49.: Sieci neuronowe – początek drogi do sztucznego mózgu

Wszystko zmierzało w dobrą stronę, gdy nagle druzgocący cios zadał perceptronom Marvin Minsky. Ten sam, który w 1951 r. budował perceptron SNARC! Napisał (wraz z Symourem Papertem) w 1969 r. książkę „Perceptrons”, w której wykazał, że maszyny te mogą się uczyć tylko bardzo prymitywnych umiejętności, wszelka zaś bardziej wyrafinowana forma przetwarzania i analizy danych jest dla nich z zasady niedostępna. Była to prawda wyłącznie dla perceptronów jednowarstwowych, ale na to nikt nie zwrócił uwagi i prace związane z sieciami neuronowymi zostały wstrzymane na przynajmniej dziesięć lat. W USA doszło do tego, że żaden z informatyków nie odważył się nawet wspomnieć, że buduje i wykorzystuje sieci neuronowe, bo to oznaczało pozbawienie środków na badania naukowe. Były one wycofywane przez państwo lub wojsko jako marnowane na prace, które z pewnością nie przyniosą sukcesu.

Odważny fizyk

Człowiekiem, który ośmielił się twierdzić, że sieci neuronowe jednak mogą być znakomitym narzędziem obliczeniowym, był John Hopfield. Wygłosił w 1982 r. odczyt w National Academy of Science, w którym opisał sieć neuronową (zresztą odmienną od perceptronu), do dzisiaj używaną i wiązaną z jego nazwiskiem. Ale Hopfield mógł sobie na to pozwolić, bo był sławnym fizykiem o ogromnym dorobku i autorytecie naukowym (m.in. miał już Medal Diraca, przyznawany zwykle noblistom). Odczyt Hopfielda spowodował ponowny wzrost zainteresowania sieciami neuronowymi, zwłaszcza że po odczycie opublikował wyniki pokazujące przydatność wymyślonych przez niego sieci do tworzenia pamięci skojarzeniowych oraz do rozwiązywania problemów optymalizacji.

Sensacyjne było odkrycie przez D. Tanka, że sieć Hopfielda potrafi znaleźć rozwiązanie tzw. problemu komiwojażera, bardzo znanego zadania NP-zupełnego, to znaczy niedającego się rozwiązać algorytmicznie w tzw. czasie wielomianowym. Wprawdzie rozwiązanie dostarczane przez sieć Hopfielda było rozwiązaniem suboptymalnym, ale jego jakość z punktu widzenia praktyki była zadowalająca. W 1986 r. Hopfield w Caltech założył program doktorancki nazwany Computation and Neural Systems. Mur wzniesiony wokół prac nad sieciami neuronowymi przez szkodliwą (i błędną!) książkę Minsky’ego runął.

Możliwości sieci wielowarstwowych

Minsky wskazał, że sieć złożona z jednej warstwy neuronów ma ograniczone możliwości. Ale badacze szybko odkryli, że sieci wielowarstwowe tym ograniczeniom się nie poddają. W 1988 r. Kurt Hornik udowodnił w sposób matematyczny, że sieć neuronowa wielowarstwowa może przekształcać wielowymiarowe dane wejściowe zgodnie z dowolnie wybraną funkcją. Co ciekawe – pierwszą sieć wielowarstwową opisał w 1965 r. Ukrainiec, Aleksiej Iwachnienko. Wprowadził grupową metodę przetwarzania danych, która pozwoliła na rozwiązywanie wielu problemów praktycznych, ale do metodologii sieci neuronowych wniosła niewiele.

Z sieciami wielowarstwowymi, którymi interesowało się wielu badaczy, związany był początkowo problem, jak taką sieć uczyć. Metoda DELTA (i inne metody uczenia, bo wymyślono ich sporo) wymaga ustalenia, jaki błąd popełnia każdy uczony neuron. Tylko na tej podstawie można ustalić, jak należy zmienić jego parametry, żeby sieć działała lepiej. Przy sieci jednowarstwowej było to proste: podawano na wejście sieci dane, które definiowały zadanie, jakie należało rozwiązać. Ponieważ podczas uczenia do każdych danych wejściowych dołączona była informacja, jakie jest prawidłowe rozwiązanie, to sygnał, jaki rzeczywiście wypracował neuron na wyjściu, można było porównać z sygnałem, jaki powinien on podać przy poprawnym rozwiązaniu zadania. Ustalony tą metodą błąd był „czynnikiem napędowym” powodującym zmiany tzw. wag. Po pokazie wielu zadań ze znanymi rozwiązaniami i po dokonaniu stosownych korekt wag sieć była już nauczona i potrafiła rozwiązywać zadania podobne do tych, na których była uczona, ale nie identyczne. Sieć więc nie tylko potrafiła gromadzić wiedzę, ale także umiała ją uogólniać, co było dużym sukcesem.

Czytaj więcej

Jak nauczyliśmy maszyny liczyć i myśleć za nas? Część 48.: Jak się rozwijała sztuczna inteligencja?

Opisany wyżej proces uczenia w sieci wielowarstwowej napotkał na poważną przeszkodę. Błędy można było wyznaczyć wyłącznie dla neuronów warstwy wyjściowej, bo tam można porównywać sygnały produkowane przez neurony z wartościami przewidzianym w zbiorze uczącym. W odniesieniu do wcześniejszych warstw neuronów, tych bardziej zbliżonych do wejścia, używa się bowiem – nie bez powodu – określenia warstwy ukryte. Oczywiście wiemy, co one robią, bo w sztucznej sieci neuronowej można w każdej chwili określić każdy sygnał. Natomiast nie wiemy, co one powinny robić, żeby cała sieć osiągnęła sukces, a więc jaki popełniają błąd. A nie znając błędu, nie wiedziano, jak je uczyć.

Metoda wstecznej propagacji błędu

W 1982 r. Paul Werbos, pisząc swój doktorat, skorzystał z pomysłu, że ustaliwszy wielkość błędu w neuronach warstwy wyjściowej, można częścią tego błędu obciążyć neurony tej warstwy, z której pobierały one swoje sygnały wejściowe, czyli warstwy ukrytej. O tym, jaką część błędu neuronu wyjściowego przypisać do neuronu warstwy ukrytej, decyduje waga połączenia. Jeśli neuron warstwy ukrytej silnie (to znaczy z dużą wagą) pobudzał neuron warstwy wyjściowej – to powinien dostać większą część wykrytego na wyjściu błędu. Natomiast jeśli pobudzał słabo – to mało „zawinił” i dostanie tylko małą cząstkę błędu. Opisana metoda działania nazwana została „backpropagation” (metoda wstecznej propagacji błędów).

Czytaj więcej

Jak nauczyliśmy maszyny liczyć i myśleć za nas? Część 47: Argumenty przeciwników sztucznej inteligencji

Paul Werbos w momencie bronienia swego doktoratu miał jeszcze bardzo słabą pozycję naukową. Gdyby jego rewolucyjny pomysł pozostał tylko w tej dysertacji, skutki byłyby praktycznie żadne. Ale pomysł Werbosa „wziął na warsztat” David Rumelhart. Przeprowadził serię doświadczeń z wielowarstwowymi sieciami neuronowymi, w których z powodzeniem stosował backpropagation. Wyniki opublikował w 1985 r. w książce, która zawierała opisy tych doświadczeń oraz matematyczny dowód, że taka metoda rzeczywiście prowadzi do samodoskonalenia perceptronu. Rumelhart ma ogromne zasługi w rozwoju sieci neuronowych, ale jedna rzecz budzi kontrowersje. Otóż w swojej ogromnej (dwutomowej!) książce nie znalazł miejsca, żeby chociaż wzmiankować, że pomysł wstecznej propagacji błędu został wcześniej wymyślony przez Paula Werbosa... Sieci neuronowe mające formę wielowarstwowego perceptronu są zwykle oznaczane skrótem MLP (MultiLayer Perceptron). W ciągu dziesiątków lat, jakie upłynęły od pionierskiej publikacji Rumelharta, zbudowano takich sieci miliony i zastosowano do rozwiązywania mnóstwa problemów: technicznych, ekonomicznych, społecznych, medycznych itp. Wpisanie w Google’u hasła „neural networks applications” powoduje ujawnienie 217 milionów wyników. Taka liczba została podana, gdy pisząc ten felieton, wprowadziłem owo pytanie. Natomiast jeśli czytelnik zapyta o to samo w momencie czytania tego tekstu, liczba będzie zapewne jeszcze większa. O czym to świadczy? O tym, że wielu ludziom udało się osiągnąć sukces po zastosowaniu do rozwiązania jakiegoś problemu sieci neuronowej. Dlaczego sądzę, że mowa o sukcesach? Bo Google zliczał książki, artykuły, referaty, wpisy w mediach i inne trwałe ślady w internecie i dostępnych bazach danych, w których występowała fraza o zastosowaniu sieci neuronowych. Te ponad 200 milionów publikacji to są wyłącznie relacje o tym, że pewien problem, trudny do rozstrzygnięcia innymi metodami, został rozwiązany przy użyciu sieci neuronowych! A to oznacza, że warto ich używać.

Obecnie obok tradycyjnych sieci typu MLP (i podobnych) bardzo powszechnie używane są sieci tzw. głębokiego uczenia. Mają one wiele warstw ukrytych o zróżnicowanych funkcjach i też odnoszą liczne sukcesy!

Uwaga końcowa

Na zakończenie chciałbym powiadomić, że niniejszym kończę serię felietonów pod wspólnym tytułem „Jak nauczyliśmy maszyny liczyć i myśleć za nas?”. Mógłbym jeszcze przytoczyć sporo ciekawostek, ale doszedłem do wniosku, że zamknę tę serię okrągłą liczbą 50 felietonów. Moje dalsze felietony w dodatku „Rzecz o Historii” będą dotyczyły innych elementów historii techniki. Ale mam nadzieję, że będą ciekawe, dlatego już teraz serdecznie zapraszam!

Autor jest profesorem Akademii Górniczo-Hutniczej w Krakowie

W poprzednim odcinku tego cyklu felietonów opisałem eksperyment Franka Rosenblatta, który zbudował pierwszą sieć neuronową rozpoznającą obrazy, nazwaną perceptronem. Zainteresowanie perceptronami było po publikacjach Rosenblatta naprawdę powszechne. Pospiesznie budowali swoje pierwsze perceptrony Japończycy, Francuzi, Niemcy, Włosi (którzy nazywali swój perceptron „Pandemonium”) oraz Rosjanie. Wśród tych ostatnich na wskazanie zasługuje Michaił Mojsiewicz Bongard, który w 1970 r. ideę perceptronu twórczo uogólnił i zaangażował do rozpoznawania formuł matematycznych. To mogła być prawdziwa sensacja w sztucznej inteligencji, niestety Bongard zginął w 1971 r. podczas górskiej wspinaczki i do tego tematu do dziś nikt nie wrócił.

Pozostało 94% artykułu
2 / 3
artykułów
Czytaj dalej. Subskrybuj
Historia
Historia analizy języka naturalnego, część II
Historia
Czy Niemcy oddadzą traktat pokojowy z Krzyżakami
Historia
80 lat temu przez Dulag 121 przeszła ludność Warszawy
Historia
Gdy macierzyństwo staje się obowiązkiem... Kobiety w III Rzeszy
Historia
NIK złożyła zawiadomienie do prokuratury ws. Centralnego Przystanku Historia IPN