Głęboka sieć neuronowa (DNN) to technika uczenia maszynowego, która pozwala komputerowi, poprzez jego szkolenie, wykonywać zadania, które byłyby bardzo trudne do wykonania przy użyciu konwencjonalnych technik programowania. Algorytmy sieci neuronowych zostały zainspirowane ludzkim mózgiem i jego funkcjami: podobnie jak nasz ludzki umysł, zostały zaprojektowane tak, aby działać nie tylko zgodnie z ustaloną listą reguł, ale także przewidując rozwiązania i wyciągając wnioski na podstawie poprzednich iteracji i doświadczeń.
Czym jest architektura sieci neuronowej?
Sieć neuronowa składa się z wielu warstw węzłów, które otrzymują dane wejściowe z innych warstw i generują dane wyjściowe, aż do osiągnięcia ostatecznego wyniku. Sieci neuronowe mogą mieć dowolną liczbę ukrytych warstw: im więcej warstw węzłów w sieci, tym większa złożoność. Oto różne architektury sieci neuronowych:
- Tradycyjne sieci neuronowe składają się zazwyczaj z 2 lub 3 warstw ukrytych;
- Głęboka sieć ucząca się, która może mieć do 150 ukrytych warstw;
Jaka jest różnica między sieciami neuronowymi a głębokimi sieciami neuronowymi?
Głęboka sieć neuronowa jest znacznie bardziej skomplikowanym systemem niż "prosty" system neuronowy. Sieć neuronowa jest porównywalna do gry w szachy i zachowuje się zgodnie z algorytmami: różne taktyki będą sugerowane w zależności od ruchów i działań przeciwnika. Ta sieć neuronowa będzie ograniczona do danych wprowadzonych przez programistę:
- Jak poruszają się figury szachowe;
- Rozmiar szachownicy;
- Różne strategie w różnych sytuacjach;
Sieć neuronowa, która wykracza poza dane wejściowe i może uczyć się na podstawie wcześniejszych doświadczeń, staje się głęboką siecią neuronową
Na tym samym komputerze można na przykład wytrenować sieć neuronową, a następnie grać z nią przeciwko innym osobom i pozwolić jej uczyć się podczas gry. Stamtąd, jeśli sieć neuronowa może uczyć się od różnych graczy, pokonanie głębokiej sieci neuronowej może stać się trudne lub dosłownie niemożliwe, nawet dla mistrzów szachowych.
Głębokie sieci neuronowe mogą rozpoznawać polecenia głosowe, identyfikować głosy, rozpoznawać dźwięki i grafikę oraz robić znacznie więcej niż sieci neuronowe. Głębokie sieci uczące się wykorzystują "Big Data" wraz z algorytmami w celu rozwiązania problemu, a te głębokie sieci neuronowe mogą rozwiązywać problemy przy ograniczonym lub zerowym wkładzie człowieka.
Jak wizualizować pracę głębokiej sieci neuronowej?
Proces działania głębokiej sieci neuronowej najlepiej zrozumieć na przykładzie. Wyobraź sobie, że masz setki tysięcy zdjęć, z których niektóre zawierają psy, i zdecydowałeś, że chcesz napisać program komputerowy do rozpoznawania psów na zdjęciach.
Masz dwie możliwości. Możesz napisać program do jednoznacznej identyfikacji psów lub program, który "nauczy się" identyfikować psy.
Nierozsądnie decydujesz się na to pierwsze.
Korzystanie z konwencjonalnych technik programowania jest długie i trudne, a wyniki nie zawsze są dokładne
Aby zidentyfikować zdjęcia psów, tworzysz oprogramowanie wykorzystujące instrukcje "jeśli" i "wtedy", w których prawdopodobieństwo, że patrzysz na psa, jest zaprogramowane tak, aby wzrastało za każdym razem, gdy zidentyfikujesz atrybut podobny do psa, taki jak futro, klapnięte uszy i ogon. Jednak ten typ systemu neuronowego jest trudny na wielu poziomach:
Na przykład, jeśli kępa pikseli przypomina ogon, zwiększa to prawdopodobieństwo, że patrzysz na psa. Twoja głęboka sieć neuronowa musi zidentyfikować grupy pikseli, które odpowiadają atrybutom podobnym do psa. Nawet jeśli uda ci się to zrobić, algorytm ma pewne problemy:
- Wiele sfotografowanych obiektów ma pewne cechy podobne do psa, zwłaszcza zdjęcia podobnych zwierząt. Konieczne będzie dodanie reguł;
- Czasami atrybuty istnieją, ale są ukryte. Algorytmy ich nie wychwytują;
- Czasami atrybuty mają znaczenie tylko wtedy, gdy obecne są inne atrybuty. Potrzebnych będzie więcej reguł decyzyjnych;
Klasyfikacja nie powiodła się. Zdajesz sobie sprawę, że nie możesz ręcznie zidentyfikować pełnego zestawu atrybutów, nie mówiąc już o opracowaniu wszystkich reguł potrzebnych do obsługi wszystkich tych specjalnych przypadków.
Mądrze się poddajesz i decydujesz się wypróbować to drugie podejście. Aby użyć sieci neuronowej lub, jeszcze lepiej, głębokiej sieci neuronowej.
Model głębokiego uczenia może zaoszczędzić czas kodowania i zapewnić lepsze wyniki
Sieć neuronowa została tak nazwana, ponieważ istnieje podobieństwo między tym podejściem do programowania a sposobem działania mózgu.
Podobnie jak mózg, algorytmy sieci neuronowych wykorzystują sieć neuronów lub węzłów. Podobnie jak mózg, neurony te są dyskretnymi funkcjami (lub małymi maszynami), które przyjmują dane wejściowe i generują dane wyjściowe. Węzły te są ułożone w warstwy, dzięki czemu wyjścia neuronów w jednej warstwie stają się wejściami dla neuronów w następnej warstwie, aż neurony w zewnętrznej warstwie sieci wygenerują ostateczny wynik.
Istnieją zatem warstwy neuronów, z których każdy otrzymuje bardzo ograniczone dane wejściowe i generuje bardzo ograniczone dane wyjściowe, podobnie jak w mózgu. Pierwsza warstwa (lub warstwa wejściowa) neuronów przyjmuje dane wejściowe, a ostatnia warstwa neuronów (lub warstwa wyjściowa) w sieci wyprowadza wynik.
Czy trafne jest nazywanie tego typu algorytmu "siecią neuronową"?
Ludzki mózg jest oczywiście znacznie bardziej złożony i potężniejszy niż sieć neuronowa. Nazwanie algorytmu "głęboką siecią neuronową" było zamachem wizerunkowym, ale może stworzyć nierealistyczne oczekiwania co do tego, co można osiągnąć za pomocą tych technik. Są jednak ludzie, którzy próbują przeprojektować mózg, wykorzystując bardzo złożone sieci neuronowe, w nadziei, że w ten sposób będą w stanie odtworzyć ogólną inteligencję podobną do ludzkiej w rozwoju botów. Jak więc sieć neuronowa i techniki uczenia maszynowego mogą pomóc nam w rozwiązaniu problemu rozpoznawania psów?
Cóż, zamiast ręcznie definiować atrybuty psa, algorytm głębokiej sieci neuronowej może zidentyfikować ważne atrybuty i poradzić sobie ze wszystkimi specjalnymi przypadkami bez programowania.
Jak działa głęboka sieć neuronowa?
Robi to w następujący sposób:
Każdy neuron w warstwie wejściowej otrzymuje bit informacji z obrazu jako dane wejściowe, a następnie losowo waży (od zera do jednego), czy ta informacja sugeruje psa, czy nie. Niska waga (mniej niż 0,5) oznacza, że jest mniej prawdopodobne, że informacja jest powiązana z psem, a wysoka waga oznacza, że jest bardziej prawdopodobne, że informacja jest powiązana z psem. To podejście wielowarstwowej sieci neuronowej nazywane jest uczeniem głębokim. Sieci neuronowe i uczenie głębokie to bardzo potężne techniki osiągania zrozumienia komputerowego.
Głębokie sieci neuronowe składają się z wielu warstw węzłów zachowujących się jak neurony w naszym mózgu
Aby kontynuować głębokie sieci neuronowe, wagi tych neuronów są następnie podawane jako dane wejściowe do innych warstw neuronów, które również losowo przypisują wagi i przekazują je jako dane wejściowe do jeszcze większej liczby neuronów w sieci. Trwa to tak długo, aż warstwa wyjściowa neuronów wyda werdykt binarny. Jeśli średnia z przekazanych im wag jest większa niż 0,5, to jest to pies, w przeciwnym razie nie. Te połączenia między neuronami i ich aktywacja w wielu warstwach węzłów są tym, co nadaje aplikacjom głębokich sieci neuronowych ich moc.
Skąd głęboka sieć neuronowa wie, czy daje właściwą odpowiedź?
Istotne pytania w tym momencie to: czy głęboka sieć neuronowa odgadła poprawnie czy nie i co się dzieje, jeśli odgadła poprawnie lub nie? I skąd sieć neuronowa wie, czy zgadła poprawnie, czy nie?
Jednym ze sposobów, w jaki mogłaby się tego dowiedzieć, jest podjęcie się niezwykle czasochłonnego zadania klasyfikacji polegającego na oznaczeniu wszystkich zdjęć etykietą "pies" lub "nie pies" w zależności od tego, czy na zdjęciu znajduje się pies, czy nie. Sieć neuronowa po prostu spojrzy na etykietę, aby sprawdzić, czy poprawnie zidentyfikowała psa, czy nie.
I oczywiście nie interesuje nas, czy poprawnie odpowiedział na pytanie "Pies czy nie" na pojedynczym zdjęciu psa. Interesuje nas, czy poprawnie odpowiedział na pytanie w przypadku każdego zdjęcia, a przynajmniej, jaki procent czasu trafnie ocenił, czy na zdjęciu był pies, czy nie.
W jaki sposób głębokie sieci neuronowe wykorzystują trening do nauki?
Sieć neuronowa uczy się z każdej iteracji poprzez dane, aby poprawić swoją dokładność
Dla danego zestawu wag we wszystkich neuronach w sieci, sieć neuronowa będzie zgadywać dla wszystkich zdjęć, a następnie określi, jak dokładna była. W jakim procencie przypadków uzyskała prawidłowy wynik, tj. powiedziała, że pies był na zdjęciu, gdy był na zdjęciu, a ile razy uzyskała błędny wynik, mówiąc, że pies był na zdjęciu, gdy go nie było lub powiedział, że psa nie było na zdjęciu, gdy był. To wskazanie, jak dokładny jest algorytm sztucznej inteligencji, jest niezbędną informacją zwrotną dla modelu sieci neuronowej.
Po jednokrotnym przejściu przez wszystkie zdjęcia może losowo (lub w inny sposób) dostosować niektóre wagi, a następnie ponownie wykonać całe ćwiczenie zgadywania, co jest na zdjęciu. Jeśli wynik z drugiego uruchomienia jest lepszy, zostanie zachowany zamiast powrotu do poprzedniego zestawu wag. Jeśli wynik z drugiego uruchomienia był gorszy, może powrócić do poprzedniego zestawu wag, a następnie wypróbować różne modyfikacje tych wag.
Proces ten będzie kontynuowany w ten sposób, aż sieć neuronowa stanie się dobra w identyfikowaniu psów na zdjęciach (miejmy nadzieję).
Gdy algorytm może dokładnie identyfikować psy, mówi się, że jest zbieżny. Został on pomyślnie "przeszkolony" do identyfikacji psów.
Jakie są różne rodzaje sieci neuronowych?
Konwolucyjne sieci neuronowe
Konwolucyjne sieci neuronowe (CNN) to rodzaj sztucznej inteligencji zaprojektowanej do przetwarzania lub uczenia się na podstawie dużych zbiorów danych. Konwolucyjna sieć neuronowa to nowo ukuty termin opisujący konkretnie ten typ sieci lub ogólnie technologię sztucznej inteligencji.
CNN to potężne narzędzia sztucznej inteligencji do rozpoznawania obrazów, które wykorzystują głębokie uczenie do wykonywania nie tylko zadań generatywnych, ale także opisowych. Przykłady zadań generatywnych obejmują automatyczne przycinanie, pisanie podpisów, wideografię, mimeografię i nakładanie obrazów. Konwolucyjna sieć neuronowa zawiera tak zwane warstwy konwolucyjne. Każdy neuron w tych warstwach przetwarza tylko informacje z niewielkiej części pola widzenia. Wejścia każdego neuronu są ułożone w sposób przypominający sumę kontrolną w celu wygenerowania mapy funkcji.
Sztuczne sieci neuronowe
Sztuczna sieć neuronowa (ANN) to sieć wielu perceptronów na różnych głębokościach lub warstwach, którą można rozumieć jako regresję logistyczną. ANN jest często nazywana Feed Forward Neural Network, ponieważ dane wejściowe są przetwarzane tylko w kierunku do przodu: warstwa odbiera dane wejściowe i wysyła dane wyjściowe w sposób liniowy.
Sztuczne sieci neuronowe są również znane jako uniwersalne aproksymatory funkcji. Czyste algorytmy sieci neuronowych, takie jak ANN i funkcje mapowania, które można zaimplementować jako głębokie uczenie, pozwalają komputerom uczyć się dowolnej funkcji. Jednym z powodów, dla których uniwersalna aproksymacja jest ważna, jest funkcja aktywacji. Funkcje aktywacji wprowadzają nieliniowe właściwości do sieci podczas uczenia się dowolnej złożonej relacji między wejściem a wyjściem. Pomaga to różnym rodzajom sieci uczyć się od siebie nawzajem.
W jaki sposób głęboka sieć neuronowa poprawia się z czasem?
Jednym ze sposobów wyobrażenia sobie tego, co robi algorytm, jest wyobrażenie sobie każdego neuronu jako pewnego rodzaju testu pewności. Zamiast kodować wszystkie te stwierdzenia "jeśli-to" w celu identyfikacji psów, każdy neuron jest skalibrowany tak, aby dodać lub odjąć od ostatecznej oceny, że obiekt na zdjęciu jest psem. To tak, jakby osąd (taki jak pies lub nie) został podzielony na dużą liczbę powiązanych ze sobą osądów, które łącznie składają się na ostateczny osąd.
Oczywiście głównym celem jest osiągnięcie konwergencji, jeśli jest to możliwe. Ważnym celem jest również zrobienie tego w rozsądnym czasie, najlepiej w krótkim czasie.
Algorytmy głębokiego uczenia mają proces uczenia się, który sprawia, że są trudne do zrozumienia dla ludzi
Co ciekawe, logika, która pozwala sieciom neuronowym zidentyfikować psy na zdjęciu, nie jest zrozumiała dla człowieka. Modele głębokiego uczenia mają ukrytą logikę, zasadniczo czarną skrzynkę ukrytych warstw węzłów tworzących własną głęboką sieć. To powiedziawszy, podjęto pewne próby wizualnego przedstawienia logiki stojącej za sieciami neuronowymi w zadaniach rozpoznawania obrazów. W innych przypadkach nie można zobaczyć, co algorytm robi za kulisami, a metody głębokiego uczenia pozostają ukryte.
Sieci neuronowe i uczenie maszynowe są obecnie popularne, ale wiele z tych algorytmów było znanych około 50 lat temu.
Dlaczego głębokie sieci neuronowe są coraz bardziej popularne w różnych branżach?
Jednym z głównych powodów, dla których sieci neuronowe są obecnie znacznie bardziej popularne niż wtedy, gdy zostały wynalezione, jest to, że moc obliczeniowa jest szybsza i tańsza niż kiedyś. Moc obliczeniowa zrobiła różnicę w osiąganiu szybkiej konwergencji. Innym powodem jest to, że dane są obecnie wszechobecne, co zwiększa wartość algorytmów, które mogą wykorzystywać dane, takie jak chatbots dla biznesu.
Zaawansowane sieci neuronowe wymagają dużej mocy obliczeniowej i dużej ilości danych
Sieci neuronowe głębokiego uczenia są technikami wymagającymi dużej ilości danych i procesorów, które mogą osiągać wyniki niemożliwe do osiągnięcia przez programistów korzystających z technik programowania. Idealnie nadają się do pewnych problemów, w których dostępne są wszechobecne dane i łatwo jest skategoryzować lub uszeregować preferowane wyniki.
Bez setek tysięcy, a najlepiej milionów zdjęć psów, niemożliwe byłoby wytrenowanie algorytmu. Techniki te działają tylko wtedy, gdy dostępnych jest wiele danych. Jest to dość oczywiste, ponieważ jest mało prawdopodobne, aby wszystkie szczególne przypadki były reprezentowane w zestawie zaledwie 1000 zdjęć.
Sieci neuronowe mogą mieć do czynienia z danymi ustrukturyzowanymi lub nieustrukturyzowanymi
Jednym z problemów w powyższym przykładzie jest to, że etykietowanie wszystkich zdjęć wymaga dużo pracy ręcznej. Algorytmom łatwiej jest korzystać z danych oznaczonych w ustrukturyzowany sposób. Uczenie maszynowe sieci neuronowych wykorzystujące ustrukturyzowane dane nazywane jest uczeniem nadzorowanym.
To prowadzi nas do głównego pytania: czy możliwe jest uniknięcie całej tej pracy związanej z tagowaniem? Byłoby to dobre rozwiązanie, ponieważ nie tylko można uniknąć wielu ręcznych prac, ale także większość danych dostępnych w Internecie jest nieustrukturyzowana, tj. nie jest starannie oznakowana ani ustrukturyzowana.
Czy sieci neuronowe mogą pracować z nieustrukturyzowanymi danymi?
Sztuczne sieci neuronowe i uczenie maszynowe, które działają z nieustrukturyzowanymi danymi, nazywane są uczeniem bez nadzoru. Oczywiście jest to święty Graal uczenia maszynowego i jest bardziej analogiczny do tego, jak uczą się ludzie. Jednak nawet uczenie bez nadzoru przez maszyny wymaga znacznie więcej danych do "uczenia się" niż ludzie, a maszyny nie mogą łatwo ekstrapolować na przykłady, które są poza tym, na czym zostały przeszkolone.
Wiele modeli głębokiego uczenia próbuje odtworzyć procesy zachodzące w ludzkim mózgu
Niektórzy uważają, że tego typu algorytmy mogą być rozwijane, być może poprzez przeprojektowanie mózgu, do punktu, w którym algorytmy zaczną zbliżać się do "zrozumienia" na poziomie ludzkim. Wierzą, że możliwe będzie wykorzystanie zaawansowanej technologii skanowania mózgu, aby dać nam wgląd w to, jak faktycznie działają sieci neuronowe mózgu. Kopiując te projekty i wzorce, możemy odtworzyć inteligencję na poziomie ludzkim.
Chociaż techniki te są bez wątpienia pomysłowe i bardzo przydatne, zwłaszcza w przypadku dostępności dużego zbioru danych, trudno sobie wyobrazić, by tak proste algorytmy mogły stanowić podstawę wysoce kreatywnej inteligencji podobnej do ludzkiej.
Spis treści
Bądź na bieżąco z najnowszymi informacjami na temat agentów AI
Udostępnij to na: