Što je strojno učenje? Inteligencija izvedena iz podataka

Definirano strojno učenje

Strojno učenje grana je umjetne inteligencije koja uključuje metode ili algoritme za automatsko stvaranje modela iz podataka. Za razliku od sustava koji izvršava zadatak slijedeći izričita pravila, sustav strojnog učenja uči iz iskustva. Dok će sustav zasnovan na pravilima izvršavati zadatak svaki put na isti način (u dobru ili u zlu), izvedba sustava strojnog učenja može se poboljšati kroz trening, izlažući algoritam većem broju podataka.

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

Primjene strojnog učenja

Svakodnevno čujemo o primjenama strojnog učenja, premda nisu sve neuspješni uspjesi. Dobri primjer su samovozeći automobili, gdje se zadaci kreću od jednostavnih i uspješnih (pomoć pri parkiranju i slijeđenje trake autoceste) do složenih i neskladnih (potpuna kontrola vozila u urbanim uvjetima, što je dovelo do nekoliko smrtnih slučajeva).

Strojno učenje igranja igara izuzetno je uspješno za dame, šah, shogi i Go, pobijedivši svjetske prvake. Automatski prijevod jezika uglavnom je uspio, iako neki jezični parovi rade bolje od drugih, a mnogi automatski prijevod još mogu poboljšati ljudski prevoditelji.

Automatski govor u tekst djeluje prilično dobro za ljude s uobičajenim naglascima, ali ne tako dobro za ljude s jakim regionalnim ili nacionalnim naglascima; izvedba ovisi o setovima treninga koje koriste dobavljači. Automatska analiza sentimenata na društvenim mrežama ima relativno dobru stopu uspjeha, vjerojatno zato što su skupovi treninga (npr. Amazonove ocjene proizvoda koji povezuju komentar s numeričkom ocjenom) veliki i lako im se pristupa.

Automatsko prikazivanje rezimea kontroverzno je područje. Amazon je morao povući svoj interni sustav zbog pristranosti uzoraka treninga zbog kojih je smanjio sve prijave za posao od žena.

Ostali sustavi za prikazivanje rezimea koji se trenutno koriste mogu imati pristranosti zbog treninga zbog kojih mogu nadograđivati ​​kandidate koji su "poput" trenutnih zaposlenika na načine koji zakonski ne bi trebali biti bitni (npr. Mladi, bijeli, muški kandidati iz otmjenih četvrti s engleskim govornim područjem koji su igrali timski će sportovi vjerojatnije proći projekciju). Napori Microsofta i drugih usmjereni su na uklanjanje implicitnih pristranosti u strojnom učenju.

Automatska klasifikacija slika patologije i radiologije napredovala je do te mjere da može pomoći (ali ne i zamijeniti) patologe i radiologe u otkrivanju određenih vrsta abnormalnosti. U međuvremenu, sustavi za identifikaciju lica kontroverzni su kad dobro funkcioniraju (zbog zaštite privatnosti) i obično nisu toliko precizni za žene i puti kao bijeli muškarci (zbog pristranosti u populaciji koja trenira).

Algoritmi strojnog učenja

Strojno učenje ovisi o brojnim algoritmima za pretvaranje skupa podataka u model. Koji algoritam najbolje funkcionira, ovisi o vrsti problema koji rješavate, dostupnim računalnim resursima i prirodi podataka. Bez obzira koji algoritam ili algoritme koristite, prvo ćete trebati očistiti i pripremiti podatke.

Razmotrimo najčešće algoritme za svaku vrstu problema.

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 inačice najstrmijeg spuštanja, na primjer stohastički gradijentni spust (SGD), koji je u osnovi najstrmiji spust izveden više puta s randomiziranih početnih točaka.

Uobičajena poboljšanja SGD-a dodaju čimbenike 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.

Neuronske mreže i duboko učenje

Neuronske mreže nadahnute su arhitekturom biološkog vizualnog korteksa. Dubinsko učenje skup je tehnika za učenje u neuronskim mrežama koje uključuje velik broj "skrivenih" slojeva za prepoznavanje značajki. Skriveni slojevi dolaze između ulaznog i izlaznog sloja. Svaki se sloj sastoji od umjetnih neurona, često s sigmoidnim ili ReLU (Rectified Linear Unit) aktivacijskim funkcijama.

U feed-forward mreži neuroni su organizirani u različite slojeve: jedan ulazni sloj, bilo koji broj skrivenih slojeva obrade i jedan izlazni sloj, a 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, bilo neizravno kroz sljedeći sloj.

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 , obično koristeći algoritam povratnog širenja. Skupovi podataka o treningu koji se pokreću zajedno prije primjene korekcija nazivaju se epohama.

Kao i kod cijelog strojnog učenja, morate provjeriti predviđanja neuronske mreže prema zasebnom skupu testnih podataka. Bez toga riskirate stvaranje neuronskih mreža koje samo pamte svoje ulaze, umjesto da nauče biti generalizirani prediktori.

Proboj na polju neuralne mreže za vid bio je LeNet-5 Yanna LeCuna iz 1998. godine, sedmorazinska konvolucijska neuronska mreža (CNN) za prepoznavanje rukom napisanih znamenki digitaliziranih na slikama od 32x32 piksela. Da bi se analizirale slike veće rezolucije, mreži bi trebalo više neurona i više slojeva.

Konvolucijske neuronske mreže obično koriste slojeve konvolucije, udruživanja, ReLU, potpuno povezane i gubitke za simulaciju vizualnog korteksa. Konvolucijski sloj u osnovi uzima integrale mnogih malih preklapajućih područja. Sloj za udruživanje izvodi oblik nelinearnog uzorkovanja prema dolje. ReLU slojevi, koje sam ranije spomenuo, primjenjuju funkciju nezasićenja aktivacije f(x) = max(0,x).

U potpuno povezanom sloju, neuroni imaju pune veze sa svim aktivacijama u prethodnom sloju. Sloj gubitka izračunava kako mrežni trening kažnjava odstupanje između predviđenih i istinitih oznaka, koristeći Softmax ili unakrsni entropijski gubitak za klasifikaciju ili euklidski gubitak za regresiju.

Obrada prirodnog jezika (NLP) još je jedno glavno područje primjene dubokog učenja. Uz problem strojnog prevođenja kojim se bavi Google Translate, glavni NLP zadaci uključuju automatsko sažimanje, ko-referenciranje, analizu diskursa, morfološku segmentaciju, prepoznavanje imenovanih entiteta, stvaranje prirodnog jezika, razumijevanje prirodnog jezika, označavanje dijela govora, sentiment analiza i prepoznavanje govora.

Uz CNN-ove, NLP zadaci često se rješavaju ponavljajućim neuronskim mrežama (RNN), koje uključuju model dugoročnog pamćenja (LSTM).

Što je više slojeva u dubokoj neuronskoj mreži, potrebno je više računanja da bi se model osposobio na CPU-u. Hardverski akceleratori za neuronske mreže uključuju GPU-ove, TPU-ove i FPGA-e.

Učenje pojačanja

Učenje pojačavanjem osposobljava glumca ili agenta da reagira na okruženje na način koji maksimizira neku vrijednost , obično metodom pokušaja i pogrešaka. To se razlikuje od učenja pod nadzorom i bez nadzora, ali se često kombinira s njima.

Na primjer, DeepMindov AlphaGo, da bi naučio igrati (radnju) igru ​​Go (okoliš), prvo je naučio oponašati ljudske Go igrače iz velikog skupa podataka povijesnih igara (učenje šegrta). Zatim je poboljšao svoje igranje pokušajima i pogreškama (učenje pojačanja), igrajući veliki broj Go igara protiv samostalnih instanci.

Robotska kontrola je još jedan problem koji je napadnut metodama učenja dubokog pojačanja, što znači učenje ojačanja plus duboke neuronske mreže, a duboke neuronske mreže često su CNN-ovi osposobljeni za izdvajanje značajki iz video okvira.

Kako koristiti strojno učenje

Kako se ide na stvaranje modela strojnog učenja? Prvo počistite i uskladite podatke, nastavite s inženjeringom značajki, a zatim isprobajte svaki algoritam strojnog učenja koji ima smisla. Za određene klase problema, poput vida i obrade prirodnog jezika, algoritmi koji će vjerojatno funkcionirati uključuju duboko učenje.

Č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 je poželjno jedno vruće kodiranje, jer kodiranje naljepnica ponekad može zbuniti algoritam strojnog učenja u razmišljanju da je kodirani stupac uređen.