Programování

Co je to strojové učení? Inteligence odvozená z dat

Definováno strojové učení

Strojové učení je odvětví umělé inteligence, které zahrnuje metody nebo algoritmy pro automatické vytváření modelů z dat. Na rozdíl od systému, který provádí úkol podle explicitních pravidel, se systém strojového učení učí ze zkušeností. Zatímco systém založený na pravidlech provede úkol pokaždé stejným způsobem (pro lepší i horší), výkon systému strojového učení lze zlepšit tréninkem, vystavením algoritmu více datům.

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

Aplikace strojového učení

Slyšíme o aplikacích strojového učení na denní bázi, i když ne všechny jsou čistými úspěchy. Dobrým příkladem jsou samojízdné automobily, jejichž úkoly sahají od jednoduchých a úspěšných (parkovací asistent a sledování jízdních pruhů po dálnici) až po složité a pohodlné (plná kontrola vozidla v městském prostředí, která vedla k několika úmrtím).

Strojové učení hraní her je velmi úspěšné pro dámu, šachy, shogi a Go, protože porazilo lidské mistry světa. Automatický překlad jazyků byl do značné míry úspěšný, ačkoli některé jazykové páry fungují lépe než jiné a mnoho automatických překladů může být ještě vylepšeno lidskými překladateli.

Automatická řeč na text funguje docela dobře pro lidi s mainstreamovými akcenty, ale ne tak dobře pro lidi s některými silnými regionálními nebo národními akcenty; výkon závisí na tréninkových sadách používaných prodejci. Automatická analýza sentimentu sociálních médií má poměrně dobrou úspěšnost, pravděpodobně proto, že tréninkové sady (např. Hodnocení produktů Amazon, které spojují komentář s číselným skóre) jsou velké a snadno přístupné.

Automatická kontrola životopisů je kontroverzní oblastí. Amazon musel stáhnout svůj interní systém z důvodu tréninku ukázkových předsudků, které způsobily, že downgradoval všechny žádosti o zaměstnání od žen.

Jiné v současné době používané systémy screeningu životopisů mohou mít předsudky v oblasti školení, které způsobují, že mohou upgradovat kandidáty, kteří jsou „jako“ současní zaměstnanci, a to způsobem, který by legálně neměl být důležitý (např. Mladí, bílí, mužští kandidáti z upscale anglicky mluvících čtvrtí, kteří týmové sporty projdou screeningem s větší pravděpodobností). Výzkumné úsilí společnosti Microsoft a dalších se zaměřuje na eliminaci implicitních předsudků ve strojovém učení.

Automatická klasifikace obrazů patologie a radiologie pokročila do bodu, kdy může pomoci (nikoli však nahradit) patologům a radiologům při detekci určitých druhů abnormalit. Mezitím jsou systémy identifikace obličeje kontroverzní, pokud fungují dobře (z důvodu ochrany soukromí), a nemají tendenci být tak přesné u žen a barevných lidí, jako u bělochů (kvůli předsudkům ve výcvikové populaci).

Algoritmy strojového učení

Strojové učení závisí na řadě algoritmů pro přeměnu datové sady na model. Který algoritmus funguje nejlépe, závisí na druhu problému, který řešíte, dostupných výpočetních zdrojích a povaze dat. Bez ohledu na to, jaký algoritmus nebo algoritmy používáte, budete nejprve muset data vyčistit a upravit.

Pojďme diskutovat o nejběžnějších algoritmech pro každý druh problému.

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 (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ě pokroku z jednoho průchodu daty (nazývaného epocha nebo dávka) na další.

Neuronové sítě a hluboké učení

Neuronové sítě byly inspirovány architekturou biologické vizuální kůry. Hluboké učení je sada technik pro učení v neuronových sítích, která zahrnuje velké množství „skrytých“ vrstev k identifikaci vlastností. Skryté vrstvy přicházejí mezi vstupní a výstupní vrstvu. Každá vrstva je tvořena umělými neurony, často s aktivačními funkcemi sigmoid nebo ReLU (Rectified Linear Unit).

V dopředné síti jsou neurony uspořádány do odlišných vrstev: jedna vstupní vrstva, libovolný počet skrytých zpracovatelských vrstev a jedna výstupní vrstva a výstupy z každé vrstvy přecházejí 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 buď přímo, nebo nepřímo prostřednictvím další vrstvy.

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. , obvykle pomocí algoritmu zpětného šíření. Dávky tréninkových dat, které jsou spuštěny společně před použitím oprav, se nazývají epochy.

Stejně jako u všech strojových učení musíte zkontrolovat předpovědi neuronové sítě proti samostatné sadě testovacích dat. Bez toho byste riskovali vytváření neuronových sítí, které si pouze zapamatují své vstupy, místo aby se naučily být zobecněnými prediktory.

Průlomem v oblasti neuronové sítě pro vidění byl Yann LeCun 1998 LeNet-5, sedmúrovňový konvoluční neuronová síť (CNN) pro rozpoznávání ručně psaných číslic digitalizovaných v obrázcích 32 x 32 pixelů. Pro analýzu obrázků s vyšším rozlišením by síť potřebovala více neuronů a více vrstev.

Konvoluční neurální sítě obvykle používají k simulaci vizuální kůry konvoluční, sdružování, ReLU, plně připojené a ztrátové vrstvy. Konvoluční vrstva v podstatě přebírá integrály mnoha malých překrývajících se oblastí. Sloučená vrstva provádí formu nelineárního down-samplování. Vrstvy ReLU, o kterých jsem se zmínil dříve, používají nesaturační aktivační funkci f (x) = max (0, x).

V plně propojené vrstvě mají neurony plné připojení ke všem aktivacím v předchozí vrstvě. Ztrátová vrstva počítá, jak síťový trénink penalizuje odchylku mezi předpovězenými a skutečnými popisky, pomocí ztráty Softmax nebo křížové entropie pro klasifikaci nebo euklidovské ztráty pro regresi.

Zpracování přirozeného jazyka (NLP) je další hlavní aplikační oblastí hlubokého učení. Kromě problému strojového překladu, který řeší Google Translate, patří mezi hlavní úkoly NLP automatická sumarizace, rozlišení referencí, analýza diskurzu, morfologická segmentace, rozpoznávání pojmenovaných entit, generování přirozeného jazyka, porozumění přirozenému jazyku, označování části řeči, sentiment analýza a rozpoznávání řeči.

Kromě CNN jsou úkoly NLP často řešeny pomocí rekurentních neuronových sítí (RNN), které zahrnují model LSTM (Long-Short Term Memory).

Čím více vrstev je v hluboké neurální síti, tím více výpočtu je zapotřebí k trénování modelu na CPU. Hardwarové akcelerátory pro neuronové sítě zahrnují GPU, TPU a FPGA.

Posílení učení

Výcvik posilování trénuje herec nebo činidlo reagovat na životní prostředí způsobem, který některé maximalizuje hodnota, obvykle metodou pokusu a omylu. To se liší od učení pod dohledem a bez dozoru, ale často se s nimi kombinuje.

Například AlphaGo od DeepMind, aby se naučil hrát (akční) hru Go (prostředí), se nejprve naučil napodobovat lidské hráče Go z velké datové sady historických her (učení učedníků). Poté zlepšilo svoji hru pokusem a omylem (posilování učení) tím, že hrálo velké množství her Go proti nezávislým instancím.

Robotické řízení je dalším problémem, který byl napaden metodami hlubokého posílení učení, což znamená posílení učení plus hluboké neurální sítě, přičemž hluboké neuronové sítě jsou často CNN trénované pro extrakci funkcí z video snímků.

Jak používat strojové učení

Jak lze vytvořit model strojového učení? Začnete vyčištěním a kondicionováním dat, pokračujete v konstrukci funkcí a poté vyzkoušíte každý algoritmus strojového učení, který má smysl. U určitých tříd problémů, jako je vidění a zpracování přirozeného jazyka, zahrnují algoritmy, které pravděpodobně fungují, hluboké učení.

Č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ě 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.

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