https://aie24.pl/
Sieci neuronowe będą paradygmatami programowania inspirowanymi biologią, aby umożliwić komputerowi PC uczenie się na podstawie obserwowanych danych. Głębokie uczenie się to zestaw technik, które będziesz stosować w sieciach neuronowych. Zarówno sieci neuronowe, jak i głębokie uczenie się zapewnią najlepsze rozwiązanie każdego problemu, na jaki możesz się natknąć podczas pracy z rozpoznawaniem i przetwarzaniem obrazu, mowy i języka naturalnego. Ludzki układ wzrokowy jest złożony i jest jedną z najciekawszych rzeczy, które można badać, ponieważ nigdy w pełni nie zrozumiesz, jak współpracuje z innymi częściami twojego ciała. Weźmy na przykład pismo odręczne. Wiele osób będzie w stanie spojrzeć na coś, co jest napisane i bez problemu powiedzieć, co jest napisane, ale niewielki wysiłek potrzebny do rozpoznania tego, co jest napisane, jest w rzeczywistości zwodniczy. Jeśli spojrzysz na różne półkule mózgu, zdasz sobie sprawę, że twoja kora wzrokowa ma kilka milionów neuronów, które będą połączone. Jednak twój wzrok nie będzie połączony z korą wzrokową, ale zamiast tego z szeregiem kory, które obejmują twój wzrok; dzięki temu możesz przetwarzać nawet najbardziej złożone obrazy. Wnętrze Twojej głowy to w zasadzie superkomputer, który został udoskonalony przez ewolucję. Umiejętność rozpoznawania pisma ręcznego nie zawsze jest łatwa, ale Twój mózg przystosował się do miejsca, w którym będziesz to robić nieświadomie. Niezbyt często poświęcamy czas na myślenie o tym, jak złożony jest nasz system wzrokowy. Tak jak trudno jest rozpoznać wzorce wizualne, tak i na komputerze PC nie będzie tych problemów. Będzie to jednak wyglądało inaczej niż sami to zrobimy. Nasze mózgi rozpoznają kształty i sposób, w jaki są zapisywane rzeczy, ale jak powiedzieć to komputerowi? Będziesz musiał ustalić zasady, a zasady te zagubią się w wyjątkach i zastrzeżeniach, które będziesz musiał stworzyć. Podejście oparte na sieci neuronowej pozwoli jednak spojrzeć na problem w inny sposób. Będzie wymagać dużej liczby liczb zapisanych odręcznie i wyszkolonych w rozpoznawaniu różnych kształtów, aby móc robić to, co potrafi nasz mózg. Zasadniczo sieć neuronowa użyje przykładów znajdujących się we wprowadzanych danych, aby wywnioskować reguły ustalone jako sposób rozpoznawania liczb pisanych odręcznie. Im więcej przykładów trenujących program, tym więcej sieci będzie w stanie nauczyć się więcej opcji pisma odręcznego, aby poprawić swoją dokładność. Sieci neuronowe będą współpracować ze sztucznym neuronem zwanym perceptronem, który został opracowany w latach 60. XX wieku przez Franka Rosenblatta. Ale kiedy spojrzymy na to dzisiaj, będzie on używany jak inne modele sztucznych neuronów. Twój główny neuron będzie znany jako neuron esicy. Aby zrozumieć neuron esowaty, musisz zrozumieć perceptrony. Perceptrony będą przyjmować kilka danych wejściowych binarnych i dawać pojedynczy wynik binarny. Rosenblatt wymyślił jedną regułę, która będzie stosowana przy rozpatrywaniu wyników perceptronów. W tym przypadku wagi stały się sposobem wyrażania rzeczywistych liczb i przywiązują wagę do danych wejściowych i wyników. Wynik dla neuronu będzie wynosił zero lub jeden i określi wagę sumy oraz to, czy jest ona mniejsza lub większa od wartości progowej. Wartość progowa będzie liczbą rzeczywistą, która będzie używana w parametrach neuronu. Pomyśl o perceptronie jako o urządzeniu, które będzie podejmować decyzje na podstawie ważenia dowodów. Na przykład, jeśli chcesz wybrać się na wycieczkę rodzinną, musisz wziąć pod uwagę kilka rzeczy, aby ustalić, czy będziesz mógł wybrać się na wycieczkę zgodnie z planem:
- Czy samochód jest wystarczająco duży dla każdego, kto chce jechać?
- Czy pogoda będzie ładna?
- Co musisz spakować na dłuższy wyjazd?
Każdy czynnik będzie można przedstawić za pomocą zmiennej binarnej. Patrząc na wagi i progi problemu, możesz stworzyć różne modele procesu decyzyjnego. Twój perceptron będzie tym, co zadecyduje, czy pójdziesz na wycieczkę, czy nie. Kiedy opuścisz próg, najprawdopodobniej udasz się na wycieczkę z rodziną. Pamiętaj, że twój perceptron nie będzie kompletnym modelem procesu decyzyjnego, jaki może wykonać człowiek. Jednakże twój perceptron będzie w stanie rozważyć różne dowody, aby podjąć decyzje, które musisz podjąć, co powinno wydawać się bardziej prawdopodobne w przypadku złożonej sieci perceptronów, które będą podejmować drobne decyzje, których możesz nie zauważyć. Chociaż algorytm uczący się wydaje się najlepszym rozwiązaniem, jak zamierzasz stworzyć algorytm dla sieci neuronowej? Zastanów się, czy masz sieć dla swoich perceptronów, której możesz użyć do rozwiązywania problemów. Dane wejściowe dla sieci będą przypominać surowe dane pikseli skanowane do programu, dzięki czemu sieć będzie mogła poznać wagi i błędy systematyczne, co umożliwi prawidłową klasyfikację wyniku. Jeśli dokonasz jakichkolwiek zmian w wadze w sieci, twój wynik będzie odpowiadał wprowadzonej zmianie. Jednak rzeczywistość perceptronów jest taka, że gdy nastąpi zmiana wag, istnieje możliwość, że perceptron całkowicie się odwróci z powodu tej zmiany. Ta zmiana spowoduje, że zachowanie całej sieci zmieni się całkowicie i stanie się bardziej złożone. Tak więc, chociaż jeden z Twoich numerów zostanie poprawnie sklasyfikowany, Twoja sieć będzie zachowywać się w sposób trudny do kontrolowania. Nowe zachowanie Twojej sieci utrudni dostrzeżenie, jak należy zmodyfikować wagi i podstawy, aby sieć była bliższa pożądanemu zachowaniu. Dlatego musi istnieć sprytny sposób obejścia tego problemu, który może nie być od razu oczywisty. Możesz przezwyciężyć ten problem, po prostu wprowadzając nowy neuron zwany neuronem esowatym. Te neurony będą podobne do perceptronów, ale zostaną zmodyfikowane w taki sposób, że gdy dokonasz niewielkich zmian, spowodują jedynie niewielką zmianę w wyniku, zamiast ryzykować, że wynik zmieni się całkowicie. Jest to niezwykle ważne, ponieważ neuron esowaty będzie mógł nauczyć się zachowania sieci. Twój neuron esowaty będzie otrzymywał sygnały wejściowe podobne do twojego perceptronu. Jednakże będzie w stanie przyjąć dowolną wartość mieszczącą się pomiędzy zerem a jeden, co oznacza, że możesz użyć miejsc dziesiętnych znajdujących się pomiędzy tymi dwiema liczbami jako prawidłowych danych wejściowych dla twojego neuronu esowatego. Podobnie jak perceptron, sigmoid będzie miał wagę dla każdego sygnału wejściowego, a także odchylenie obejmujące wszystko w tym neuronie. Jednakże twój wynik nie będzie wynosić zero lub jeden; będzie to znane jako wyrażenie sigmoidalne i będzie zdefiniowane za pomocą następującego równania:
σ(z)≡1/1+e−z
Innym sposobem spojrzenia na to jest zestawienie wyników działania neuronu esowatego z danymi wejściowymi:
1/1+exp(−Σjwjxj−b)
Kiedy po raz pierwszy spojrzysz na swój neuron esowaty, będzie on wyglądał zupełnie inaczej niż twoje perceptrony. Jednak wyrażenie algebraiczne sigmoidalnego będzie wydawać się nieprzejrzyste i tak, jakbyś nigdy nie był w stanie go opanować. Jednakże będziesz w stanie to zrobić, ponieważ istnieje wiele podobieństw między twoimi perceptronami a neuronami esicy. Aby zrozumieć podobieństwa, musisz przyjrzeć się modelowi perceptronu, takiemu jak z≡w ⋅ x+b, w którym masz dużą liczbę dodatnią. Co oznacza, że e−z≈0e−z≈0 i σ(z)≈1 są równe. Ostatecznie twój neuron esowaty będzie dużą liczbą dodatnią, tak jak byłoby to w przypadku perceptronu. Teraz pomyśl o tym tak, jakbyś pracował z liczbami ujemnymi, wtedy twoje zachowanie esowate będzie takie samo jak perceptronu. Jedynym momentem, w którym zobaczysz odchylenie od modelu perceptronu, jest niewielka wielkość. Ale jaka jest twoja matematyczna postać σ? Prawda jest taka, że dokładna forma tej zmiennej nie ma wpływu, ponieważ będziemy chcieli skupić się na kształcie naszego wyrażenia. Jeśli ta funkcja będzie wyrażeniem krokowym, wówczas twój neuron esowaty stanie się perceptronem, ponieważ wynik będzie wynosił zero lub jeden, w zależności od tego, czy równanie daje wynik dodatni, czy ujemny. Kiedy użyjesz funkcji dla σ, otrzymasz gładki perceptron. Jednak to, jak gładka jest twoja ekspresja, nie jest czymś, na czym musisz poświęcać dużo czasu. Gładkość po prostu zmodyfikuje wagi i odchylenie, co następnie zmieni wynik dla twojego neuronu esicy. Dzięki rachunku różniczkowego Twój wynik będzie przewidywany za pomocą tego równania:
Δwynik≈ Σj ∂ wynik / ∂wjΔwj + ∂wynik / ∂b Δb,
Suma, która zostanie znaleziona po wszystkich Twoich wagach, oraz Twój wynik, wykażą częściową pochodną Twojego wyniku, z szacunkiem niezbędnym dla Twoich wag. Nie powinieneś się zbytnio martwić, jeśli okaże się, że nie czujesz się komfortowo pracując z pochodnymi cząstkowymi. Powyższe wyrażenie będzie wyglądało na złożone ze względu na wszystkie zawarte w nim pochodne cząstkowe, ale w rzeczywistości przekonasz się, że jest całkiem proste, patrząc na wynik jako na wyrażenie liniowe. Liniowość będzie łatwa do wybrania mniejszych zmian wprowadzanych w wagach i podstawach, aby uzyskać żądaną zmianę wyniku. Dlatego twój neuron esowaty będzie zachowywał się tak samo jak perceptron, co sprawi, że łatwiej ci będzie ustalić, jak zmienić swoje wagi i uprzedzenia, aby zmienić wynik. Jeśli kształt jest najważniejszy, to nie będzie to dokładna forma, która będzie powodem użycia o w równaniu. Kiedy patrzysz na zmiany, które powodują użycie innego wyrażenia aktywującego, wówczas wartość tej pochodnej cząstkowej zmieni się w równaniu. Tak więc, kiedy później obliczysz te pochodne, twoja funkcja użyje algebry i uprości ją tak, aby wykładnicze miały właściwości, z którymi będziesz mógł pracować po zróżniczkowaniu. Kiedy zinterpretujesz wynik uzyskany z neuronu esowatego, zobaczysz, że jedną z największych różnic będą perceptrony i neurony, w przypadku których neurony nie dają zera ani jedynki. Mogą mieć dowolny wynik, pod warunkiem, że wynik jest liczbą rzeczywistą i mieści się w przedziale od zera do jeden. Będzie to przydatne, jeśli chcesz, aby wynik reprezentował średnią intensywność pikseli znajdujących się na obrazie. Czasami jednak będzie to stanowić problem. Weźmy na przykład sytuację, w której chcesz, aby Twój wynik wskazywał, że Twój obraz ma dziewięć lub nie ma dziewięciu. Łatwiej będzie to zrobić, jeśli wynik dla twojego perceptronu będzie wynosić zero lub jeden. Jednak w praktyce będziesz musiał ustalić konwencję, aby sobie z tym poradzić, abyś mógł zinterpretować wynik dla co najmniej połowy obrazu, który będzie wskazywał liczbę, którą faktycznie chcesz. Oznacza to, że każdy wynik mniejszy niż połowa oznacza, że wynik nie będzie taki, jaki chcesz.