Programovanie

Čo je to strojové učenie? Spravodajstvo odvodené z údajov

Definované strojové učenie

Strojové učenie je odvetvie umelej inteligencie, ktoré obsahuje metódy alebo algoritmy na automatické vytváranie modelov z údajov. Na rozdiel od systému, ktorý vykonáva úlohu podľa explicitných pravidiel, sa systém strojového učenia učí zo skúseností. Zatiaľ čo systém založený na pravidlách bude vykonávať úlohu vždy rovnakým spôsobom (v dobrom aj v zlom), výkonnosť systému strojového učenia sa dá vylepšiť školením tak, že sa algoritmus vystaví väčšiemu množstvu údajov.

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

Aplikácie strojového učenia

O aplikáciách strojového učenia počujeme každý deň, aj keď nie všetky sú čistým úspechom. Dobrým príkladom sú samoriadiace autá, kde sa úlohy pohybujú od jednoduchých a úspešných (parkovací asistent a sledovanie jazdných pruhov po diaľnici) až po zložité a zložité (úplné riadenie vozidla v mestských podmienkach, ktoré viedlo k niekoľkým úmrtiam).

Strojové učenie sa pri hraní hier je veľmi úspešné pre dámu, šach, shogi a Go, keď porazili ľudských majstrov sveta. Automatický preklad jazykov bol do veľkej miery úspešný, aj keď niektoré jazykové páry fungujú lepšie ako iné a mnoho automatických prekladov môžu ľudia ešte vylepšiť.

Automatická reč na text funguje celkom dobre u ľudí s bežnými akcentmi, ale nie tak dobre u ľudí so silnými regionálnymi alebo národnými akcentmi; výkon závisí od tréningových sád použitých predajcami. Automatická analýza sentimentu sociálnych médií má primerane dobrú úspešnosť, pravdepodobne preto, že školiace súbory (napr. Hodnotenia produktov Amazon, ktoré spájajú komentáre s číselným skóre) sú veľké a ľahko prístupné.

Automatická kontrola životopisov je kontroverzná oblasť. Spoločnosť Amazon musela stiahnuť svoj interný systém z dôvodu zaškolenia na predsudky týkajúce sa vzoriek, ktoré spôsobili, že znížila hodnotenie všetkých žiadostí o zamestnanie od žien.

Ostatné v súčasnosti používané systémy skríningu životopisov môžu mať predsudky v oblasti tréningu, ktoré spôsobujú, že môžu upgradovať kandidátov, ktorí sú „ako“ súčasní zamestnanci, a to spôsobom, ktorý by podľa zákona nemal byť dôležitý (napr. Mladí, bieli, mužskí kandidáti zo špičkových anglicky hovoriacich štvrtí, ktorí hrali tímové športy s väčšou pravdepodobnosťou prejdú skríningom). Výskumné úsilie spoločnosti Microsoft a ďalších sa zameriava na elimináciu implicitných predsudkov v strojovom učení.

Automatická klasifikácia patologických a rádiologických snímok pokročila do bodu, keď môže pomôcť (nie však nahradiť) patológom a rádiológom pri zisťovaní určitých druhov abnormalít. Medzitým sú systémy identifikácie tváre kontroverzné, keď fungujú dobre (z dôvodu ochrany súkromia), a zvyčajne nie sú také presné pre ženy a farebných ľudí ako pre bielych mužov (z dôvodu zaujatosti cvičenej populácie).

Algoritmy strojového učenia

Strojové učenie závisí od množstva algoritmov na premenu množiny údajov na model. Ktorý algoritmus funguje najlepšie, závisí od druhu problému, ktorý riešite, dostupných výpočtových zdrojov a povahy údajov. Bez ohľadu na to, aký algoritmus alebo algoritmy použijete, najskôr musíte údaje vyčistiť a upraviť.

Poďme si predstaviť najbežnejšie algoritmy pre každý druh problému.

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 (SGD), čo je v podstate najprudší klesanie vykonávané viackrát z randomizovaných východiskových bodov.

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

Neurónové siete a hlboké učenie

Neurónové siete boli inšpirované architektúrou biologickej vizuálnej kôry. Hlboké učenie je sada techník učenia sa v neurónových sieťach, ktorá na identifikáciu znakov zahŕňa veľké množstvo „skrytých“ vrstiev. Skryté vrstvy sa nachádzajú medzi vstupnou a výstupnou vrstvou. Každá vrstva je tvorená umelými neurónmi, často s aktivačnými funkciami sigmoid alebo ReLU (Rectified Linear Unit).

V doprednej sieti sú neuróny usporiadané do samostatných vrstiev: jedna vstupná vrstva, ľubovoľný počet skrytých spracovateľských vrstiev a jedna výstupná vrstva a výstupy z každej vrstvy prechádzajú iba do nasledujúcej 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.

Dozorované učenie neurónovej siete sa vykonáva rovnako ako ktoré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. , zvyčajne pomocou algoritmu spätného šírenia. Dávky tréningových údajov, ktoré sa pred aplikáciou opráv spustia spoločne, sa nazývajú epochy.

Rovnako ako v prípade všetkého strojového učenia, aj tu je potrebné skontrolovať predpovede neurónovej siete proti samostatnému súboru testovacích údajov. Bez toho by ste riskovali vytvorenie neurónových sietí, ktoré si iba pamätajú svoje vstupy, namiesto toho, aby sa naučili byť zovšeobecnenými prediktormi.

Prelomom v oblasti neurónovej siete pre videnie bol YNN LeCun z roku 1998 LeNet-5, sedemúrovňový konvolučná neurónová sieť (CNN) na rozpoznávanie ručne písaných číslic digitalizovaných v obrázkoch s rozmermi 32 x 32 pixelov. Na analýzu obrázkov s vyšším rozlíšením by sieť potrebovala viac neurónov a viac vrstiev.

Konvolučné neurónové siete zvyčajne používajú na simuláciu vizuálnej kôry vrstvy konvolúcie, združovania, ReLU, plne pripojené a stratové vrstvy. Konvolučná vrstva v podstate berie integrály mnohých malých prekrývajúcich sa oblastí. Spoločná vrstva vykonáva formu nelineárneho vzorkovania nadol. Vrstvy ReLU, ktoré som už spomínal, používajú nesaturačnú aktivačnú funkciu f (x) = max (0, x).

V úplne spojenej vrstve majú neuróny úplné spojenie so všetkými aktiváciami v predchádzajúcej vrstve. Stratová vrstva počíta, ako sieťový tréning penalizuje odchýlku medzi predpovedaným a skutočným označením, pomocou straty Softmax alebo krížovej entropie pre klasifikáciu alebo euklidovskej straty pre regresiu.

Spracovanie prirodzeného jazyka (NLP) je ďalšou hlavnou oblasťou použitia hlbokého učenia. Okrem problému so strojovým prekladom, ktorým sa zaoberá Google Translate, patrí medzi hlavné úlohy NLP automatická sumarizácia, riešenie referencií, analýza diskurzu, morfologická segmentácia, rozpoznávanie pomenovaných entít, generovanie prirodzeného jazyka, porozumenie prirodzenému jazyku, označovanie časti reči, sentiment analýza a rozpoznávanie reči.

Okrem CNN sú úlohy NLP často riešené pomocou rekurentných neurónových sietí (RNN), ktoré zahŕňajú model LSTM (Long-Short Term Memory).

Čím viac vrstiev je v hlbokej neurónovej sieti, tým viac výpočtov je potrebných na natrénovanie modelu na CPU. Medzi hardvérové ​​akcelerátory pre neurónové siete patria GPU, TPU a FPGA.

Výcvik posilňovania

Výcvik posilňovania trénuje a herec alebo agent reagovať na prostredie spôsobom, ktorý niektorých maximalizuje hodnotu, zvyčajne pokusom a omylom. To sa líši od učenia pod dohľadom a bez dozoru, ale často sa s nimi kombinuje.

Napríklad program AlphaGo od DeepMind, ktorý sa naučil hrať (akčnú) hru Go (prostredie), sa najskôr naučil napodobňovať ľudských hráčov Go z veľkého súboru dát historických hier (učňovské učenie). Potom zlepšilo svoju hru pokusom a omylom (posilňovanie učenia) hraním veľkého množstva hier Go proti nezávislým prípadom.

Robotické riadenie je ďalší problém, ktorý bol napadnutý metódami učenia sa s hlbokým posilňovaním, čo znamená zosilnenie učenia plus hlboké neurónové siete, pričom hlboké neurónové siete sú často CNN trénované na extrakciu prvkov z videozáznamov.

Ako používať strojové učenie

Ako sa dá vytvoriť model strojového učenia? Začínate čistením a kondicionovaním údajov, pokračujete v navrhovaní funkcií a potom vyskúšate každý algoritmus strojového učenia, ktorý má zmysel. Pre určité triedy problémov, ako sú videnie a spracovanie prirodzeného jazyka, zahŕňajú algoritmy, ktoré pravdepodobne fungujú, hlboké učenie.

Č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 domnení, že je zakódovaný stĺpec.

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