Uczenie maszynowe w Pythonie
Marek Kobosko, Michał Ryba
Czym jest uczenie maszynowe?
Wstęp do uczenia maszynowego
- jedna z dziedzin zajmujących się problemem sztucznej inteligencji
- nauka wykorzystująca głównie dwie dziedziny: informatykę oraz statystykę
- jego celem jest stworzenie systemu doskonalącego się i zdobywającego wiedzę poprzez zgromadzone doświadczenie (przeanalizowane dane)
- algorytm uczenia maszynowego buduje matematyczny model na podstawie "danych treningowych"
- system wykorzystujący uczenie maszynowe przewiduje lub podejmuje decyzje nie będąc do tego zaprogramowanym "wprost"
Typy uczenia maszynowego
- uczenie nadzorowane
- uczenie nienadzorowane
- uczenie częściowo nadzorowane
- uczenie wzmocnione
- rozpoznawanie mowy, tekstu, obrazu
- klasyfikacja stron internetowych
- przewidywanie trendów na rynkach finansowych
- wykrywanie anomalii
- gaming
- nawigacja
- kierowanie pojazdem
- automatyzacja systemów produkcji
i wydobycia
- rozpoznawanie chorób na podstawie symptomów
- analiza koszyka zakupowego
Przykładowe zastosowania
Czym jest deep learning?
Deep learning
- podkategoria uczenia maszynowego
- opiera się sztucznych sieciach neuronowych
- może wykorzystywać uczenie nadzorowane, częściowo nadzorowane jak również nienadzorowane
- znajduje zastosowanie m. in. w: rozpoznawaniu obrazu, dźwięku, analizie treści na portalach społecznościowych, tłumaczeniu maszynowym czy tworzeniu leków
Opis aplikacji
- napisany program rozpoznaje cyfry pisane ręcznie wykorzytując do tego celu uczenie maszynowe
- jako danych użyto bazy MNIST
- aplikacja na podstawie nasilenia pikseli obrazka dokonuje klasyfikacji
- użytkownik może wczytać swój obrazek z jedną lub wieloma cyframi
Czym jest sztuczna sieć neuronowa?
- składa się z pojedynczych neuronów połączonych ze sobą
- każdy neuron na podstawie danych wejściowych zwraca konkretną wartość
- wartość ta zależna jest nie tylko od danych wejściowych, ale również od parametrów neuronu
- celem deep learningu jest nauczenie sieci neuronowej (odpowiednie ustawienie parametrów neuronów) tak, aby zwracała ona pożądany rezultat
Jak działa sieć neuronowa?
1. Perceptron:
- może przyjmować kilka wartości binarnych (z różnymi wagami), zwraca jedną wartość binarną
- badany w latach 50. i 60. XX w.
- obecnie nieużywany w sieciach neuronowych
Typy sztucznych neuronów
2. Neuron sigmoidalny
- podobny to perceptronu
- wartości przyjmowane oraz zwracane mogą mieć dowolną rzeczywistą wartość pomiędzy 0 a 1
Wynik zwracany przez perceptron
Wynik zwracany przez sigmoid
Rozróżnia się dwie architektury sieci neuronowych:
Architektura sieci neuronowych
Sieć neuronowa w aplikacji
Algorytmy uczenia maszynowego wykorzystane w aplikacji
Algorytmy
Kwadratowa funkcja kosztu
Określa jaka jest różnica między pożądanym rezultatem a danymi wyjściowymi sieci neuronowej. Modyfikując wagi oraz progi w sieci staramy się znaleźć minimum funkcji kosztu.
Funkcja kosztu
Stochastyczny spadek wzdłuż gradientu (ang. Stochastic Gradient Descent)
- jeden z najpopularniejszych algorytmów wykorzystywanych w celu optymalizacji sztucznych sieci neuronowych
- proces iteracyjny, którego celem jest znalezienie minimum funkcji kosztu
Stochastyczny spadek wzdłuż gradientu
Wyobraźmy sobie, że chcemy znaleźć minimum funkcji wielu zmiennych.
Możemy zastosować podejście analityczne, policzyć pochodne cząstkowe, znaleźć ekstrema globalne, a następnie policzyć minimum.
Niestety, podejście to nie zadziała jeśli mamy do czynienia z tysiącami (a nawet milionami) zmiennych.
Algorytm jest stochastyczny, ponieważ wybieramy po kolei małe, losowe zestawy danych, aby przybliżyć gradient funkcji. Pozwala to na znaczne przyspieszenie procesu uczenia się sieci.
Wyobraźmy sobie, że chcemy znaleźć minimum funkcji wielu zmiennych.
Możemy zastosować podejście analityczne, wyznaczyć pochodne cząstkowe, znaleźć ekstrema lokalne, a następnie obliczyć minimum globalne.
Niestety, podejście to nie zadziała jeśli mamy do czynienia z tysiącami (a nawet milionami) zmiennych.
Algorytm wstecznej propagacji błędów (ang. backpropagation)
- pozwala na szybkie obliczanie gradientu funkcji kosztu
- umożliwia znalezienie błędu popełnianego przez neurony z warstw ukrytych
Algorytm wstecznej propagacji błędów