Programmēšana

Dziļa mācīšanās pret mašīnmācīšanos: izprot atšķirības

Mašīnmācība un dziļa mācīšanās ir mākslīgā intelekta formas. Jūs varat arī pareizi teikt, ka dziļa mācīšanās ir īpašs mašīnmācīšanās veids. Gan mašīnmācīšanās, gan padziļināta mācīšanās sākas ar apmācību un testu datiem un modeli, kā arī veic optimizācijas procesu, lai atrastu svaru, kas modelim vislabāk atbilst datiem. Abi var tikt galā ar skaitliskām (regresijas) un ar skaitliskām (klasifikācijas) problēmām, lai gan ir vairākas pielietojuma jomas, piemēram, objektu atpazīšana un valodas tulkošana, kur dziļi mācīšanās modeļi mēdz radīt labākas piemērotības nekā mašīnmācīšanās modeļi.

Mašīnmācība paskaidrota

Mašīnmācīšanās algoritmus bieži iedala uzraudzībā (apmācības dati ir apzīmēti ar atbildēm) un bez uzraudzības (visas etiķetes, kas var pastāvēt, netiek parādītas apmācības algoritmā). Pārvaldītās mašīnmācīšanās problēmas tiek sīkāk iedalītas klasifikācija (paredzot neskaitāmas atbildes, piemēram, nokavēta hipotēkas maksājuma varbūtību) un regresija (paredzot skaitliskas atbildes, piemēram, to logrīku skaitu, kas nākamajā mēnesī tiks pārdoti jūsu Manhetenas veikalā).

Nepieskatīta mācīšanās tiek tālāk sadalīta kopu veidošana (atrast līdzīgu priekšmetu grupas, piemēram, skriešanas apavus, staigāšanas apavus un kleitu apavus), asociācija (atrast kopīgas priekšmetu secības, piemēram, kafiju un krējumu) un izmēru samazināšana (projekcija, objektu izvēle un iezīmju iegūšana).

Klasifikācijas algoritmi

Klasifikācijas problēma ir uzraudzīta mācīšanās problēma, kas prasa izvēli starp divām vai vairākām klasēm, parasti nodrošinot katras klases varbūtības. Izņemot neironu tīklus un dziļu mācīšanos, kam nepieciešami daudz augstāki skaitļošanas resursu līmeņi, visbiežāk izmantotie algoritmi ir Naive Bayes, Lēmumu koks, Loģistiskā regresija, K-tuvākie kaimiņi un Support Vector Machine (SVM). Varat arī izmantot ansambļa metodes (modeļu kombinācijas), piemēram, Random Forest, citas Bagging metodes un veicināšanas metodes, piemēram, AdaBoost un XGBoost.

Regresijas algoritmi

Regresijas problēma ir uzraudzīta mācīšanās problēma, kas prasa modelim paredzēt skaitli. Vienkāršākais un ātrākais algoritms ir lineārā (vismazāko kvadrātu) regresija, taču ar to nevajadzētu apstāties, jo tas bieži dod viduvēju rezultātu. Citi izplatīti mašīnmācīšanās regresijas algoritmi (bez neironu tīkliem) ir Naivie Beiji, Lēmumu koks, K-tuvākie kaimiņi, LVQ (Learning Vector Quantization), LARS Lasso, Elastic Net, Random Forest, AdaBoost un XGBoost. Jūs ievērosiet, ka regresijas un klasifikācijas mašīnmācīšanās algoritmi nedaudz pārklājas.

Klasterizācijas algoritmi

Klasteru problēma ir nepieskatīta mācību problēma, kas prasa modelim atrast līdzīgu datu punktu grupas. Vispopulārākais algoritms ir K-Means Clustering; citi ietver: Mean-Shift Clustering, DBSCAN (uz blīvuma balstītu lietojumprogrammu telpisko klasteru izveidi ar troksni), GMM (Gausa maisījuma modeļi) un HAC (Hierarchical Agglomerative Clustering).

Dimensiju samazināšanas algoritmi

Dimensiju samazināšana ir nepieskatīta mācīšanās problēma, kas liek modelim nomest vai apvienot mainīgos, kas maz vai vispār neietekmē rezultātu. To bieži lieto kopā ar klasifikāciju vai regresiju. Dimensiju samazināšanas algoritmi ietver mainīgo ar daudzām trūkstošām vērtībām noņemšanu, mainīgo ar mazu dispersiju noņemšanu, Lēmumu koks, Nejaušs mežs, mainīgo noņemšanu vai apvienošanu ar augstu korelāciju, Atpakaļ Feature Elimination, Forward Feature Selection, Factor Analysis un PCA (Principal Component Analysis).

Optimizācijas metodes

Apmācība un novērtēšana pārrauga mācību algoritmus pārvērš modeļos, optimizējot to parametru svaru, lai atrastu vērtību kopu, kas vislabāk atbilst jūsu datu patiesībai. Algoritmi to optimizētājiem bieži paļaujas uz visstraujākās nolaišanās variantiem, piemēram, uz stohastisko gradienta nolaišanos, kas būtībā ir visstingrākais nobrauciens, kas veikts vairākas reizes no nejaušinātām sākumpunktiem.

Vispārēji stohastiskā gradienta nolaišanās precizējumi pievieno faktorus, kas koriģē gradienta virzienu, pamatojoties uz impulsu, vai koriģē mācīšanās ātrumu, pamatojoties uz progresu, veicot vienu datu caurlaidi (sauktu par laikmets vai partiju) uz nākamo.

Datu tīrīšana mašīnmācībai

Savvaļā nav tādas lietas kā tīri dati. Lai dati būtu noderīgi mašīnmācībai, tie ir agresīvi jāfiltrē. Piemēram, jūs vēlaties:

  1. Apskatiet datus un izslēdziet visas kolonnas, kurās trūkst daudz datu.
  2. Apskatiet datus vēlreiz un izvēlieties kolonnas, kuras vēlaties izmantot (funkciju izvēle) jūsu prognozei. To var atkārtot atkārtojot.
  3. Izslēdziet visas rindas, kurās atlikušajās kolonnās joprojām trūkst datu.
  4. Labojiet acīmredzamas drukas kļūdas un apvienojiet līdzvērtīgas atbildes. Piemēram, ASV, ASV, ASV un Amerika būtu jāapvieno vienā kategorijā.
  5. Izslēdziet rindas, kuru dati ir ārpus diapazona. Piemēram, ja analizējat taksometru braucienus Ņujorkā, vēlēsities filtrēt rindas ar pikapu vai izlaišanas platumu un garumu, kas atrodas ārpus lielpilsētas rajona.

Jūs varat darīt daudz vairāk, taču tas būs atkarīgs no savāktajiem datiem. Tas var būt garlaicīgs, taču, ja mašīnmācības cauruļvadā esat iestatījis datu tīrīšanas soli, to varat mainīt un atkārtot pēc vēlēšanās.

Datu kodēšana un normalizēšana mašīnmācībai

Lai mašīnu klasifikācijai izmantotu kategoriskus datus, teksta etiķetes jākodē citā formā. Ir divi kopīgi kodējumi.

Viens ir etiķetes kodējums, kas nozīmē, ka katra teksta etiķetes vērtība tiek aizstāta ar skaitli. Otrs ir vienas karstās kodēšana, kas nozīmē, ka katra teksta etiķetes vērtība tiek pārvērsta kolonnā ar bināro vērtību (1 vai 0). Lielākajai daļai mašīnmācīšanās ietvaru ir funkcijas, kas pārveido jūsu vietā. Parasti priekšroka tiek dota vienreizējai kodēšanai, jo etiķešu kodēšana dažkārt var sajaukt mašīnmācīšanās algoritmu domājot, ka kodētajai kolonnai ir jābūt sakārtotam sarakstam.

Lai izmantotu skaitliskos datus mašīnas regresijai, parasti dati ir jā normalizē. Pretējā gadījumā skaitļi ar lielākiem diapazoniem varētu būt tendence dominēt Eiklida attālumā starp pazīmju vektori, to iedarbību varētu palielināt uz citu lauku rēķina, un visstingrākajai nolaišanās optimizācijai varētu būt grūtības saplūst. Ir vairāki veidi, kā normalizēt un standartizēt datus mašīnmācībai, tostarp min-max normalizācija, vidējā normalizācija, standartizācija un mērogošana pēc vienības garuma. Šo procesu bieži sauc funkciju mērogošana.

Funkciju inženierija mašīnmācībai

A iezīme ir novērojama fenomena individuāls izmērāms īpašums vai raksturojums. “Pazīmes” jēdziens ir saistīts ar skaidrojošā mainīgā jēdzienu, ko izmanto tādās statistikas metodēs kā lineārā regresija. Funkciju vektori apvieno visas vienas rindas pazīmes skaitliskā vektorā.

Daļa no iezīmju izvēles mākslas ir izvēlēties minimālo komplektu neatkarīgs mainīgie, kas izskaidro problēmu. Ja divi mainīgie ir ļoti korelēti, vai nu tie jāapvieno vienā pazīmē, vai arī viens ir jānomet. Dažreiz cilvēki veic galveno komponentu analīzi, lai korelētos mainīgos pārveidotu par lineāri nekorrelētu mainīgo kopumu.

Dažas no transformācijām, kuras cilvēki izmanto, lai izveidotu jaunas funkcijas vai samazinātu iezīmju vektoru dimensiju, ir vienkāršas. Piemēram, atņemt Dzimšanas gads no Nāves gads un jūs konstruējat Vecums pie nāves, kas ir galvenais neatkarīgais mainīgais mūža un mirstības analīzei. Citos gadījumos funkciju uzbūve var nebūt tik acīmredzama.

Datu sadalīšana mašīnmācībai

Parasti uzraudzīta mašīnmācīšanās ir datu kopas sadalīšana apakšgrupās apmācība, apstiprināšana, un pārbaude. Viens no darba veidiem ir 80% datu piešķiršana apmācības datu kopai un 10% katra validācijas un testa datu kopām. (Precīzs sadalījums ir priekšroka.) Apmācības lielāko daļu veic, salīdzinot ar apmācību datu kopu, un prognozēšana tiek veikta pēc validācijas datiem, kas ir iestatīti katra laikmeta beigās.

Validācijas datu kopas kļūdas var izmantot, lai identificētu apstāšanās kritērijus vai virzītu hiperparametru iestatīšanu. Vissvarīgākais ir tas, ka kļūdas validācijas datu kopā var palīdzēt jums uzzināt, vai modelis ir pārspējis apmācības datus.

Prognozēšana attiecībā pret testa datu kopu parasti tiek veikta pēc galīgā modeļa. Ja testa datu kopa nekad netika izmantota apmācībai, to dažkārt sauc par noturēšanas datu kopu.

Datu sadalīšanai ir vairākas citas shēmas. Viena izplatīta tehnika, savstarpēja validācija, ietver atkārtotu pilnas datu kopas sadalīšanu mācību datu kopā un validācijas datu kopā. Katra laikmeta beigās dati atkal tiek sajaukti un sadalīti.

Mašīnmācīšanās bibliotēkas

Programmā Python Spark MLlib un Scikit-learn ir lieliska izvēle mašīnmācīšanās bibliotēkām. R, dažas mašīnmācīšanās paketes iespējas ir CARAT, randomForest, e1071 un KernLab. Java labi izvēlas Java-ML, RapidMiner un Weka.

Dziļa mācīšanās paskaidrota

Dziļa mācīšanās ir mašīnmācīšanās forma, kurā apmācāmajam modelim ir vairāk nekā viens slēptais slānis starp ieeju un izeju. Lielākajā daļā diskusiju dziļa mācīšanās nozīmē dziļu izmantošanu neironu tīkli. Tomēr ir daži algoritmi, kas dziļu mācīšanos īsteno, izmantojot neironu tīklus, izmantojot cita veida slēptos slāņus.

Idejas par “mākslīgiem” neironu tīkliem meklējamas 1940. gados. Būtiskais jēdziens ir tāds, ka mākslīgo neironu tīkls, kas izveidots no savstarpēji savienotiem sliekšņa slēdžiem, var iemācīties atpazīt modeļus tāpat kā dzīvnieku smadzenes un nervu sistēma (ieskaitot tīkleni).

Atbalsts

Mācīšanās notiek galvenokārt, stiprinot saikni starp diviem neironiem, kad abi treniņa laikā darbojas vienlaikus. Mūsdienu neironu tīkla programmatūrā tas visbiežāk ir saistīts ar neironu savienojumu svara vērtību palielināšanu, izmantojot likumu, ko sauc atpakaļ kļūdu izplatīšanās, backprop vai BP.

Neironi mākslīgos neironu tīklos

Kā tiek modelēti neironi? Katram no tiem ir pavairošanas funkcija, kas pārveido savienoto neironu izvadi, bieži vien ar svērto summu. Pavairošanas funkcijas izeja pāriet uz aktivizācijas funkciju, kas tiek aktivizēta, kad tās ievade pārsniedz sliekšņa vērtību.

Aktivizācijas funkcijas neironu tīklos

1940. un 50. gados mākslīgie neironi izmantoja pakāpju aktivācijas funkciju un tika izsaukti perceptrons. Mūsdienu neironu tīkli var saki viņi izmanto perceptronus, bet faktiski tiem ir vienmērīgas aktivizācijas funkcijas, piemēram, loģistikas vai sigmoīdā funkcija, hiperboliskā pieskare vai labotā lineārā vienība (ReLU). ReLU parasti ir labākā izvēle ātrai konverģencei, lai gan mācību laikā neironi “mirst” apmācības laikā, ja mācību līmenis ir iestatīts pārāk augsts.

[Arī par: 6 veidiem, kā padarīt mašīnmācīšanos neveiksmīgu]

Aktivizācijas funkcijas izeja var pāriet uz izvades funkciju papildu veidošanai. Tomēr bieži vien izejas funkcija ir identitātes funkcija, tas nozīmē, ka aktivācijas funkcijas izeja tiek nodota pakārtotajiem savienotajiem neironiem.

Neironu tīkla topoloģijas

Tagad, kad mēs zinām par neironiem, mums jāapgūst kopējās nervu tīkla topoloģijas. Pārraides tīklā neironi tiek sakārtoti atsevišķos slāņos: vienā ievades slānī, n slēptie apstrādes slāņi un viens izvades slānis. Katra slāņa izejas iet tikai uz nākamo slāni.

Pārraides tīklā ar īsceļu savienojumiem daži savienojumi var pāriet pāri vienam vai vairākiem starpslāņiem. Atkārtotos neironu tīklos neironi var tieši vai netieši ietekmēt sevi caur nākamo slāni.

Neironu tīklu apmācība

Neironu tīkla uzraudzīta mācīšanās tiek veikta tāpat kā jebkura cita mašīnmācīšanās: jūs prezentējat tīklu ar apmācības datu grupām, salīdziniet tīkla izvadi ar vēlamo izeju, ģenerējat kļūdu vektoru un koriģējat tīklu, pamatojoties uz kļūdu vektoru . Apmācību datu partijas, kas tiek palaistas kopā pirms korekciju piemērošanas, sauc par laikmetiem.

Tiem, kurus interesē detaļas, aizmugures izplatīšana izmanto kļūdas (vai izmaksu) funkcijas gradientu attiecībā pret modeļa svaru un aizspriedumiem, lai atklātu pareizo virzienu, lai samazinātu kļūdu. Korekciju piemērošanu kontrolē divas lietas: optimizācijas algoritms un mācīšanās ātruma mainīgais. Mācīšanās ātruma mainīgajam parasti jābūt mazam, lai garantētu konverģenci un izvairītos no mirušu ReLU neironu radīšanas.

Neironu tīklu optimizētāji

Neironu tīklu optimizētāji, lai virzītu muguras izplatīšanos, parasti izmanto kādu no gradienta nolaišanās algoritmiem, bieži vien ar mehānismu, kas palīdz izvairīties no iestrēgšanas vietējos minimumos, piemēram, nejauši izvēlētu mini-partiju (Stohastiskā gradienta nolaišanās) optimizēšana impulss gradienta labojumi. Daži optimizācijas algoritmi arī pielāgo modeļa parametru mācīšanās ātrumu, aplūkojot gradienta vēsturi (AdaGrad, RMSProp un Adam).