Sieci neuronowe

 

 

Warszawa, grudzień, 1999 r.

 

 

Co to jest sieć neuronowa, komputer a system nerwowy. 1

Budowa sieci neuronowej 2

Uczenie. 6

Uczenie nadzorowane. 6

Uczenie bez nadzoru. 8

Projektowanie. 10

Zastosowania. 10


Co to jest sieć neuronowa, komputer a system nerwowy

Sieć neuronowa jest modelem matematycznym, składającym się z sieci węzłów obliczeniowych zwanych neuronami i ich połączeń. Jest to pewna technika obliczeniowo-statystyczna, należąca do dziedziny sztucznej inteligencji. Jej działanie symuluje działanie ludzkiego mózgu. Choć podstawowym elementem sieci neuronowej są tak jak w innych komputerach obwody elektroniczne, jednak sposób ich połączenia przypomina wielopołączeniową sieć neuronów w mózgu. Każdy neuron w mózgu jest połączony z około 10 tys. innych a podczas pracy mózgu pracują wszystkie neurony jednocześnie. Komputer natomiast składa się z osobnych obwodów logicznych, z których każdy łączy się tylko z sąsiadem – działają one kolejno a nie jednocześnie.

 Mimo, że elektroniczne obwody są dokładniejsze i szybsze w przetwarzaniu numerycznym (obliczeniach), jednak w wielu zadaniach, takich jak rozpoznawanie mowy czy obrazów, mózg ludzki okazuje się o wiele bardziej skuteczny niż jakikolwiek istniejący system (super) komputerowy. Dzieje się tak, mimo iż w procesie przetwarzania uczestniczą biologiczne neurony, wolniejsze o wiele rzędów wielkości od swych optycznych czy elektronicznych odpowiedników, mimo iż neurony wykonują proste operacje i są skłonne do działania niepoprawnego i niedokładnego oraz prawie wszystkie funkcjonują w bardzo zbliżony sposób.

Patrząc na sieci neuronowe z punktu widzenia zasady funkcjonowania, zarówno mózg, jak i konwencjonalne komputery realizują podobne funkcje przetwarzania, gromadzenia i odzyskiwania informacji. Zasadniczą różnicą jest odmienny sposób przetwarzania informacji. Konwencjonalny komputer posiada jeden lub kilka złożonych procesorów efektywnie działających szeregowo, zaś informacja jest pamiętana w specyficznie rozlokowanych komórkach pamięci operacyjnej. Biologiczne sieci neuronowe posiadają miliony lub miliardy neuronów funkcjonujących jak bardzo proste procesory, zaś informacja jest zapamiętywana przez połączenia synaptyczne łączące komórki ze sobą. Powtarzalne bodźce utrwalają pewne połączenia nerwowe między ośrodkami mózgu. Przetwarzanie informacji przez sieci biologiczne odbywa się w sposób równoległy, co pozwala efektywniej wykonywać złożone zadania obliczeniowe, pomimo użycia bardzo powolnych elementów - neuronów. Każdy człowiek dokonuje codziennie nieświadomie wielu bardzo skomplikowanych pod względem obliczeniowym czynności, takich jak rozpoznawanie twarzy, sięganie po pożywienie, lub rozróżnianie pomiędzy rozlicznymi gatunkami tych samych owoców. Przeprowadzenie którejkolwiek z tych prostych dla człowieka czynności, przez sztuczny system komputerowy przestaje być zadaniem banalnym. Ponadto wiele innych ludzkich czynności, które przez człowieka wykonywane są prawidłowo, nie może być przy obecnym stanie nauki i techniki realizowane przez systemy komputerowe w pełnym zakresie i przy efektywności porównywalnej z ludzką.

Matematycznie rzecz biorąc, dobrze skonstruowana sieć neuronowa jest w stanie "nauczyć się" aproksymować dowolną funkcję wielu zmiennych (istnieje na to dowód matematyczny). Ponieważ jest to aproksymacja[1], a nie interpolacja[2], to sieć jest w stanie uogólniać nabytą wiedzę na nieznane jej, choć podobne problemy. Tę zdolność nazywa się generalizacją. Mówi się, że sieć neuronowa dobrze generalizuje, kiedy odpowiedzi udzielane przez nią dla zestawu danych testowych są prawidłowe lub mieszczą się w granicach ustalonego przez nas błędu. Oczywiście dane testowe muszą pochodzić z tej samej populacji co dane wykorzystane do uczenia sieci ale różne od nich.

Podstawowe właściwości sieci neuronowych mające swoje odzwierciedlenie w biologicznym układzie nerwowym, to:

·        zdolność do generalizacji (uogólniania) danych.

·        interpolacja i predykcja.

·        mała wrażliwość na błędy (szumy) w zbiorze danych - w klasycznym programie komputerowym błąd w danych może prowadzić do całkowicie błędnych wyników, sieć potrafi błąd pominąć.

·        zdolność do efektywnej pracy nawet po częściowym uszkodzeniu sieci (usunięciu kilku neuronów lub połączeń między nimi), co w klasycznym programie komputerowych jest nie do pomyślenia.

·        przetwarzanie równoległe i rozproszone.

 

Budowa sieci neuronowej

Przedstawiony obok rysunek neuronu, czyli komórki nerwowej, specjalizuje się w przesyłaniu i modyfikowaniu impulsów elektrycznych. Z takich komórek zbudowany jest między innymi nasz mózg. Z informatycznego punktu widzenia neuron stanowi układ przetwarzający dane, posiadający wiele wejść, zwanych dendrytami oraz jedno wyjście, nazywane neurytem lub aksonem. Prawdziwa komórka nerwowa działa w ten sposób, że nie wszystkie sygnały traktuje w ten sam sposób. Akson ma rozliczne rozgałęzienia po to, aby impuls nerwowy dochodził do drugiej komórki wielokrotnie, dzięki czemu może być sprawdzana jego wartość. Pobudzenie komórki nerwowej następuje tylko poprzez bodziec o odpowiedniej wartości, który działa jednocześnie na wiele synaps. Schemat funkcjonalny neuronu obrazuje poniższy rysunek.

 

 

 

 

 

 

 

 

 

 

Działanie sztucznego neuronu (dalej neuronu) można w przybliżeniu opisać następująco. Sygnały xi, podane na wejścia, są mnożone przez odpowiednie liczby wi, zwane wagami synaptycznymi i sumowane. Wagi mogą mieć dowolne wartości rzeczywiste Jeżeli wynik osiągnie pewną wartość progową, to na wyjściu pojawi się sygnał. Ponieważ wagi mają różne wartości, sygnały wejściowe nie są równouprawnione – niektóre mają większą rangę, inne znów mniejszą, dając odpowiednio większy lub mniejszy wkład do sygnału sumarycznego.

y = x1w1 + x2w2 + x3w3 + ... + xnwn

Oczywiście, pojemność informacyjna pojedynczego neuronu nie jest duża, a więc nie może on zapamiętać zbyt wielu wzorców. Zwiększenie pojemności uzyskuje się jednak dzięki połączeniu neuronów w sieć i stworzeniu układu przypominającego wycinek mózgu. Ilość warstw, które je tworzą, określa jej wielkość. Warstwa pierwsza nazywana jest warstwą wejściową i zwyczajowo pomijamy ją, gdy ustalamy złożoność sieci (tzn. sieć złożona z warstwy wejściowej, jednej warstwy środkowej i warstwy wyjściowej jest siecią dwuwarstwową). Sieć jednowarstwowa, to sieć złożona tylko z warstwy wejściowej i warstwy wyjściowej. Jeżeli w sieci występuje więcej warstw, to nazywamy je warstwami ukrytymi (ponieważ nie widzimy bezpośrednio rezultatów ich działania – wyniki dostajemy tylko na warstwie wyjściowej). Ilość neuronów w poszczególnych warstwach może się różnić i zależy od konkretnego zastosowania sieci. Należy zauważyć, że nie istnieją reguły pozwalające tworzyć optymalną strukturę sieci dla danego problemu. Używa się w tym celu metod heurystycznych[3], opartych w dużym stopniu na doświadczeniu badacza.

Neurony tej samej warstwy nie są połączone między sobą, ale neurony dwóch sąsiednich warstw są połączone "każdy z każdym". Sygnał przechodzi do warstwy wejściowej poprzez ukrytą aż do wyjściowej, skąd jest odbierany i interpretowany.

Sygnały podawane warstwie wejściowej muszą być numeryczne (liczbowe) i zazwyczaj wymaga się, by zawierały się w przedziale (-1, +1), (0, +1) albo jakimś podobnym, dlatego konieczne jest odpowiednie "zakodowanie" danych wejściowych sieci tak, by mogły one być przetworzone przez sieć neuronową. Przygotowywanie danych wejściowych i projektowanie warstwy wejściowej jest zresztą zadaniem dość czasochłonnym i wymagającym pewnej wprawy i doświadczenia (trzeba wiedzieć, w jakiej postaci sieć powinna dostać dane wejściowe, żeby nauczyć się szybciej i efektywniej).

Neurony każdej kolejnej warstwy (poza wejściową) działają w następujący sposób:

·        zbierają wartości sygnałów dochodzących do nich z każdego z neuronów z warstwy poprzedniej;

·        mnożą każdy z tych sygnałów przez odpowiednią wagę;

·        sumują otrzymane wartości;

·        uzyskana wartość staje się sygnałem tego neuronu i jest przekazywana do wszystkich neuronów z następnej warstwy;

·        suma ta jest następnie przeliczana na jakiś skończony przedział, np.    (-1, +1); używa się do tego celu różnych funkcji matematycznych, najczęściej tzw. sigmoidy, ale też np. arcus tangensa albo funkcji schodkowej: wynik nie jest więc po prostu sumą iloczynów składowych wektora X i odpowiednich wag, (jak zostało to przedstawione wyżej) ale jakąś funkcją tej sumy:


 


Postać funkcji f zależy od rodzaju neuronu. Wyróżniamy następujące podstawowe typy neuronów:

 

Perceptron:                       y’ = f(y) = {

 

Neuron typu sigmoidalnego:            y’ = f (y) = 1 / ( 1+e -by )   (funkcja unipolarna)

y’ = f (y) =  tgh by                  (funkcja bipolarna)

Neuron typu ADALINE:           y’ = f (y) = {

n6

 

n5

 

n4

 

Kolejny rysunek przedstawia przykład prostej trójwarstwowej sieci neuronowej.

n3

 

n1

 

n2

 

 

 


Tu sygnały odbierane przez poszczególne neurony można by było zapisać następująco (w i v oznaczają wagi):

n1 = x1w1 + x2w2 + x3w3

n2 = x1w1’+ x2 w2’+ x3 w3

n3 = x1w1’’+ x2 w2’’+ x3 w3’’

n4 = n1v1 + n2v2 + n3v3

n5 = n1v1 + n2v2 + n3v3

n6 = n1v1’’ + n2v2’’ + n3v3’’, etc.

Ostateczny wynik jest transformowany za pomocą jednej z wyżej przedstawionych funkcji.

Poza tym wg niektórych źródeł do iloczynu składowych wektora przez wagi dodawany jest składnik stały, tzw. bias (oznaczmy go przez b). Wtedy mamy n1 = x1w1 + x2w2 + x3w3 + bn1;  n2 = x1w1’+ x2 w2’+ x3 w3’+ bn2  itd.

W zasadzie można sobie wyobrazić sieci o różnorodnej, bardzo skomplikowanej architekturze, składające się z dużej ilości neuronów. Ludzki mózg zawiera ich bardzo dużo, bo około 10 miliardów. Okazuje się jednak że, nawet niewielkie struktury neuronowe wykazują zadziwiające właściwości - istnieje ścisłe twierdzenie, które mówi, że już trójwarstwowa sieć neuronowa potrafi zrealizować dowolną funkcję logiczną, a więc jest kandydatem na neurokomputer.

Warto uświadomić sobie, że neurokomputery są istotnie różne od tradycyjnych maszyn cyfrowych - pod względem sposobu w jaki przetwarzają informację bardziej przypominają żywe stworzenia. Nie realizują założonych z góry algorytmów, ale posługują się wiedzą i doświadczeniem zdobytym podczas procesu uczenia. Są omylne i niedokładne, ale posiadają intuicję oraz zdolność przewidywania. Nie tyle rozwiązują postawione przed nimi problemy, co raczej modelują je dostrajając odpowiednio wagi synaptyczne swoich neuronów. Potrafią więc dostrzegać niezauważalne na pozór związki i korelacje zawarte w danych, którymi się je zasili.

Uczenie

Korzystanie z nauczonej sieci jest dość proste i szybkie. Niestety, nie jest tak z samym uczeniem.

Neuron posiada zdolność adaptacji, polegającą na tym, że wagi synaptyczne mogą się zmieniać. Wraz z nimi zmienia się więc również ranga informacji podawanej na poszczególne wejścia. To, czy na wyjściu neuronu pojawi się impuls, czy też nie, zależy jednak na ogół nie tyle od sygnału na określonym dendrycie, co raczej od całej konfiguracji sygnałów wchodzących do neuronu. I tak, jedne konfiguracje będą pobudzać neuron, inne zaś nie.

Neuron wyposażony w dodatkowe wejście sterujące może być uczony przez zewnętrznego nauczyciela. Uczenie to "po prostu" dobieranie wag połączeń między neuronami w taki sposób, aby po podaniu na wejście sieci jakichś wartości, na jej wyjściu uzyskać odpowiedni wynik. Oczywiście, nikt nie robi tego ręcznie, choć jest to możliwe. Stosuje się specjalne algorytmy.

Ogólnie wyróżniamy dwa rodzaje nauczania: nadzorowane (supervised learning) i bez nadzoru (unsupervised learning).

Uczenie nadzorowane

Uczenie nadzorowane zwane jest również uczeniem z nauczycielem i polega na bezpośrednim porównaniu sygnału wyjściowego sieci ze znanymi prawidłowymi odpowiedziami. Szczególnym przypadkiem tego sposobu uczenia sieci jest uczenie ze wzmocnieniem (sygnał zwrotny niesie informację czy sygnał wyjściowy jest prawidłowy, czy nie - sama prawidłowa odpowiedź nie jest podawana).

Dla zrozumienia procesu uczenia sieci warto omówić bardzo prosty przypadek. Podstawową metodą uczenia sieci jest sposób oparty na regule delty. Zobaczmy jak wygląda ona na przykładzie jednego neuronu.

Aby zapewnić możliwość uczenia trzeba prosty model neuronu uzupełnić o dwa dodatkowe elementy: procesor zmiany wag i detektor błędu. Tak uzupełniony neuron nazywany bywa ADALINE (ADAptive LINear Element – schemat obok).

Algorytm uczenia ADALINE określony przez regułę DELTA zakłada, że wraz z każdym wektorem wejściowym X = (x1,x2,...,xn) do neuronu podawany jest sygnał z (wartość zadana). Neuron odpowiada na sygnał X sygnałem y = WX przy czym jeśli neuron nie jest nauczony to sygnał ten jest inny niż wymagany (yz). Wewnątrz neuronu ADALINE istnieje blok oceniający wielkość błędu δ = z - y. Teraz następuje skorygowanie wektora wag W = (w1,w2,...,wn) wg wzoru:

W(t+1) = W(t) +δX (reguła delty)

tak aby neuron lepiej realizował zadaną funkcję. Jeżeli uwzględniamy składniki stałe bias  to również one nam się zmieniają: b(t+1) = δ + b(t).

Ze wzoru reguły delty wynika, że korekta wektora jest tym silniejsza im większy został odnotowany błąd. Również proporcjonalność korekty do wielkości składowej X jest sensowna, gdyż jeśli odpowiednia składowa xi była mała to korygowana wartość wi w niewielkim tylko stopniu przyczyniła się do powstania usuwanego błędu δ. Ścisły dowód matematyczny poprawności formuły opiera się na LMS (metoda najmniejszych kwadratów)

Uczenie zbioru neuronów MADALINE (Many ADALINEs) przebiega według tych samych zasad co uczenie pojedynczego neuronu. Jednostki traktowane są oddzielnie. Duże zastosowanie tego typu układów występuje we wdrażaniu modeli pamięci kojarzeniowej, a także w połączeniu z systemami ekspertowymi (odpowiadanie na pytania użytkowników).

Uczenie bez nadzoru

Uczenie bez nadzoru stosujemy kiedy cel uczenia nie jest określony przez konkretne, prawidłowe przykłady. Jedyną informacją, która musi wystarczyć jest sama wewnętrzna struktura sygnałów wejściowych (przykładów, przy pomocy których można wytrenować sieć). Na podstawie wewnętrznych zależności w podanych informacjach sieć neuronowa musi stworzyć własne kategorie i będzie rozpoznawać (klasyfikować) podane sygnały wejściowe (generując odpowiednie sygnały na wyjściu).

Opisany powyżej schemat uczenia z nauczycielem jest czasem niewygodny ponieważ wymaga udziału nauczyciela w procesie uczenia, a ponadto jest mało wiarygodny biologicznie, gdyż wielu czynności mózg uczy się bez świadomego i celowego instruktażu.

Historycznie pierwszą regułą uczenia elementu przetwarzającego sieci neuronowej podał psycholog Donald Hebb. Regułę swą oparł na zjawisku tworzenia się nabytych odruchów warunkowych u ludzi i zwierząt.


 

 


Zasada uczenia w tym schemacie polega na tym, że waga wi(m), i-tego wejścia m-tego neuronu wzrasta podczas prezentacji wektora wejściowego proporcjonalnie do iloczynu i-tej składowej sygnału wejściowego xi(t) docierającego do rozważanej synapsy w  t-tej „turze” i sygnału wyjściowego y(m)(t) rozważanego neuronu w tej samej turze. Krótko mówiąc algorytm modyfikowania wag opiera się na wzorze:

wi(m)(t+1) = wi(m)(t) + cxi(t)y(m)(t),

gdzie c to jakaś stała wartość.

Przyglądając się wzorowi można dostrzec, że wzmocnieniu ulegają te wagi, które są aktywne (duże xi(t)) w sytuacji gdy ich neuron jest pobudzony (duże y(m)(t)). Stąd wynika, że sieć jest autoasocjacyjna: jeśli pewien wzór pobudzeń X sygnalizowany jest przez pewne m-te wyjście sieci, to w miarę upływu czasu ta sygnalizacja staje się coraz bardziej wyraźna. Sieć uczy się w ten sposób rozróżniać nadchodzące do niej bodźce i grupować je w pewne kategorie (cluster), gdyż neuron wytrenowany do rozpoznawania pewnego sygnału X będzie zdolny do rozpoznawania także tych sygnałów, które są podobne do tego wzorcowego. Ta istotna zdolność generalizacji przecież jest cechą właściwą sieciom neuronowym.

Czasami metoda uczenia wg praw Hebba nazywana jest też uczeniem korelacyjnym (correlation learning) ponieważ zmierza ona do takiego dopasowania wag, aby uzyskać najlepszą korelację między sygnałami wejściowymi, a zapamiętanym w formie wartości wag „wzorcem” sygnału, na który neuron ma reagować.

Sieć ucząca się (bez nadzoru) wg reguły Hebba, osiąga na ogól dobre wyniki i całkiem samoczynnie grupuje wejściowe sygnały w „kategorie” sensownie odpowiadające klasom podobnych do siebie sygnałów wejściowych X. Jednak efekt ten nie jest nigdy pewny, gdyż dość istotnie zależy od początkowego stanu sieci (początkowych przypadkowo wybranych wartości wag) decydującego o tym, jak w początkowym etapie uczenia zaczną się krystalizować ośrodki przyszłych grup.

Posługując się przykładem: sieć trenowana w celu rozpoznawania ręcznie pisanych liter nauczy się je identyfikować, ale nie wiemy z góry, który neuron sygnalizować będzie „A”, a który „B”. Mało tego: nie mamy gwarancji, że każdej literze odpowiadać będzie tylko jeden neuron - bardziej prawdopodobne jest, że kilka neuronów nauczy się rozpoznawać jako „swoje” „A”. Gorszą lecz również prawdopodobną sytuacją jest, że któraś z liter nie będzie w ogóle rozpoznawana. Sposobem na poradzenie sobie z tą sytuacją może być stosowanie większej liczby neuronów niż ilość planowanych do rozpoznania wzorców.

Reguła Hebba posiada istotną wadę, mianowicie prowadzi do procesu rozbieżnego (wagi są przez cały czas zwiększane). Możemy zapobiec rozbieżności prostej reguły Hebba ograniczając wzrost wektora wag W. Dobre rozwiązanie zaproponował Oja modyfikując regułę Hebba, tak że osiągnięcie stanu stabilnego w przestrzeni wag jest zagwarantowane. Wagi modyfikujemy według wzoru:

wi(t+1) = wi (t) + cy(t)(xi(t) - y(t)wi)

Jak widać reguła Oji opiera się na dodaniu wyrazu zanikania wagi.

 

 

Projektowanie

Uczenie nie jest pierwszym stadium projektowania sieci. Najpierw trzeba ustalić, jak będzie ona zbudowana. Ilość neuronów wejściowych i wyjściowych jest określona z góry dla danego problemu, natomiast ilość neuronów w warstwach ukrytych (oraz ilość samych warstw, choć zazwyczaj stosuje się jedną, góra dwie) można regulować.

Generalnie rzecz biorąc, tylko jeden układ przestrzenny sieci jest optymalny. Jeśli warstwy ukryte mają zbyt wiele neuronów, sieć nadmiernie dopasowuje się do nauczanych danych (jej wynik staje się bliższy interpolacji) i przez to traci zdolność uogólniania. O takiej sieci mówi się, że jest "przeuczona". Jeśli natomiast neuronów w warstwach ukrytych jest za mało, sieć nie jest w stanie poprawnie odtworzyć uczonej funkcji, jest "niedouczona".

Nie jest ponadto trywialny sposób doboru danych stosowanych do uczenia i weryfikacji, stosuje się do tego odpowiednie metody statystyczne. Chodzi o to, żeby w czasie uczenia sieć miała styczność z danymi wejściowymi z wszystkich możliwych do przewidzenia kategorii, jakie mogą się pojawić później, na etapie stosowania już nauczonej sieci. Istnieją pewne ogólne, empiryczne zasady doboru tych wartości i struktura każdorazowo powinna być optymalizowana. Można do tego stosować np. metody optymalizacji genetycznej.

Nauczenie sieci nie jest też oczywiście ostatnim etapem jej projektowania - potem trzeba jeszcze ją przetestować - do tego wykorzystuje się kolejny zestaw danych wejściowych (i wyjściowych – w przypadku sieci nadzorowanych), ale takich, które nie były wykorzystane podczas uczenia. Jeśli na tym zestawie sieć wypadnie pomyślnie, można się spodziewać, że w sytuacjach przyszłych (dla jakichś nieznanych danych) też tak będzie. Jeśli nie - trzeba powtórzyć uczenie, ewentualnie zmieniając budowę sieci albo zestaw danych uczących.

Zastosowania

Początki badań nad sieciami neuronowymi sięgają lat czterdziestych, ale wciąż znajdują się one w bardzo wczesnym stadium rozwoju. W 1981 roku profesor Igor Aleksander z londyńskiego Imperial College skonstruował sieć neuronową nazwaną Wisard, która potrafiła rozpoznać uśmiech człowieka – jedną z pierwszych rzeczy jakie uczy się niemowlę. Wisard „posiadł” tę umiejętność poprzez „oglądanie” wielu zdjęć poważnych i uśmiechniętych. Później był w stanie rozpoznawać uśmiech na twarzach, których nigdy wcześniej nie widział. W latach 80-tych na uniwersytecie Johna Hopkinsa w Baltimore doktor Terrence Sejnowski zbudował sieć neuronową zdolną poprawnie wymawiać słowa angielskie wystukane na klawiaturze. Sieć uczyła się tak samo jak dziecko, ponawiając próby aż do uzyskania właściwego rezultatu.

Istnieje kilka kierunków zastosowań sieci neuronowych.

W predykcji wykorzystanie sieci polega na wytrenowaniu ich na pewnym zbiorze danych, aby potem za jej pomocą móc przewidywać określone dane wyjściowe. Mamy zatem do czynienia z czymś w rodzaju urządzenia prognozującego. Istotne jest to, że sieć nabiera zdolności do prognozowania wyłącznie na podstawie dostarczonych danych, nie podaje się jej natomiast żadnych wzorów lub teorii o związkach pomiędzy danymi a prognozowanymi wynikami. Można zatem sieci stosować w przypadkach, gdy nie znamy zależności pomiędzy przewidywanymi wynikami a znanymi danymi wejściowymi. Sieć neuronowa jest zdolna również rozpoznawać trend.

Sieć neuronowa może też być wykorzystana dla klasyfikacji i rozpoznawania. Sieć potrafi po „pokazaniu'' jej wystarczającej ilości informacji rozpoznawać w zbiorze danych występujące klasy danych i klasyfikować nowe wzorce według nauczonych wcześniej kategorii. Może to być np. Rozpoznawanie pisma, cyfr, obrazów.

Inny przykład zastosowań to  kojarzenie danych. Coraz bardziej obiecujące staje się wykorzystanie sieci do kojarzenia faktów wnioskowanych na podstawie wprowadzonych danych, dzięki zdolności sieci do uczenia, adaptacji i uogólniania doświadczeń.

Poza tym stosujemy ją do analizy danych, czyli do znalezienia związków występujących w wejściowym zbiorze danych.

Sieci neuronowe umożliwiają również filtrację sygnałów: sieć ze swoją niewrażliwością na zakłócenia znakomicie nadaje się jako filtr stosowany np. w celu redukcji szumów w zbiorze danych. Może również dokonywać kompresji obrazów i dźwięków.

Z powodzeniem można je wykorzystać w optymalizacji. Sieci neuronowe znakomicie nadają się do poszukiwania rozwiązań prowadzących do rozwiązań optymalnych. Udowodniono już przydatność sieci nie tylko w optymalizacji statycznej i dynamicznej, ale również w zagadnieniach optymalizacji kombinatorycznej.


 



[1] aproksymacja – przybliżone wyrażenie funkcji przez inną, prostszą

[2] interpolacja – znajdowanie przybliżonych wartości funkcji w przedziale, jeśli znane są jej wartości na końcach tego przedziału

[3] tj. metod samodzielnych poszukiwań







Powrót na stronę główną     Inne wykłady i opracowania