Sieci neuronowe (ANN) są używane niemal wszędzie, gdzie istnieje potrzeba heurystyki, aby rozwiązać problem.
Wszystko zaczęło się, gdy Warren McCulloch i Walter Pitts stworzyli pierwszy model NN w 1943 roku. Ich model był oparty wyłącznie na matematyce i algorytmach i nie można go było przetestować z powodu braku zasobów obliczeniowych. Później, w 1958 r., Frank Rosenblatt stworzył pierwszy w historii model, który mógłby rozpoznać wzorce. Rzeczywistego modelu nadal nie można przetestować.
Pierwsze sieci neuronowe, które można przetestować i miały wiele warstw, opublikował Alexey Ivakhnenko i Lapa w 1965 roku. Następnie badania nad NN uległy stagnacji ze względu na wysoką wykonalność modeli uczenia maszynowego. Dokonali tego Marvin Minsky i Seymour Papert w 1969 roku. Ta stagnacja była jednak stosunkowo krótka, ponieważ 6 lat później w 1975 Paul Werbos wymyślił propagację wsteczną, która rozwiązała problem XOR i ogólnie uczyniła nauczanie sieci neuronowych bardziej wydajnym. W 1992 roku została wprowadzona nowa metoda. Max-pooling, który pomógł w rozpoznawaniu obiektów 3D, ponieważ pomógł przy najmniejszej zmianie niezmienności i tolerancji na odkształcenia. W latach 2009-2012 powtarzające się projekty sieci neuronowych stworzone przez grupę badawczą Jürgena Schmidhubera zdobyły 8 międzynarodowych nagród w konkursach w zakresie rozpoznawania wzorców i uczenia maszynowego. W 2011 r. rozpoczęto wprowadzać głębokie sieci neuronowe a wraz z tym warstwy splotowe z warstwami maksymalnego łączenia, których wynik był następnie przekazywany do kilku całkowicie połączonych warstw, po których następowała warstwa wyjściowa. Są one nazywane Konwolucyjnymi Sieciami Neuronowymi.
Jest to technika budowania programu komputerowego, który uczy się z danych. Opiera się bardzo luźno na tym, jak myślimy, jak działa ludzki mózg. Po pierwsze, zbiór neuronów oprogramowania jest tworzony i łączony razem, umożliwiając wysyłanie wiadomości do siebie nawzajem. Następnie sieć jest proszona o rozwiązanie problemu, który próbuje robić w kółko, za każdym razem wzmacniając połączenia, które prowadzą do sukcesu i zmniejszając te, które prowadzą do niepowodzenia.
Sieć neuronowa jest połączeniem systemów obliczeniowych. Systemy obliczeniowe są proceduralne;, a program rozpoczyna się od pierwszego wiersza kodu, wykonuje go i przechodzi do następnego, postępując według instrukcji w sposób liniowy. Prawdziwa sieć neuronowa nie podąża liniową ścieżką. Raczej informacje są przetwarzane zbiorowo, równolegle w całej sieci węzłów
Istnieją parę części, które składają się na architekturę podstawowej sieci neuronowej:
Wszystkie powyższe elementy są potrzebne do zbudowania architektury szkieletowej sieci neuronowej.
Najczęstszym sposobem nauczenia sieci neuronowych i generalizowania problemu jest użycie metody gradientu prostego. W połączeniu z tą metodą innym powszechnym sposobem nauczania sieci neuronowych jest użycie propagacji wstecznej. Używając tej metody, błąd w warstwie wyjściowej sieci neuronowej jest propagowany do tyłu przy użyciu reguły łańcuchowej z rachunku różniczkowego. W treningu sieci jest wiele różnych zastrzeżeń.
Aby lepiej zrozumieć sztuczne obliczenia neuronowe, ważne jest, aby najpierw dowiedzieć się, w jaki sposób konwencjonalny komputer i jego informacje o procesie programowym. Komputer szeregowy ma centralny procesor, który może adresować tablicę lokalizacji pamięci, w której przechowywane są dane i instrukcje. Obliczenia są wykonywane przez procesor odczytujący instrukcję, jak również wszelkie dane wymagane przez instrukcję z adresów pamięci, instrukcja jest następnie wykonywana, a wyniki są zapisywane w określonej lokalizacji pamięci, zgodnie z wymaganiami. W systemie szeregowym, kroki obliczeniowe są deterministyczne, sekwencyjne i logiczne, a stan danej zmiennej można śledzić z jednej operacji na drugą.
Dla porównania, sieci neuronowe nie są sekwencyjne ani koniecznie deterministyczne. Nie ma złożonych procesorów centralnych, a jest ich wiele prostych, które zazwyczaj nie robią nic więcej, niż ważoną sumę swoich danych wejściowych od innych procesorów. Nie wykonują zaprogramowanych instrukcji; reagują równolegle na schemat danych wejściowych przedstawionych mu. Nie ma również oddzielnych adresów pamięci do przechowywania danych. Zamiast tego informacje są zawarte w ogólnym „stanie” aktywacji sieci. „Wiedza” jest więc reprezentowana przez samą sieć, która jest dosłownie czymś więcej niż sumą poszczególnych składników.
Sieci neuronowe są uniwersalnymi przybliżeniami i działają najlepiej, jeśli system, którego używasz do modelowania, ma wysoką tolerancję na błędy. Dlatego nie zaleca się korzystania z sieci neuronowej w celu zrównoważenia swojej książeczki czekowej! Jednak działają one bardzo dobrze dla:
Istnieje wiele zalet i ograniczeń związanych z analizą sieci neuronowych i aby właściwie omówić ten temat, musielibyśmy przyjrzeć się poszczególnym rodzajom sieci, co nie jest konieczne do tej ogólnej dyskusji. Jednak w odniesieniu do sieci wstecznego propagowania istnieją pewne konkretne problemy, które potencjalni użytkownicy powinni mieć świadomość.
W zależności od charakteru aplikacji i siły wewnętrznych wzorców danych, można ogólnie oczekiwać, że sieć dobrze trenuje. Dotyczy to problemów, w których relacje mogą być dość dynamiczne lub nieliniowe. Sieci neuronowe stanowią analityczną alternatywę dla konwencjonalnych technik, które często są ograniczone przez surowe założenia normalności, liniowości, zmiennej niezależności itp. Ponieważ sieci neuronowe, może wychwycić wiele rodzajów relacji, pozwala to użytkownikowi szybko i względnie łatwo modelować zjawiska, które w przeciwnym razie mogły być bardzo trudne lub niemożliwe do wyjaśnienia inaczej.
Mówi się, że dziś sieci neuronowe przeżywają swój renesans, głównie ze względu na ich zastosowanie przy analizie coraz większych zbiorów danych i ciągłym napływie nowych zmiennych, z którymi zwykle programy sobie nie radzą. Sieci neuronowe znalazły także zastosowanie w wielu dziedzinach życia, w których człowiek zostałby przytłoczony zbyt dużą liczbą danych, głównie w procesach decyzyjnych. Kto wie – może już niedługo będziemy zatrudniać jako doradców, analityków czy wróżki sztuczną inteligencją opartą na sieciach neuronowych.