Programmering

Dyp læring kontra maskinlæring: Forstå forskjellene

Maskinlæring og dyp læring er begge former for kunstig intelligens. Du kan også si, riktig, at dyp læring er en bestemt type maskinlæring. Både maskinlæring og dyp læring starter med opplæring og testdata og en modell og går gjennom en optimaliseringsprosess for å finne vektene som gjør at modellen passer best til dataene. Begge kan håndtere numeriske (regresjon) og ikke-numeriske (klassifisering) problemer, selv om det er flere bruksområder, for eksempel gjenstandsgjenkjenning og språkoversettelse, der dyp læringsmodeller har en tendens til å gi bedre tilpasninger enn maskinlæringsmodeller.

Maskinlæring forklart

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

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, som egentlig er den bratteste nedstigningen utført flere ganger fra randomiserte startpunkter.

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

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 datarengjøringstrinn 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 skal være en ordnet liste.

For å bruke numeriske data for maskinregresjon må du vanligvis normalisere dataene. Ellers kan tallene med større områder ha en tendens til å dominere den euklidiske avstanden mellom funksjonvektorer, deres effekter kan forstørres på bekostning av de andre feltene, og den bratteste nedstigningsoptimaliseringen kan ha problemer med å konvergere. Det er en rekke måter å normalisere og standardisere data for maskinlæring, inkludert min-max normalisering, gjennomsnittlig normalisering, standardisering og skalering til enhetslengde. Denne prosessen kalles ofte funksjonskalering.

Funksjonsteknikk for maskinlæring

EN trekk er en individuell målbar egenskap eller karakteristikk av et fenomen som observeres. Begrepet "funksjon" er relatert til begrepet til en forklarende variabel, som brukes i statistiske teknikker som lineær regresjon. Funksjonsvektorer kombinerer alle funksjonene for en enkelt rad i en numerisk vektor.

En del av kunsten å velge funksjoner er å velge et minimumssett av uavhengig variabler som forklarer problemet. Hvis to variabler er sterkt korrelert, må de enten kombineres til en enkelt funksjon, eller så bør en bli droppet. Noen ganger utfører folk hovedkomponentanalyse for å konvertere korrelerte variabler til et sett med lineært ukorrelerte variabler.

Noen av transformasjonene som folk bruker for å konstruere nye funksjoner eller redusere dimensjonaliteten til funksjonsvektorer, er enkle. Trekk for eksempel fra Fødselsår fra Dødsåret og du konstruerer Alder ved døden, som er en primær uavhengig variabel for livstids- og dødelighetsanalyse. I andre tilfeller funksjonskonstruksjon er kanskje ikke så opplagt.

Deling av data for maskinlæring

Den vanlige øvelsen for maskinlæring med tilsyn er å dele datasettet i delmengder for opplæring, validering, og test. En måte å jobbe på er å tilordne 80% av dataene til treningsdatasettet, og 10% hver til validerings- og testdatasettene. (Den nøyaktige splittelsen er et spørsmål om preferanse.) Hovedtyngden av opplæringen gjøres mot opplæringsdatasettet, og prediksjon gjøres mot valideringsdatasettet på slutten av hver epoke.

Feilene i valideringsdatasettet kan brukes til å identifisere stoppekriterier, eller for å drive hyperparameterinnstilling. Viktigst av alt, feilene i valideringsdatasettet kan hjelpe deg med å finne ut om modellen har overdrakt treningsdataene.

Prediksjon mot testdatasettet gjøres vanligvis på den endelige modellen. Hvis testdatasettet aldri ble brukt til trening, kalles det noen ganger hold-datasettet.

Det er flere andre ordninger for å dele dataene. En vanlig teknikk, kryssvalidering, innebærer gjentatte ganger å dele hele datasettet i et treningsdatasett og et valideringsdatasett. På slutten av hver epoke blandes og deles dataene igjen.

Maskinlæringsbiblioteker

I Python er Spark MLlib og Scikit-learning gode valg for maskinlæringsbiblioteker. I R er noen alternativer for maskinlæringspakke CARAT, randomForest, e1071 og KernLab. I Java inkluderer gode valg Java-ML, RapidMiner og Weka.

Dyp læring forklart

Dyp læring er en form for maskinlæring der modellen som trenes har mer enn en skjult lag mellom inngangen og utgangen. I de fleste diskusjoner betyr dyp læring å bruke dyp nevrale nettverk. Det er imidlertid noen få algoritmer som implementerer dyp læring ved hjelp av andre typer skjulte lag i tillegg til nevrale nettverk.

Ideene for “kunstige” nevrale nettverk går tilbake til 1940-tallet. Det essensielle konseptet er at et nettverk av kunstige nevroner bygget ut av sammenkoblede terskelbrytere, kan lære å gjenkjenne mønstre på samme måte som en dyrehjerne og nervesystem (inkludert netthinnen) gjør.

Backprop

Læringen skjer i utgangspunktet ved å styrke forbindelsen mellom to nevroner når begge er aktive samtidig under trening. I moderne nevrale nettverksprogramvare er dette oftest et spørsmål om å øke vektverdiene for forbindelsene mellom nevroner ved hjelp av en regel som kalles tilbake forplantning av feil, backprop eller BP.

Nevroner i kunstige nevrale nettverk

Hvordan modelleres nevronene? Hver har en forplantningsfunksjon som transformerer utgangene til de tilkoblede nevronene, ofte med en vektet sum. Utgangen fra forplantningsfunksjonen går til en aktiveringsfunksjon, som utløses når inngangen overskrider en terskelverdi.

Aktiveringsfunksjoner i nevrale nettverk

På 1940- og 50-tallet brukte kunstige nevroner en trinnaktivering og ble kalt perceptrons. Moderne nevrale nettverk kan si de bruker perceptroner, men har faktisk jevne aktiveringsfunksjoner, for eksempel logistikk- eller sigmoidfunksjonen, den hyperbolske tangensen eller den opprettholdte lineære enheten (ReLU). ReLU er vanligvis det beste valget for rask konvergens, selv om det har et spørsmål om at neuroner "dør" under trening hvis læringsgraden er satt for høyt.

[Også på: 6 måter å få maskinlæring til å mislykkes]

Utgangen fra aktiveringsfunksjonen kan overføres til en utgangsfunksjon for ytterligere forming. Ofte er imidlertid utgangsfunksjonen identitetsfunksjonen, noe som betyr at utgangen fra aktiveringsfunksjonen blir sendt til de nedstrøms tilkoblede nevronene.

Nevrale nettverkstopologier

Nå som vi vet om nevronene, må vi lære om de vanlige nevrale nettverkstopologiene. I et feed-forward-nettverk er nevronene organisert i forskjellige lag: ett inngangslag, n skjulte behandlingslag og ett utgangslag. 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.

Trening av nevrale nettverk

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

For de som er interessert i detaljene, bruker tilbakespredning gradienten til feilfunksjonen (eller kostnaden) med hensyn til modellens vekter og forspenninger for å oppdage riktig retning for å minimere feilen. To ting styrer anvendelsen av korreksjoner: optimaliseringsalgoritmen og læringsfrekvensvariabelen. Læringsfrekvensvariabelen må vanligvis være liten for å garantere konvergens og unngå å forårsake døde ReLU-neuroner.

Optimaliserere for nevrale nettverk

Optimaliseringsprogrammer for nevrale nettverk bruker vanligvis en eller annen form for gradient-nedstigningsalgoritme for å drive forplantning av ryggen, ofte med en mekanisme for å unngå å bli sittende fast i lokale minima, for eksempel å optimalisere tilfeldig utvalgte mini-batches (Stochastic Gradient Descent) og bruke momentum korreksjoner til gradienten. Noen optimaliseringsalgoritmer tilpasser også læringshastighetene til modellparametrene ved å se på gradienthistorikken (AdaGrad, RMSProp og Adam).

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