Programovanie

Hlboké učenie vs. strojové učenie: Pochopte rozdiely

Strojové učenie a hlboké učenie sú obe formy umelej inteligencie. Môžete tiež správne povedať, že hlboké učenie je špecifický druh strojového učenia. Strojové učenie aj hlboké učenie sa začínajú tréningovými a testovacími údajmi a modelom a prechádzajú procesom optimalizácie, aby sa našli váhy, vďaka ktorým model najlepšie zodpovedá údajom. Oboje dokáže zvládnuť numerické (regresné) aj nečíselné (klasifikačné) problémy, aj keď existuje niekoľko aplikačných oblastí, ako je rozpoznávanie objektov a preklad jazykov, kde modely hlbokého učenia majú tendenciu vytvárať lepšie verzie ako modely strojového učenia.

Vysvetlenie strojového učenia

Algoritmy strojového učenia sa často delia na pod dohľadom (údaje o školení sú označené odpoveďami) a bez dozoru (prípadné štítky, ktoré môžu existovať, sa algoritmu tréningu nezobrazujú). Problémy s kontrolovaným strojovým učením sa ďalej delia na klasifikácia (predikcia nečíselných odpovedí, napríklad pravdepodobnosť zmeškania splátky hypotéky) a regresia (predpovedanie číselných odpovedí, napríklad počtu widgetov, ktoré sa budú predávať budúci mesiac vo vašom obchode na Manhattane).

Učenie bez dozoru sa ďalej delí na zhlukovanie (hľadanie skupín podobných predmetov, ako sú bežecká obuv, vychádzková obuv a spoločenská obuv), združenie (hľadanie bežných sekvencií predmetov, ako je káva a smotana) a zníženie rozmerov (projekcia, výber funkcií a extrakcia prvkov).

Klasifikačné algoritmy

Klasifikačný problém je problém s učením pod dohľadom, ktorý si vyžaduje výber z dvoch alebo viacerých tried, ktoré zvyčajne poskytujú pravdepodobnosť pre každú triedu. Ak vynecháme neurónové siete a hlboké učenie, ktoré si vyžaduje oveľa vyššiu úroveň výpočtových zdrojov, najbežnejšími algoritmami sú Naive Bayes, Decision Tree, Logistic Regression, K-Nearest Neighbors a Support Vector Machine (SVM). Môžete tiež použiť metódy súboru (kombinácie modelov), ako napríklad Random Forest, ďalšie metódy vytvárania vreciek a podporné metódy, ako sú AdaBoost a XGBoost.

Regresné algoritmy

Regresný problém je problém s učením pod dohľadom, ktorý vyžaduje od modelu predpovedanie čísla. Najjednoduchším a najrýchlejším algoritmom je lineárna regresia (najmenšie štvorce), nemali by ste sa však pri tom zastaviť, pretože vám často poskytne priemerný výsledok. Medzi ďalšie bežné regresné algoritmy strojového učenia (okrem neurónových sietí) patria Naive Bayes, Decision Tree, K-Nearest Neighbors, LVQ (Learning Vector Quantization), LARS Lasso, Elastic Net, Random Forest, AdaBoost a XGBoost. Všimnete si, že medzi algoritmami strojového učenia sa vyskytujú určité regresie a klasifikácie.

Klastrové algoritmy

Problém zoskupovania je problém učenia bez dozoru, ktorý model žiada, aby našiel skupiny podobných dátových bodov. Najpopulárnejším algoritmom je K-Means Clustering; ďalšie zahŕňajú klastrovanie so stredným posunom, DBSCAN (priestorové klastrovanie aplikácií s hlukom založené na hustote), GMM (modely Gaussovej zmesi) a HAC (hierarchické aglomeratívne zhlukovanie).

Algoritmy znižovania rozmerov

Zníženie dimenzionality je problém s učením bez dozoru, ktorý model žiada, aby vypustil alebo skombinoval premenné, ktoré majú malý alebo žiadny vplyv na výsledok. Toto sa často používa v kombinácii s klasifikáciou alebo regresiou. Algoritmy znižovania rozmerov zahŕňajú odstraňovanie premenných s mnohými chýbajúcimi hodnotami, odstraňovanie premenných s nízkou odchýlkou, rozhodovací strom, náhodný les, odstraňovanie alebo kombinovanie premenných s vysokou koreláciou, spätné vylučovanie prvkov, výber ďalších prvkov, analýza faktorov a PCA (analýza hlavných komponentov).

Optimalizačné metódy

Výcvik a hodnotenie premieňajú učené algoritmy pod dohľadom na modely optimalizáciou ich váh parametrov tak, aby sa našiel súbor hodnôt, ktorý najlepšie zodpovedá základnej pravdivosti vašich údajov. Algoritmy sa pri optimalizácii často spoliehajú na varianty najprudšieho klesania, napríklad stochastický gradient, ktorý je v podstate najprudším klesaním vykonávaným viackrát z randomizovaných východiskových bodov.

Bežné vylepšenia pri stochastickom klesaní gradientu pridávajú faktory, ktoré opravujú smer gradientu na základe hybnosti alebo upravujú rýchlosť učenia na základe postupu od jedného prechodu dát (tzv. epocha alebo dávka) na nasledujúcu.

Čistenie dát pre strojové učenie

Čisté dáta vo voľnej prírode neexistujú. Aby boli údaje užitočné pre strojové učenie, musia byť agresívne filtrované. Napríklad budete chcieť:

  1. Prezrite si údaje a vylúčte všetky stĺpce, ktoré majú veľa chýbajúcich údajov.
  2. Znova skontrolujte údaje a vyberte stĺpce, ktoré chcete použiť (výber funkcií) pre vašu predpoveď. To je niečo, čo sa možno budete chcieť pri iterácii líšiť.
  3. Vylúčte všetky riadky, ktoré v zvyšných stĺpcoch stále majú chýbajúce údaje.
  4. Opravte zjavné preklepy a zlúčte ekvivalentné odpovede. Napríklad USA, USA, USA a Amerika by sa mali zlúčiť do jednej kategórie.
  5. Vylúčte riadky, ktoré obsahujú údaje, ktoré sú mimo rozsahu. Napríklad ak analyzujete výlety taxíkom v New Yorku, budete chcieť odfiltrovať riadky so zemepisnými šírkami a dĺžkami vyzdvihnutia alebo odchodu, ktoré sú mimo ohraničujúceho poľa metropolitnej oblasti.

Môžete toho urobiť ešte veľa, ale bude to závisieť od zhromaždených údajov. Môže to byť zdĺhavé, ale ak nastavíte krok čistenia údajov v potrubí strojového učenia, môžete ho ľubovoľne upravovať a opakovať.

Kódovanie údajov a normalizácia pre strojové učenie

Ak chcete na klasifikáciu strojov použiť kategorické údaje, musíte textové štítky zakódovať do inej formy. Existujú dve bežné kódovania.

Jeden je kódovanie štítkov, čo znamená, že každá hodnota textového štítku je nahradená číslom. Druhou je jednorazové kódovanie, čo znamená, že každá hodnota textového štítku sa zmení na stĺpec s binárnou hodnotou (1 alebo 0). Väčšina rámcov strojového učenia má funkcie, ktoré za vás urobia prevod. Všeobecne sa uprednostňuje kódovanie za horúca, pretože kódovanie štítkov môže niekedy zmiasť algoritmus strojového učenia v domnienke, že kódovaný stĺpec má byť usporiadaným zoznamom.

Ak chcete použiť numerické údaje na regresiu stroja, je zvyčajne potrebné normalizovať údaje. V opačnom prípade môžu mať čísla s väčšími rozsahmi tendenciu dominovať medzi euklidovskou vzdialenosťou medzi nimi vektory funkcií, ich účinky by sa mohli zväčšiť na úkor ostatných polí a konverzia by mohla mať ťažkosti s najprudšou optimalizáciou zostupu. Existuje niekoľko spôsobov, ako normalizovať a štandardizovať údaje pre strojové učenie, vrátane normalizácie min-max, priemernej normalizácie, štandardizácie a zmeny mierky na dĺžku jednotky. Tento proces sa často nazýva škálovanie funkcií.

Funkčné inžinierstvo pre strojové učenie

A vlastnosť je individuálna merateľná vlastnosť alebo charakteristika pozorovaného javu. Pojem „znak“ súvisí s pojmom vysvetľujúcej premennej, ktorý sa používa v štatistických technikách, ako je napríklad lineárna regresia. Vektory prvkov kombinujú všetky funkcie jedného riadku do číselného vektora.

Súčasťou umenia pri výbere funkcií je vybrať minimálnu sadu nezávislý premenné, ktoré vysvetľujú problém. Ak sú dve premenné vysoko korelované, je potrebné ich skombinovať do jednej vlastnosti alebo jednu zrušiť. Ľudia niekedy vykonávajú analýzu hlavných komponentov, aby previedli korelované premenné na množinu lineárne nekorelovaných premenných.

Niektoré z transformácií, ktoré ľudia používajú na konštrukciu nových prvkov alebo na zníženie rozmernosti vektorov prvkov, sú jednoduché. Napríklad odčítať Rok narodenia od Rok smrti a ty zostroj Vek smrti, ktorá je prvoradou nezávislou premennou pre analýzu života a úmrtnosti. V ostatných prípadoch vlastná konštrukcia nemusí byť také zrejmé.

Delenie údajov pre strojové učenie

Obvyklou praxou pre strojové učenie pod dohľadom je rozdelenie množiny údajov do podmnožín pre školenia, validáciaa test. Jedným zo spôsobov práce je priradiť 80% údajov k množine tréningových údajov a po 10% k súborom údajov o overovaní a testovaní. (Presné rozdelenie je záležitosťou preferencie.) Prevažná časť tréningu sa vykonáva proti množine tréningových údajov a predikcia sa vykonáva proti množine overovacích údajov na konci každej epochy.

Chyby v súbore overovacích údajov možno použiť na identifikáciu kritérií zastavenia alebo na vyladenie hyperparametra. Najdôležitejšie je, že chyby v sade overovacích údajov vám môžu pomôcť zistiť, či model neprekonal tréningové údaje.

Predikcia oproti súboru testovacích údajov sa zvyčajne vykonáva na konečnom modeli. Ak sa súbor testovacích údajov nikdy nepoužil na školenie, niekedy sa nazýva súbor zadržaných údajov.

Existuje niekoľko ďalších schém na rozdelenie údajov. Jedna bežná technika, krížová validácia, zahŕňa opakovane rozdelenie celého súboru údajov na súbor tréningových údajov a súbor overovacích údajov. Na konci každej epochy sa údaje zamiešajú a znova rozdelia.

Knižnice strojového učenia

V Pythone sú Spark MLlib a Scikit-learn vynikajúcou voľbou pre knižnice strojového učenia. V R sú niektoré možnosti balíka strojového učenia CARAT, randomForest, e1071 a KernLab. Medzi dobré možnosti v jazyku Java patria Java-ML, RapidMiner a Weka.

Vysvetlenie hlbokého učenia

Hlboké učenie je forma strojového učenia, v ktorej má trénovaný model viac ako jeden skrytá vrstva medzi vstupom a výstupom. Vo väčšine diskusií znamená hlboké učenie hlboké učenie neurálne siete. Existuje však niekoľko algoritmov, ktoré implementujú hlboké učenie pomocou iných druhov skrytých vrstiev okrem neurónových sietí.

Nápady pre „umelé“ neurónové siete siahajú do 40. rokov 20. storočia. Základným konceptom je, že sieť umelých neurónov vytvorených zo vzájomne prepojených prahových spínačov sa môže naučiť rozpoznávať vzorce rovnakým spôsobom, ako to robí mozog a nervový systém zvieraťa (vrátane sietnice).

Backprop

K učeniu dochádza v zásade posilňovaním spojenia medzi dvoma neurónmi, keď sú oba počas tréningu aktívne súčasne. V modernom softvéri neurónových sietí ide najčastejšie o zvýšenie váhových hodnôt pre spojenie medzi neurónmi pomocou pravidla s názvom spätné šírenie chyby, backprop alebo BP.

Neuróny v umelých neurónových sieťach

Ako sa modelujú neuróny? Každý z nich má funkciu propagácie, ktorá transformuje výstupy spojených neurónov, často s váženým súčtom. Výstup funkcie šírenia prechádza do aktivačnej funkcie, ktorá sa spustí, keď jej vstup prekročí prahovú hodnotu.

Aktivačné funkcie v neurónových sieťach

V 40. a 50. rokoch umelé neuróny používali funkciu krokovej aktivácie a boli volané perceptróny. Moderné neurónové siete môžu povedať používajú perceptróny, ale v skutočnosti majú plynulé aktivačné funkcie, napríklad logistickú alebo sigmoidnú funkciu, hyperbolickú tangensu alebo usmernenú lineárnu jednotku (ReLU). ReLU je zvyčajne najlepšou voľbou pre rýchlu konvergenciu, aj keď má problém s „umieraním“ neurónov počas tréningu, ak je nastavená príliš vysoká rýchlosť učenia.

[Tiež na: 6 spôsobov, ako zlyhať strojové učenie]

Výstup aktivačnej funkcie môže prejsť na výstupnú funkciu na ďalšie tvarovanie. Často je však výstupnou funkciou funkcia identity, čo znamená, že výstup aktivačnej funkcie sa prenáša do nadväzujúcich pripojených neurónov.

Topológie neurónovej siete

Teraz, keď vieme o neurónoch, musíme sa dozvedieť o bežných topológiách neurónových sietí. V doprednej sieti sú neuróny usporiadané do samostatných vrstiev: jedna vstupná vrstva, n skryté vrstvy spracovania a jedna výstupná vrstva. Výstupy z každej vrstvy idú iba do ďalšej vrstvy.

V sieti poskytujúcej spätné väzby so skratovými spojeniami môžu niektoré spojenia preskočiť jednu alebo viac medzivrstiev. V rekurentných neurónových sieťach môžu neuróny ovplyvňovať samy seba, a to buď priamo, alebo nepriamo cez ďalšiu vrstvu.

Cvičenie neurónových sietí

Dozorované učenie neurónovej siete sa vykonáva rovnako ako akékoľvek iné strojové učenie: Sieti predstavíte skupiny tréningových údajov, porovnáte sieťový výstup s požadovaným výstupom, vygenerujete chybový vektor a na základe chybového vektora vykonáte opravy v sieti. . Dávky tréningových údajov, ktoré sa pred aplikáciou opráv spustia spoločne, sa nazývajú epochy.

Pre tých, ktorí sa zaujímajú o podrobnosti, spätné šírenie využíva gradient funkcie chyby (alebo ceny) vzhľadom na váhy a predpätia modelu na objavenie správneho smeru na minimalizáciu chyby. Uplatňovanie korekcií riadia dve veci: optimalizačný algoritmus a premenná rýchlosť učenia. Premenná rýchlosti učenia musí byť zvyčajne malá, aby sa zaručila konvergencia a zabránilo sa vzniku mŕtvych neurónov ReLU.

Optimalizátory pre neurónové siete

Optimalizátory pre neurónové siete zvyčajne používajú určitú formu algoritmu gradientného klesania na podporu spätného šírenia, často s mechanizmom, ktorý pomáha vyhnúť sa zaseknutiu v miestnych minimách, ako je napríklad optimalizácia náhodne vybraných mini dávok (Stochastic Gradient Descent) a použitie spád korekcie gradientu. Niektoré optimalizačné algoritmy tiež upravujú rýchlosť učenia parametrov modelu pozeraním na históriu gradientov (AdaGrad, RMSProp a Adam).

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