
Sztuczna inteligencja w e-commerce
5 listopada 2018
WORDPRESS 5.0
18 grudnia 2018
Sieci neuronowe (ANN) są wykorzystywane niemal wszędzie tam, gdzie istnieje potrzeba heurystyki do rozwiązania problemu.
Historia sieci neuronowych
Wszystko zaczęło się, gdy Warren McCulloch i Walter Pitts stworzyli pierwszy model NN w 1943 roku. Ich model opierał się jedynie na matematyce i algorytmach i nie mógł być testowany z powodu braku zasobów obliczeniowych. Później, w 1958 roku, Frank Rosenblatt stworzył pierwszy w historii model, który potrafił rozpoznawać wzorce. Prawdziwy model nadal nie mógł być testowany.
Pierwsze sieci neuronowe, które można było testować i które miały wiele warstw, zostały opublikowane przez Aleksieja Iwachnienko i Łapę w 1965 roku. Później badania nad NN uległy stagnacji z powodu dużej popularności i efektywności modeli uczenia maszynowego. Dokonali tego Marvin Minsky i Seymour Papert w 1969 roku. Ta stagnacja była jednak stosunkowo krótka, ponieważ sześć lat później w 1975 roku Paul Werbos wynalazł propagację wsteczną, która rozwiązała problem XOR i ogólnie uczyniła nauczanie sieci neuronowych bardziej efektywnym. W 1992 roku wprowadzono nową metodę. Max-pooling pomógł w rozpoznawaniu obiektów 3D poprzez rozpoznawanie najmniejszej zmiany w niezmienności i tolerancji na deformacje. W latach 2009-2012, powtarzane projekty sieci neuronowych stworzone przez grupę badawczą Jürgena Schmidhubera zdobyły 8 międzynarodowych nagród w konkursach rozpoznawania wzorców i uczenia maszynowego. W 2011 roku uruchomiono głębokie sieci neuronowe, a co za tym idzie, warstwy splotowe z warstwami maksymalnymi, których wynik został następnie przeniesiony do kilku całkowicie połączonych warstw, a następnie warstwy początkowej. Nazywane są one konwolucyjnymi sieciami neuronowymi.
Co to jest sieć neuronowa?
Jest to technika opracowywania programu komputerowego, który uczy się na podstawie danych. Opiera się bardzo luźno na tym, jak myślimy o działaniu ludzkiego mózgu.Przede wszystkim, tworzony jest i łączony ze sobą zestaw neuronów programowych, pozwalając na wzajemne przesyłanie sobie wiadomości. Następnie sieć jest proszona o rozwiązywanie problemu, który próbuje wykonywać w kółko, za każdym razem wzmacniając połączenia prowadzące do sukcesu i redukując te, które prowadzą do porażki.
Sieć neuronowa to połączenie systemów obliczeniowych. Systemy obliczeniowe są proceduralne, a program zaczyna się od pierwszej linii kodu, wykonuje ją i przechodzi do następnej, liniowo postępując zgodnie z instrukcjami. Prawdziwa sieć neuronowa nie podąża liniową ścieżką. Zamiast tego, informacja jest przetwarzana zbiorowo, równolegle w sieci węzłów.
Istnieje kilka części, które składają się na architekturę podstawowej sieci neuronowej:
-
- Jednostki/neurony – Najmniej ważne z trzech części architektury sieci neuronowej. Są to funkcje, które zawierają wagi i błędy oraz czekają na nadejście danych. Po otrzymaniu danych wykonują pewne obliczenia, a następnie używają funkcji aktywacji do ograniczenia danych do danego zakresu.
- Wagi/parametry/połączenia – Najważniejsza część sieci, są to liczby, których sieć neuronowa musi się nauczyć, aby uogólnić problem.
- Wiązania – Liczby te reprezentują to, jak sieć neuronowa „sądzi”, że powinna dodawać wagi poprzez mnożenie danych. Oczywiście, zawsze są błędne, ale sieć neuronowa uczy się również optymalnych błędów.
- Hiperparametry – Są to wartości, które należy ustawić ręcznie.
- Funkcje aktywacji – Są również znane jako funkcje mapujące. Wprowadzają pewne dane wejściowe na osi X i przesyłają wartość w ograniczonym zakresie. Są używane do konwersji dużych wyników z jednostek na mniejszą wartość – w większości przypadków – i promowania nieliniowości w sieciach neuronowych. Wybór funkcji aktywacji może drastycznie poprawić lub utrudnić działanie sieci neuronowej.
{„elementor_texts”: {„3/6”: „
\n
\n
\n
\n
- \n \t
\n
\nWszystkie powyższe elementy są potrzebne do zbudowania architektury sieci neuronowej.\n
Co dzieje się, gdy sieć neuronowa się uczy?
\nNajczęstszym sposobem nauczania sieci neuronowych i uogólniania problemu jest użycie prostej metody gradientowej. W połączeniu z tą metodą, inną popularną metodą nauczania sieci neuronowych jest użycie propagacji wstecznej. Używając tej metody, błąd w warstwie wyjściowej sieci neuronowej jest propagowany wstecz za pomocą reguły łańcuchowej z rachunku różniczkowego. Istnieje wiele różnych zastrzeżeń dotyczących trenowania sieci.\n
Jaka jest różnica między sieciami neuronowymi a konwencjonalnymi obliczeniami?
\nAby lepiej zrozumieć sztuczne obliczenia neuronowe, ważne jest, aby najpierw dowiedzieć się, jak konwencjonalny komputer i jego oprogramowanie przetwarzają informacje. Komputer szeregowy posiada centralny procesor, który może adresować tablicę miejsc pamięci, w których przechowywane są dane i instrukcje. Obliczenia są wykonywane przez procesor, który odczytuje instrukcje, a także wszelkie dane wymagane przez instrukcję z adresów pamięci, instrukcja jest następnie wykonywana, a wyniki są zapisywane w określonym miejscu pamięci, zgodnie z wymaganiami. W systemie szeregowym kroki obliczeń są deterministyczne, sekwencyjne i logiczne, a stan danej zmiennej można śledzić od jednej operacji do drugiej.”}}{„elementor_texts”: {„”: „Dla porównania, sieci neuronowe nie są sekwencyjne ani koniecznie deterministyczne. Nie ma złożonych procesorów centralnych, a jest wiele prostych procesorów, które zazwyczaj nie robią nic więcej niż ważona suma ich danych wejściowych z innych procesorów. Nie wykonują zaprogramowanych instrukcji; reagują równolegle na schemat przedstawionych mu danych wejściowych. Nie ma też oddzielnych adresów pamięci do przechowywania danych. Zamiast tego informacja jest zawarta w ogólnym „stanie” aktywacji sieci. „Wiedza” jest w ten sposób reprezentowana przez samą sieć, która jest dosłownie czymś więcej niż sumą poszczególnych komponentów.\n
Jakie zastosowania powinny być stosowane w sieciach neuronowych?
\nSieci neuronowe są uniwersalnymi aproksymatorami i najlepiej sprawdzają się, jeśli system, którego używasz do modelowania, ma wysoką tolerancję na błędy. Dlatego nie zaleca się używania sieci neuronowej do bilansowania książeczki czekowej! Działają jednak bardzo dobrze w przypadku:\n
- \n \t
- przechwytywania skojarzeń lub odkrywania wzorców w zbiorze wzorców;
- gdy objętość, liczba zmiennych lub różnorodność danych jest bardzo duża;
- związki między zmiennymi są mgliście rozumiane;
- związki są trudne do opisania w sposób adekwatny do konwencjonalnych podejść.
\n \t
\n \t
\n \t
„}}{
„elementor_texts”: {
„af74577”: „
\n
Jakie są ich ograniczenia?
\nIstnieje wiele zalet i ograniczeń związanych z analizą sieci neuronowych i aby właściwie omówić ten temat, musielibyśmy przyjrzeć się konkretnym typom sieci, co nie jest konieczne dla tej ogólnej dyskusji. Jednak w odniesieniu do sieci propagacji wstecznej istnieją pewne specyficzne problemy, o których powinni być świadomi potencjalni użytkownicy.\n
- \n \t
- Sieci neuronowe retropropagacji (i wiele innych typów sieci) są w pewnym sensie ostatecznymi „czarnymi skrzynkami”. Oprócz zdefiniowania ogólnej architektury sieci i być może jej początkowego założenia przy użyciu liczb losowych, użytkownik nie ma innej roli niż dostarczenie jej do wejścia i obserwowanie, jak się szkoli i czeka na wyjście. Niektóre oprogramowanie dostępne w pakietach wolnego oprogramowania pozwala użytkownikowi próbować postępować z siecią w regularnych odstępach czasu, ale sam proces uczenia postępuje. Ostatecznym produktem tej działalności jest przeszkolona sieć, która nie dostarcza żadnych równań ani współczynników, które definiują relację poza jej własną wewnętrzną matematyką.
- Sieci propagacji wstecznej są również wolniejsze w szkoleniu niż inne typy sieci, a czasami wymagają tysięcy epok. Jeśli działa na prawdziwie równoległym systemie komputerowym, ten problem nie jest problemem, ale jeśli jest symulowany na standardowej maszynie szeregowej, szkolenie może zająć trochę czasu. Dzieje się tak, ponieważ procesor komputera musi osobno obliczyć funkcję każdego węzła i połączenia, co może być problematyczne w bardzo dużych sieciach z dużymi ilościami danych. Jednak prędkość większości obecnych maszyn jest taka, że zwykle nie stanowi to większego problemu.
\n \t
”
}
}{
„elementor_texts”: {
„6/6”: „
\n
Jakie są ich zalety nad konwencjonalnymi technikami?
\nW zależności od charakteru zastosowania i siły wewnętrznych wzorców danych, generalnie można oczekiwać, że sieć dobrze się uczy. 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 ścisłe założenia normalności, liniowości, niezależności zmiennych itp. Ponieważ sieci neuronowe mogą wychwytywać wiele rodzajów relacji, pozwala to użytkownikowi na szybkie i stosunkowo łatwe modelowanie zjawisk, które w innym przypadku mogłyby być bardzo trudne lub niemożliwe do wyjaśnienia. \n\nMówi się, że dziś sieci neuronowe przeżywają swój renesans, głównie ze względu na ich zastosowanie w analizie coraz większych zbiorów danych oraz stały napływ nowych zmiennych, z którymi programy zazwyczaj sobie nie radzą. Sieci neuronowe znalazły również zastosowanie w wielu dziedzinach życia, w których ludzie byliby przytłoczeni zbyt dużą ilością danych, głównie w procesach decyzyjnych. Kto wie — może już niedługo zatrudnimy doradców, analityków, bądź wróżki ze sztuczną inteligencją opartą o sieci neuronowe.”
}
}


