Programování

Algoritmy strojového učení vysvětleny

Strojové učení a hluboké učení byly široce přijímány a ještě více široce nepochopeny. V tomto článku bych rád ustoupil a vysvětlil základní strojové učení i hluboké učení, probral některé z nejběžnějších algoritmů strojového učení a vysvětlil, jak tyto algoritmy souvisejí s ostatními částmi skládačky vytváření prediktivních modelů z historických údajů.

Co jsou to algoritmy strojového učení?

Připomeňme, že strojové učení je třída metod pro automatické vytváření modelů z dat. Algoritmy strojového učení jsou motory strojového učení, což znamená, že právě algoritmy mění datovou sadu na model. Který druh algoritmu funguje nejlépe (pod dohledem, bez dozoru, klasifikace, regrese atd.), Závisí na druhu problému, který řešíte, dostupných výpočetních zdrojích a povaze dat.

Jak funguje strojové učení

Obyčejné programovací algoritmy řeknou počítači, co má dělat přímým způsobem. Například algoritmy řazení změní neuspořádaná data na data seřazená podle některých kritérií, často číselného nebo abecedního pořadí jednoho nebo více polí v datech.

Algoritmy lineární regrese odpovídají přímce, nebo jiná funkce, která je lineární ve svých parametrech, jako je polynom, na číselná data, obvykle provedením inverzí matice, aby se minimalizovala čtvercová chyba mezi řádkem a daty. Jako metrika se používá čtvercová chyba, protože vám nezáleží na tom, zda je regresní čára nad nebo pod datovými body; záleží vám jen na vzdálenosti mezi přímkou ​​a body.

Nelineární regresní algoritmy, které odpovídají datům křivek, které nejsou ve svých parametrech lineární, jsou trochu komplikovanější, protože na rozdíl od problémů s lineární regresí je nelze vyřešit deterministickou metodou. Místo toho nelineární regresní algoritmy implementují nějaký druh iteračního procesu minimalizace, často nějakou variaci na metodu nejstrmějšího sestupu.

Nejstrmější sestup v zásadě spočítá druhou mocninu chyby a její gradient na aktuálních hodnotách parametrů, vybere velikost kroku (aka rychlost učení), sleduje směr přechodu „dolů z kopce“ a poté přepočítá druhou mocninu chyby a její gradient na nový hodnoty parametrů. Nakonec, s trochou štěstí, proces konverguje. Varianty v nejstrmějším klesání se snaží zlepšit vlastnosti konvergence.

Algoritmy strojového učení jsou ještě méně přímočaré než nelineární regrese, částečně proto, že strojové učení se obejde bez omezení přizpůsobení konkrétní matematické funkci, jako je polynom. Existují dvě hlavní kategorie problémů, které se strojovým učením často řeší: regrese a klasifikace. Regrese se týká číselných údajů (např. Jaký je pravděpodobný příjem pro někoho s danou adresou a povoláním?) A klasifikace se týká nečíselných údajů (např. Nesplní žadatel tuto půjčku?).

Jaké jsou předpovědní problémy (např. Jaká bude zítra otevírací cena akcií Microsoftu?) Jsou podmnožinou regresních problémů pro data časových řad. Problémy s klasifikací se někdy dělí na binární (ano nebo ne) a vícekategorické (zvířecí, rostlinné nebo minerální).

Učení pod dohledem vs. Učení pod dohledem

Nezávisle na těchto divizích existují další dva druhy algoritmů strojového učení: pod dohledem a bez dozoru. v učení pod dohledem, poskytnete tréninkovou datovou sadu s odpověďmi, například sadu obrázků zvířat spolu se jmény zvířat. Cílem tohoto výcviku by byl model, který by dokázal správně identifikovat obrázek (druhu zvířete, které bylo zahrnuto do výcvikové sady), které předtím neviděl.

v neřízené učení, algoritmus prochází samotnými daty a snaží se přijít se smysluplnými výsledky. Výsledkem může být například sada klastrů datových bodů, které by mohly být v rámci každého klastru příbuzné. To funguje lépe, když se klastry nepřekrývají.

Výcvik a vyhodnocení přemění algoritmy učení pod dohledem na modely optimalizací jejich parametrů, aby se našla sada hodnot, která nejlépe odpovídá základní pravdivosti vašich dat. Algoritmy se pro své optimalizátory často spoléhají na varianty nejstrmějšího sestupu, například stochastický gradient (SGD), což je v podstatě nejstrmější sestup prováděný několikrát z randomizovaných výchozích bodů. Běžná vylepšení SGD přidávají faktory, které opravují směr gradientu na základě hybnosti nebo upravují rychlost učení na základě postupu od jednoho průchodu daty (nazývaného epocha) k dalšímu.

Čištění dat pro strojové učení

Čistá data ve volné přírodě neexistují. Aby to bylo užitečné pro strojové učení, musí být data agresivně filtrována. Například budete chtít:

  1. Podívejte se na data a vyloučte všechny sloupce, které obsahují spoustu chybějících dat.
  2. Podívejte se znovu na data a vyberte sloupce, které chcete použít pro svou předpověď. (To je něco, co se možná budete chtít při iteraci lišit.)
  3. Vyloučte všechny řádky, u nichž ve zbývajících sloupcích stále chybí data.
  4. Opravte zjevné překlepy a spojte ekvivalentní odpovědi. Například USA, USA, USA a Amerika by měly být sloučeny do jedné kategorie.
  5. Vyloučte řádky, které mají data mimo rozsah. Například pokud analyzujete výlety taxíkem v New Yorku, budete chtít odfiltrovat řádky s vyzvedávacími nebo odkládacími zeměpisnými šířkami a délkami, které jsou mimo ohraničující rámeček metropolitní oblasti.

Můžete toho udělat mnohem víc, ale bude to záviset na shromážděných datech. To může být zdlouhavé, ale pokud nastavíte krok čištění dat v kanálu strojového učení, můžete jej libovolně upravovat a opakovat.

Kódování a normalizace dat pro strojové učení

Chcete-li pro klasifikaci strojů použít kategorická data, musíte textové štítky zakódovat do jiného formuláře. Existují dvě společná kódování.

Jedním z nich je kódování štítků, což znamená, že každá hodnota textového štítku je nahrazena číslem. Druhý je jednorázové kódování, což znamená, že každá hodnota textového štítku se změní na sloupec s binární hodnotou (1 nebo 0). Většina rámců strojového učení má funkce, které za vás provedou převod. Obecně se upřednostňuje kódování za horka, protože kódování štítků může někdy zaměnit algoritmus strojového učení za myšlenku, že je objednaný kódovaný sloupec.

Chcete-li použít numerická data pro regresi stroje, je obvykle nutné data normalizovat. V opačném případě mohou čísla s většími rozsahy mít tendenci dominovat mezi euklidovskou vzdáleností mezi nimi vektory funkcí, jejich účinky lze zvětšit na úkor ostatních polí a nejstrmější optimalizace sestupu může mít potíže s konvergováním. Existuje řada způsobů, jak normalizovat a standardizovat data pro ML, včetně normalizace min-max, průměrné normalizace, standardizace a škálování na délku jednotky. Tento proces se často nazývá škálování funkcí.

Co jsou funkce strojového učení?

Protože jsem v předchozí části zmínil vektory funkcí, měl bych vysvětlit, o jaké vektory jde. Za prvé, a Vlastnosti je jednotlivá měřitelná vlastnost nebo charakteristika pozorovaného jevu. Pojem „funkce“ souvisí s pojmem vysvětlující proměnné, která se používá ve statistických technikách, jako je lineární regrese. Vektory prvků kombinují všechny funkce pro jeden řádek do číselného vektoru.

Součástí umění výběru funkcí je vybrat minimální sadu nezávislý proměnné, které vysvětlují problém. Pokud jsou dvě proměnné vysoce korelované, je třeba je zkombinovat do jedné funkce, nebo by jedna měla být zrušena. Někdy lidé provádějí analýzu hlavních komponent k převodu korelovaných proměnných na sadu lineárně nekorelovaných proměnných.

Některé transformace, které lidé používají ke konstrukci nových funkcí nebo ke snížení rozměrnosti vektorů prvků, jsou jednoduché. Například odečíst Rok narození z Rok smrti a ty konstruuješ Věk smrti, což je hlavní nezávislá proměnná pro analýzu života a úmrtnosti. V ostatních případech konstrukční prvek nemusí být tak zřejmé.

Běžné algoritmy strojového učení

Existují desítky algoritmů strojového učení, od složitosti od lineární regrese a logistické regrese až po hluboké neurální sítě a soubory (kombinace jiných modelů). Mezi nejběžnější algoritmy však patří:

  • Lineární regrese, aka regrese nejmenších čtverců (pro číselná data)
  • Logistická regrese (pro binární klasifikaci)
  • Lineární diskriminační analýza (pro klasifikaci více kategorií)
  • Rozhodovací stromy (pro klasifikaci i regresi)
  • Naivní Bayes (pro klasifikaci i regresi)
  • K-Nearest Neighbors, aka KNN (pro klasifikaci i regresi)
  • Learning Vector Quantization, aka LVQ (pro klasifikaci i regresi)
  • Support Vector Machines, aka SVM (pro binární klasifikaci)
  • Random Forests, typ algoritmu „pytlování“ (pro klasifikaci i regresi)
  • Boosting methods, including AdaBoost and XGBoost, are ensemble algorithms that create a series of models where each new model tries to correct errors from the previous model (for both classification and regression)

Kde jsou neuronové sítě a hluboké neuronové sítě, o kterých tolik slyšíme? Mají tendenci být výpočetně náročné natolik, že potřebují GPU nebo jiný specializovaný hardware, takže byste je měli používat pouze pro specializované problémy, jako je klasifikace obrázků a rozpoznávání řeči, které nejsou vhodné pro jednodušší algoritmy. „Hluboká“ znamená, že v neurální síti je mnoho skrytých vrstev.

Další informace o neuronových sítích a hlubokém učení naleznete v části „Co hluboké učení ve skutečnosti znamená.“

Hyperparametry pro algoritmy strojového učení

Algoritmy strojového učení se cvičí na datech, aby našly nejlepší sadu vah pro každou nezávislou proměnnou, která ovlivňuje předpokládanou hodnotu nebo třídu. Samotné algoritmy mají proměnné, které se nazývají hyperparametry. Nazývají se hyperparametry, na rozdíl od parametrů, protože řídí spíše provoz algoritmu než určované váhy.

Nejdůležitějším hyperparametrem je často rychlost učení, která určuje velikost kroku použitého při hledání další sady vah, které je třeba vyzkoušet při optimalizaci. Pokud je rychlost učení příliš vysoká, může klesání gradientu rychle konvergovat na plošinu nebo suboptimální bod. Pokud je rychlost učení příliš nízká, může klesání klesat a nikdy úplně konvergovat.

Mnoho dalších běžných hyperparametrů závisí na použitých algoritmech. Většina algoritmů má zastavovací parametry, jako je maximální počet epoch nebo maximální doba běhu nebo minimální zlepšení z epochy do epochy. Specifické algoritmy mají hyperparametry, které řídí tvar jejich hledání. Například klasifikátor náhodných lesů má hyperparametry pro minimální vzorky na list, maximální hloubku, minimální vzorky při rozdělení, minimální hmotnostní zlomek pro list a dalších asi 8.

Ladění hyperparametru

Několik produkčních platforem strojového učení nyní nabízí automatické ladění hyperparametrů. V podstatě řeknete systému, jaké hyperparametry chcete měnit, a případně jakou metriku chcete optimalizovat, a systém tyto hyperparametry zametne napříč tolika běhy, kolik povolíte. (Ladění hyperparametru Google Cloud extrahuje příslušnou metriku z modelu TensorFlow, takže ji nemusíte specifikovat.)

Existují tři vyhledávací algoritmy pro zametání hyperparametrů: Bayesiánská optimalizace, vyhledávání v mřížce a náhodné vyhledávání. Bayesiánská optimalizace bývá nejúčinnější.

Mysleli byste si, že vyladění co největšího počtu hyperparametrů vám dá nejlepší odpověď. Pokud však nepoužíváte svůj vlastní osobní hardware, může to být velmi drahé. V každém případě klesá návratnost. Se zkušenostmi zjistíte, které hyperparametry jsou pro vaše data a výběr algoritmů nejdůležitější.

Automatizované strojové učení

Když už mluvíme o výběru algoritmů, existuje jen jeden způsob, jak zjistit, který algoritmus nebo soubor algoritmů vám poskytne nejlepší model pro vaše data, a to je vyzkoušet všechny. Pokud také vyzkoušíte všechny možné normalizace a možnosti funkcí, čelíte kombinační explozi.

Pokoušet se o všechno je nepraktické dělat ručně, takže poskytovatelé nástrojů pro strojové učení samozřejmě vydali systémy AutoML hodně úsilí. Nejlepší kombinují inženýrství funkcí s rozsáhlými algoritmy a normalizacemi. Vyladění hyperparametru nejlepšího modelu nebo modelů je často ponecháno na později. Inženýrství funkcí je těžký problém automatizovat, ale ne všechny systémy AutoML to zvládnou.

Stručně řečeno, algoritmy strojového učení jsou jen jedním dílkem skládačky strojového učení. Kromě výběru algoritmu (manuálního nebo automatického) se budete muset zabývat optimalizátory, čištěním dat, výběrem funkcí, normalizací funkcí a (volitelně) vyladěním hyperparametru.

Když to všechno vyřešíte a vytvoříte model, který funguje pro vaše data, bude čas nasadit model a poté jej aktualizovat, jak se změní podmínky. Správa modelů strojového učení ve výrobě je však úplně jiná plechovka červů.

$config[zx-auto] not found$config[zx-overlay] not found