Programování

Hluboké učení vs. strojové učení: Pochopte rozdíly

Strojové učení a hluboké učení jsou obě formy umělé inteligence. Můžete také správně říci, že hluboké učení je specifický druh strojového učení. Jak strojové učení, tak hluboké učení začínají tréninkovými a testovacími daty a modelem a procházejí procesem optimalizace, aby našli váhy, díky nimž model nejlépe odpovídá datům. Oba mohou zvládat numerické (regresní) a nečíselné (klasifikační) problémy, ačkoli existuje několik aplikačních oblastí, jako je rozpoznávání objektů a překlad jazyků, kde modely hlubokého učení mají tendenci vytvářet lepší přizpůsobení než modely strojového učení.

Vysvětlení strojového učení

Algoritmy strojového učení se často dělí na pod dohledem (tréninková data jsou označena odpověďmi) a bez dozoru (jakékoli popisky, které mohou existovat, se algoritmu tréninku nezobrazí). Problémy s supervizovaným strojovým učením se dále dělí na klasifikace (predikce nečíselných odpovědí, jako je pravděpodobnost zmeškané hypotéky) a regrese (předpovídání číselných odpovědí, například počtu widgetů, které se budou prodávat příští měsíc ve vašem obchodě na Manhattanu).

Neřízené učení se dále dělí na shlukování (hledání skupin podobných předmětů, jako jsou běžecké boty, vycházkové boty a společenské boty), sdružení (hledání společných sekvencí předmětů, jako je káva a smetana), a snížení rozměrů (projekce, výběr prvků a extrakce prvků).

Klasifikační algoritmy

Problém klasifikace je problém s učením pod dohledem, který vyžaduje volbu mezi dvěma nebo více třídami, obvykle poskytuje pravděpodobnosti pro každou třídu. Při vynechání neuronových sítí a hlubokého učení, které vyžadují mnohem vyšší úroveň výpočetních zdrojů, jsou nejběžnějšími algoritmy Naive Bayes, Decision Tree, Logistic Regression, K-Nearest Neighbors a Support Vector Machine (SVM). Můžete také použít metody souboru (kombinace modelů), jako je Random Forest, jiné metody pytlování a metody posílení, jako jsou AdaBoost a XGBoost.

Regresní algoritmy

Regresní problém je supervizovaný učební problém, který model vyzve k předpovědi čísla. Nejjednodušší a nejrychlejší algoritmus je lineární regrese (metoda nejmenších čtverců), ale neměli byste se tím zastavit, protože vám často poskytne průměrný výsledek. Mezi další běžné algoritmy strojového učení (bez neuronových sítí) patří Naive Bayes, Decision Tree, K-Nearest Neighbors, LVQ (Learning Vector Quantization), LARS Lasso, Elastic Net, Random Forest, AdaBoost a XGBoost. Všimnete si, že mezi algoritmy strojového učení pro regresi a klasifikaci dochází k určitému překrývání.

Algoritmy shlukování

Problém shlukování je problém s učením bez kontroly, který model žádá, aby našel skupiny podobných datových bodů. Nejpopulárnějším algoritmem je K-Means Clustering; další zahrnují shluky Mean-Shift, DBSCAN (hustotní prostorové shlukování aplikací s hlukem), GMM (Gaussian Mixture Models) a HAC (Hierarchical Agglomerative Clustering).

Algoritmy snižování rozměrů

Snížení rozměrů je problém bez učení, který model žádá, aby zrušil nebo kombinoval proměnné, které mají malý nebo žádný vliv na výsledek. To se často používá v kombinaci s klasifikací nebo regresí. Algoritmy snižování rozměrů zahrnují odebírání proměnných s mnoha chybějícími hodnotami, odebírání proměnných s nízkou odchylkou, rozhodovací strom, náhodný les, odebírání nebo kombinování proměnných s vysokou korelací, zpětná eliminace prvků, výběr dopředných prvků, analýza faktorů a PCA (analýza hlavních komponent).

Optimalizační metody

Výcvik a vyhodnocení přemění algoritmy učení pod dohledem na modely optimalizací jejich váh parametrů tak, aby našly sadu 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, což je v podstatě nejstrmější sestup provedený několikrát z randomizovaných výchozích bodů.

Běžná vylepšení stochastického sestupu gradientu 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 (tzv. epocha nebo dávka) na další.

Č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 (výběr funkcí) pro vaši 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 vyzvednutími nebo odkládacími zeměpisnými šířkami a délkami, které jsou mimo ohraničující pole 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ě upravit 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í v tom, že kódovaný sloupec má být uspořádaným seznamem.

Chcete-li použít numerická data pro regresi stroje, je obvykle nutné data normalizovat. V opačném případě by čísla s většími rozsahy mohla mít tendenci ovládat euklidovskou vzdálenost mezi nimi vektory funkcí, jejich účinky by mohly být zvětšeny na úkor ostatních polí a nejstrmější optimalizace sestupu by mohla mít potíže s konvergováním. Existuje řada způsobů, jak normalizovat a standardizovat data pro strojové učení, 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í.

Inženýrství funkcí pro strojové učení

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

Rozdělení dat pro strojové učení

Obvyklou praxí pro strojové učení pod dohledem je rozdělení datové sady do podmnožin pro výcvik, validace, a test. Jedním ze způsobů práce je přiřadit 80% dat k tréninkové datové sadě a 10% každé k datovým sadám ověření a testování. (Přesné rozdělení je otázkou preference.) Převážná část tréninku se provádí proti datové sadě tréninku a predikce se provádí proti datové sadě ověření na konci každé epochy.

Chyby v sadě dat ověření lze použít k identifikaci kritérií zastavení nebo k vyladění hyperparametru. Nejdůležitější je, že chyby v sadě dat ověření vám pomohou zjistit, zda model překročil tréninková data.

Predikce oproti testovací sadě dat se obvykle provádí na finálním modelu. Pokud testovací datová sada nebyla nikdy použita pro trénink, někdy se jí říká zadržovací datová sada.

Existuje několik dalších schémat rozdělení dat. Jedna běžná technika, křížová validace, zahrnuje opakované rozdělení celé datové sady na tréninkovou datovou sadu a validační datovou sadu. Na konci každé epochy jsou data zamíchána a znovu rozdělena.

Knihovny strojového učení

V Pythonu jsou Spark MLlib a Scikit-learn vynikající volbou pro knihovny strojového učení. V R jsou některé možnosti balíčku strojového učení CARAT, randomForest, e1071 a KernLab. Mezi dobré volby v Javě patří Java-ML, RapidMiner a Weka.

Hluboké učení vysvětleno

Hluboké učení je forma strojového učení, ve kterém má trénovaný model více než jeden skrytá vrstva mezi vstupem a výstupem. Ve většině diskusí znamená hluboké učení hluboké učení neuronové sítě. Existuje však několik algoritmů, které implementují hluboké učení pomocí jiných druhů skrytých vrstev kromě neuronových sítí.

Myšlenky pro „umělé“ neuronové sítě sahají do 40. let 20. století. Základní koncept spočívá v tom, že síť umělých neuronů vytvořená ze vzájemně propojených prahových spínačů se může naučit rozpoznávat vzorce stejným způsobem, jako to dělá zvířecí mozek a nervový systém (včetně sítnice).

Backprop

K učení dochází v zásadě posílením spojení mezi dvěma neurony, když jsou oba během tréninku aktivní současně. V moderním softwaru neuronových sítí jde nejčastěji o zvýšení hodnot hmotnosti pro spojení mezi neurony pomocí pravidla s názvem zpětné šíření chyby, backprop nebo BP.

Neurony v umělých neuronových sítích

Jak jsou modelovány neurony? Každý z nich má funkci šíření, která transformuje výstupy připojených neuronů, často váženým součtem. Výstup funkce šíření předává aktivační funkci, která se aktivuje, když její vstup překročí prahovou hodnotu.

Aktivační funkce v neuronových sítích

Ve 40. a 50. letech umělé neurony používaly funkci krokové aktivace a byly volány perceptrony. Moderní neuronové sítě mohou říci používají perceptrony, ale ve skutečnosti mají hladké aktivační funkce, jako je logistická nebo sigmoidní funkce, hyperbolická tangenta nebo rektifikovaná lineární jednotka (ReLU). ReLU je obvykle nejlepší volbou pro rychlou konvergenci, i když má problém s umíráním neuronů během tréninku, pokud je nastavena příliš vysoká rychlost učení.

[Také na: 6 způsobů selhání strojového učení]

Výstup aktivační funkce může předat výstupní funkci pro další tvarování. Často je však výstupní funkcí funkce identity, což znamená, že výstup aktivační funkce je předáván do navazujících připojených neuronů.

Topologie neuronových sítí

Nyní, když víme o neuronech, musíme se dozvědět o běžných topologiích neuronových sítí. V dopředné síti jsou neurony uspořádány do odlišných vrstev: jedna vstupní vrstva, n skryté vrstvy zpracování a jedna výstupní vrstva. Výstupy z každé vrstvy přejdou pouze do další vrstvy.

V síti dopředného připojení s přímými připojeními mohou některá připojení přeskakovat jednu nebo více mezilehlých vrstev. V rekurentních neuronových sítích se mohou neurony ovlivňovat samy, a to buď přímo, nebo nepřímo prostřednictvím další vrstvy.

Cvičení neuronových sítí

Kontrolované učení neuronové sítě se provádí stejně jako jakékoli jiné strojové učení: Prezentujete síť skupinám tréninkových dat, porovnáte síťový výstup s požadovaným výstupem, vygenerujete chybový vektor a na základě chybového vektoru použijete opravy v síti. . Dávky tréninkových dat, které jsou spuštěny společně před použitím oprav, se nazývají epochy.

Pro ty, kteří se zajímají o podrobnosti, zpětné šíření používá gradient funkce chyby (nebo ceny) s ohledem na váhy a předpětí modelu k objevení správného směru k minimalizaci chyby. Aplikace oprav řídí dvě věci: optimalizační algoritmus a proměnná rychlost učení. Proměnná rychlosti učení obvykle musí být malá, aby byla zaručena konvergence a zabráněno vzniku mrtvých neuronů ReLU.

Optimalizátory pro neuronové sítě

Optimalizátory pro neuronové sítě obvykle používají nějakou formu algoritmu gradientního sestupu k podpoře zpětného šíření, často s mechanismem, který pomáhá vyhnout se zaseknutí v místních minimech, jako je optimalizace náhodně vybraných mini dávek (Stochastic Gradient Descent) a aplikace hybnost opravy přechodu. Některé optimalizační algoritmy také přizpůsobují rychlosti učení parametrů modelu prohlížením historie gradientů (AdaGrad, RMSProp a Adam).

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