trojno i duboko učenje otkriva obrasce u podacima, ali koriste različite tehnike. Oba gore navedena učenja su zapravo oblik umjetne inteligencije. Može se reći da je duboko učenje specifična vrsta strojnog učenja. I strojno i duboko učenje započinju s obukom probnih podataka i modela te prolaze kroz proces optimizacije kako bi se pronašle što točnije težinske vrijednosti među vezama kako bi model što bolje odgovarao podacima.

Obje grane umjetne inteligencije se mogu nositi s numeričkim (regresijskim) i nenumeričkim (klasifikacijskim) problemima iako postoji nekoliko područja primjene, poput prepoznavanja objekata i prevođenje jezika gdje modeli dubokog učenja imaju tendenciju boljeg uklapanja od modela strojnog učenja.

Objašnjenje strojnog učenja

Algoritmi strojnog učenja se često dijele na nadzirane (podaci s obuke su označeni točnim odgovorima) i nenadzirane (odgovori nisu prikazani na obuci). Problemi nadziranih algoritama strojnog učenja su dalje podijeljeni na klasifikaciju (predviđanje nenumeričkih odgovora) i regresiju (predviđanje brojčanih odgovora). Nenadzirano učenje se nadalje dijeli na grupiranje (pronalaženje grupa sličnih predmeta), udruživanje (pronalaženje uobičajenih nizova predmeta) i smanjenje dimenzija (projekcija, odabir mogućnosti i izdvajanje značajki).

Algoritmi klasifikacije

Problem klasifikacije je problem nadziranog strojnog učenja koji traži izbor između dvije ili više klasa, obično pruža vjerojatnost za svaku klasu. Najčešće korišteni algoritmi su Naive Bayes, Decision Tree, Logistic Regression, K-Nearest Neighbours i Support Vector Machine (SVM). Također možete koristiti i kombinacije modela kao što su Random Forest, druge „Bagging“ metode i metode poticanja kao što su AdaBoost i XGBoost.

strojno učenje

Algoritmi regresije

Problem regresije predstavlja problem nadziranog strojnog učenja koji od modela traži da predvidi broj. Najjednostavniji i najbrži algoritam je linearna (najmanje kvadrata) regresija, ali na tome se ne biste trebali zaustavljati jer vam često daje osrednji rezultat. Ostali uobičajeni regresijski algoritmi strojnog učenja uključuju Naive Bayes, Decision Tree, K-Nearest Neighbours, LVQ (Learning Vector Quantization), LARS Lasso, Elastic Net, Random Forest, AdaBoost i XGBoost. Primijetit ćete da postoji preklapanje između algoritama strojnog učenja za klasifikaciju i regresiju.

Algoritmi grupiranja

Problem grupiranja predstavlja problem nenadziranog strojnog učenja koji od modela traži pronalazak grupa sličnih podataka. Najpopularniji algoritam je K-Means Clustering. Postoje još i Mean-Shift Clustering, DBSCAN (Density-Based Spatial Clustering of Applications with Noise), GMM (Gaussian Mixture Models) i HAC (Hierarchical Agglomerative Clustering).

Algoritmi smanjenja dimenzija

Smanjenje dimenzija je problem nenadziranog strojnog učenja i zahtijeva od modela da izbaci ili kombinira varijable koje imaju mali ili nikakav utjecaj na rezultat. Često se koristi u kombinaciji s klasifikacijom ili regresijom.

Algoritmi za smanjenje dimenzija uključuju uklanjanje varijabli kojima nedostaju neke vrijednosti, uklanjanje varijabli s malom varijancom, Decision Tree, Random Forest, uklanjanje ili kombiniranje varijabli s visokom korelacijom, nazadno uklanjanje značajki, odabir značajke unaprijed, analizu faktora i PCA (Principal Component Analysis).

Metode optimizacije

Obuka i evaluacija pretvaraju nadzirane algoritme strojnog učenja u modele optimizirajući težinu parametara kako bi pronašli skup vrijednosti koji najbolje odgovara osnovnoj istini vaših podataka. Algoritmi se često oslanjaju na varijante najstrmijeg pâda za njihove optimizatore, na primjer stohastički pad gradijenta koji je u osnovi najstrmiji silazak izveden više puta od nasumičnih početnih točaka.

Uobičajena preciziranja stohastičkog spuštanja gradijenta dodaju faktore koji ispravljaju smjer nagiba na temelju zamaha ili prilagođavaju brzinu učenja na temelju napretka od jednog prolaska kroz podatke (zvanog epoha ili serija) do drugog.

Čišćenje podataka za strojno učenje

Čišćenje podataka za strojno učenje

U suštini ne postoje „čisti“ podaci. Da bi bili korisni za strojno učenje podaci moraju biti agresivno filtrirani. Na primjer, željeli biste:

  1. Pregledajte podatke i izbacite sve stupce u kojima ima puno podataka koji nedostaju.
  2. Ponovno pregledajte podatke i odaberite stupce koje želite koristiti za svoje predviđanje. Ovo je nešto što biste trebali mijenjati s iteracijama.
  3. Izuzmite sve retke u kojima su još uvijek podaci koji nedostaju u ostalim stupcima.
  4. Ispravite očite pogreške pri upisivanju i spajajte jednake odgovore. Na primjer U.S., US, USA i America se treba spojiti u jednu kategoriju.
  5. Izuzmite retke koji sadrže podatke izvan dometa. Na primjer, ako analizirate taksi putovanje unutar nekog grada morat ćete filtrirati redove s geografskim širinama i dužinama do pada koji se nalaze izvan graničnog polja gradskog područja.

Možete učiniti puno više, ali to će prvenstveno ovisiti o prikupljenim podacima. Ovaj proces može biti mučan, ali ako postavite korak čišćenja podataka u „pipeline“ strojnog učenja, možete ga mijenjati i ponavljati po volji.

Kodiranje i normalizacija podataka za strojno učenje

Da biste koristili kategorijske podatke za strojno klasificiranje morate tekstualne oznake kodirati u drugi oblik. Postoje dva uobičajena načina kodiranja. Jedan je kodiranje oznaka (label encoding), što znači da se svaka vrijednost oznake teksta zamjenjuje brojem. Drugi način je „one-hot kodiranje“, što znači da se svaka vrijednost oznake teksta pretvara u stupac s binarnom vrijednošću (1 ili 0).

Većina okosnica strojnog učenja ima funkcije koje pretvaranje izvršavaju umjesto vas. Općenito, preferira se one-hot kodiranje jer kodiranje oznaka ponekad može zbuniti algoritam strojnog učenja u razmišljanju da bi kodirani stupac mogao biti poredana lista.

Kako biste koristili numeričke podatke za strojnu regresiju obično ih morate normalizirati. U suprotnom brojevi s većim rasponima mogu dominirati u euklidskoj udaljenosti između vektora, njihovi učinci mogu se povećati na štetu ostalih polja, a najstrmija optimizacija silaska može imati poteškoće prilikom pretvorbe.

Postoji nekoliko načina za normalizaciju i standardizaciju podatka za strojno učenje, uključujući min-max normalizaciju, srednju normalizaciju, standardizaciju i skaliranje do jedinice dužine. Ovaj postupak se često naziva skaliranje značajki.

Podjela podataka za strojno učenje

Uobičajena praksa za nadzirano strojno učenje je podijeliti skup podataka na podskupove za obuku, validaciju i testiranje. Jedan od načina rada je dodijeliti 80% podataka skupu podataka za obuku, a 10% svakom skupu podataka za provjeru valjanosti i ispitivanja. Neki će možda drugačije podijeliti, stvar je sklonosti. Većina obuke se vrši prema skupu podataka za obuku, a predviđanje se vrši na temelju podataka o provjeri valjanosti koji su postavljeni na kraju svake epohe.

Pogreške u skupu podataka za provjeru valjanosti se mogu upotrijebiti za prepoznavanje kriterija zaustavljanja ili za podešavanje parametara. Ono što je najvažnije, pogreške u skupu podataka za provjeru valjanosti mogu vam po moći da saznate je li model predvidio podatke o obuci. Predviđanje prema skupu podataka ispitivanja se obično vrši na krajnjem modelu. Ako se skup podataka za testiranje nikada nije koristio za obuku, ponekad se naziva i skup podataka o čekanju.

Postoji nekoliko drugih shema za podjelu podataka. Jedna uobičajena tehnika je unakrsna validacija, ona uključuje opetovano dijeljenje cjelovitog skupa podataka u skup podataka o obuci i skup podataka za potvrdu. Na kraju svake epohe se podaci miješaju i ponovno dijele.

Biblioteke strojnog učenja

Spark MLib i Scikit-learn su izvrstan izbor kao biblioteke strojnog učenja programskog jezika Python. U R-u imamo CARET, randomForest, e1071 i KernLab. Za Javu su dobri izbori Java-ML, RapidMiner i Weka.

 

duboko učenje

Objašnjenje dubokog učenja

Duboko učenje je oblik strojnog učenja u kojemu model koji se obučava ima više skrivenog sloja između ulaza i izlaza. U većini rasprava duboko učenje znači korištenje dubokih neuronskih mreža. Međutim, postoji 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 čak u 1940. Suštinski koncept je da mreža umjetnih neurona izgrađena od međusobno povezanih graničnih točki može naučiti prepoznati obrasce na isti način kao što to čine životinjski mozak i živčani sustav (uključujući mrežnicu).

„Backpropagation“

Učenje se u osnovi odvija jačanjem veze dva neurona kada su oba aktivna u isto vrijeme tijekom obuke. U modernom softveru neuronske mreže najčešće se radi o povećanju vrijednosti težine veza između neurona pomoću pravila koje se naziva „back propagation of error“, „backprop“ ili „BP“.

Neuroni u umjetnim neuronskim mrežama

Kako se modeliraju neuroni? Svaki od njih ima backpropagation funkciju koja transformira izlaze povezanih neurona često s ponderiranim zbrojem. Izlaz backpropagation funkcije prelazi u funkciju aktiviranja koja se aktivira kada njegov ulaz premaši vrijednost praga.

 

Aktivacijske funkcije u neuronskim mrežama

U četrdesetim i pedesetim godinama umjetni neuroni su koristili stupnjevitu funkciju aktivacije i nazivali su ih perceptroni. Moderne neuronske mreže mogu reći da koriste perceptrone, ali zapravo imaju glatke aktivacijske funkcije poput logističke ili sigmoidne funkcije, hiperboličke tangente ili Rectified Linear Unit (ReLU). ReLU je obično najbolji izbor za brzu konvergenciju, iako ima problem koji gdje neuroni „umiru“ tijekom obuke ako je stopa učenja postavljena previsoko.

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

 

Topologije neuronskih mreža

Sada kada znamo ponešto o neuronima, trebamo naučiti o uobičajenim topologijama neuronskih mreža. U mreži za prosljeđivanje, neuroni su organizirani u različite slojeve. Jedan ulazni sloj, n skrivenih slojeva obrade i jedan izlazni sloj. Izlaz iz svakog sloja ide samo na sljedeći sloj.

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

Obuka neuronskih mreža

Nadzirano učenje neuronske mreže vrši se kao i svako drugo strojno učenje. Predstavljate mreži grupe podataka za obuku, uspoređujete mrežni izlaz sa željenim izlazom, generirate vektor pogreške i na mrežu primjenjujete ispravke na temelju vektora pogreške. Paketi podataka s obuke koji se izvode zajedno prije primjene ispravka nazivaju se epohe.

Za one koji su zainteresirani za detalje, povratna propagacija koristi gradijent funkcije pogreške s obzirom na težine i pristranosti modela kako bi otkrio pravilan smjer da se pogreška smanji što je više moguće. Dvije stvari kontroliraju primjenu korekcija: Algoritam optimizacije i varijabla brzine učenja. Varijabla brzine učenja obično treba biti mala kako bi se zajamčila konvergencija i izbjeglo uzrokovanje „mrtvih“ ReLU neurona.

 

Optimiziranje neuronske mreže

Optimizatori neuronske mreže obično koriste neki oblik algoritma za spuštanje nagiba kako bi pokrenuli povratnu propagaciju, često uz mehanizam koji pomaže da se ne zaglavi u lokalnim minimumima. Neki algoritmi također prilagođavaju stope učenja parametara modela gledajući povijest gradijenata (AdaGrad, RMSProp i Adam).

 

Algoritmi dubokog učenja

Duboka neuronska mreža za stvarni problem može imati više od 10 skrivenih slojeva. Njena topologija može biti jednostavna ili prilično složena. Što je više slojeva u mreži, to više karakteristika može prepoznati. Nažalost, što je više slojeva u mreži, dulje će trebati izračunati i teže ju je obučiti.

Konvolucijske neuronske mreže se često koriste za strojni vid. Konvolucijski sloj u osnovi uzima integrale mnogih malih preklapajućih područja. U potpuno povezanom sloju neuroni imaju veze sa svim aktivacijama u prethodnom sloju. Ponavljajuće neronske mreže (Recurrent neural networks) se često koriste za obradu prirodnog jezika (Natural Language Processing) i druge sekvencijalne obrade kao što su Long Short-Term Memory (LSTM).

U ponavljajućim neuronskim mrežama informacije se kreću kroz petlju koja omogućuje mreži da pamti nedavne prethodne izlaze. To omogućuje analizu slijeda i vremenskih serija. RNN-ovi imaju dva uobičajena problema, eksplodiranje gradijenata i nestajanje gradijenata.

 

Strojno učenje vs. duboko učenje

Općenito, klasični algoritmi strojnog učenja treniraju i predviđaju mnogo brže od algoritama dubokog učenja. Jedan ili više CPU-a će često biti dovoljni za obuku klasičnog modela. Modeli dubokog učenja često trebaju hardverske akceleratore poput GPU-a, TPU-a ili FPGA za obuku, bez njih bi modeli trebali mjesece za obuku.

Za većinu problema će neki klasični algoritmi strojnog učenja proizvesti dovoljno dobar model. Za druge i ozbiljnije probleme klasični algoritmi strojnog učenja u prošlosti nisu djelovali dovoljno dobro. Jedno od područja koje je obično napadnuto dubokim učenjem je obrada prirodnog jezika koja obuhvaća prijevod jezika, automatski sažetak, analizu, morfološku segmentaciju, analiza osjećaja i prepoznavanje govora.

Drugo glavno područje za duboko učenje je klasifikacija slika koja uključuje klasifikaciju slike s lokalizacijom, otkrivanjem predmeta, segmentacijom objekta, prijenosom stila slike i sintezom iste. Uz to, duboko učenje se uspješno koristi za predviđanje interakcije molekula kako bi po mogle farmaceutskim tvrtkama da osmisle nove lijekove.

Piše: A. M.

1 komentar

Komentiraj

Please enter your comment!
Please enter your name here