Programavimas

Kas yra mašininis mokymasis? Intelektas, gautas iš duomenų

Apibrėžtas mašininis mokymasis

Mašininis mokymasis yra dirbtinio intelekto šaka, apimanti metodus arba algoritmus, kurie automatiškai sukuria modelius iš duomenų. Skirtingai nuo sistemos, kuri atlieka užduotį laikydamasi aiškių taisyklių, mašininio mokymosi sistema mokosi iš patirties. Nors taisyklėmis pagrįsta sistema kiekvieną kartą užduotį atliks tuo pačiu būdu (geriau ar blogiau), mašininio mokymosi sistemos našumą galima pagerinti mokant, atskleidžiant algoritmą daugiau duomenų.

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

Mašininio mokymosi programos

Girdime apie mašininio mokymosi programas kasdien, nors ne visi jie yra nelegali sėkmė. Savaime važiuojantys automobiliai yra geras pavyzdys, kai užduotys gali būti įvairios: nuo paprastų ir sėkmingų (pagalba statant automobilį ir važiuojant greitkeliu) iki sudėtingų ir netikrų (visiškas transporto priemonės valdymas miesto aplinkoje, sukėlęs kelias mirtis).

Žaidimo mašinomis mokymasis yra labai sėkmingas šaškėms, šachmatams, šogams ir „Go“, nugalėjusiems pasaulio pasaulio čempionus. Automatinis kalbų vertimas iš esmės buvo sėkmingas, nors kai kurios kalbų poros veikia geriau nei kitos, o daugelį automatinių vertimų žmonės vis dar gali patobulinti.

Automatinis kalbėjimas į tekstą gana gerai tinka žmonėms, turintiems pagrindinius akcentus, bet ne taip gerai žmonėms, turintiems keletą ryškių regioninių ar nacionalinių akcentų; našumas priklauso nuo pardavėjų naudojamų mokymo rinkinių. Automatinė socialinės žiniasklaidos nuotaikų analizė turi pakankamai gerą sėkmės rodiklį, tikriausiai todėl, kad mokymo rinkiniai (pvz., „Amazon“ produktų įvertinimai, kurie susieja komentarą su skaitiniu balu) yra dideli ir lengvai prieinami.

Automatinis atestatų patikrinimas yra prieštaringa sritis. „Amazon“ turėjo atšaukti savo vidinę sistemą dėl mokymo imties šališkumo, dėl kurio ji sumenkino visas moterų darbo paraiškas.

Kitose šiuo metu naudojamose atrankos atrankos atrankos sistemose gali būti neobjektyvių mokymų, dėl kurių jie gali pakelti kandidatus, kurie yra „panašūs“ į dabartinius darbuotojus, būdais, kurie teisiškai neturėtų būti svarbūs (pvz., Jauni, balti, vyrai iš aukštesnio lygio anglakalbių rajonų, kurie komandinės sporto šakos greičiausiai praeina atranką). „Microsoft“ ir kitų mokslinių tyrimų pastangos nukreiptos į numanomų mašininio mokymosi šališkumų pašalinimą.

Automatinis patologijos ir radiologijos vaizdų klasifikavimas pasiekė tašką, kur jis gali padėti (bet nepakeisti) patologams ir radiologams nustatyti tam tikrų rūšių anomalijas. Tuo tarpu veido atpažinimo sistemos yra kontraversiškos, kai jos veikia gerai (dėl privatumo sumetimų) ir yra ne tokios tikslios moterims ir spalvotiems žmonėms, kaip baltos spalvos vyrams (dėl šališkumo besitreniruojančių gyventojų tarpe).

Mašininio mokymosi algoritmai

Mašininis mokymasis priklauso nuo daugybės algoritmų, kaip duomenų rinkinį paversti modeliu. Kuris algoritmas veikia geriausiai, priklauso nuo to, kokią problemą sprendžiate, turimus skaičiavimo išteklius ir duomenų pobūdį. Nesvarbu, kokį algoritmą ar algoritmus naudosite, pirmiausia turėsite išvalyti ir paruošti duomenis.

Aptarkime dažniausiai pasitaikančius kiekvienos rūšies problemos algoritmus.

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 (SGD), kuris yra iš esmės stačiausias nusileidimas, atliekamas kelis kartus iš atsitiktinių imčių pradinių taškų.

Įprasti SGD patobulinimai prideda veiksnių, kurie koreguoja gradiento kryptį pagal pagreitį, arba koreguoja mokymosi greitį, atsižvelgdami į pažangą per vieną duomenų perėjimą (vadinamą epocha arba partija) į kitą.

Neuroniniai tinklai ir gilus mokymasis

Neuroninius tinklus įkvėpė biologinės regos žievės architektūra. Gilus mokymasis yra mokymosi neuroniniuose tinkluose metodų rinkinys, apimantis daugybę „paslėptų“ sluoksnių, kad būtų galima identifikuoti ypatybes. Paslėpti sluoksniai yra tarp įvesties ir išvesties sluoksnių. Kiekvieną sluoksnį sudaro dirbtiniai neuronai, dažnai su sigmoido arba ReLU (Rectified Linear Unit) aktyvacijos funkcijomis.

„Feed-forward“ tinkle neuronai yra suskirstyti į skirtingus sluoksnius: vieną įvesties sluoksnį, bet kokį paslėptų apdorojimo sluoksnių skaičių ir vieną išvesties sluoksnį, o kiekvieno sluoksnio išėjimai 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 daryti įtaką sau tiesiogiai arba netiesiogiai per kitą sluoksnį.

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

Kaip ir visuose mašininiuose mokymuose, turite patikrinti nervinio tinklo prognozes pagal atskirą bandymų duomenų rinkinį. To nedarydami rizikuojate sukurti neuroninius tinklus, kurie tik įsimena savo įnašus, užuot išmokę būti apibendrintais prognozuotojais.

Proveržis neuroninio tinklo regėjimo srityje buvo Yanno LeCuno 1998 m. LeNet-5, septynių lygių, konvoliucinis neuroninis tinklas (CNN) atpažinti ranka rašomus skaitmenis, suskaitmenintus 32x32 pikselių vaizduose. Norint išanalizuoti didesnės raiškos vaizdus, ​​tinklui reikėtų daugiau neuronų ir daugiau sluoksnių.

Konvoliuciniai neuroniniai tinklai paprastai naudoja konvoliucinius, kaupimo, ReLU, visiškai sujungtus ir praradimo sluoksnius, kad imituotų regimąją žievę. Konvoliucinis sluoksnis iš esmės apima daugelio mažų sutampančių regionų integralus. Sujungimo sluoksnis atlieka netiesinės žemyn atrankos formą. „ReLU“ sluoksniuose, kuriuos jau minėjau anksčiau, taikoma nesočioji aktyvavimo funkcija f (x) = maks. (0, x).

Visiškai sujungtame sluoksnyje neuronai turi pilną ryšį su visais ankstesnio sluoksnio aktyvavimais. Praradimo sluoksnis apskaičiuoja, kaip tinklo mokymas baudžia nuokrypį tarp numatytų ir tikrų etikečių, klasifikavimui naudojant „Softmax“ arba kryžminio entropijos nuostolius arba regresijai taikant Euklido nuostolius.

Natūralios kalbos apdorojimas (NLP) yra dar viena svarbi gilaus mokymosi taikymo sritis. Be mašininio vertimo problemos, kurią išsprendė „Google Translate“, pagrindinės NLP užduotys apima automatinį apibendrinimą, bendrų nuorodų sprendimą, diskurso analizę, morfologinį segmentavimą, įvardijamo objekto atpažinimą, natūralios kalbos generavimą, natūralios kalbos supratimą, kalbos dalies žymėjimą, nuotaiką analizė ir kalbos atpažinimas.

Be CNN, NLP užduotys dažnai sprendžiamos pasikartojančiais neuroniniais tinklais (RNN), į kuriuos įeina „Long-Short Term Memory“ (LSTM) modelis.

Kuo daugiau sluoksnių yra giliame neuroniniame tinkle, tuo daugiau reikia skaičiuoti, norint mokyti modelį CPU. Neuroninių tinklų aparatinės įrangos greitintuvai apima GPU, TPU ir FPGA.

Sustiprinimo mokymasis

Sustiprinimo mokymasis moko ir aktorius arba agentas atsakyti į aplinka tokiu būdu, kuris kai kuriuos maksimaliai padidina vertė, paprastai bandant ir per klaidą. Tai skiriasi nuo prižiūrimo ir neprižiūrimo mokymosi, tačiau dažnai kartu su jais.

Pavyzdžiui, „DeepMind“ „AlphaGo“, norėdamas išmokti žaisti (veiksmą) „Go“ (aplinkos) žaidimą, pirmiausia išmoko imituoti žmogaus „Go“ žaidėjus iš didelio istorinių žaidimų duomenų rinkinio (mokinių mokymasis). Tada jis pagerino savo žaidimą bandymų ir klaidų būdu (mokymasis sustiprinti), žaisdamas daugybę „Go“ žaidimų prieš savarankiškus atvejus.

Robotų valdymas yra dar viena problema, kuri buvo užpulta naudojant gilaus sustiprinimo mokymosi metodus, ty mokymąsi apie sustiprinimą ir gilius neuroninius tinklus, o gilieji neuroniniai tinklai dažnai yra mokomi CNN išgauti funkcijas iš vaizdo kadrų.

Kaip naudotis mašininiu mokymusi

Kaip reikia sukurti mašininio mokymosi modelį? Pradėkite valydami ir tvarkydami duomenis, tęskite funkcijų kūrimą ir išbandykite kiekvieną prasmingą mašinų mokymosi algoritmą. Tam tikroms problemų klasėms, tokioms kaip regėjimas ir natūralios kalbos apdorojimas, tikėtini algoritmai apima gilų mokymąsi.

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ą mašininio mokymosi procese, 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. Paprastai pirmenybė teikiama vienkartiniam kodavimui, nes etikečių kodavimas kartais gali suklaidinti mašininio mokymosi algoritmą galvojant, kad užkoduotas stulpelis yra užsakytas.