Programiranje

Kaj je strojno učenje? Inteligenca, pridobljena iz podatkov

Opredeljeno strojno učenje

Strojno učenje je veja umetne inteligence, ki vključuje metode ali algoritme za samodejno ustvarjanje modelov iz podatkov. Za razliko od sistema, ki opravi nalogo z upoštevanjem izrecnih pravil, se sistem strojnega učenja uči iz izkušenj. Medtem ko bo sistem, ki temelji na pravilih, opravil nalogo vsakič na enak način (v boljše ali slabše), se lahko zmogljivost sistema strojnega učenja izboljša z usposabljanjem, tako da se algoritmu izpostavi več podatkov.

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

Aplikacije strojnega učenja

Vsakodnevno slišimo o aplikacijah strojnega učenja, čeprav niso vsi neuspešni uspehi. Samovozeči avtomobili so dober primer, kjer se naloge gibljejo od preprostih in uspešnih (pomoč pri parkiranju in sledenje avtocestnemu pasu) do zapletenih in neučinkovitih (popoln nadzor nad vozili v urbanih okoljih, ki je privedel do več smrtnih primerov).

Strojno učenje igranja iger je zelo uspešno za kockarje, šah, šogije in Go, saj so premagali svetovne prvake. Samodejno prevajanje jezikov je bilo v veliki meri uspešno, čeprav nekateri jezikovni pari delujejo bolje kot drugi, številni samodejni prevodi pa lahko človeški prevajalci še izboljšajo.

Samodejni govor v besedilo deluje dokaj dobro za ljudi z običajnimi poudarki, ne pa tudi za ljudi z močnimi regionalnimi ali nacionalnimi poudarki; uspešnost je odvisna od sklopov vadbe, ki jih uporabljajo prodajalci. Samodejna analiza sentimenta v družabnih medijih ima razmeroma dobro uspešnost, verjetno zato, ker so nabori usposabljanja (npr. Amazon-ove ocene izdelkov, ki komentirajo komentar s številčno oceno) veliki in enostavni za dostop.

Samodejni pregled življenjepisov je sporno področje. Amazon je moral umakniti svoj notranji sistem zaradi pristranskosti vzorcev za usposabljanje, zaradi katere je znižal vse prijave za zaposlitev žensk.

Drugi trenutno uporabljeni sistemi za pregledovanje življenjepisov imajo lahko pristranskost zaradi usposabljanja, zaradi katere nadgrajujejo kandidate, ki so "podobni" trenutnim zaposlenim na načine, ki pravno ne bi smeli biti pomembni (npr. Mladi, beli, moški kandidati iz vrhunskih angleško govorečih sosesk, ki so igrali skupinski športi bodo pogosteje prestali projekcijo). Raziskovalna prizadevanja Microsofta in drugih se osredotočajo na odpravljanje implicitnih pristranskosti pri strojnem učenju.

Samodejna razvrstitev patoloških in radioloških slik je napredovala do te mere, da lahko pomaga (ne pa tudi nadomesti) patologom in radiologom pri odkrivanju nekaterih vrst nepravilnosti. Sistemi za identifikacijo obraza so obenem sporni, kadar dobro delujejo (zaradi varovanja zasebnosti) in ponavadi niso tako natančni za ženske in barvne ljudi kot za bele moške (zaradi pristranskosti med izobraženo populacijo).

Algoritmi strojnega učenja

Strojno učenje je odvisno od številnih algoritmov za pretvorbo nabora podatkov v model. Kateri algoritem deluje najbolje, je odvisno od vrste težave, ki jo rešite, razpoložljivih računalniških virov in narave podatkov. Ne glede na to, kateri algoritem ali algoritme uporabljate, boste morali najprej očistiti in obdelati podatke.

Pogovorimo se o najpogostejših algoritmih za vsako vrsto problema.

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 (SGD), ki je v bistvu najbolj strm spust, izveden večkrat z naključnih izhodišč.

Skupne izboljšave SGD dodajajo dejavnike, ki popravijo smer naklona glede na zagon ali prilagodijo stopnjo učenja glede na napredek iz enega prehoda skozi podatke (imenovan epoha ali serija) do naslednjega.

Nevronske mreže in poglobljeno učenje

Nevronske mreže je navdihnila arhitektura biološke vidne skorje. Poglobljeno učenje je skupek tehnik za učenje v nevronskih mrežah, ki vključuje veliko število "skritih" plasti za prepoznavanje značilnosti. Skrite plasti prihajajo med vhodno in izhodno plastjo. Vsaka plast je sestavljena iz umetnih nevronov, pogosto z sigmoidnimi ali ReLU (Rectified Linear Unit) aktivacijskimi funkcijami.

V povratnem omrežju so nevroni organizirani v ločene sloje: en vhodni sloj, poljubno število skritih obdelovalnih slojev in en izhodni sloj, izhodi iz vsake plasti pa 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 bodisi neposredno bodisi posredno prek naslednje plasti.

Nadzorovano učenje nevronske mreže poteka tako kot vsako drugo strojno učenje: omrežju predstavite skupine podatkov o vadbi, primerjate izhod omrežja z želenim izhodom, ustvarite vektor napake in na omrežju uporabite popravke na podlagi vektorja napak , običajno z uporabo algoritma povratnega razmnoževanja. Paketi podatkov o vadbi, ki se vodijo skupaj pred uporabo popravkov, se imenujejo epohe.

Kot pri vsakem strojnem učenju morate tudi napovedi nevronske mreže preveriti glede na ločen nabor testnih podatkov. Brez tega tvegate ustvarjanje nevronskih mrež, ki si le zapomnijo svoje vložke, namesto da bi se naučile splošnih napovedovalcev.

Preboj na področju nevronske mreže za vid je bil leta 1998 LeNet-5 Yanna LeCuna, sedemstopenjski konvolucijska nevronska mreža (CNN) za prepoznavanje ročno napisanih številk, digitaliziranih na slikah z ločljivostjo 32 x 32 slikovnih pik. Za analizo slik z višjo ločljivostjo bi omrežje potrebovalo več nevronov in več plasti.

Konvolucijske nevronske mreže za simulacijo vizualne skorje običajno uporabljajo sloje z združevanjem, združevanjem, ReLU, popolnoma povezanimi in izgubnimi plastmi. Konvolucijski sloj v bistvu prevzame integrale številnih majhnih prekrivajočih se regij. Plast združevanja izvaja obliko nelinearnega vzorčenja navzdol. Plasti ReLU, ki sem jih omenil prej, uporabljajo funkcijo nenasičenja aktivacije f (x) = največ (0, x).

V popolnoma povezani plasti imajo nevroni polne povezave z vsemi aktivacijami v prejšnji plasti. Plast izgub izračuna, kako mrežni trening kaznuje odstopanje med napovedanimi in resničnimi oznakami z uporabo Softmax-ove ali navzkrižne entropijske izgube za razvrščanje ali evklidske izgube za regresijo.

Obdelava naravnega jezika (NLP) je drugo pomembno področje globokega učenja. Poleg težave s strojnim prevajanjem, ki jo obravnava Google Translate, glavne naloge NLP vključujejo samodejno povzemanje, ločevanje referenc, analizo diskurza, morfološko segmentacijo, prepoznavanje imenovanih entitet, ustvarjanje naravnega jezika, razumevanje naravnega jezika, označevanje dela govora, sentiment analiza in prepoznavanje govora.

Poleg CNN-jev se naloge NLP pogosto naslavljajo s ponavljajočimi se nevronskimi mrežami (RNN), ki vključujejo model Long-Short Term Memory (LSTM).

Več kot je slojev v globoki nevronski mreži, več izračuna je potrebnih za treniranje modela na CPU. Strojni pospeševalniki za nevronska omrežja vključujejo grafične procesorje, TPU-je in FPGA-je.

Okrepitveno učenje

Okrepitveno učenje trenira igralec ali agent odgovoriti na okolje na način, ki nekaj poveča vrednost, običajno s poskusi in napakami. To se razlikuje od nadzorovanega in nenadzorovanega učenja, vendar se pogosto kombinira z njimi.

Na primer, AlphaGo DeepMind, da bi se naučil igrati (akcija) igro Go (okolje), se je najprej naučil posnemati človeške igralce Go iz velikega nabora zgodovinskih iger (vajeniško učenje). Nato je svojo igro izboljšal s poskusi in napakami (učenje okrepitve) z igranjem velikega števila iger Go proti samostojnim primerom.

Robotski nadzor je še en problem, ki je bil napaden z metodami globokega ojačevanja, kar pomeni učenje ojačitve in globoke nevronske mreže, pri čemer so globoke nevronske mreže pogosto usposobljene za pridobivanje funkcij iz video okvirjev.

Kako uporabljati strojno učenje

Kako se lotiti ustvarjanja modela strojnega učenja? Začnete s čiščenjem in obdelavo podatkov, nadaljujete z načrtovanjem funkcij in nato preizkusite vsak smiseln algoritem strojnega učenja. Za nekatere razrede problemov, kot sta obdelava vida in naravnega jezika, algoritmi, ki verjetno delujejo, vključujejo globoko učenje.

Č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 kodiranje z enim vročim pogojem, saj lahko kodiranje nalepk včasih zmede algoritem strojnega učenja pri razmišljanju, da je kodiran stolpec razvrščen.

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