Programmering

Deep learning versus machine learning: Forstå forskellene

Maskinindlæring og dyb læring er begge former for kunstig intelligens. Du kan også sige korrekt, at dyb læring er en bestemt slags maskinlæring. Både maskinindlæring og dyb læring starter med træning og testdata og en model og gennemgår en optimeringsproces for at finde de vægte, der passer til modellen bedst passer til dataene. Begge kan håndtere numeriske (regression) og ikke-numeriske (klassificering) problemer, selvom der er flere anvendelsesområder, såsom genkendelse af objekter og sprogoversættelse, hvor dyb læringsmodeller har tendens til at give bedre pasform end maskinindlæringsmodeller.

Maskinindlæring forklaret

Maskinindlæringsalgoritmer er ofte opdelt i overvåget (træningsdataene er tagget med svarene) og uden opsyn (eventuelle etiketter, der findes, vises ikke til træningsalgoritmen). Overvågede maskinlæringsproblemer er yderligere opdelt i klassifikation (forudsigelse af ikke-numeriske svar, såsom sandsynligheden for en ubesvaret realkreditbetaling) og regression (forudsiger numeriske svar, f.eks. antallet af widgets, der sælges i din næste butik i Manhattan næste måned).

Uovervåget læring er yderligere opdelt i klyngedannelse (at finde grupper af lignende genstande, såsom løbesko, gåsko og dresssko), forening (at finde almindelige sekvenser af genstande, såsom kaffe og fløde) og dimensionalitetsreduktion (projektion, valg af funktion og ekstraktion af funktioner).

Klassificeringsalgoritmer

Et klassificeringsproblem er et overvåget læringsproblem, der beder om et valg mellem to eller flere klasser, som normalt giver sandsynligheder for hver klasse. Udeladelse af neurale netværk og dyb læring, som kræver et meget højere niveau af computerværdier, er de mest almindelige algoritmer Naive Bayes, Beslutningstræ, Logistisk regression, K-nærmeste naboer og SVM (Support Vector Machine). Du kan også bruge ensemble-metoder (kombinationer af modeller), såsom Random Forest, andre Bagging-metoder og boost-metoder som AdaBoost og XGBoost.

Regressionsalgoritmer

Et regressionsproblem er et overvåget læringsproblem, der beder modellen om at forudsige et tal. Den enkleste og hurtigste algoritme er lineær (mindste firkant) regression, men du skal ikke stoppe der, fordi det ofte giver dig et middelmådigt resultat. Andre almindelige regressionsalgoritmer til maskinindlæring (kort for neurale netværk) inkluderer Naive Bayes, Decision Tree, K-nærmeste naboer, LVQ (Learning Vector Quantization), LARS Lasso, Elastic Net, Random Forest, AdaBoost og XGBoost. Du vil bemærke, at der er en vis overlapning mellem maskinindlæringsalgoritmer til regression og klassificering.

Klyngealgoritmer

Et klyngeproblem er et ikke-overvåget læringsproblem, der beder modellen om at finde grupper med lignende datapunkter. Den mest populære algoritme 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).

Dimensionalitetsreduktion algoritmer

Dimensionalitetsreduktion er et uovervåget læringsproblem, der beder modellen om at droppe eller kombinere variabler, der har ringe eller ingen effekt på resultatet. Dette bruges ofte i kombination med klassificering eller regression. Dimensionsreduktionsalgoritmer inkluderer fjernelse af variabler med mange manglende værdier, fjernelse af variabler med lav varians, beslutningstræ, tilfældig skov, fjernelse eller kombination af variabler med høj korrelation, bagudgående funktion eliminering, fremad valg af funktion, faktoranalyse og PCA (Principal Component Analysis).

Optimeringsmetoder

Uddannelse og evaluering forvandler overvågede læringsalgoritmer til modeller ved at optimere deres parametervægte for at finde det sæt værdier, der bedst matcher jordens sandhed i dine data. Algoritmerne er ofte afhængige af varianter af stejleste afstamning for deres optimeringsmidler, for eksempel stokastisk gradientafstamning, som i det væsentlige er den stejleste afstamning, der udføres flere gange fra randomiserede startpunkter.

Almindelige forbedringer af stokastisk gradientnedstigning tilføjer faktorer, der korrigerer retningen for gradienten baseret på momentum, eller justerer indlæringshastigheden baseret på fremskridt fra en gennemgang gennem dataene (kaldet en epoke eller et parti) til det næste.

Datarengøring til maskinindlæring

Der er ikke sådan noget som rene data i naturen. For at være nyttigt til maskinindlæring skal data filtreres aggressivt. For eksempel vil du gerne:

  1. Se på dataene og udelukk alle kolonner, der har mange manglende data.
  2. Se på dataene igen, og vælg de kolonner, du vil bruge (valg af funktion) til din forudsigelse. Dette er noget, du måske vil variere, når du gentager.
  3. Ekskluder rækker, der stadig mangler data i de resterende kolonner.
  4. Ret indlysende typografier og flet svar svarende. F.eks. Skal USA, USA, USA og Amerika slås sammen i en enkelt kategori.
  5. Ekskluder rækker, der har data, der er uden for området. For eksempel, hvis du analyserer taxaturer i New York City, vil du gerne filtrere rækker med pickup- eller drop-off-breddegrader og længdegrader, der ligger uden for hovedstadsområdet.

Der er meget mere, du kan gøre, men det afhænger af de indsamlede data. Dette kan være kedeligt, men hvis du opretter et datarensningstrin i din maskinlæringsrørledning, kan du ændre og gentage det efter ønske.

Datakodning og normalisering til maskinindlæring

For at bruge kategoriske data til maskinklassificering skal du kode tekstetiketterne i en anden form. Der er to almindelige kodninger.

Den ene er etiketkodning, hvilket betyder, at hver tekstetiketværdi erstattes med et tal. Den anden er en-hot kodning, hvilket betyder, at hver tekstetiketværdi omdannes til en kolonne med en binær værdi (1 eller 0). De fleste maskinlæringsrammer har funktioner, der konverterer for dig. Generelt foretrækkes en-hot-kodning, da etiketkodning undertiden kan forvirre maskinindlæringsalgoritmen til at tro, at den kodede kolonne formodes at være en ordnet liste.

For at bruge numeriske data til maskinregression skal du normalt normalisere dataene. Ellers kan tallene med større intervaller have en tendens til at dominere den euklidiske afstand mellem funktionsvektorer, deres virkninger kunne forstørres på bekostning af de andre felter, og den stejleste nedstigningsoptimering kan have svært ved at konvergere. Der er en række måder at normalisere og standardisere data til maskinindlæring, herunder min-max normalisering, gennemsnitlig normalisering, standardisering og skalering til enhedslængde. Denne proces kaldes ofte funktion skalering.

Funktionsteknik til maskinindlæring

EN funktion er en individuel målbar egenskab eller egenskab ved et fænomen, der observeres. Begrebet "funktion" er relateret til begrebet en forklarende variabel, der bruges i statistiske teknikker såsom lineær regression. Funktionsvektorer kombinerer alle funktionerne til en enkelt række i en numerisk vektor.

En del af kunsten at vælge funktioner er at vælge et minimumssæt af uafhængig variabler, der forklarer problemet. Hvis to variabler er stærkt korrelerede, skal de enten kombineres til en enkelt funktion, ellers skal den ene droppes. Nogle gange udfører folk hovedkomponentanalyse for at konvertere korrelerede variabler til et sæt lineært ukorrelerede variabler.

Nogle af de transformationer, som folk bruger til at konstruere nye funktioner eller reducere dimensionaliteten af ​​funktionsvektorer, er enkle. Træk for eksempel Fødsels år fra Dødsår og du konstruerer Alder ved døden, som er en primær uafhængig variabel til livstids- og dødelighedsanalyse. I andre tilfælde funktionskonstruktion er måske ikke så indlysende.

Opdeling af data til maskinindlæring

Den sædvanlige praksis for overvåget maskinindlæring er at opdele datasættet i delmængder til uddannelse, valideringog prøve. En måde at arbejde på er at tildele 80% af dataene til træningsdatasættet og 10% hver til validerings- og testdatasættene. (Den nøjagtige opdeling er et spørgsmål om præference.) Hovedparten af ​​træningen sker mod træningsdatasættet, og forudsigelse sker mod valideringsdatasættet i slutningen af ​​hver epoke.

Fejlene i valideringsdatasættet kan bruges til at identificere stopkriterier eller til at køre hyperparameterindstilling. Vigtigst er det, at fejlene i valideringsdatasættet kan hjælpe dig med at finde ud af, om modellen har overtrådt træningsdataene.

Forudsigelse mod testdatasættet udføres typisk på den endelige model. Hvis testdatasættet aldrig blev brugt til træning, kaldes det undertiden holdout-datasættet.

Der er flere andre ordninger til opdeling af data. En almindelig teknik, krydsvalideringinvolverer gentagne gange opdeling af det fulde datasæt i et træningsdatasæt og et valideringsdatasæt. Ved afslutningen af ​​hver epoke blandes dataene og deles igen.

Maskinlæringsbiblioteker

I Python er Spark MLlib og Scikit-learning fremragende valg til maskinlæringsbiblioteker. I R er nogle maskinindlæringspakkeindstillinger CARAT, randomForest, e1071 og KernLab. I Java inkluderer gode valg Java-ML, RapidMiner og Weka.

Dyb læring forklaret

Deep learning er en form for maskinlæring, hvor modellen, der trænes, har mere end en skjult lag mellem input og output. I de fleste diskussioner betyder dyb læring at bruge dyb neurale netværk. Der er dog et par algoritmer, der implementerer dyb læring ved hjælp af andre former for skjulte lag udover neurale netværk.

Idéerne til "kunstige" neurale netværk går tilbage til 1940'erne. Det væsentlige koncept er, at et netværk af kunstige neuroner bygget ud af sammenkoblede tærskelafbrydere kan lære at genkende mønstre på samme måde som en dyrehjerne og nervesystem (inklusive nethinden) gør.

Baggrund

Læringen sker grundlæggende ved at styrke forbindelsen mellem to neuroner, når begge er aktive på samme tid under træning. I moderne neuralt netværkssoftware er dette oftest et spørgsmål om at øge vægtværdierne for forbindelserne mellem neuroner ved hjælp af en regel kaldet tilbage udbredelse af fejl, backprop eller BP.

Neuroner i kunstige neurale netværk

Hvordan modelleres neuronerne? Hver har en formeringsfunktion, der transformerer output fra de tilsluttede neuroner, ofte med en vægtet sum. Udbredelsen af ​​udbredelsesfunktionen overgår til en aktiveringsfunktion, der udløses, når dens indgang overstiger en tærskelværdi.

Aktiveringsfunktioner i neurale netværk

I 1940'erne og 50'erne brugte kunstige neuroner en trinaktivering og blev kaldt perceptrons. Moderne neurale netværk kan sige de bruger perceptroner, men har faktisk glatte aktiveringsfunktioner, såsom logistik- eller sigmoidfunktionen, den hyperbolske tangens eller den korrigerede lineære enhed (ReLU). ReLU er normalt det bedste valg til hurtig konvergens, selvom det har et spørgsmål om, at neuroner "dør" under træning, hvis læringshastigheden er indstillet for høj.

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

Outputtet fra aktiveringsfunktionen kan overføres til en outputfunktion for yderligere formgivning. Ofte er outputfunktionen imidlertid identitetsfunktionen, hvilket betyder, at output fra aktiveringsfunktionen sendes til de nedstrømsforbundne neuroner.

Neurale netværkstopologier

Nu hvor vi kender neuronerne, er vi nødt til at lære om de almindelige neurale netværkstopologier. I et feed-forward-netværk er neuronerne organiseret i forskellige lag: et inputlag, n skjulte behandlingslag og et outputlag. Outputene fra hvert lag går kun til det næste lag.

I et feed-forward-netværk med genvejsforbindelser kan nogle forbindelser springe over et eller flere mellemliggende lag. I tilbagevendende neurale netværk kan neuroner påvirke sig selv, enten direkte eller indirekte gennem det næste lag.

Uddannelse af neurale netværk

Overvåget læring af et neuralt netværk udføres ligesom enhver anden maskinindlæring: Du præsenterer netværket med grupper af træningsdata, sammenligner netværksoutputtet med det ønskede output, genererer en fejlvektor og anvender korrektioner til netværket baseret på fejlvektoren . Batcher af træningsdata, der køres sammen, inden der anvendes korrektioner, kaldes epoker.

For dem, der er interesseret i detaljerne, bruger udbredelse tilbage gradienten af ​​fejlfunktionen (eller omkostningen) med hensyn til modelens vægt og forspænding for at finde den rigtige retning for at minimere fejlen. To ting styrer anvendelsen af ​​korrektioner: Optimeringsalgoritmen og indlæringshastighedsvariablen. Læringshastighedsvariablen skal normalt være lille for at garantere konvergens og undgå at forårsage døde ReLU-neuroner.

Optimizers til neurale netværk

Optimizers til neurale netværk bruger typisk en eller anden form for gradient-afstamningsalgoritme til at drive spredning af ryggen, ofte med en mekanisme, der hjælper med at undgå at sidde fast i lokale minima, såsom optimering af tilfældigt valgte mini-batches (Stochastic Gradient Descent) og anvendelse momentum korrektioner til gradienten. Nogle optimeringsalgoritmer tilpasser også læringshastighederne for modelparametrene ved at se på gradienthistorikken (AdaGrad, RMSProp og Adam).