Programmering

Automatiseret maskinindlæring eller AutoML forklaret

De to største barrierer for brugen af ​​maskinlæring (både klassisk maskinlæring og dyb læring) er færdigheder og computerressourcer. Du kan løse det andet problem ved at kaste penge på det, enten til køb af accelereret hardware (såsom computere med avancerede GPU'er) eller til leje af beregningsressourcer i skyen (såsom forekomster med tilknyttede GPU'er, TPU'er og FPGA'er).

På den anden side er det sværere at løse færdighedsproblemet. Dataforskere har ofte store lønninger og kan stadig være svære at rekruttere. Google var i stand til at uddanne mange af sine medarbejdere i sin egen TensorFlow-ramme, men de fleste virksomheder har knap nok folk, der er dygtige nok til selv at opbygge maskinlæring og dyb læringsmodeller, og meget mindre lære andre hvordan.

Hvad er AutoML?

Automated machine learning, eller AutoML, sigter mod at reducere eller eliminere behovet for dygtige dataforskere til at opbygge machine learning og deep learning-modeller. I stedet giver et AutoML-system dig mulighed for at give de mærkede træningsdata som input og modtage en optimeret model som output.

Der er flere måder at gøre dette på. En tilgang er, at softwaren simpelthen træner alle slags modeller på dataene og vælger den, der fungerer bedst. En forfining af dette ville være, at det byggede en eller flere ensemble-modeller, der kombinerer de andre modeller, hvilket undertiden (men ikke altid) giver bedre resultater.

En anden teknik er at optimere hyperparametrene (forklaret nedenfor) for den eller de bedste modeller for at træne en endnu bedre model. Feature engineering (også forklaret nedenfor) er en værdifuld tilføjelse til enhver model træning. En måde at afkvalificere dyb læring på er at bruge overførselsindlæring og i det væsentlige tilpasse en veluddannet generel model til specifikke data.

Hvad er hyperparameteroptimering?

Alle maskinlæringsmodeller har parametre, hvilket betyder vægtene for hver variabel eller funktion i modellen. Disse bestemmes normalt af tilbagespredning af fejlene plus iteration under kontrol af en optimizer såsom stokastisk gradientnedstigning.

De fleste maskinindlæringsmodeller har også hyperparametre, der er indstillet uden for træningsløkken. Disse inkluderer ofte læringshastigheden, frafaldsprocenten og modelspecifikke parametre såsom antallet af træer i en tilfældig skov.

Hyperparameter tuning eller hyperparameter optimering (HPO) er en automatisk måde at feje eller søge gennem en eller flere af hyperparametrene i en model for at finde det sæt, der resulterer i den bedst uddannede model. Dette kan være tidskrævende, da du skal træne modellen igen (den indre sløjfe) for hvert sæt hyperparameterværdier i fejningen (den ydre sløjfe). Hvis du træner mange modeller parallelt, kan du reducere den nødvendige tid på bekostning af at bruge mere hardware.

Hvad er funktionsteknik?

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. EN funktion vektor kombinerer alle funktionerne til en enkelt række i en numerisk vektor. Funktionsteknik er processen med at finde det bedste sæt variabler og den bedste datakodning og normalisering til input til modeluddannelsesprocessen.

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 (PCA) for at konvertere korrelerede variabler til et sæt lineært ukorrelerede variabler.

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.

For at bruge numeriske data til maskinregression skal du normalt normalisere dataene. Ellers kan tallene med større intervaller have 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.

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.

Hvad er transfer learning?

Overførselsindlæring kaldes undertiden brugerdefineret maskinindlæring og undertiden kaldes AutoML (for det meste af Google). I stedet for at starte fra bunden, når du træner modeller fra dine data, implementerer Google Cloud AutoML automatisk dyb overførselsindlæring (hvilket betyder, at den starter fra et eksisterende dybt neuralt netværk, der er trænet i andre data) og neural arkitektur-søgning (hvilket betyder, at den finder den rigtige kombination af ekstra netværkslag) til oversættelse af sprogpar, klassificering af naturligt sprog og billedklassificering.

Det er en anden proces end hvad der normalt menes med AutoML, og den dækker ikke så mange brugssager. På den anden side, hvis du har brug for en tilpasset dyb læringsmodel i et understøttet område, vil overførselsindlæring ofte producere en overlegen model.

AutoML implementeringer

Der er mange implementeringer af AutoML, som du kan prøve. Nogle er betalte tjenester, og andre er gratis kildekode. Listerne nedenfor er på ingen måde komplette eller endelige.

AutoML-tjenester

Alle de store tre skytjenester har en slags AutoML. Amazon SageMaker justerer hyperparameter, men prøver ikke automatisk flere modeller eller udfører funktionsteknik. Azure Machine Learning har både AutoML, der gennemgår funktioner og algoritmer, og hyperparameter tuning, som du typisk kører på den bedste algoritme valgt af AutoML. Google Cloud AutoML er, som jeg diskuterede tidligere, dyb overførselsindlæring til sprogpar oversættelse, naturlig sprogklassificering og billedklassificering.

En række mindre virksomheder tilbyder også AutoML-tjenester. For eksempel har DataRobot, der hævder at have opfundet AutoML, et stærkt ry på markedet. Og mens dotData har en lille markedsandel og en middelmådig brugergrænseflade, har den stærke funktionstekniske kapaciteter og dækker mange virksomhedsbrugssager. H2O.ai Driverless AI, som jeg gennemgik i 2017, kan hjælpe en datavidenskabsmand med at vise modeller som en Kaggle-master, udføre funktionsingeniør, algoritmefejning og hyperparameteroptimering på en samlet måde.

AutoML-rammer

AdaNet er en let TensorFlow-baseret ramme til automatisk at lære modeller af høj kvalitet med minimal ekspertintervention. Auto-Keras er et open source-softwarebibliotek til automatiseret maskinindlæring, udviklet hos Texas A&M, der giver funktioner til automatisk søgning efter arkitektur og hyperparametre til dyb læringsmodeller. NNI (Neural Network Intelligence) er et værktøjssæt fra Microsoft, der hjælper brugerne med at designe og indstille maskinlæringsmodeller (f.eks. Hyperparametre), neurale netværksarkitekturer eller et komplekst systems parametre på en effektiv og automatisk måde.

Du kan finde yderligere AutoML-projekter og en ret komplet og aktuel liste over papirer om AutoML på GitHub.