Co to jest uczenie maszynowe? Inteligencja pochodząca z danych

Zdefiniowane uczenie maszynowe

Uczenie maszynowe to gałąź sztucznej inteligencji, która obejmuje metody lub algorytmy służące do automatycznego tworzenia modeli z danych. W przeciwieństwie do systemu, który wykonuje zadanie, przestrzegając wyraźnych reguł, system uczenia maszynowego uczy się na podstawie doświadczenia. Podczas gdy system oparty na regułach będzie wykonywał zadanie w ten sam sposób za każdym razem (na lepsze lub gorsze), wydajność systemu uczenia maszynowego można poprawić poprzez szkolenie, wystawiając algorytm na większą ilość danych.

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).

Zastosowania uczenia maszynowego

O zastosowaniach uczenia maszynowego słyszymy na co dzień, choć nie wszystkie z nich to sukcesy. Autonomiczne samochody są dobrym przykładem, w którym zadania obejmują zarówno proste i skuteczne (wspomaganie parkowania i podążanie autostradą), jak i skomplikowane (pełna kontrola nad pojazdem w warunkach miejskich, co doprowadziło do kilku zgonów).

Uczenie maszynowe do gier jest bardzo skuteczne w przypadku warcabów, szachów, shogi i go, pokonując mistrzów świata. Automatyczne tłumaczenie języków odniosło duży sukces, chociaż niektóre pary językowe działają lepiej niż inne, a wiele tłumaczeń automatycznych nadal może zostać ulepszonych przez tłumaczy.

Automatyczna zamiana tekstu na tekst działa całkiem dobrze w przypadku osób z akcentem głównego nurtu, ale nie tak dobrze dla osób z silnymi akcentami regionalnymi lub narodowymi; wydajność zależy od zestawów szkoleniowych używanych przez dostawców. Automatyczna analiza nastrojów w mediach społecznościowych ma dość dobry wskaźnik sukcesu, prawdopodobnie dlatego, że zestawy szkoleniowe (np. Oceny produktów Amazon, które łączą komentarz z wynikiem liczbowym) są duże i łatwo dostępne.

Automatyczne wyświetlanie życiorysów to kontrowersyjny obszar. Amazon musiał wycofać swój system wewnętrzny ze względu na uprzedzenia próbek szkoleniowych, które spowodowały obniżenie oceny wszystkich podań o pracę złożonych przez kobiety.

Inne obecnie używane systemy kontroli życiorysów mogą mieć uprzedzenia szkoleniowe, które powodują, że podnoszą oni kandydatów, którzy są „jak” obecni pracownicy, w sposób, który z prawnego punktu widzenia nie powinien mieć znaczenia (np. Młodzi, biali kandydaci płci męskiej z ekskluzywnych anglojęzycznych dzielnic, którzy grali sporty zespołowe są bardziej skłonne do zaliczenia pokazu). Działania badawcze firmy Microsoft i innych koncentrują się na eliminowaniu ukrytych uprzedzeń w uczeniu maszynowym.

Automatyczna klasyfikacja obrazów patologicznych i radiologicznych posunęła się naprzód do tego stopnia, że ​​może pomóc (ale nie zastąpić) patologom i radiologom w wykrywaniu pewnych rodzajów nieprawidłowości. Tymczasem systemy identyfikacji twarzy są zarówno kontrowersyjne, gdy działają dobrze (ze względu na ochronę prywatności), jak i zwykle nie są tak dokładne w przypadku kobiet i osób kolorowych, jak w przypadku białych mężczyzn (z powodu uprzedzeń w populacji trenującej).

Algorytmy uczenia maszynowego

Uczenie maszynowe zależy od wielu algorytmów służących do przekształcania zestawu danych w model. To, który algorytm działa najlepiej, zależy od rodzaju problemu, który rozwiązujesz, dostępnych zasobów obliczeniowych i charakteru danych. Bez względu na to, jakiego algorytmu lub algorytmów używasz, najpierw musisz wyczyścić i kondycjonować dane.

Omówmy najczęstsze algorytmy dla każdego rodzaju problemu.

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 (SGD), które jest zasadniczo najbardziej stromym zejściem wykonywanym wielokrotnie z losowych punktów początkowych.

Typowe udoskonalenia w SGD 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.

Sieci neuronowe i głębokie uczenie się

Sieci neuronowe zostały zainspirowane architekturą biologicznej kory wzrokowej. Uczenie głębokie to zestaw technik uczenia się w sieciach neuronowych, który obejmuje dużą liczbę „ukrytych” warstw w celu identyfikacji cech. Ukryte warstwy znajdują się między warstwą wejściową i wyjściową. Każda warstwa składa się ze sztucznych neuronów, często z funkcją aktywacji sigmoidalnej lub ReLU (Rectified Linear Unit).

W sieci ze sprzężeniem zwrotnym neurony są zorganizowane w odrębne warstwy: jedna warstwa wejściowa, dowolna liczba ukrytych warstw przetwarzania i jedna warstwa wyjściowa, a 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 powtarzających się sieciach neuronowych neurony mogą wpływać na siebie, bezpośrednio lub pośrednio, poprzez następną warstwę.

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 , zwykle przy użyciu algorytmu wstecznej propagacji. Partie danych uczących, które są uruchamiane razem przed zastosowaniem poprawek, nazywane są epokami.

Podobnie jak w przypadku wszystkich systemów uczących się, musisz porównać przewidywania sieci neuronowej z oddzielnym zestawem danych testowych. Bez tego ryzykujesz tworzenie sieci neuronowych, które tylko zapamiętują swoje dane wejściowe, zamiast uczyć się bycia uogólnionymi predyktorami.

Przełomem w polu widzenia sieci neuronowych była LeNet-5 firmy Yann LeCun z 1998 roku, siedmiopoziomowa konwolucyjna sieć neuronowa (CNN) do rozpoznawania odręcznych cyfr zdigitalizowanych w obrazach 32x32 piksele. Aby analizować obrazy w wyższej rozdzielczości, sieć potrzebowałaby więcej neuronów i więcej warstw.

Konwolucyjne sieci neuronowe zazwyczaj wykorzystują warstwy konwolucyjne, pulowanie, ReLU, w pełni połączone i stratne do symulacji kory wzrokowej. Warstwa splotowa zasadniczo przyjmuje całki wielu małych, nakładających się obszarów. Warstwa puli działa w formie nieliniowego pobierania próbek w dół. Warstwy ReLU, o których wspomniałem wcześniej, stosują nienasycającą funkcję aktywacji f(x) = max(0,x).

W warstwie w pełni połączonej neurony mają pełne połączenia ze wszystkimi aktywacjami w warstwie poprzedniej. Warstwa strat oblicza, w jaki sposób uczenie sieci penalizuje odchylenie między etykietami przewidywanymi i prawdziwymi, używając wartości Softmax lub utraty entropii krzyżowej do klasyfikacji lub straty euklidesowej do regresji.

Przetwarzanie języka naturalnego (NLP) to kolejny główny obszar zastosowań głębokiego uczenia się. Oprócz problemu tłumaczenia maszynowego, którym zajmuje się Tłumacz Google, główne zadania NLP obejmują automatyczne podsumowanie, rozwiązywanie współodniesień, analizę dyskursu, segmentację morfologiczną, rozpoznawanie nazwanych jednostek, generowanie języka naturalnego, rozumienie języka naturalnego, tagowanie części mowy, sentyment analiza i rozpoznawanie mowy.

Oprócz CNN zadania NLP są często rozwiązywane za pomocą rekurencyjnych sieci neuronowych (RNN), które obejmują model pamięci długookresowej (LSTM).

Im więcej warstw w głębokiej sieci neuronowej, tym więcej obliczeń potrzeba, aby wytrenować model na procesorze. Akceleratory sprzętowe dla sieci neuronowych obejmują GPU, TPU i FPGA.

Uczenie się ze wzmocnieniem

Uczenie się ze wzmocnieniem uczy aktora lub agenta reagowania na otoczenie w sposób maksymalizujący jakąś wartość , zwykle metodą prób i błędów. Różni się to od uczenia nadzorowanego i nienadzorowanego, ale często jest z nimi łączone.

Na przykład, DeepMind's AlphaGo, aby nauczyć się grać (akcji) w grę Go (środowisko), najpierw nauczył się naśladować ludzkich graczy Go na podstawie dużego zestawu danych gier historycznych (nauka praktykanta). Następnie ulepszył swoją grę metodą prób i błędów (uczenie się przez wzmacnianie), grając dużą liczbę gier w Go przeciwko niezależnym instancjom samego siebie.

Sterowanie robotami to kolejny problem, który został zaatakowany metodami uczenia się z głębokim wzmocnieniem, co oznacza uczenie się ze wzmocnieniem oraz głębokie sieci neuronowe, przy czym głębokie sieci neuronowe są często szkolone w CNN do wyodrębniania cech z ramek wideo.

Jak korzystać z uczenia maszynowego

Jak wygląda tworzenie modelu uczenia maszynowego? Zaczynasz od czyszczenia i kondycjonowania danych, kontynuujesz inżynierię funkcji, a następnie wypróbowujesz każdy sensowny algorytm uczenia maszynowego. W przypadku niektórych klas problemów, takich jak przetwarzanie wzroku i języka naturalnego, algorytmy, które mogą działać, obejmują głębokie uczenie się.

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ć w dowolnym momencie.

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 jest uporządkowana.