Dubinsko učenje nasuprot strojnom učenju: shvatite razlike

Strojno učenje i duboko učenje oba su oblika umjetne inteligencije. Također možete točno reći da je duboko učenje specifična vrsta strojnog učenja. Strojno učenje i duboko učenje započinju s podacima o obuci i testovima te modelom i prolaze kroz postupak optimizacije kako bi pronašli težine koje model čine da najbolje odgovara podacima. Oboje se mogu nositi s numeričkim (regresijskim) i ne-numeričkim (klasifikacijskim) problemima, iako postoji nekoliko područja primjene, poput prepoznavanja predmeta i prevođenja jezika, gdje modeli dubokog učenja imaju tendenciju da bolje odgovaraju od modela strojnog učenja.

Objašnjeno strojno učenje

Algoritmi strojnog učenja često se dijele na nadgledane (podaci o vježbanju označeni su odgovorima) i nenadgledani (sve oznake koje mogu postojati ne prikazuju se algoritmu vježbanja). Nadzirani problemi strojnog učenja nadalje se dijele na klasifikaciju (predviđanje numeričkih odgovora, poput vjerojatnosti propuštene hipoteke) i regresiju (predviđanje numeričkih odgovora, poput broja widgeta koji će se sljedeći mjesec prodati u vašoj trgovini na Manhattanu).

Učenje bez nadzora nadalje se dijeli na grupiranje (pronalaženje skupina sličnih predmeta, poput tenisica za trčanje, cipele za hodanje i cipele za odijevanje), udruživanje (pronalaženje zajedničkih slijedova predmeta, poput kave i vrhnja) i smanjenje dimenzionalnosti (projekcija, odabir značajki i izdvajanje značajki).

Algoritmi klasifikacije

Klasifikacijski problem nadzirani je problem učenja koji traži izbor između dva ili više razreda, obično pružajući vjerojatnosti za svaki razred. Ako izostavimo neuronske mreže i duboko učenje, koji zahtijevaju mnogo višu razinu računalnih resursa, najčešći algoritmi su Naive Bayes, Stablo odlučivanja, Logistička regresija, K-Neighbor Neighbours i Support Vector Machine (SVM). Također možete koristiti metode ansambla (kombinacije modela), kao što su Random Forest, druge metode dodavanja vreća i metode pojačavanja kao što su AdaBoost i XGBoost.

Algoritmi regresije

Regresijski problem nadzirani je problem učenja koji od modela traži predviđanje broja. Najjednostavniji i najbrži algoritam je linearna (najmanje kvadrata) regresija, ali tu se ne biste trebali zaustaviti, jer vam često daje osrednji rezultat. Ostali uobičajeni algoritmi regresije za strojno učenje (osim neuronskih mreža) uključuju Naive Bayes, Stablo odluka, K-Najbliži susjedi, LVQ (Learning Vector Quantization), LARS Lasso, Elastic Net, Random Forest, AdaBoost i XGBoost. Primijetit ćete da postoji određeno preklapanje između algoritama strojnog učenja za regresiju i klasifikaciju.

Algoritmi klasteriranja

Klasterizacija je problem nenadgledanog učenja koji traži od modela da pronađe skupine sličnih podatkovnih točaka. Najpopularniji algoritam je K-Means Clustering; ostali uključuju klasteriranje srednjeg pomaka, DBSCAN (Prostorno klasteriranje aplikacija s bukom temeljeno na gustoći), GMM (Gaussovi modeli smjese) i HAC (Hijerarhijsko aglomerativno grupiranje).

Algoritmi smanjenja dimenzija

Smanjivanje dimenzionalnosti je nenadzirani problem učenja koji traži od modela da ispusti ili kombinira varijable koje imaju mali ili nikakav učinak na rezultat. To se često koristi u kombinaciji s klasifikacijom ili regresijom. Algoritmi smanjenja dimenzionalnosti uključuju uklanjanje varijabli s mnogo nedostajućih vrijednosti, uklanjanje varijabli s malom varijancom, stablo odluka, slučajna šuma, uklanjanje ili kombiniranje varijabli s visokom korelacijom, uklanjanje unatrag značajke, prosljeđivanje odabira značajki, analizu faktora i PCA (analiza glavne komponente).

Metode optimizacije

Trening i evaluacija pretvorene algoritme učenja pretvaraju u modele optimiziranjem njihovih težina parametara kako bi se pronašao skup vrijednosti koji najbolje odgovara osnovnoj istini vaših podataka. Algoritmi se za svoje optimizatore često oslanjaju na varijante najstrmijeg spuštanja, na primjer stohastički gradijentni spust, koji je u osnovi najstrmiji spust izveden više puta s randomiziranih početnih točaka.

Uobičajena poboljšanja stohastičkog gradijentnog spuštanja dodaju faktore koji ispravljaju smjer gradijenta na temelju impulsa ili prilagođavaju brzinu učenja na temelju napretka od jednog prolaska kroz podatke (nazvanog epoha ili serija) do sljedećeg.

Čišćenje podataka za strojno učenje

U prirodi ne postoje čisti podaci. Da bi bili korisni za strojno učenje, podaci se moraju agresivno filtrirati. Na primjer, morat ćete:

  1. Pogledajte podatke i izuzmite sve stupce u kojima ima puno podataka koji nedostaju.
  2. Ponovno pogledajte podatke i odaberite stupce koje želite koristiti ( odabir značajke ) za vaše predviđanje. To je nešto što biste mogli promijeniti kada ponovite.
  3. Izuzmite sve retke u kojima još nedostaju podaci u preostalim stupcima.
  4. Ispravite očite pravopisne pogreške i spojite ekvivalentne odgovore. Na primjer, SAD, SAD, SAD i Amerika trebaju se spojiti u jednu kategoriju.
  5. Izuzmite retke koji sadrže podatke koji su izvan dosega. Na primjer, ako analizirate taksi putovanja unutar New Yorka, morat ćete filtrirati redove sa zemljopisnim širinama i dužinama prijenosa ili odlaska koji su izvan graničnog okvira gradskog područja.

Možete učiniti puno više, ali to će ovisiti o prikupljenim podacima. To može biti zamorno, ali ako u svom cjevovodu strojnog učenja postavite korak čišćenja podataka, možete ga po želji izmijeniti i ponoviti.

Kodiranje i normalizacija podataka za strojno učenje

Da biste koristili kategoričke podatke za klasifikaciju stroja, morate kodirati tekstne naljepnice u drugi oblik. Postoje dva uobičajena kodiranja.

Jedno je kodiranje naljepnica , što znači da se svaka vrijednost tekstne naljepnice zamjenjuje brojem. Drugi je jednokratno kodiranje , što znači da se svaka vrijednost tekstne oznake pretvara u stupac s binarnom vrijednošću (1 ili 0). Većina okvira za strojno učenje imaju funkcije koje izvršavaju pretvorbu umjesto vas. Općenito se daje prednost jednokružnom kodiranju, jer kodiranje naljepnica ponekad može zbuniti algoritam strojnog učenja u razmišljanju da bi kodirani stupac trebao biti poredani popis.

Da biste koristili numeričke podatke za regresiju stroja, obično trebate normalizirati podatke. Inače, brojevi s većim rasponima mogu dominirati na euklidskoj udaljenosti između vektora obilježja , njihovi učinci mogu se povećati na štetu ostalih polja, a optimizacija najstrmijeg spuštanja može imati poteškoća u konvergenciji. Postoji niz načina za normalizaciju i standardizaciju podataka za strojno učenje, uključujući min-max normalizaciju, srednju normalizaciju, standardizaciju i skaliranje na duljinu jedinice. Taj se postupak često naziva skaliranje značajki .

Osobni inženjering za strojno učenje

Značajka je pojedinac mjerljivo svojstvo ili obilježje fenomena koji se promatra. Koncept "značajke" povezan je s konceptom objašnjenja koja se koristi u statističkim tehnikama poput linearne regresije. Vektori obilježja kombiniraju sve značajke za jedan red u numerički vektor.

Dio umijeća odabira značajki je odabrati minimalni skup neovisnih varijabli koje objašnjavaju problem. Ako su dvije varijable u velikoj korelaciji, ili ih treba kombinirati u jednu značajku, ili jednu treba ispustiti. Ponekad ljudi provode analizu glavnih komponenata kako bi pretvorili korelirane varijable u skup linearno nekoreliranih varijabli.

Neke su transformacije koje ljudi koriste za konstrukciju novih značajki ili smanjenje dimenzionalnosti vektora značajki jednostavne su. Na primjer, oduzimanje Year of Birthod Year of Deathi izgradnju Age at Death, koji je premijer nezavisna varijabla za života i analizu smrtnosti. U drugim slučajevima, konstrukcija značajki možda nije toliko očita.

Dijeljenje podataka za strojno učenje

Uobičajena praksa za nadzirano strojno učenje je razdvajanje skupa podataka u podskupine za obuku , provjeru valjanosti i test . Jedan od načina rada je dodijeliti 80% podataka skupu podataka o treningu, a po 10% skupovima podataka za provjeru i testiranje. (Točno dijeljenje stvar je preferencija.) Glavnina treninga vrši se prema skupu podataka o treningu, a predviđanje se vrši prema skupu podataka za provjeru valjanosti na kraju svake epohe.

Pogreške u skupu podataka za provjeru valjanosti mogu se koristiti za utvrđivanje kriterija zaustavljanja ili za podešavanje hiperparametara. Što je najvažnije, pogreške u skupu podataka za provjeru valjanosti mogu vam pomoći da otkrijete je li model previše odgovarao podacima obuke.

Predviđanje prema skupu testnih podataka obično se vrši na konačnom modelu. Ako se testni skup podataka nikada nije koristio za trening, ponekad se naziva i set podataka zadržavanja.

Postoji nekoliko drugih shema za dijeljenje podataka. Jedna uobičajena tehnika, unakrsna provjera valjanosti , uključuje opetovano razdvajanje cjelokupnog skupa podataka na skup podataka o treningu i niz podataka provjere valjanosti. Na kraju svake epohe podaci se ponovno miješaju i dijele.

Biblioteke strojnog učenja

U Pythonu, Spark MLlib i Scikit-learn izvrstan su izbor za knjižnice strojnog učenja. U R-u su neke mogućnosti paketa strojnog učenja CARAT, randomForest, e1071 i KernLab. U Javi dobar izbor uključuje Java-ML, RapidMiner i Weka.

Objašnjeno duboko učenje

Dubinsko učenje oblik je strojnog učenja u kojem model koji se obučava ima više skrivenih slojeva između ulaza i izlaza. U većini rasprava duboko učenje znači korištenje dubokih neuronskih mreža . Postoji, međutim, nekoliko algoritama koji implementiraju duboko učenje koristeći druge vrste skrivenih slojeva osim neuronskih mreža.

Ideje za "umjetne" neuronske mreže sežu u četrdesete godine prošlog stoljeća. Bitni je koncept da mreža umjetnih neurona izgrađenih od međusobno povezanih prekidača praga može naučiti prepoznavati uzorke na isti način kao što to čine životinjski mozak i živčani sustav (uključujući mrežnicu).

Backprop

Učenje se u osnovi odvija jačanjem veze između dva neurona kada su oba istovremeno aktivna tijekom treninga. U suvremenom softveru neuronske mreže to je najčešće pitanje povećanja vrijednosti težine za veze između neurona koristeći pravilo koje se naziva povratno širenje pogreške , povratno propiranje ili BP.

Neuroni u umjetnim neuronskim mrežama

Kako se modeliraju neuroni? Svaki od njih ima funkciju širenja koja transformira izlaze povezanih neurona, često s ponderiranim zbrojem. Izlaz funkcije širenja prelazi u funkciju aktivacije koja se aktivira kada njezin ulaz premaši graničnu vrijednost.

Aktivacijske funkcije u neuronskim mrežama

U 1940-ima i 50-ima umjetni neuroni koristili su funkciju stupnjevne aktivacije i nazivali su se perceptroni . Moderne neuronske mreže mogu reći da koriste perceptrone, ali zapravo imaju glatke funkcije aktivacije, poput logističke ili sigmoidne funkcije, hiperboličke tangente ili ispravljene linearne jedinice (ReLU). ReLU je obično najbolji izbor za brzu konvergenciju, iako ima problem s neuronima koji "umiru" tijekom treninga ako je stopa učenja postavljena previsoko.

[Također na: 6 načina za neuspjeh strojnog učenja]

Izlaz funkcije aktiviranja može prijeći na izlaznu funkciju za dodatno oblikovanje. Međutim, često je izlazna funkcija funkcija identiteta, što znači da se izlaz funkcije aktivacije prenosi na nizvodno povezane neurone.

Topologije neuronskih mreža

Sad kad znamo za neurone, moramo naučiti o uobičajenim topologijama neuronske mreže. U povratnoj mreži neuroni su organizirani u različite slojeve: jedan ulazni sloj, n skrivenih slojeva obrade i jedan izlazni sloj. Izlazi iz svakog sloja idu samo na sljedeći sloj.

U mreži za prosljeđivanje s prečacima, neke veze mogu preskočiti jedan ili više srednjih slojeva. U ponavljajućim neuronskim mrežama neuroni mogu utjecati na sebe, bilo izravno ili neizravno kroz sljedeći sloj.

Obuka neuronskih mreža

Nadzirano učenje neuronske mreže izvodi se kao i svako drugo strojno učenje: mreži predstavljate grupe podataka s treninga, uspoređujete mrežni izlaz sa željenim izlazom, generirate vektor pogreške i primjenjujete ispravke na mreži na temelju vektora pogreške . Skupovi podataka o treningu koji se pokreću zajedno prije primjene korekcija nazivaju se epohama.

Za one koji su zainteresirani za detalje, povratno širenje koristi gradijent funkcije pogreške (ili cijene) s obzirom na težine i pristranosti modela kako bi otkrilo ispravan smjer kako bi pogrešku svelo na minimum. Dvije stvari kontroliraju primjenu korekcija: algoritam optimizacije i varijabla brzine učenja. Varijabla brzine učenja obično mora biti mala kako bi zajamčila konvergenciju i izbjegla uzrokovanje mrtvih ReLU neurona.

Optimizatori za neuronske mreže

Optimizatori za neuronske mreže obično koriste neki oblik algoritma gradijentnog spuštanja za vođenje povratnog širenja, često s mehanizmom koji pomaže izbjeći zaglavljivanje u lokalnim minimumima, poput optimizacije slučajno odabranih mini serija (Stohastični gradijentni spust) i primjene korekcija zamaha na gradijent. Neki algoritmi za optimizaciju također prilagođavaju stope učenja parametara modela gledajući povijest gradijenta (AdaGrad, RMSProp i Adam).