Uczenie głębokie a uczenie maszynowe: zrozumienie różnic

Uczenie maszynowe i uczenie głębokie to obie formy sztucznej inteligencji. Można też poprawnie powiedzieć, że uczenie głębokie to specyficzny rodzaj uczenia maszynowego. Zarówno uczenie maszynowe, jak i uczenie głębokie rozpoczynają się od danych treningowych i testowych oraz modelu, a następnie przechodzą przez proces optymalizacji, aby znaleźć wagi, które sprawiają, że model najlepiej pasuje do danych. Oba rozwiązania radzą sobie z problemami numerycznymi (regresja) i nienumerycznymi (klasyfikacja), chociaż istnieje kilka obszarów zastosowań, takich jak rozpoznawanie obiektów i tłumaczenie językowe, w których modele uczenia głębokiego zwykle dają lepsze dopasowanie niż modele uczenia maszynowego.

Wyjaśnienie uczenia maszynowego

Algorytmy uczenia maszynowego są często podzielone na nadzorowane (dane szkoleniowe są oznaczane odpowiedziami) i nienadzorowane (wszelkie etykiety, które mogą istnieć, nie są pokazywane algorytmowi uczącemu). Nadzorowane problemy związane z uczeniem maszynowym są dalej podzielone na klasyfikację (przewidywanie odpowiedzi nieliczbowych, takich jak prawdopodobieństwo nieudanej spłaty kredytu hipotecznego) i regresję (przewidywanie odpowiedzi numerycznych, takich jak liczba widżetów, które będą sprzedawane w przyszłym miesiącu w Twoim sklepie na Manhattanie).

Uczenie się bez nadzoru dzieli się dalej na grupowanie (znajdowanie grup podobnych obiektów, takich jak buty do biegania, buty do chodzenia i eleganckie buty), asocjacje (znajdowanie wspólnych sekwencji obiektów, takich jak kawa i śmietanka) oraz redukcja wymiarowości (projekcja, wybór cech i wyodrębnianie cech).

Algorytmy klasyfikacyjne

Problem klasyfikacyjny to nadzorowany problem uczenia się, który wymaga wyboru między dwiema lub więcej klasami, zwykle podając prawdopodobieństwa dla każdej klasy. Pomijając sieci neuronowe i głębokie uczenie, które wymagają znacznie wyższego poziomu zasobów obliczeniowych, najpowszechniejszymi algorytmami są Naive Bayes, Drzewo decyzyjne, Regresja logistyczna, K-Nearest Neighbors i Support Vector Machine (SVM). Możesz także użyć metod zespołowych (kombinacji modeli), takich jak Random Forest, inne metody Bagging oraz metody wspomagające, takie jak AdaBoost i XGBoost.

Algorytmy regresji

Problem regresji to nadzorowany problem uczenia się, który wymaga od modelu przewidywania liczby. Najprostszym i najszybszym algorytmem jest regresja liniowa (najmniejszych kwadratów), ale nie powinieneś na tym poprzestać, ponieważ często daje przeciętny wynik. Inne popularne algorytmy regresji uczenia maszynowego (z wyjątkiem sieci neuronowych) to Naive Bayes, Decision Tree, K-Nearest Neighbors, LVQ (Learning Vector Quantization), LARS Lasso, Elastic Net, Random Forest, AdaBoost i XGBoost. Zauważysz, że istnieje pewne pokrywanie się algorytmów uczenia maszynowego do regresji i klasyfikacji.

Algorytmy klastrowania

Problem grupowania to nienadzorowany problem uczenia się, który wymaga od modelu znalezienia grup podobnych punktów danych. Najpopularniejszym algorytmem jest Clustering K-Means; inne obejmują grupowanie z przesunięciem średniej, DBSCAN (grupowanie przestrzenne oparte na gęstości aplikacji z szumem), GMM (modele mieszanin gaussowskich) i HAC (hierarchiczne grupowanie aglomeracyjne).

Algorytmy redukcji wymiarowości

Redukcja wymiarowości to nienadzorowany problem uczenia się, który wymaga od modelu usunięcia lub połączenia zmiennych, które mają niewielki lub żaden wpływ na wynik. Jest to często używane w połączeniu z klasyfikacją lub regresją. Algorytmy redukcji wymiarowości obejmują usuwanie zmiennych z wieloma brakującymi wartościami, usuwanie zmiennych o niskiej wariancji, drzewo decyzyjne, losowy las, usuwanie lub łączenie zmiennych o wysokiej korelacji, eliminację funkcji wstecznej, selekcję funkcji w przód, analizę czynnikową i PCA (analizę głównych składników).

Metody optymalizacji

Trening i ocena zamieniają nadzorowane algorytmy uczenia się w modele poprzez optymalizację ich wag parametrów w celu znalezienia zestawu wartości, który najlepiej pasuje do podstawowej prawdziwości danych. Algorytmy często opierają się na wariantach najbardziej stromego spadku dla swoich optymalizatorów, na przykład stochastyczne zejście gradientowe, które jest zasadniczo najbardziej stromym spadkiem wykonywanym wielokrotnie od losowych punktów początkowych.

Typowe udoskonalenia stochastycznego zejścia w gradiencie dodają czynniki, które korygują kierunek gradientu na podstawie pędu lub dostosowują tempo uczenia się na podstawie postępu od jednego przejścia przez dane (zwanego epoką lub wsadem) do następnego.

Czyszczenie danych na potrzeby uczenia maszynowego

Na wolności nie ma czegoś takiego jak czyste dane. Aby dane były przydatne w uczeniu maszynowym, muszą być agresywnie filtrowane. Na przykład będziesz chciał:

  1. Przejrzyj dane i wyklucz wszystkie kolumny, w których brakuje wielu danych.
  2. Spójrz ponownie na dane i wybierz kolumny, których chcesz użyć ( wybór funkcji ) w prognozie. To jest coś, co możesz chcieć zmienić podczas iteracji.
  3. Wyklucz wszystkie wiersze, w których nadal brakuje danych w pozostałych kolumnach.
  4. Popraw oczywiste literówki i połącz równoważne odpowiedzi. Na przykład Stany Zjednoczone, Stany Zjednoczone, Stany Zjednoczone i Ameryka powinny zostać połączone w jedną kategorię.
  5. Wyklucz wiersze zawierające dane spoza zakresu. Na przykład, jeśli analizujesz podróże taksówką w Nowym Jorku, będziesz chciał odfiltrować wiersze z szerokościami i długościami dotyczącymi odbioru lub odjazdu, które znajdują się poza polem ograniczającym obszar metropolitalny.

Możesz zrobić o wiele więcej, ale będzie to zależeć od zebranych danych. Może to być żmudne, ale jeśli skonfigurujesz krok czyszczenia danych w potoku uczenia maszynowego, możesz go modyfikować i powtarzać do woli.

Kodowanie i normalizacja danych na potrzeby uczenia maszynowego

Aby użyć danych kategorialnych do klasyfikacji maszyn, należy zakodować etykiety tekstowe w innym formularzu. Istnieją dwa popularne kodowania.

Jednym z nich jest kodowanie etykiet , co oznacza, że ​​każda wartość etykiety tekstowej jest zastępowana liczbą. Drugi to kodowanie na gorąco , co oznacza, że ​​każda wartość etykiety tekstowej jest zamieniana na kolumnę z wartością binarną (1 lub 0). Większość platform uczenia maszynowego ma funkcje, które wykonują konwersję za Ciebie. Ogólnie preferowane jest kodowanie typu one-hot, ponieważ kodowanie etykiet może czasami mylić algorytm uczenia maszynowego z myślą, że zakodowana kolumna ma być uporządkowaną listą.

Aby użyć danych liczbowych do regresji maszynowej, zwykle trzeba znormalizować dane. W przeciwnym razie liczby z większymi zakresami mogłyby zdominować odległość euklidesową między wektorami cech , ich efekty mogłyby zostać powiększone kosztem innych pól, a optymalizacja najbardziej stromego spadku mogłaby mieć trudności ze zbieżnością. Istnieje wiele sposobów normalizowania i standaryzacji danych na potrzeby uczenia maszynowego, w tym normalizacja min-max, normalizacja średniej, standaryzacja i skalowanie do długości jednostki. Ten proces jest często nazywany skalowaniem funkcji .

Inżynieria funkcji dla uczenia maszynowego

Funkcji jest obserwowany jednostka zmierzyć właściwość lub właściwości zjawiska. Pojęcie „cechy” jest powiązane z pojęciem zmiennej objaśniającej, która jest używana w technikach statystycznych, takich jak regresja liniowa. Wektory cech łączą wszystkie cechy pojedynczego wiersza w wektor numeryczny.

Częścią sztuki wybierania cech jest wybranie minimalnego zestawu niezależnych zmiennych, które wyjaśniają problem. Jeśli dwie zmienne są silnie skorelowane, albo trzeba je połączyć w jedną cechę, albo jedną należy usunąć. Czasami ludzie wykonują analizę składowych głównych, aby przekształcić skorelowane zmienne w zbiór liniowo nieskorelowanych zmiennych.

Niektóre transformacje, których ludzie używają do konstruowania nowych funkcji lub zmniejszania wymiarowości wektorów cech, są proste. Na przykład odejmij Year of Birthod Year of Deathi skonstruuj Age at Death, która jest główną zmienną niezależną do analizy czasu życia i śmiertelności. W innych przypadkach konstrukcja funkcji może nie być tak oczywista.

Dzielenie danych na potrzeby uczenia maszynowego

Zwykłą praktyką w przypadku nadzorowanego uczenia maszynowego jest podzielenie zestawu danych na podzbiory w celu szkolenia , walidacji i testowania . Jednym ze sposobów pracy jest przypisanie 80% danych do zestawu danych uczących, a po 10% do zestawów danych walidacyjnych i testowych. (Dokładny podział jest kwestią preferencji). Większa część uczenia jest wykonywana na podstawie zbioru danych uczących, a przewidywanie jest wykonywane na podstawie zestawu danych walidacyjnych pod koniec każdej epoki.

Błędy w zbiorze danych walidacyjnych można wykorzystać do zidentyfikowania kryteriów zatrzymania lub do sterowania strojeniem hiperparametrów. Co najważniejsze, błędy w zbiorze danych walidacyjnych mogą pomóc w ustaleniu, czy model przekroczył dane uczące.

Prognozowanie względem zestawu danych testowych jest zwykle wykonywane na ostatecznym modelu. Jeśli testowy zestaw danych nigdy nie był używany do uczenia, jest czasami nazywany zestawem danych wstrzymanych.

Istnieje kilka innych schematów podziału danych. Jedna z powszechnych technik, walidacja krzyżowa , polega na wielokrotnym dzieleniu pełnego zestawu danych na zbiór danych treningowych i zestaw danych do walidacji. Pod koniec każdej epoki dane są tasowane i ponownie dzielone.

Biblioteki uczenia maszynowego

W Pythonie Spark MLlib i Scikit-learn to doskonałe opcje dla bibliotek uczenia maszynowego. W R niektóre opcje pakietów uczenia maszynowego to CARAT, randomForest, e1071 i KernLab. W Javie dobrym wyborem są Java-ML, RapidMiner i Weka.

Wyjaśnienie głębokiego uczenia się

Głębokie uczenie się to forma uczenia maszynowego, w której trenowany model ma więcej niż jedną ukrytą warstwę między danymi wejściowymi a wyjściowymi. W większości dyskusji głębokie uczenie się oznacza używanie głębokich sieci neuronowych . Istnieje jednak kilka algorytmów, które wdrażają głębokie uczenie się przy użyciu innych rodzajów warstw ukrytych poza sieciami neuronowymi.

Pomysły na „sztuczne” sieci neuronowe sięgają lat czterdziestych XX wieku. Podstawową koncepcją jest to, że sieć sztucznych neuronów zbudowanych z połączonych ze sobą przełączników progowych może nauczyć się rozpoznawać wzorce w taki sam sposób, jak mózg zwierzęcia i układ nerwowy (w tym siatkówka).

Backprop

Uczenie się odbywa się zasadniczo poprzez wzmocnienie połączenia między dwoma neuronami, gdy oba są aktywne w tym samym czasie podczas treningu. We współczesnym oprogramowaniu sieci neuronowych najczęściej jest to kwestia zwiększenia wartości wagi połączeń między neuronami przy użyciu reguły zwanej wsteczną propagacją błędu , wsteczną propozycją lub BP.

Neurony w sztucznych sieciach neuronowych

Jak modelowane są neurony? Każdy z nich ma funkcję propagacji, która przekształca dane wyjściowe połączonych neuronów, często z sumą ważoną. Wyjście funkcji propagacji przechodzi do funkcji aktywującej, która jest uruchamiana, gdy jej wejście przekracza wartość progową.

Funkcje aktywacji w sieciach neuronowych

W latach czterdziestych i pięćdziesiątych XX wieku sztuczne neurony wykorzystywały funkcję aktywacji krokowej i nazywano je perceptronami . Nowoczesne sieci neuronowe mogą twierdzić, że używają perceptronów, ale w rzeczywistości mają funkcje płynnej aktywacji, takie jak funkcja logistyczna lub sigmoidalna, styczna hiperboliczna lub rektyfikowana jednostka liniowa (ReLU). ReLU jest zwykle najlepszym wyborem dla szybkiej konwergencji, chociaż ma problem z „umieraniem” neuronów podczas treningu, jeśli szybkość uczenia się jest ustawiona zbyt wysoko.

[Także na: 6 sposobów na niepowodzenie uczenia maszynowego]

Wyjście funkcji aktywacji może przejść do funkcji wyjściowej w celu dodatkowego ukształtowania. Często jednak funkcja wyjściowa jest funkcją tożsamości, co oznacza, że ​​sygnał wyjściowy funkcji aktywacji jest przekazywany do połączonych dalej neuronów.

Topologie sieci neuronowych

Teraz, gdy wiemy o neuronach, musimy poznać typowe topologie sieci neuronowych. W sieci ze sprzężeniem zwrotnym neurony są zorganizowane w odrębne warstwy: jedna warstwa wejściowa, n ukrytych warstw przetwarzania i jedna warstwa wyjściowa. Dane wyjściowe z każdej warstwy przechodzą tylko do następnej warstwy.

W sieci ze sprzężeniem zwrotnym z połączeniami skrótowymi niektóre połączenia mogą przeskakiwać przez jedną lub więcej warstw pośrednich. W nawracających sieciach neuronowych neurony mogą wpływać na siebie, bezpośrednio lub pośrednio poprzez następną warstwę.

Szkolenie sieci neuronowych

Uczenie nadzorowane sieci neuronowej odbywa się tak samo, jak w przypadku każdego innego uczenia maszynowego: przedstawiasz sieci grupy danych szkoleniowych, porównujesz dane wyjściowe sieci z żądanymi, generujesz wektor błędów i wprowadzasz poprawki do sieci na podstawie wektora błędu . Partie danych uczących, które są uruchamiane razem przed zastosowaniem poprawek, nazywane są epokami.

Dla zainteresowanych szczegółami propagacja wsteczna wykorzystuje gradient funkcji błędu (lub kosztu) w odniesieniu do wag i odchyleń modelu, aby odkryć właściwy kierunek i zminimalizować błąd. Dwie rzeczy kontrolują stosowanie poprawek: algorytm optymalizacji i zmienna szybkości uczenia się. Zmienna szybkości uczenia się zwykle musi być mała, aby zagwarantować zbieżność i uniknąć spowodowania martwych neuronów ReLU.

Optymalizatory dla sieci neuronowych

Optymalizatory dla sieci neuronowych zazwyczaj używają jakiejś formy algorytmu zstępowania gradientu do napędzania propagacji wstecznej, często z mechanizmem pomagającym uniknąć utknięcia w lokalnych minimach, takim jak optymalizacja losowo wybranych mini-partii (Stochastic Gradient Descent) i stosowanie korekcji pędu do gradient. Niektóre algorytmy optymalizacji dostosowują również szybkość uczenia się parametrów modelu, patrząc na historię gradientu (AdaGrad, RMSProp i Adam).