Programmering

Hvad er maskinindlæring? Intelligens afledt af data

Maskinindlæring defineret

Maskinindlæring er en gren af ​​kunstig intelligens, der inkluderer metoder eller algoritmer til automatisk at oprette modeller fra data. I modsætning til et system, der udfører en opgave ved at følge eksplicitte regler, lærer et maskinlæringssystem af erfaring. Mens et regelbaseret system udfører en opgave på samme måde hver gang (på godt og ondt), kan ydeevnen til et maskinlæringssystem forbedres gennem træning ved at udsætte algoritmen for flere data.

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

Anvendelser af maskinlæring

Vi hører om applikationer af maskinlæring på daglig basis, selvom ikke alle er ulegerede succeser. Selvkørende biler er et godt eksempel, hvor opgaver spænder fra enkle og vellykkede (parkeringsassistent og motorvejsvej) til komplekse og svære (fuld køretøjskontrol i bymiljøer, hvilket har ført til flere dødsfald).

Spil med maskinindlæring er stærkt vellykket for brikker, skak, shogi og Go, der har slået menneskelige verdensmestre. Automatisk sprogoversættelse har været stort set vellykket, selvom nogle sprogpar fungerer bedre end andre, og mange automatiske oversættelser kan stadig forbedres af menneskelige oversættere.

Automatisk tale til tekst fungerer ret godt for folk med almindelige accenter, men ikke så godt for folk med nogle stærke regionale eller nationale accenter; ydeevne afhænger af de træningssæt, som sælgerne bruger. Automatisk sentimentanalyse af sociale medier har en rimelig god succesrate, sandsynligvis fordi træningssættene (f.eks.Amazon-produktvurderinger, som parrer en kommentar med en numerisk score) er store og lette at få adgang til.

Automatisk screening af cv'er er et kontroversielt område. Amazon måtte trække sit interne system tilbage på grund af træningseksempler på bias, der fik det til at nedgradere alle jobansøgninger fra kvinder.

Andre CV-screeningssystemer, der i øjeblikket er i brug, kan have træningsforstyrrelser, der får dem til at opgradere kandidater, der er "ligesom" nuværende medarbejdere på måder, som det juridisk set ikke er meningen (f.eks. Unge, hvide, mandlige kandidater fra eksklusive engelsktalende kvarterer, der spillede holdsport er mere tilbøjelige til at bestå screening). Forskningsindsats fra Microsoft og andre fokuserer på at eliminere implicitte forstyrrelser i maskinindlæring.

Automatisk klassificering af patologi og røntgenbilleder er kommet så langt, at det kan hjælpe (men ikke erstatte) patologer og radiologer til påvisning af visse former for abnormiteter. I mellemtiden er ansigtsidentifikationssystemer begge kontroversielle, når de fungerer godt (på grund af hensyn til privatlivets fred) og har tendens til ikke at være lige så nøjagtige for kvinder og folk i farve, som de er for hvide mænd (på grund af fordomme i træningspopulationen).

Maskinindlæringsalgoritmer

Maskinindlæring afhænger af et antal algoritmer til at omdanne et datasæt til en model. Hvilken algoritme, der fungerer bedst, afhænger af typen af ​​problem, du løser, de tilgængelige computerressourcer og dataens art. Uanset hvilken algoritme eller algoritmer du bruger, skal du først rense og konditionere dataene.

Lad os diskutere de mest almindelige algoritmer for hver type problem.

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 (SGD), som i det væsentlige er den stejleste afstamning, der udføres flere gange fra randomiserede startpunkter.

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

Neurale netværk og dyb læring

Neurale netværk blev inspireret af arkitekturen i den biologiske visuelle cortex. Deep learning er et sæt teknikker til læring i neurale netværk, der involverer et stort antal "skjulte" lag for at identificere funktioner. Skjulte lag kommer mellem input og output lag. Hvert lag består af kunstige neuroner, ofte med sigmoid eller ReLU (Rectified Linear Unit) aktiveringsfunktioner.

I et feed-forward-netværk er neuronerne organiseret i forskellige lag: et inputlag, et vilkårligt antal skjulte behandlingslag og et outputlag, og 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.

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 , normalt ved hjælp af en backpropagation algoritme. Batcher af træningsdata, der køres sammen, inden der anvendes korrektioner, kaldes epoker.

Som med al maskinindlæring skal du kontrollere forudsigelserne for det neurale netværk mod et separat testdatasæt. Uden at gøre det risikerer du at oprette neurale netværk, der kun husker deres input i stedet for at lære at blive generaliserede forudsigere.

Gennembruddet i det neurale netværksfelt for vision var Yann LeCuns 1998 LeNet-5, et syv-niveau nedviklede neurale netværk (CNN) til genkendelse af håndskrevne cifre digitaliseret i 32x32 pixelbilleder. For at analysere billeder med højere opløsning ville netværket have brug for flere neuroner og flere lag.

Konvolutionsneurale netværk bruger typisk foldnings-, pooling-, ReLU-, fuldt tilsluttet og tab af lag til at simulere en visuel cortex. Det foldede lag tager grundlæggende integralerne i mange små overlappende regioner. Puljelaget udfører en form for ikke-lineær ned-sampling. ReLU-lag, som jeg nævnte tidligere, anvender den ikke-mættende aktiveringsfunktion f (x) = maks (0, x).

I et fuldt forbundet lag har neuronerne fulde forbindelser til alle aktiveringer i det forrige lag. Et tabslag beregner, hvordan netværkstræningen straffer afvigelsen mellem de forudsagte og sande etiketter ved hjælp af et Softmax- eller kryds-entropitab til klassificering eller et euklidisk tab for regression.

Naturlig sprogbehandling (NLP) er et andet vigtigt anvendelsesområde til dyb læring. Ud over maskinoversættelsesproblemet, som Google Translate adresserer, inkluderer store NLP-opgaver automatisk opsummering, co-referenceopløsning, diskursanalyse, morfologisk segmentering, navngivet enhedsgenkendelse, naturlig sproggenerering, forståelse af naturligt sprog, tagging af tale, stemning analyse og talegenkendelse.

Ud over CNN'er adresseres NLP-opgaver ofte med tilbagevendende neurale netværk (RNN'er), som inkluderer LSTM-modellen (Long-Short Term Memory).

Jo flere lag der er i et dybt neuralt netværk, jo mere beregning tager det at træne modellen på en CPU. Hardwareacceleratorer til neurale netværk inkluderer GPU'er, TPU'er og FPGA'er.

Forstærkning læring

Forstærkning læring træner en skuespiller eller agent at svare på en miljø på en måde, der maksimerer nogle værdinormalt ved forsøg og fejl. Det adskiller sig fra overvåget og ikke-overvåget læring, men kombineres ofte med dem.

For eksempel lærte DeepMinds AlphaGo for at lære at spille (handlingen) spillet Go (miljøet) først at efterligne menneskelige Go-spillere fra et stort datasæt af historiske spil (lærlingslæring). Derefter forbedrede det sit spil ved prøving og fejl (forstærkningslæring) ved at spille et stort antal Go-spil mod uafhængige tilfælde af sig selv.

Robotkontrol er et andet problem, der er blevet angrebet med dyb forstærkning læringsmetoder, hvilket betyder forstærkning læring plus dybe neurale netværk, hvor de dybe neurale netværk ofte er CNN'er uddannet til at udtrække funktioner fra videorammer.

Sådan bruges maskinindlæring

Hvordan går man til at oprette en maskinlæringsmodel? Du starter med at rense og konditionere dataene, fortsætte med funktionsteknik og derefter prøve enhver maskinlæringsalgoritme, der giver mening. For visse klasser af problemer, såsom vision og naturlig sprogbehandling, involverer algoritmerne, der sandsynligvis fungerer, dyb læring.

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 er bestilt.

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