Sieci neuronowe: przykład, definicja, znaczenie, zakres

Sztuczna inteligencja i sieci neuronowe to niezwykle ekscytujące i potężne techniki oparte na uczeniu maszynowym, które są wykorzystywane do rozwiązywania wielu problemów świata rzeczywistego. Najprostszym przykładem sieci neuronowej jest nauka interpunkcji i gramatyki zautomatyzować aby utworzyć całkowicie nowy tekst z zachowaniem wszystkich zasad pisowni.

Historia sieci neuronowej

Komputerowcy od dawna próbowali symulować ludzki mózg. W 1943 roku Warren S. McCulloch i Walter Pitts opracowali pierwszy koncepcyjny model sztucznej sieci neuronowej. W "Logicznym rachunku idei związanych z aktywnością neuronową" opisali przykład sieci neuronowej, koncepcję neuronu, pojedynczej komórki żyjącej we wspólnej sieci, która otrzymuje dane wejściowe, przetwarza je i generuje sygnały wyjściowe.

Historia sieci neuronowej

Ich praca, jak i wielu innych naukowców, nie miała na celu dokładnego opisu biologicznego mózgu. Sztuczna sieć neuronowa została opracowana jako model obliczeniowy działający wg zasada działania mózgu do rozwiązywania szerokiego zakresu problemów.

Oczywiście istnieją pewne ćwiczenia, które są łatwe do rozwiązania przez komputer, ale trudne do wykonania przez człowieka, np. wyciągnięcie pierwiastka kwadratowego z dziesięciocyfrowej liczby. Ta sieć neuronowa będzie obliczać w czasie krótszym niż milisekunda, podczas gdy człowiekowi zajęłoby to minuty. Z drugiej strony, istnieją takie, które są niewiarygodnie łatwe do rozwiązania dla człowieka, ale są poza mocą komputera, takie jak wybór tła obrazu.

Naukowcy, którzy odkryli AI

Naukowcy spędzili wiele czasu na badaniu i wdrażaniu skomplikowanych rozwiązań. Najczęstsze Przykładem sieci neuronowej w informatyce jest rozpoznawanie wzorców. Zakres zastosowań obejmuje optycznego rozpoznawania znaków i zdjęcia, skany pism drukowanych lub odręcznych na tekst cyfrowy przed rozpoznaniem twarzy.

Biologiczne maszyny obliczeniowe

Biologiczne maszyny obliczeniowe

ludzki mózg jest niezwykle złożony i jest najpotężniejszą znaną maszyną obliczeniową. Jego wewnętrzne działanie jest wzorowane na koncepcji neuronów i ich sieci, znanych jako biologiczne sieci neuronowe. Mózg zawiera około 100 miliardów neuronów, które są połączone tymi sieciami.

Na wysokim poziomie komunikują się one ze sobą poprzez interfejs składający się z zakończeń aksonów połączonych z dendrytami poprzez szczelinę - synapsę. Mówiąc prościej, jeden wysyła wiadomość do drugiego przez ten interfejs, jeśli suma ważonych wejść od jeden lub kilku neuronów przekracza próg, aby uruchomić transfer. Nazywa się to aktywacją, gdy próg jest przekroczony i wiadomość jest przekazywana do następnego neuronu.

Proces sumowania może być skomplikowany matematycznie. Sygnał wejściowy jest ważoną kombinacją tych sygnałów, a waga każdego z nich oznacza, że to wejście może mieć różny wpływ na kolejne obliczenia i na końcowe wyjście sieci.

Elementy modelu neuronowego

Głębokie uczenie to termin używany w odniesieniu do złożonych sieci neuronowych składających się z wielu warstw. Warstwy składają się z węzłów. Węzeł to po prostu miejsce, w którym odbywają się obliczenia, które są uruchamiane, gdy napotkają wystarczającą ilość bodźców. Węzeł łączy dane wejściowe z zestawem współczynników lub wag, które wzmacniają lub osłabiają ten sygnał, przypisując im w ten sposób znaczenie dla zadania.

Sieci głębokiego uczenia różnią się od zwykłych sieci neuronowych z pojedynczą warstwą ukrytą. Przykładem treningu sieci neuronowej jest sieć Kohonena.

Elementy modelu neuronowego

W sieciach głębokiego uczenia każda warstwa uczy się danego zestawu funkcji na podstawie wyjścia poprzedniej warstwy. Im dalej w sieć neuronową, tym bardziej złożone są obiekty, które mogą być rozpoznawane przez węzły, ponieważ łączą one i rekombinują obiekty z poprzedniej warstwy.

Sieci głębokiego uczenia wykonują automatyczną ekstrakcję cech bez udziału człowieka, w przeciwieństwie do większości tradycyjnych algorytmów, i kończą się warstwą wyjściową: klasyfikatorem logicznym lub softmax, który przypisuje prawdopodobieństwo do określonego wyniku i jest nazywany predykcją.

ANN Black Box

Sztuczne sieci neuronowe (ANN) to modele statystyczne częściowo wzorowane na biologicznych sieciach neuronowych. Są one w stanie obsługiwać nieliniowe zależności między wejściami i wyjściami równolegle. Charakteryzuje się adaptacyjnymi wagami wzdłuż ścieżek między neuronami, które mogą być dostosowane przez algorytm uczenia w celu poprawy całego modelu.

Architektoniczna sztuczna sieć neuronowa (ANN)

Prostym przykładem sieci neuronowej jest architektonicznie sztuczna sieć neuronowa ANN, gdzie:

  • Warstwa wejściowa.
  • Warstwa ukryta.
  • Warstwa wyjściowa.

Jest on modelowany za pomocą warstw sztucznych neuronów lub jednostek obliczeniowych zdolnych do przyjmowania danych wejściowych i wykorzystujących funkcję aktywacji wraz z progiem w celu określenia, czy wiadomości są przekazywane.

W prostym modelu pierwszą warstwą jest warstwa wejściowa, następnie warstwa ukryta i na końcu warstwa wyjściowa. Każdy może zawierać jeden lub więcej neuronów. Modele mogą stawać się coraz bardziej złożone w miarę wzrostu zdolności abstrakcji i rozwiązania problemów, liczba warstw ukrytych, liczba neuronów w danej warstwie i liczba ścieżek między nimi.

Architektura i strojenie modelu są istotnymi elementami metod ANN oprócz samych algorytmów uczenia. Są one niezwykle potężne i są uważane za algorytmy czarnej skrzynki, co oznacza, że ich wewnętrzne działanie jest bardzo trudne do zrozumienia i wyjaśnienia.

Algorytmy głębokiego uczenia się

Uczenie głębokie - jest to pojęcie brzmi wystarczająco głośno, jest tak naprawdę terminem opisującym pewne typy sieci neuronowych i związanych z nimi algorytmów, które konsumują surowe dane wejściowe poprzez wiele warstw nieliniowych przekształceń w celu obliczenia docelowego wyjścia.

Nienadzorowana ekstrakcja cech to również obszar, w którym uczenie głębokie przekracza wszelkie oczekiwania. Przykładem uczenia się za pomocą sieci neuronowych są sieci SKIL.

Algorytmy głębokiego uczenia się

Tradycyjnie, w większości innych podejść do uczenia maszynowego, przeprowadzenie procesu ekstrakcji cech wraz z wyborem i projektowaniem cech jest obowiązkiem naukowca lub programisty.

Optymalne parametry algorytmu

Algorytmy uczenia funkcjonalnego sankcjonują maszynę do uczenia się określonego zadania przy użyciu wyrafinowanego zestawu zdolności uczenia się. Innymi słowy, uczą się, aby się uczyć. Zasada ta została z powodzeniem wykorzystana w wielu zastosowaniach i jest uważana za jedną z najbardziej zaawansowanych metod sztucznej inteligencji. Odpowiednie algorytmy są często stosowane do zadań nadzorowanych, nienadzorowanych i częściowo nadzorowanych.

Modele oparte na sieciach neuronowych mają więcej warstw niż algorytmy uczenia powierzchniowego. Małe algorytmy są mniej złożone i wymagają większej wiedzy na temat funkcji optymalnych, która obejmuje wybór i projektowanie. W przeciwieństwie do tego, algorytmy głębokiego uczenia polegają bardziej na optymalnym wyborze modelu i optymalizacji poprzez strojenie. Są one lepiej dostosowane do problemów, w których wcześniejsza znajomość funkcji jest mniej pożądana lub konieczna, a stałe dane nie są dostępne lub nie są wymagane do użycia.

Dane wejściowe są przekształcane we wszystkich jego warstwach za pomocą sztucznych neuronów lub jednostek procesorowych. Przykładem kodu sieci neuronowej jest CAP.

Znaczenie WPR

CAP służy do pomiaru w architekturze modelu głębokiego uczenia. Większość badaczy w dziedzinie zgadza się, że ma więcej niż dwie nieliniowe warstwy dla CAP, a niektórzy uważają, że CAP z więcej niż dziesięcioma warstwami wymaga zbyt głębokiego uczenia się.

Wartość WPR

Szczegółowe omówienie wielu różnych architektur modeli i algorytmów tego rodzaju uczenia się jest bardzo przestrzenne i kontrowersyjne. Za najbardziej przebadane uważa się:

  1. Bezpośrednie sieci neuronowe.
  2. Sieć neuronowa rekurencyjna.
  3. Perspektywy wielowarstwowe (MLP).
  4. Zbieżne sieci neuronowe.
  5. Rekursywne sieci neuronowe.
  6. Głębokie sieci przekonań.
  7. Zbieżne głębokie sieci przekonań.
  8. Mapy samoorganizujące się.
  9. Głębokie maszyny Boltzmanna.
  10. Autokodery z tłumieniem hałasu w stosie.

Najlepsze nowoczesne architektury

Perceptrony są uważane za sieci neuronowe pierwszej generacji, modele obliczeniowe pojedynczego neuronu. Zostały wynalezione w 1956 roku przez Franka Rosenblatta w "The Perceptron: A Proposed Model for Storing and Organizing Information in the Brain". Perceptron, zwany również siecią typu feed-forward, przekazuje informacje z przodu do tyłu.

RNN rekurencyjne zamieniają sekwencję wejściową na sekwencję wyjściową, która jest w innej dziedzinie, np. zamieniają sekwencję ciśnień dźwięku na sekwencję identyfikatorów słów.

John Hopfield wprowadził Hopfield Net w swoim artykule z 1982 roku "Neural Networks and Physical Systems with Emerging Collective Computing Capabilities". W sieci Hopfielda (HN) każdy neuron jest połączony z każdym innym. Są one trenowane poprzez ustawienie ich wartości do pożądanego schematu, po czym można obliczyć wagi.

Maszyna Boltzmanna

Maszyna Boltzmanna jest typem stochastycznej rekurencyjnej sieci neuronowej, która może być postrzegana jako analog sieci Hopfielda. Był to jeden z pierwszych wariantów uczenia się wewnętrznych reprezentacji, które rozwiązują złożone problemy kombinatoryczne. Neurony wejściowe stają się wyjściowymi po zakończeniu pełnej aktualizacji.

Generative Adversarial Network (GAN) Iana Goodfellow`a składa się z dwóch sieci. Często jest to połączenie sieci neuronowych typu Feed Forwards i Convolutional Neural Nets. Jeden generuje treść generatywną, a drugi musi ocenić treść dyskryminacyjną.

Wydobycie SKIL z Pythona

Python deep learning sieć neuronowa mapująca wejścia na wyjścia i znajdująca korelacje. Znany jest jako uniwersalny aproksymator, ponieważ może nauczyć się aproksymować nieznaną funkcję f(x) = y pomiędzy dowolnym wejściem "x" i dowolnym wyjściem "y", zakładając, że są one skorelowane lub powiązane przyczynowo.

Proces uczenia się znajduje właściwe "f" lub sposób przekształcenia "x" w "y", niezależnie od tego, czy f(x) = 3x + 12, czy f(x) = 9x - 0,1.

Zadania klasyfikacji obejmują zestawy danych, więc sieci neuronowe wykonują korelację między etykietami a danymi. Znane jest uczenie nadzorowane następujących typów:

  • rozpoznawanie twarzy;
  • identyfikacja osób na zdjęciach;
  • Wykrywanie wyrazu twarzy: zły, radosny;
  • identyfikowanie obiektów na obrazach: znaki stopu, piesi, znaczniki pasa ruchu;
  • rozpoznawanie gestów na wideo;
  • wykrywanie głosu z głośnika;
  • klasyfikacja spamu tekstowego.

Przykład sieci neuronowej konwencjonalnej

Konwolucyjna sieć neuronowa jest podobna do wielowarstwowej sieci perceptronowej. Główna różnica polega na tym, że CNN bada, jak jest ona skonstruowana i do jakich celów jest wykorzystywana. CNN została zainspirowana przez procesy biologiczne. Ich struktura ma wygląd kory wzrokowej obecnej u zwierzęcia. Są one stosowane w dziedzinie widzenia komputerowego i z powodzeniem osiągają stan techniki poziomy wydajności w różnych dziedzinach badań.

Przed rozpoczęciem kodowania CNN do budowy modelu wykorzystuje się bibliotekę, np. Keras z backendem Tensorflow. Najpierw wykonujemy niezbędny import. Biblioteka pomaga zbudować konwencjonalną sieć neuronową. Załaduj zbiór danych mnist przez keras. Zaimportuj sekwencyjny model keras, do którego można dodać warstwy konwolucyjne i asocjacyjne, gęste warstwy, ponieważ są one używane do predykcji etykiet. Warstwa zrzutu zmniejsza przepełnienie, a warstwa wyrównania przekształca wektor trójwymiarowy w jednowymiarowy. Na koniec importujemy numpy dla operacji na macierzach:

  • Y = 2 # wartość 2 oznacza, że obraz ma numer 2;
  • Y = [0,0,1,0,0,0,0] # 3. pozycja w wektorze wykonana 1;
  • # tutaj wartość klasy jest przekształcana w binarną macierz klasową.

Algorytm budowy:

  1. Dodaje warstwy superprecyzyjne i maksymalną pulę do modelu sekwencyjnego.
  2. Dodaj warstwy rozwijane pomiędzy. Dropout losowo wyłącza niektóre neurony w sieci, co zmusza dane do znalezienia nowych ścieżek i zmniejsza przepełnienie.
  3. Dodaj gęste warstwy, które są używane do przewidywania klasy (0-9).
  4. Skompiluj model z kategoryczną funkcją straty cross-entropy, optymalizatorem Adadelta i metryką dokładności.
  5. Po treningu oszacuj stratę i dokładność modelu na podstawie danych testowych i wydrukuj model.
Algorytm budowy

Symulacja w programie Matlab

Przedstawmy prosty przykład sieci neuronowych w Matlabie.

Zakładając, że "а" Model ma trzy wejścia "a", "b" и "c" i generuje wyjście "y".

Modelowanie w Matlabie

Dla celów generowania danych: y = 5a + bc + 7c.

Najpierw piszemy mały skrypt do generowania danych:

  • a = Rand (11000);
  • b = Rand (1,1000);
  • c = Rand (1,1000);
  • n = Rand (1,1000) * 0,05;
  • y = a * 5 + b * c + 7 * c + n,

gdzie n to szum, specjalnie dodany, aby wyglądał jak prawdziwe dane. Wielkość szumu wynosi 0,1 i jest jednostajna.

Zatem dane wejściowe to zbiór "a", "b" и "c", wyjście:

  • I = [a; b; c];
  • O = y.

Następnie użyj wbudowanej w Matlab funkcji newff do wygenerowania modelu.

Przykłady problemów związanych z sieciami neuronowymi

Najpierw utwórz macierz R o rozmiarze 3 * 2. Pierwsza kolumna pokaże minimum wszystkich trzech wejść, a druga kolumna pokaże maksimum wszystkich trzech wejść. W tym przypadku trzy wejścia są z zakresu od 0 do 1, więc:

R = [0 1; 0 1; 0 1].

Teraz utwórz macierz rozmiarów, która ma v-rozmiary wszystkich warstw: S = [51].

Teraz wywołaj funkcję newff w następujący sposób:

net = newff ([0 1; 0 1; 0 1], S, {`tansig`, `purelin`}).

Model neuronowy {`tansig`, `purelin`} pokazuje funkcję mapowania dwóch warstw.

Jest trenowany z wcześniej utworzonymi danymi: net = train(net,I,O).

Sieć jest trenowana, można zobaczyć krzywą wydajności w trakcie uczenia się.

Krzywa wydajności

Teraz zasymuluj go ponownie na tych samych danych i porównaj dane wyjściowe:

O1 = sim(net,I);

plot(1:1000,O,1:1000,O1).

Zatem macierz wejściowa będzie miała postać:

  • netto.IW{1}
  • -0.3684 0.0308 -0.5402
  • 0.4640 0.2340 0.5875
  • 1.9569 -1.6887 1.5403
  • 1.1138 1.0841 0.2439
  • netto.LW{2,1}
  • -11.1990 9.4589 -1.0006 -0.9138

Zastosowania sztucznej inteligencji

Przykłady wdrożeń sieci neuronowych obejmują rozwiązania online do samoobsługi i solidnych przepływów pracy. Istnieją modele głębokiego uczenia się w użyciu dla chatbotów, a wraz z ich dalszym rozwojem możemy spodziewać się większego wykorzystania tego obszaru w szerokim zakresie przedsiębiorstw.

Wnioski:

  1. Automatyczne tłumaczenie maszynowe. To nic nowego, głębokie uczenie pomaga poprawić automatyczne tłumaczenie tekstu za pomocą sieci stosowych i pozwala tłumaczyć obrazy.
  2. Prostym przykładem zastosowania sieci neuronowych jest dodawanie kolorów do czarno-białych zdjęć i filmów. Można to zrobić automatycznie, stosując modele z zaawansowanym uczeniem się.
  3. Maszyny uczą się interpunkcji, gramatyki i stylu na podstawie fragmentu tekstu i potrafią wykorzystać model dla automatycznych tworzenie całkowicie nowego tekstu z zachowaniem odpowiedniej ortografii, gramatyki i stylu.

Sztuczne sieci neuronowe ANN i bardziej zaawansowane techniki głębokiego uczenia się należą do najbardziej zaawansowanych narzędzi do rozwiązywania złożonych problemów. Choć boom zastosowań jest mało prawdopodobny w najbliższej przyszłości, postęp technologii i zastosowań sztucznej inteligencji z pewnością będzie ekscytujący.

Chociaż rozumowanie dedukcyjne, wnioskowanie logiczne i podejmowanie decyzji komputerowo wspomagane podejmowanie decyzji jest dziś jeszcze dalekie od doskonałości, poczyniono już znaczne postępy w stosowaniu sztuczna inteligencja i związane z nimi algorytmy.

Artykuły na ten temat