Automatyczne uczenie maszynowe lub wyjaśnienie AutoML

Dwie największe przeszkody w korzystaniu z uczenia maszynowego (zarówno klasycznego uczenia maszynowego, jak i głębokiego uczenia się) to umiejętności i zasoby obliczeniowe. Możesz rozwiązać drugi problem, rzucając w niego pieniądze, albo na zakup przyspieszonego sprzętu (takiego jak komputery z wysokiej klasy procesorami graficznymi), albo na wynajem zasobów obliczeniowych w chmurze (takich jak instancje z dołączonymi GPU, TPU i FPGA).

Z drugiej strony, rozwiązanie problemu umiejętności jest trudniejsze. Naukowcy zajmujący się danymi często żądają wysokich pensji, a rekrutacja może być nadal trudna. Google był w stanie przeszkolić wielu swoich pracowników w oparciu o własną platformę TensorFlow, ale większość firm ledwo ma ludzi wystarczająco wykwalifikowanych do samodzielnego tworzenia modeli uczenia maszynowego i głębokiego uczenia, a tym bardziej do uczenia innych, jak to zrobić.

Co to jest AutoML?

Zautomatyzowane uczenie maszynowe, czyli AutoML, ma na celu zmniejszenie lub wyeliminowanie potrzeby wykwalifikowanych analityków danych do tworzenia modeli uczenia maszynowego i uczenia głębokiego. Zamiast tego system AutoML umożliwia dostarczanie oznaczonych danych szkoleniowych jako dane wejściowe i otrzymywanie zoptymalizowanego modelu jako wyniku.

Można to zrobić na kilka sposobów. Jedno podejście polega na tym, że oprogramowanie po prostu trenuje każdy rodzaj modelu na danych i wybiera ten, który działa najlepiej. Udoskonaleniem tego byłoby zbudowanie jednego lub więcej modeli zespołowych, które łączą inne modele, co czasami (ale nie zawsze) daje lepsze wyniki.

Druga technika polega na optymalizacji hiperparametrów (wyjaśnionych poniżej) najlepszego modelu lub modeli, aby wytrenować jeszcze lepszy model. Inżynieria funkcji (również wyjaśniona poniżej) jest cennym dodatkiem do każdego treningu modelu. Jednym ze sposobów obniżenia umiejętności głębokiego uczenia się jest wykorzystanie uczenia się transferowego, zasadniczo dostosowując dobrze wyszkolony model ogólny do określonych danych.

Co to jest optymalizacja hiperparametrów?

Wszystkie modele systemów uczących się mają parametry, czyli wagi dla każdej zmiennej lub funkcji w modelu. Są one zwykle określane przez propagację wsteczną błędów oraz iterację pod kontrolą optymalizatora, taką jak stochastyczne zejście w gradiencie.

Większość modeli uczenia maszynowego ma również hiperparametry ustawione poza pętlą szkoleniową. Często obejmują one współczynnik uczenia się, wskaźnik porzucania i parametry specyficzne dla modelu, takie jak liczba drzew w losowym lesie.

Strojenie hiperparametrów lub optymalizacja hiperparametrów (HPO) to automatyczny sposób przeszukiwania lub przeszukiwania co najmniej jednego z hiperparametrów modelu w celu znalezienia zestawu, który daje najlepiej wyszkolony model. Może to być czasochłonne, ponieważ trzeba ponownie uczyć model (pętla wewnętrzna) dla każdego zestawu wartości hiperparametrów w przeciągnięciu (pętla zewnętrzna). Jeśli trenujesz wiele modeli równolegle, możesz skrócić wymagany czas kosztem użycia większej ilości sprzętu.

Co to jest inżynieria funkcji?

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. Wektor cech łączy wszystkie cechy dla pojedynczego wiersza w wektorze numerycznej. Inżynieria funkcji to proces znajdowania najlepszego zestawu zmiennych oraz najlepszego kodowania i normalizacji danych wejściowych do procesu uczenia modelu.

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ę głównych składowych (PCA), aby przekształcić skorelowane zmienne w zestaw liniowo nieskorelowanych zmiennych.

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.

Aby użyć danych liczbowych do regresji maszynowej, zwykle trzeba znormalizować dane. W przeciwnym razie liczby z większymi zakresami mogą 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 .

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.

Co to jest uczenie się transferowe?

Uczenie się transferu jest czasami nazywane niestandardowym uczeniem maszynowym, a czasem AutoML (głównie przez Google). Zamiast zaczynać od zera podczas uczenia modeli z danych, Google Cloud AutoML implementuje automatyczne uczenie głębokiego transferu (co oznacza, że ​​zaczyna się od istniejącej głębokiej sieci neuronowej wyszkolonej na innych danych) i wyszukiwanie architektury neuronowej (co oznacza, że ​​znajduje odpowiednią warstwy sieciowe) do tłumaczenia par językowych, klasyfikacji języka naturalnego i klasyfikacji obrazów.

To inny proces niż to, co zwykle rozumie się przez AutoML, i nie obejmuje tylu przypadków użycia. Z drugiej strony, jeśli potrzebujesz niestandardowego modelu głębokiego uczenia się w obsługiwanym obszarze, uczenie transferowe często tworzy lepszy model.

Implementacje AutoML

Istnieje wiele implementacji AutoML, które możesz wypróbować. Niektóre są usługami płatnymi, a niektóre zawierają darmowy kod źródłowy. Poniższe listy w żadnym wypadku nie są kompletne ani ostateczne.

Usługi AutoML

Wszystkie trzy wielkie usługi w chmurze mają jakiś rodzaj AutoML. Amazon SageMaker dokonuje dostrojenia hiperparametrów, ale nie sprawdza automatycznie wielu modeli ani nie przeprowadza inżynierii funkcji. Usługa Azure Machine Learning obejmuje zarówno funkcję AutoML, która przegląda funkcje i algorytmy, jak i dostrajanie hiperparametrów, które zazwyczaj jest uruchamiane na najlepszym algorytmie wybranym przez AutoML. Google Cloud AutoML, jak wspomniałem wcześniej, to uczenie się z głębokim transferem dla tłumaczenia par językowych, klasyfikacji języka naturalnego i klasyfikacji obrazów.

Wiele mniejszych firm oferuje również usługi AutoML. Na przykład DataRobot, który twierdzi, że wynalazł AutoML, cieszy się dobrą reputacją na rynku. I chociaż dotData ma niewielki udział w rynku i przeciętny interfejs użytkownika, ma duże możliwości inżynierii funkcji i obejmuje wiele przypadków użycia w przedsiębiorstwach. H2O.ai Driverless AI, którą recenzowałem w 2017 r., Może pomóc naukowcom zajmującym się danymi opracować modele takie jak mistrz Kaggle, wykonując inżynierię funkcji, przemiatanie algorytmami i optymalizację hiperparametrów w ujednolicony sposób.

Struktury AutoML

AdaNet to lekki framework oparty na TensorFlow do automatycznego uczenia się modeli o wysokiej jakości przy minimalnej interwencji eksperta. Auto-Keras to biblioteka oprogramowania typu open source do automatycznego uczenia maszynowego, opracowana w Texas A&M, która zapewnia funkcje do automatycznego wyszukiwania architektury i hiperparametrów modeli uczenia głębokiego. NNI (Neural Network Intelligence) to zestaw narzędzi firmy Microsoft ułatwiający użytkownikom projektowanie i dostrajanie modeli uczenia maszynowego (np. Hiperparametrów), architektur sieci neuronowych lub parametrów złożonych systemów w wydajny i automatyczny sposób.

Możesz znaleźć dodatkowe projekty AutoML oraz dość kompletną i aktualną listę artykułów na temat AutoML na GitHub.