Programiranje

Poglobljeno učenje v primerjavi s strojnim učenjem: Razumevanje razlik

Strojno učenje in globoko učenje sta obliki umetne inteligence. Prav tako lahko pravite, da je poglobljeno učenje posebna vrsta strojnega učenja. Strojno učenje in poglobljeno učenje se začneta s podatki o treningu in preizkusu ter modelom ter skozi postopek optimizacije, da poiščemo uteži, zaradi katerih model najbolje ustreza podatkom. Oba se lahko spopadeta s numeričnimi (regresijskimi) in neštevilskimi (klasifikacijskimi) težavami, čeprav obstaja več področij uporabe, kot sta prepoznavanje predmetov in prevajanje jezika, kjer modeli globokega učenja ponavadi ustrezajo modelom strojnega učenja.

Razloženo strojno učenje

Algoritme strojnega učenja pogosto delimo na pod nadzorom (podatki o vadbi so označeni z odgovori) in brez nadzora (morebitne oznake niso prikazane algoritmu za vadbo). Nadzorovani problemi strojnega učenja se nadalje delijo na razvrstitev (napovedovanje številčnih odgovorov, kot je verjetnost zamujenega plačila hipoteke) in regresija (napovedovanje številčnih odgovorov, na primer števila pripomočkov, ki se bodo prodali naslednji mesec v vaši trgovini na Manhattnu).

Nenadzorovano učenje se nadalje deli na združevanje v skupine (iskanje skupin podobnih predmetov, kot so tekaški copati, pohodniški čevlji in oblečni čevlji), združenje (iskanje običajnih zaporedij predmetov, kot sta kava in smetana), in zmanjšanje dimenzionalnosti (projekcija, izbira in izvleček).

Algoritmi za razvrščanje

Klasifikacijski problem je nadzorovan učni problem, ki zahteva izbiro med dvema ali več razredi, ki običajno zagotavlja verjetnost za vsak razred. Če izpustimo nevronske mreže in poglobljeno učenje, ki zahtevajo veliko višjo raven računalniških virov, so najpogostejši algoritmi Naive Bayes, drevo odločitev, logistična regresija, K-Najbližji sosedje in podporni vektorski stroj (SVM). Uporabite lahko tudi metode ansamblov (kombinacije modelov), kot so naključni gozd, druge metode vrečenja in pospeševalne metode, kot sta AdaBoost in XGBoost.

Regresijski algoritmi

Regresijski problem je nadzorovan učni problem, ki od modela zahteva, da napove številko. Najenostavnejši in najhitrejši algoritem je linearna (najmanj kvadratna) regresija, vendar se pri tem ne smete ustaviti, saj vam pogosto daje povprečen rezultat. Drugi običajni algoritmi regresijskega strojnega učenja (razen nevronskih mrež) vključujejo Naive Bayes, drevo odločitev, K-Najbližji sosedje, LVQ (Learning Vector Quantization), LARS Lasso, Elastic Net, Random Forest, AdaBoost in XGBoost. Opazili boste, da se algoritmi strojnega učenja za regresijo in klasifikacijo prekrivajo.

Algoritmi grozdenja

Problem grozdenja je nenadzorovan učni problem, ki od modela zahteva iskanje skupin podobnih podatkovnih točk. Najbolj priljubljen algoritem je K-Means Clustering; drugi vključujejo grozdenje povprečnega premika, DBSCAN (prostorsko združevanje aplikacij s hrupom na osnovi gostote), GMM (modeli Gaussovih mešanic) in HAC (hierarhično strnjeno združevanje v gruče).

Algoritmi za zmanjševanje dimenzij

Zmanjšanje dimenzionalnosti je nenadzorovan učni problem, ki od modela zahteva, da opusti ali združi spremenljivke, ki imajo majhen ali nič učinek na rezultat. To se pogosto uporablja v kombinaciji s klasifikacijo ali regresijo. Algoritmi za zmanjšanje dimenzij vključujejo odstranjevanje spremenljivk z veliko manjkajočimi vrednostmi, odstranjevanje spremenljivk z majhno varianco, drevo odločitev, naključni gozd, odstranjevanje ali kombiniranje spremenljivk z visoko korelacijo, odpravljanje povratnih lastnosti, naprej izbiro lastnosti, analizo faktorjev in PCA (analiza glavne komponente).

Metode optimizacije

Usposabljanje in evalvacija pretvorijo nadzorovane učne algoritme v modele z optimizacijo njihovih uteži parametrov, da se najde nabor vrednosti, ki najbolj ustreza resničnosti vaših podatkov. Algoritmi se pri svojih optimizatorjih pogosto zanašajo na različice najstrmejšega spusta, na primer stohastični gradientni spust, ki je v bistvu najbolj strm spust, izveden večkrat z randomiziranih izhodišč.

Skupne izboljšave stohastičnega gradientnega spusta dodajo faktorje, ki popravijo smer gradienta glede na zagon ali prilagodijo stopnjo učenja glede na napredek iz enega prehoda skozi podatke (imenovan epoha ali serija) do naslednjega.

Čiščenje podatkov za strojno učenje

Čistih podatkov v naravi ni. Da bi bili podatki uporabni za strojno učenje, jih je treba agresivno filtrirati. Na primer, želeli boste:

  1. Oglejte si podatke in izključite vse stolpce, v katerih je veliko manjkajočih podatkov.
  2. Ponovno si oglejte podatke in izberite stolpce, ki jih želite uporabiti (izbira lastnosti) za vašo napoved. To lahko spremenite med ponavljanjem.
  3. V preostalih stolpcih izključite vse vrstice, v katerih še vedno manjkajo podatki.
  4. Popravite očitne tipkarske napake in združite enakovredne odgovore. Na primer, ZDA, ZDA, ZDA in Ameriko bi bilo treba združiti v eno samo kategorijo.
  5. Izključite vrstice s podatki, ki so izven obsega. Če na primer analizirate potovanja s taksijem v New Yorku, boste želeli filtrirati vrstice s prevzemnimi ali spustnimi zemljepisnimi širinami in dolžinami, ki so zunaj mejnega polja metropolitanskega območja.

Naredite lahko še veliko več, vendar bo odvisno od zbranih podatkov. To je lahko dolgočasno, vendar če v svojem cevovodu strojnega učenja nastavite korak čiščenja podatkov, ga lahko poljubno spremenite in ponovite.

Kodiranje in normalizacija podatkov za strojno učenje

Če želite uporabiti kategorične podatke za razvrščanje strojev, morate besedilne nalepke kodirati v drug obrazec. Obstajata dve pogosti kodiranji.

Eno je kodiranje nalepk, kar pomeni, da se vsaka vrednost besedilne nalepke nadomesti s številko. Drugi pa je enodelno kodiranje, kar pomeni, da se vsaka vrednost besedilne nalepke spremeni v stolpec z binarno vrednostjo (1 ali 0). Večina okvirov strojnega učenja ima funkcije, ki opravijo pretvorbo namesto vas. Na splošno je prednostno enkratno kodiranje, saj lahko kodiranje nalepk včasih zmede algoritem strojnega učenja, tako da misli, da naj bi bil kodirani stolpec urejeni seznam.

Če želite uporabiti numerične podatke za regresijo stroja, morate običajno normalizirati podatke. V nasprotnem primeru lahko številke z večjimi območji prevladujejo nad evklidsko razdaljo vektorji funkcij, bi lahko njihove učinke povečali na račun drugih polj, optimizacija strmega spusta pa bi lahko imela težave pri konvergenci. Obstaja več načinov za normalizacijo in standardizacijo podatkov za strojno učenje, vključno z min-max normalizacijo, povprečno normalizacijo, standardizacijo in spreminjanjem dolžine enote. Ta postopek se pogosto imenuje skaliranje funkcij.

Funkcijski inženiring za strojno učenje

A funkcija je posamezna merljiva lastnost ali značilnost opaženega pojava. Pojem "značilnost" je povezan s konceptom razlagalne spremenljivke, ki se uporablja v statističnih tehnikah, kot je linearna regresija. Vektorji funkcij združujejo vse funkcije za eno vrstico v številčni vektor.

Del umetnosti izbiranja lastnosti je, da izberemo najmanjši nabor neodvisen spremenljivke, ki pojasnjujejo težavo. Če sta dve spremenljivki močno povezani, jih je treba združiti v eno samo funkcijo ali pa eno izpustiti. Včasih ljudje izvedejo analizo glavnih komponent, da pretvorijo korelirane spremenljivke v niz linearno nekoreliranih spremenljivk.

Nekatere transformacije, ki jih ljudje uporabljajo za konstruiranje novih značilnosti ali zmanjšanje dimenzionalnosti vektorjev lastnosti, so preproste. Na primer, odštej Leto rojstva iz Leto smrti in konstruirate Starost ob smrti, ki je glavna neodvisna spremenljivka za analizo življenjske dobe in smrtnosti. V drugih primerih konstrukcija značilnosti morda ni tako očitno.

Razdelitev podatkov za strojno učenje

Običajna praksa za nadzorovano strojno učenje je razdelitev nabora podatkov na podmnožice za usposabljanje, validacija, in preskus. Eden od načinov dela je, da se 80% podatkov dodeli naboru podatkov o vadbi, 10% pa vsakemu validacijskemu in testnemu naboru podatkov. (Natančna razdelitev je stvar preferenc.) Večji del vadbe se opravi glede na nabor podatkov o vadbi, napovedi pa na podlagi podatkov o validaciji na koncu vsake dobe.

Napake v naboru podatkov za preverjanje veljavnosti lahko uporabimo za določanje meril zaustavitve ali za uravnavanje hiperparametrov. Najpomembneje pa je, da vam napake v validacijskem naboru podatkov pomagajo ugotoviti, ali je model preveč ustrezal podatkom o usposabljanju.

Napovedovanje glede nabora testnih podatkov se običajno opravi na končnem modelu. Če testni nabor podatkov ni bil nikoli uporabljen za vadbo, se včasih imenuje nabor podatkov zadrževanja.

Obstaja več drugih shem za razdelitev podatkov. Ena pogosta tehnika, navzkrižno preverjanje, vključuje večkratno razdelitev celotnega nabora podatkov na nabor podatkov o vadbi in validacijski nabor podatkov. Na koncu vsake dobe se podatki premešajo in ponovno razdelijo.

Knjižnice strojnega učenja

V Pythonu sta Spark MLlib in Scikit-learn odlična izbira za knjižnice strojnega učenja. V R-ju so nekatere možnosti paketa strojnega učenja CARAT, randomForest, e1071 in KernLab. V Javi so dobre izbire Java-ML, RapidMiner in Weka.

Poglobljeno učenje razloženo

Poglobljeno učenje je oblika strojnega učenja, pri katerem ima model, ki se usposablja, več kot enega skrita plast med vhodom in izhodom. V večini razprav globoko učenje pomeni uporabo globokega nevronske mreže. Obstaja pa nekaj algoritmov, ki izvajajo globoko učenje z uporabo drugih vrst skritih plasti poleg nevronskih mrež.

Ideje za "umetne" nevronske mreže segajo v 40. leta 20. stoletja. Bistveni koncept je, da se mreža umetnih nevronov, zgrajenih iz medsebojno povezanih pragovnih stikal, lahko nauči prepoznavati vzorce na enak način kot živalski možgani in živčni sistem (vključno z mrežnico).

Backprop

Učenje se v bistvu zgodi s krepitvijo povezave med dvema nevronoma, kadar sta oba med treningom hkrati aktivna. V sodobni programski opremi za nevronske mreže gre najpogosteje za povečanje vrednosti teže za povezave med nevroni z uporabo pravila, imenovanega povratno razširjanje napake, backprop ali BP.

Nevroni v umetnih nevronskih mrežah

Kako so modelirani nevroni? Vsak ima funkcijo širjenja, ki pretvori izhode povezanih nevronov, pogosto s tehtano vsoto. Izhod funkcije razmnoževanja preide v funkcijo aktiviranja, ki se sproži, ko njen vhod preseže mejno vrednost.

Aktivacijske funkcije v nevronskih mrežah

V 40. in 50. letih so umetni nevroni uporabljali funkcijo koračne aktivacije in so bili imenovani perceptroni. Sodobne nevronske mreže lahko recimo uporabljajo perceptrone, dejansko pa imajo nemotene aktivacijske funkcije, kot so logistična ali sigmoidna funkcija, hiperbolični tangens ali usmerjena linearna enota (ReLU). ReLU je ponavadi najboljša izbira za hitro konvergenco, čeprav ima težavo, da nevroni med treningom "umrejo", če je stopnja učenja previsoka.

[Tudi na: 6 načinov, kako strojno učenje ne bo uspelo]

Izhod funkcije aktiviranja lahko preide na funkcijo izhoda za dodatno oblikovanje. Pogosto pa je izhodna funkcija funkcija identitete, kar pomeni, da se izhod aktivacijske funkcije prenese na nevrone, povezane navzdol.

Topologije nevronskih mrež

Zdaj, ko vemo o nevronih, se moramo spoznati s skupnimi topologijami nevronskih mrež. V povratnem omrežju so nevroni organizirani v ločene plasti: en vhodni sloj, n skrite plasti obdelave in en izhodni sloj. Izhodi iz vsake plasti gredo samo v naslednjo plast.

V povratnem omrežju z bližnjicami lahko nekatere povezave preskočijo eno ali več vmesnih plasti. V ponavljajočih se nevronskih mrežah lahko nevroni vplivajo nase, neposredno ali posredno prek naslednje plasti.

Usposabljanje nevronskih mrež

Nadzorovano učenje nevronske mreže poteka tako kot katero koli drugo strojno učenje: omrežju predstavite skupine podatkov o vadbi, primerjate omrežni izhod z želenim izhodom, ustvarite vektor napake in na omrežju uveljavite popravke . Paketi podatkov o vadbi, ki se vodijo skupaj pred uporabo popravkov, se imenujejo epohe.

Za tiste, ki jih zanimajo podrobnosti, povratno širjenje uporablja gradient funkcije napake (ali stroškov) glede na uteži in pristranskosti modela, da odkrije pravilno smer za zmanjšanje napake. Dve stvari nadzorujeta uporabo popravkov: algoritem za optimizacijo in spremenljivka hitrosti učenja. Spremenljivka hitrosti učenja mora biti običajno majhna, da se zagotovi konvergenca in prepreči povzročanje mrtvih nevronov ReLU.

Optimizatorji za nevronske mreže

Optimizatorji za nevronske mreže običajno uporabljajo neko obliko algoritma gradientnega spuščanja za pogon povratnega širjenja, pogosto z mehanizmom, ki preprečuje, da bi se zataknili v lokalnih minimumih, na primer optimizacijo naključno izbranih mini serij (Stohastični gradientni spust) in uporabo zagon popravki gradienta. Nekateri algoritmi za optimizacijo prilagodijo tudi stopnjo učenja parametrov modela, tako da si ogledajo zgodovino gradientov (AdaGrad, RMSProp in Adam).

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