Programmering

Hva er maskinlæring? Intelligens hentet fra data

Maskinlæring definert

Maskinlæring er en gren av kunstig intelligens som inkluderer metoder, eller algoritmer, for automatisk å lage modeller fra data. I motsetning til et system som utfører en oppgave ved å følge eksplisitte regler, lærer et maskinlæringssystem av erfaring. Mens et regelbasert system vil utføre en oppgave på samme måte hver gang (på godt og vondt), kan ytelsen til et maskinlæringssystem forbedres gjennom trening ved å eksponere algoritmen for mer data.

Maskinlæringsalgoritmer deles ofte inn i overvåket (treningsdataene er merket med svarene) og uten tilsyn (eventuelle etiketter som finnes, vises ikke til treningsalgoritmen). Overvåket maskinlæringsproblemer er videre delt inn i klassifisering (forutsi ikke-numeriske svar, for eksempel sannsynligheten for tapte pantelån) og regresjon (forutsi numeriske svar, for eksempel antall widgets som selges neste måned i Manhattan-butikken din).

Uovervåket læring er videre delt inn i gruppering (å finne grupper av lignende gjenstander, for eksempel løpesko, tursko og dresssko), assosiasjon (finne vanlige sekvenser av gjenstander, som kaffe og fløte), og dimensjonsreduksjon (projeksjon, utvalg av funksjoner og utvinning av funksjoner).

Anvendelser av maskinlæring

Vi hører om applikasjoner av maskinlæring på daglig basis, selv om ikke alle er ulegerte suksesser. Selvkjørende biler er et godt eksempel, der oppgavene spenner fra enkle og vellykkede (parkeringsassistent og motorveibane) til komplekse og uklare (full kjøretøyskontroll i urbane omgivelser, noe som har ført til flere dødsfall).

Spilling av maskinlæring er sterkt vellykket for brikker, sjakk, shogi og Go, etter å ha slått menneskelige verdensmestere. Automatisk språkoversettelse har vært stort sett vellykket, selv om noen språkpar fungerer bedre enn andre, og mange automatiske oversettelser kan fremdeles forbedres av menneskelige oversettere.

Automatisk tale til tekst fungerer ganske bra for folk med vanlige aksenter, men ikke så bra for folk med noen sterke regionale eller nasjonale aksenter; ytelsen avhenger av treningssettene som brukes av leverandørene. Automatisk sentimentanalyse av sosiale medier har en rimelig god suksessrate, sannsynligvis fordi opplæringssettene (for eksempel Amazon-produktvurderinger, som kobler en kommentar med en numerisk poengsum) er store og enkle å få tilgang til.

Automatisk screening av CV er et kontroversielt område. Amazon måtte trekke sitt interne system på grunn av opplæringsprøveforstyrrelser som fikk det til å nedgradere alle jobbsøknader fra kvinner.

Andre CV-screening-systemer som for tiden er i bruk, kan ha treningsforstyrrelser som får dem til å oppgradere kandidater som er "som" nåværende ansatte på måter som juridisk sett ikke skal ha noen betydning (f.eks. Unge, hvite, mannlige kandidater fra eksklusive engelsktalende nabolag som spilte lagidrett er mer sannsynlig å bestå screening). Forskningsinnsats fra Microsoft og andre fokuserer på å eliminere implisitte skjevheter i maskinlæring.

Automatisk klassifisering av patologi- og radiologibilder har avansert til det punktet hvor det kan hjelpe (men ikke erstatte) patologer og radiologer for påvisning av visse typer abnormiteter. I mellomtiden er ansiktsidentifikasjonssystemer begge kontroversielle når de fungerer bra (på grunn av personvernhensyn) og har en tendens til ikke å være like nøyaktige for kvinner og fargede som for hvite menn (på grunn av skjevheter i treningspopulasjonen).

Maskinlæringsalgoritmer

Maskinlæring avhenger av en rekke algoritmer for å gjøre et datasett til en modell. Hvilken algoritme som fungerer best, avhenger av typen problem du løser, tilgjengelige databehandlingsressurser og dataenes art. Uansett hvilken algoritme eller algoritmer du bruker, må du først rense og kondisjonere dataene.

La oss diskutere de vanligste algoritmene for hver type problem.

Klassifiseringsalgoritmer

Et klassifiseringsproblem er et overvåket læringsproblem som ber om et valg mellom to eller flere klasser, som vanligvis gir sannsynligheter for hver klasse. Utelatelse av nevrale nettverk og dyp læring, som krever et mye høyere nivå av databehandlingsressurser, er de vanligste algoritmene Naive Bayes, Decision Tree, Logistic Regression, K-Nearest Neighbors, and Support Vector Machine (SVM). Du kan også bruke ensemblemetoder (kombinasjoner av modeller), for eksempel Random Forest, andre Bagging-metoder og boosting-metoder som AdaBoost og XGBoost.

Regresjonsalgoritmer

Et regresjonsproblem er et overvåket læringsproblem som ber modellen om å forutsi et tall. Den enkleste og raskeste algoritmen er lineær (minste firkant) regresjon, men du bør ikke stoppe der, fordi det ofte gir deg et middelmådig resultat. Andre vanlige regresjonsalgoritmer for maskinlæring (kort for nevrale nettverk) inkluderer Naive Bayes, Decision Tree, K-nærmeste naboer, LVQ (Learning Vector Quantization), LARS Lasso, Elastic Net, Random Forest, AdaBoost og XGBoost. Du vil merke at det er noe overlapp mellom maskinlæringsalgoritmer for regresjon og klassifisering.

Clustering algoritmer

Et klyngeproblem er et uten tilsyn læringsproblem som ber modellen om å finne grupper med lignende datapunkter. Den mest populære algoritmen er K-Means Clustering; andre inkluderer Mean-Shift Clustering, DBSCAN (Density-Based Spatial Clustering of Applications with Noise), GMM (Gaussian Mixture Models) og HAC (Hierarchical Agglomerative Clustering).

Dimensjonsreduksjonsalgoritmer

Dimensjonsreduksjon er et læringsproblem uten tilsyn som ber modellen om å droppe eller kombinere variabler som har liten eller ingen effekt på resultatet. Dette brukes ofte i kombinasjon med klassifisering eller regresjon. Dimensjonalitetsreduksjonsalgoritmer inkluderer fjerning av variabler med mange manglende verdier, fjerning av variabler med lav varians, Beslutningstreet, Tilfeldig skog, fjerning eller kombinering av variabler med høy korrelasjon, Bakoverfunksjon eliminering, Fremover funksjonsvalg, Faktoranalyse og PCA (Principal Component Analysis).

Optimaliseringsmetoder

Opplæring og evaluering gjør overvåkede læringsalgoritmer til modeller ved å optimalisere parametervektene for å finne det verdisettet som best samsvarer med bakkenes sannhet i dataene dine. Algoritmene er ofte avhengige av varianter av bratteste avstamning for deres optimaliserere, for eksempel stokastisk gradientnedstigning (SGD), som egentlig er den bratteste nedstigningen utført flere ganger fra randomiserte startpunkter.

Vanlige forbedringer på SGD legger til faktorer som korrigerer retningen på gradienten basert på momentum, eller justerer læringsgraden basert på fremgang fra en gjennomgang av dataene (kalt en epoke eller et parti) til neste.

Nevrale nettverk og dyp læring

Nevrale nettverk ble inspirert av arkitekturen til den biologiske visuelle cortexen. Deep learning er et sett med teknikker for læring i nevrale nettverk som involverer et stort antall "skjulte" lag for å identifisere funksjoner. Skjulte lag kommer mellom inngangs- og utgangslagene. Hvert lag består av kunstige nevroner, ofte med sigmoid eller ReLU (Rectified Linear Unit) aktiveringsfunksjoner.

I et feed-forward-nettverk er nevronene organisert i forskjellige lag: ett inngangslag, et hvilket som helst antall skjulte behandlingslag og ett utgangslag, og utgangene fra hvert lag går bare til neste lag.

I et feed-forward-nettverk med snarveiforbindelser, kan noen tilkoblinger hoppe over ett eller flere mellomlag. I tilbakevendende nevrale nettverk kan nevroner påvirke seg selv, enten direkte eller indirekte gjennom neste lag.

Overvåket læring av et nevralt nettverk gjøres akkurat som enhver annen maskinlæring: Du presenterer nettverket med grupper med treningsdata, sammenligner nettverksutgangen med ønsket utgang, genererer en feilvektor og bruker korreksjoner til nettverket basert på feilvektoren , vanligvis ved hjelp av en backpropagation-algoritme. Batcher av treningsdata som kjøres sammen før du bruker korreksjoner kalles epoker.

Som med all maskinlæring, må du kontrollere spådommene til nevrale nettverk mot et eget testdatasett. Uten å gjøre det risikerer du å skape nevrale nettverk som bare husker innspillene sine i stedet for å lære å bli generaliserte prediktorer.

Gjennombruddet i det nevrale nettverksfeltet for visjon var Yann LeCuns 1998 LeNet-5, et syv-nivå konvolusjonelle nevrale nettverk (CNN) for gjenkjenning av håndskrevne sifre digitalisert i bilder på 32x32 piksler. For å analysere bilder med høyere oppløsning, trenger nettverket flere nevroner og flere lag.

Konvolusjonelle nevrale nettverk bruker vanligvis konvolusjons-, pooling-, ReLU-, fullt tilkoblede og tapslag for å simulere en visuell cortex. Konvolusjonslaget tar i utgangspunktet integralene i mange små overlappende regioner. Bassenglaget utfører en form for ikke-lineær nedprøving. ReLU-lag, som jeg nevnte tidligere, bruker den ikke-mettende aktiveringsfunksjonen f (x) = maks (0, x).

I et fullt koblet lag har nevronene full kobling til alle aktiveringer i forrige lag. Et tapslag beregner hvordan nettverksopplæringen straffer avviket mellom de forutsagte og sanne etikettene, ved hjelp av et Softmax- eller kryssentropitap for klassifisering eller et euklidisk tap for regresjon.

Naturlig språkbehandling (NLP) er et annet viktig applikasjonsområde for dyp læring. I tillegg til maskinoversettelsesproblemet som er adressert av Google Translate, inkluderer store NLP-oppgaver automatisk oppsummering, ko-referanseoppløsning, diskursanalyse, morfologisk segmentering, navngitt enhetsgjenkjenning, generering av naturlig språk, forståelse av naturlig språk, tagging av tale, følelser analyse og talegjenkjenning.

I tillegg til CNNs blir NLP-oppgaver ofte adressert med tilbakevendende nevrale nettverk (RNN), som inkluderer Long-Short Term Memory (LSTM) -modellen.

Jo flere lag det er i et dypt nevralt nettverk, jo mer beregning tar det å trene modellen på en CPU. Maskinvareakseleratorer for nevrale nettverk inkluderer GPUer, TPUer og FPGAer.

Forsterkningslæring

Forsterkningslæring trener en skuespiller eller middel å svare på en miljø på en måte som maksimerer noen verdi, vanligvis ved prøving og feiling. Det er forskjellig fra veiledning og tilsyn uten læring, men kombineres ofte med dem.

For eksempel lærte DeepMinds AlphaGo, for å lære å spille (handlingen) Go (miljøet), først å etterligne menneskelige Go-spillere fra et stort datasett av historiske spill (lærlinglæring). Deretter forbedret det spillet ved prøving og feiling (forsterkningslæring), ved å spille et stort antall Go-spill mot uavhengige forekomster av seg selv.

Robotkontroll er et annet problem som har blitt angrepet med dyp forsterkning læringsmetoder, som betyr forsterkning læring pluss dype nevrale nettverk, de dype nevrale nettverk er ofte CNNs trent til å trekke ut funksjoner fra videorammer.

Hvordan bruke maskinlæring

Hvordan går man frem for å lage en maskinlæringsmodell? Du begynner med å rense og kondisjonere dataene, fortsette med funksjonsteknikk, og prøv deretter hver maskinlæringsalgoritme som gir mening. For visse klasser av problemer, for eksempel visjon og naturlig språkbehandling, involverer algoritmene som sannsynligvis vil fungere dyp læring.

Datarengjøring for maskinlæring

Det er ikke noe som heter rene data i naturen. For å være nyttig for maskinlæring, må data filtreres aggressivt. For eksempel vil du:

  1. Se på dataene og ekskluder kolonner som mangler mye data.
  2. Se på dataene igjen og velg kolonnene du vil bruke (valg av funksjoner) for din spådom. Dette er noe du kanskje vil variere når du gjentar.
  3. Ekskluder rader som fremdeles mangler data i de gjenværende kolonnene.
  4. Korriger åpenbare skrivefeil og slå sammen tilsvarende svar. For eksempel bør USA, USA, USA og Amerika slås sammen til en enkelt kategori.
  5. Ekskluder rader som har data som er utenfor området. For eksempel, hvis du analyserer drosjeturer i New York City, vil du filtrere ut rader med pickup eller drop-off breddegrader og lengdegrader som ligger utenfor hovedstadsområdet.

Det er mye mer du kan gjøre, men det vil avhenge av dataene som samles inn. Dette kan være kjedelig, men hvis du setter opp et datarensingstrinn i maskinlæringsrørledningen din, kan du endre og gjenta det etter eget ønske.

Datakoding og normalisering for maskinlæring

For å bruke kategoriske data for maskinklassifisering, må du kode tekstetikettene i et annet skjema. Det er to vanlige kodinger.

En er merkekoding, som betyr at hver tekstetikettverdi erstattes med et tall. Den andre er en-hot-koding, som betyr at hver tekstetikettverdi blir omgjort til en kolonne med en binær verdi (1 eller 0). De fleste maskinlæringsrammer har funksjoner som gjør konverteringen for deg. Generelt foretrekkes én-hot-koding, ettersom koding av etiketter noen ganger kan forvirre maskinlæringsalgoritmen til å tro at den kodede kolonnen er bestilt.

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