Programavimas

Gilus mokymasis ir mašininis mokymasis: supraskite skirtumus

Mašininis mokymasis ir gilus mokymasis yra dirbtinio intelekto formos. Taip pat galite teisingai pasakyti, kad gilus mokymasis yra specifinė mašininio mokymosi rūšis. Tiek mašininis mokymasis, tiek giluminis mokymasis prasideda nuo mokymų ir testų duomenų bei modelio ir atliekamas optimizavimo procesas, kad surastų svorius, kurie geriausiai atitinka modelio duomenis. Abu jie gali spręsti skaitines (regresijos) ir ne skaitmenines (klasifikavimo) problemas, nors yra keletas taikymo sričių, tokių kaip objektų atpažinimas ir kalbų vertimas, kur gilaus mokymosi modeliai dažniausiai tinka geriau nei mašininio mokymosi modeliai.

Mašininis mokymasis paaiškintas

Mašininio mokymosi algoritmai dažnai skirstomi į prižiūrimi (mokymo duomenys pažymėti atsakymais) ir neprižiūrimas (visos etiketės, kurios gali būti, nėra parodytos mokymo algoritme). Prižiūrimos mašininio mokymosi problemos dar skirstomos į klasifikacija (numatant ne skaitmeninius atsakymus, pvz., praleisto hipotekos mokėjimo tikimybę) ir regresija (nuspėti skaitinius atsakymus, pvz., valdiklių, kurie bus parduodami kitą mėnesį jūsų Manheteno parduotuvėje, skaičių).

Neprižiūrimas mokymasis dar skirstomas į grupavimas (rasti panašių daiktų grupes, tokias kaip bėgimo bateliai, vaikščiojimo batai ir suknelių batai), asociacija (rasti daiktų, pvz., kavos ir grietinėlės, sekas) ir matmenų mažinimas (projekcija, funkcijų pasirinkimas ir funkcijų išskyrimas).

Klasifikavimo algoritmai

Klasifikavimo problema yra prižiūrima mokymosi problema, dėl kurios reikia pasirinkti tarp dviejų ar daugiau klasių, paprastai pateikiant kiekvienos klasės tikimybę. Atmetus neuroninius tinklus ir gilų mokymąsi, kuriems reikalingi daug didesni skaičiavimo ištekliai, dažniausiai naudojami naivieji Bayes, sprendimų medis, logistinė regresija, K-artimiausi kaimynai ir palaikymo vektorių mašina (SVM). Taip pat galite naudoti ansamblio metodus (modelių derinius), tokius kaip „Random Forest“, kitus „Bagging“ metodus ir „boosting“ metodus, tokius kaip „AdaBoost“ ir „XGBoost“.

Regresijos algoritmai

Regresijos problema yra prižiūrima mokymosi problema, kuri reikalauja modelio numatyti skaičių. Paprasčiausias ir greičiausias algoritmas yra tiesinė (mažiausiai kvadratų) regresija, tačiau jūs neturėtumėte sustoti, nes tai dažnai duoda vidutinį rezultatą. Kiti įprasti mašininio mokymosi regresijos algoritmai (trūksta nervinių tinklų) yra Naive Bayes, Sprendimų medis, K-artimiausi kaimynai, LVQ (Learning Vector Quantization), LARS Lasso, Elastic Net, Random Forest, AdaBoost ir XGBoost. Pastebėsite, kad yra tam tikrų regresijos ir klasifikavimo mašininio mokymosi algoritmų sutapimų.

Grupavimo algoritmai

Grupavimo problema yra neprižiūrima mokymosi problema, dėl kurios modelis reikalauja surasti panašių duomenų taškų grupes. Populiariausias algoritmas yra „K-Means Clustering“; kiti apima „Mean-Shift Clustering“, DBSCAN („Density-Based Spatial Clustering of Applications with Noise“), GMM (Gauso mišinio modeliai) ir HAC („Hierarchical Agglomerative Clustering“).

Matmenų mažinimo algoritmai

Dimensijų mažinimas yra neprižiūrima mokymosi problema, dėl kurios modelis reikalauja atsisakyti ar sujungti kintamuosius, kurie mažai arba visai neveikia rezultato. Tai dažnai naudojama kartu su klasifikacija ar regresija. Matmenų mažinimo algoritmai apima kintamųjų su daugybe trūkstamų verčių pašalinimą, mažo kintamumo kintamųjų, sprendimų medžio, atsitiktinio miško, kintamųjų su aukšta koreliacija pašalinimą ar sujungimą, funkcijų atgalinį pašalinimą, pirmyn funkcijų pasirinkimą, veiksnių analizę ir PCA (pagrindinių komponentų analizė).

Optimizavimo metodai

Mokymai ir vertinimas paverčia prižiūrimus mokymosi algoritmus modeliais, optimizuodami jų parametrų svorį, kad surastų verčių rinkinį, kuris geriausiai atitiktų jūsų duomenų teisingumą. Algoritmai savo optimizatoriams dažnai remiasi stačiausio nusileidimo variantais, pavyzdžiui, stochastiniu gradientiniu nusileidimu, kuris iš esmės yra stačiausias nusileidimas, atliekamas kelis kartus iš atsitiktinių imčių.

Įprasti stochastinio gradiento nusileidimo patobulinimai prideda veiksnių, kurie koreguoja gradiento kryptį, atsižvelgdami į impulsą, arba koreguoja mokymosi greitį, atsižvelgiant į pažangą, atliktą per vieną kartą per duomenis epocha arba partija) į kitą.

Duomenų valymas mašininiam mokymuisi

Gamtoje nėra švarių duomenų. Kad duomenys būtų naudingi mokymuisi mašinoje, jie turi būti agresyviai filtruojami. Pvz., Norėsite:

  1. Peržiūrėkite duomenis ir išskirkite stulpelius, kuriuose trūksta daug duomenų.
  2. Dar kartą peržiūrėkite duomenis ir pasirinkite norimus naudoti stulpelius (funkcijų pasirinkimas) jūsų prognozei. Tai, ką kartosite, galbūt norėsite pakeisti.
  3. Išskirkite visas eilutes, kuriose vis dar trūksta duomenų likusiuose stulpeliuose.
  4. Ištaisykite akivaizdžias klaidas ir sujunkite lygiaverčius atsakymus. Pavyzdžiui, JAV, JAV, JAV ir Amerika turėtų būti sujungtos į vieną kategoriją.
  5. Išskirkite eilutes, kurių duomenys yra už diapazono ribų. Pavyzdžiui, jei analizuojate keliones taksi Niujorke, norėsite išfiltruoti eiles su paėmimo ar atsisakymo platumomis ir ilgumomis, esančiomis už metropolinės zonos ribų.

Galite padaryti daug daugiau, bet tai priklausys nuo surinktų duomenų. Tai gali būti varginantis, tačiau jei nustatysite duomenų valymo veiksmą savo mašininio mokymosi vamzdyne, galėsite jį modifikuoti ir pakartoti savo nuožiūra.

Duomenų kodavimas ir normalizavimas mokymuisi mašinoje

Norėdami klasikinius duomenis naudoti mašinų klasifikacijai, turite užkoduoti teksto etiketes į kitą formą. Yra du įprasti kodavimai.

Vienas yra etikečių kodavimas, o tai reiškia, kad kiekviena teksto etiketės vertė yra pakeista skaičiumi. Kitas yra vienkartinis kodavimas, o tai reiškia, kad kiekviena teksto etiketės vertė yra paversta stulpeliu, kuriame yra dvejetainė reikšmė (1 arba 0). Daugelis mašininio mokymosi sistemų turi funkcijas, kurios konversiją atlieka už jus. Apskritai pirmenybė teikiama vienkartiniam kodavimui, nes etikečių kodavimas kartais gali suklaidinti mašininio mokymosi algoritmą galvojant, kad užkoduotas stulpelis turėtų būti sutvarkytas sąrašas.

Norėdami naudoti skaitinius duomenis mašinos regresijai, paprastai turite normalizuoti duomenis. Priešingu atveju skaičiai su didesniais diapazonais gali dominuoti tarp euklidinio atstumo požymių vektoriai, jų poveikį būtų galima padidinti kitų laukų sąskaita, o stačiausią nusileidimo optimizavimą gali būti sunku sujungti. Yra keletas būdų, kaip normalizuoti ir standartizuoti mašininio mokymosi duomenis, įskaitant min-max normalizavimą, vidutinį normalizavimą, standartizavimą ir mastelio keitimą pagal vieneto ilgį. Šis procesas dažnai vadinamas funkcijų mastelis.

Funkcijų inžinerija mašininiam mokymuisi

A funkcija yra individuali išmatuojama stebimo reiškinio savybė ar charakteristika. „Ypatybės“ sąvoka yra susijusi su aiškinamojo kintamojo sąvoka, kuri naudojama statistikos metoduose, pavyzdžiui, tiesinėje regresijoje. Funkcijų vektoriai sujungia visas vienos eilutės ypatybes į skaitinį vektorių.

Dalis meno pasirinkimo funkcijų yra pasirinkti minimalų rinkinį nepriklausomas kintamieji, paaiškinantys problemą. Jei du kintamieji yra labai susiję, juos reikia arba sujungti į vieną požymį, arba vieną atsisakyti. Kartais žmonės atlieka pagrindinio komponento analizę, kad koreliuojančius kintamuosius paverstų tiesiškai nekoreliuojamų kintamųjų rinkiniu.

Kai kurios transformacijos, kurias žmonės naudoja kurdami naujas ypatybes arba mažindami ypatybių vektorių matmenis, yra paprasti. Pavyzdžiui, atimkite Gimimo metai nuo Mirties metai ir tu konstruoji Amžius mirties metu, kuris yra pagrindinis nepriklausomas kintamasis viso gyvenimo ir mirtingumo analizei. Kitais atvejais funkcijų konstrukcija gali būti ne taip akivaizdu.

Duomenų skaidymas mašininiam mokymuisi

Įprasta prižiūrimo mašininio mokymosi praktika yra duomenų rinkinio padalijimas į mokymai, patvirtinimasir testas. Vienas iš darbo būdų yra priskirti 80% duomenų mokymo duomenų rinkiniui, o po 10% - patvirtinimo ir testų duomenų rinkiniams. (Tikslus padalijimas yra pirmenybės klausimas.) Didžioji dalis mokymų atliekama atsižvelgiant į mokymo duomenų rinkinį, o prognozavimas atliekamas pagal patvirtinimo duomenis, pateiktus kiekvienos epochos pabaigoje.

Patvirtinimo duomenų rinkinio klaidos gali būti naudojamos sustabdymo kriterijams nustatyti arba hiperparametrų derinimui valdyti. Svarbiausia, kad patvirtinimo duomenų rinkinio klaidos gali padėti sužinoti, ar modelis per daug pritaikė mokymo duomenis.

Numatymas pagal bandymo duomenų rinkinį paprastai atliekamas pagal galutinį modelį. Jei testo duomenų rinkinys niekada nebuvo naudojamas treniruotėms, jis kartais vadinamas laikymo duomenų rinkiniu.

Yra kelios kitos duomenų padalijimo schemos. Viena įprasta technika, kryžminis patvirtinimasapima pakartotinį visų duomenų rinkinio padalijimą į mokymo duomenų rinkinį ir patvirtinimo duomenų rinkinį. Kiekvienos epochos pabaigoje duomenys vėl sumaišomi ir padalijami.

Mašininio mokymosi bibliotekos

„Python“ sistemoje „Spark MLlib“ ir „Scikit-learn“ yra puikus pasirinkimas mašininio mokymosi bibliotekoms. R, kai kurios mašininio mokymosi paketo parinktys yra CARAT, randomForest, e1071 ir KernLab. „Java“ tinkami pasirinkimai yra „Java-ML“, „RapidMiner“ ir „Weka“.

Gilus mokymasis paaiškintas

Gilus mokymasis yra mašininio mokymosi forma, kai mokomas modelis turi daugiau nei vieną paslėptas sluoksnis tarp įvesties ir išvesties. Daugumoje diskusijų gilus mokymasis reiškia giliųjų mokymąsi neuroniniai tinklai. Tačiau yra keletas algoritmų, kurie įgyvendina gilų mokymąsi, naudodami kitokius paslėptus sluoksnius, ne tik nervinius tinklus.

„Dirbtinių“ neuroninių tinklų idėjos siekia 1940 m. Esminė samprata yra ta, kad dirbtinių neuronų tinklas, pastatytas iš tarpusavyje susijusių slenksčio jungiklių, gali išmokti atpažinti modelius taip pat, kaip tai daro gyvūno smegenys ir nervų sistema (įskaitant tinklainę).

„Backprop“

Mokymasis vyksta iš esmės stiprinant ryšį tarp dviejų neuronų, kai treniruotės metu abu aktyvūs vienu metu. Šiuolaikinėje neuroninių tinklų programinėje įrangoje dažniausiai padidėja ryšių tarp neuronų svorio vertės, naudojant vadinamąją taisyklę klaidos sklidimas atgal, atrama arba BP.

Neuronai dirbtiniuose neuroniniuose tinkluose

Kaip modeliuojami neuronai? Kiekvienas turi sklidimo funkciją, kuri transformuoja sujungtų neuronų išvestis, dažnai su svertine suma. Sklidimo funkcijos išvestis pereina į aktyvinimo funkciją, kuri suveikia, kai jos įvestis viršija ribinę vertę.

Aktyvinimo funkcijos nerviniuose tinkluose

1940-aisiais ir 50-aisiais dirbtiniai neuronai naudojo pakopinio aktyvavimo funkciją ir buvo vadinami perceptronai. Šiuolaikiniai neuroniniai tinklai gali sakyk jie naudoja perceptronus, tačiau iš tikrųjų turi sklandaus aktyvavimo funkcijas, tokias kaip logistinė ar sigmoidinė funkcija, hiperbolinė liestinė arba ištaisytasis tiesinis vienetas (ReLU). „ReLU“ paprastai yra geriausias pasirinkimas greitai konvergencijai, nors treniruočių metu „miršta“ neuronai, jei mokymosi lygis nustatytas per aukštai.

[Taip pat apie 6 būdus, kaip padaryti mašininį mokymąsi nesėkmingą]

Aktyvinimo funkcijos išvestis gali būti perduodama išvesties funkcijai papildomai formuoti. Tačiau dažnai išvesties funkcija yra tapatybės funkcija, o tai reiškia, kad aktyvavimo funkcijos išvestis perduodama pasroviui prijungtiems neuronams.

Neuroninio tinklo topologijos

Dabar, kai žinome apie neuronus, turime sužinoti apie įprastas nervų tinklo topologijas. „Feed-forward“ tinkle neuronai yra suskirstyti į skirtingus sluoksnius: vieną įvesties sluoksnį, n paslėpti apdorojimo sluoksniai ir vienas išvesties sluoksnis. Kiekvieno sluoksnio išvestys eina tik į kitą sluoksnį.

Persiuntimo tinkle su sparčiuoju ryšiu kai kurie ryšiai gali pereiti per vieną ar daugiau tarpinių sluoksnių. Pasikartojančiuose neuroniniuose tinkluose neuronai gali tiesiogiai veikti save arba netiesiogiai per kitą sluoksnį.

Neuroninių tinklų mokymas

Prižiūrimas neuroninio tinklo mokymasis atliekamas kaip ir bet kuris kitas mašininis mokymasis: pateikiate tinklą su mokymo duomenų grupėmis, palyginate tinklo išvestį su norima išvestimi, sugeneruojate klaidų vektorių ir pritaikote tinklui klaidų vektoriaus pataisas. . Treniruočių duomenų partijos, kurios yra paleidžiamos kartu prieš taikant pataisas, vadinamos epochomis.

Tiems, kurie domisi detalėmis, nugaros skleidimas naudoja klaidos (arba kainos) funkcijos gradientą, atsižvelgiant į modelio svorį ir šališkumą, kad būtų galima rasti teisingą kryptį, kad būtų kuo mažiau klaidos. Korekcijų taikymą kontroliuoja du dalykai: optimizavimo algoritmas ir mokymosi greičio kintamasis. Mokymosi greičio kintamasis paprastai turi būti mažas, kad būtų užtikrinta konvergencija ir išvengta negyvų ReLU neuronų.

Neuroninių tinklų optimizatoriai

Neuroninių tinklų optimizatoriai paprastai naudoja tam tikros formos gradiento nusileidimo algoritmą, kad paskatintų nugaros sklidimą, dažnai su mechanizmu, kuris padeda išvengti įstrigimo vietiniuose minimumuose, pavyzdžiui, atsitiktinai parinktų mini partijų optimizavimas (stochastinis gradiento nusileidimas) ir taikymas pagreitį gradiento pataisymai. Kai kurie optimizavimo algoritmai taip pat pritaiko modelio parametrų mokymosi rodiklius, žiūrėdami į gradiento istoriją (AdaGrad, RMSProp ir Adam).

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