Vad är maskininlärning? Intelligens härledd från data

Maskininlärning definierad

Maskininlärning är en gren av artificiell intelligens som inkluderar metoder eller algoritmer för att automatiskt skapa modeller från data. Till skillnad från ett system som utför en uppgift genom att följa tydliga regler lär sig ett maskininlärningssystem av erfarenhet. Medan ett regelbaserat system kommer att utföra en uppgift på samma sätt varje gång (på gott och ont), kan prestandan hos ett maskininlärningssystem förbättras genom träning genom att algoritmen utsätts för mer data.

Maskininlärningsalgoritmer delas ofta in i övervakad (träningsdata är taggade med svaren) och utan tillsyn (eventuella etiketter visas inte för träningsalgoritmen). Övervakade maskininlärningsproblem är ytterligare indelade i klassificering (förutsäger icke-numeriska svar, till exempel sannolikheten för en missad inteckning) och regression (förutsäger numeriska svar, till exempel antalet widgets som kommer att säljas nästa månad i din Manhattan-butik).

Oövervakad inlärning delas vidare in i kluster (hitta grupper av liknande föremål, såsom löparskor, vandringsskor och klädskor), association (hitta vanliga sekvenser av objekt, såsom kaffe och grädde) och dimensioneringsreduktion (projektion, funktionsval och extrahering av funktioner).

Tillämpningar av maskininlärning

Vi hör om applikationer av maskininlärning dagligen, även om inte alla är olegerade framgångar. Självkörande bilar är ett bra exempel, där uppgifterna sträcker sig från enkla och framgångsrika (parkeringshjälp och motorvägsfält) till komplexa och ojämna (full fordonsstyrning i stadsmiljöer, vilket har lett till flera dödsfall).

Maskininlärning av spel är starkt framgångsrik för pjäser, schack, shogi och Go, efter att ha slagit mänskliga världsmästare. Automatisk språköversättning har till stor del varit framgångsrik, även om vissa språkpar fungerar bättre än andra, och många automatiska översättningar kan fortfarande förbättras av mänskliga översättare.

Automatiskt tal till text fungerar ganska bra för människor med vanliga accenter, men inte så bra för människor med några starka regionala eller nationella accenter; prestanda beror på de träningsuppsättningar som används av leverantörerna. Automatisk sentimentanalys av sociala medier har en ganska bra framgång, förmodligen för att träningsuppsättningarna (t.ex. Amazon-produktbetyg, som kopplar en kommentar med en numerisk poäng) är stora och lätta att komma åt.

Automatisk screening av cv är ett kontroversiellt område. Amazon var tvungen att dra tillbaka sitt interna system på grund av utbildningsförmåga som fick dem att nedgradera alla jobbansökningar från kvinnor.

Andra CV-screening-system som för närvarande används kan ha träningsfördomar som får dem att uppgradera kandidater som är "som" nuvarande anställda på sätt som lagligen inte är tänkt att ha någon betydelse (t.ex. unga, vita, manliga kandidater från exklusiva engelsktalande stadsdelar som spelade lagsporter är mer benägna att klara screening). Forskningsinsatser från Microsoft och andra fokuserar på att eliminera implicita fördomar i maskininlärning.

Automatisk klassificering av patologiska och radiologiska bilder har avancerat till den punkt där det kan hjälpa (men inte ersätta) patologer och radiologer för att upptäcka vissa typer av abnormiteter. Samtidigt är ansiktsidentifieringssystem båda kontroversiella när de fungerar bra (på grund av integritetshänsyn) och tenderar inte att vara lika exakta för kvinnor och färgade människor som för vita män (på grund av fördomar i träningspopulationen).

Maskininlärningsalgoritmer

Maskininlärning beror på ett antal algoritmer för att förvandla en datamängd till en modell. Vilken algoritm som fungerar bäst beror på vilken typ av problem du löser, de tillgängliga datorresurserna och typ av data. Oavsett vilken algoritm eller algoritmer du använder måste du först rengöra och konditionera data.

Låt oss diskutera de vanligaste algoritmerna för varje typ av problem.

Klassificeringsalgoritmer

Ett klassificeringsproblem är ett övervakat inlärningsproblem som kräver ett val mellan två eller flera klasser, vilket vanligtvis ger sannolikheter för varje klass. Utelämnande av neurala nätverk och djupinlärning, som kräver en mycket högre nivå av datorresurser, är de vanligaste algoritmerna Naive Bayes, Decision Tree, Logistic Regression, K-Nearest Neighbors, and Support Vector Machine (SVM). Du kan också använda ensemblemetoder (kombinationer av modeller), som Random Forest, andra Bagging-metoder och boosting-metoder som AdaBoost och XGBoost.

Regressionsalgoritmer

Ett regressionsproblem är ett övervakat inlärningsproblem som ber modellen att förutsäga ett tal. Den enklaste och snabbaste algoritmen är linjär (minst kvadrat) regression, men du ska inte sluta där, för det ger dig ofta ett medelmåttigt resultat. Andra vanliga maskininlärningsregressionsalgoritmer (korta neurala nätverk) inkluderar Naive Bayes, Decision Tree, K-närmaste grannar, LVQ (Learning Vector Quantization), LARS Lasso, Elastic Net, Random Forest, AdaBoost och XGBoost. Du kommer att märka att det finns viss överlappning mellan maskininlärningsalgoritmer för regression och klassificering.

Klusteralgoritmer

Ett klustringsproblem är ett oövervakat inlärningsproblem som ber modellen att hitta grupper med liknande datapunkter. Den mest populära algoritmen är K-Means Clustering; andra inkluderar Mean-Shift Clustering, DBSCAN (Density-Based Spatial Clustering of Applications with Noise), GMM (Gaussian Mixture Models) och HAC (Hierarchical Agglomerative Clustering).

Dimensionalitetsminskningsalgoritmer

Dimensionalitetsminskning är ett oövervakat inlärningsproblem som ber modellen att släppa eller kombinera variabler som har liten eller ingen effekt på resultatet. Detta används ofta i kombination med klassificering eller regression. Dimensionsreduceringsalgoritmer inkluderar att ta bort variabler med många saknade värden, ta bort variabler med låg varians, Beslutsträd, Slumpmässig skog, ta bort eller kombinera variabler med hög korrelation, Eliminering av bakåtfunktion, Val av framåtfunktion, Faktoranalys och PCA (Principal Component Analysis).

Optimeringsmetoder

Utbildning och utvärdering gör övervakade inlärningsalgoritmer till modeller genom att optimera deras parametervikt för att hitta de värden som bäst matchar markens sanning i dina data. Algoritmerna förlitar sig ofta på varianter av brantaste nedstigningen för deras optimerare, till exempel stokastisk gradientnedstigning (SGD), som i huvudsak är den brantaste nedstigningen som utförs flera gånger från randomiserade utgångspunkter.

Vanliga förbättringar av SGD lägger till faktorer som korrigerar gradientens riktning baserat på momentum, eller justerar inlärningshastigheten baserat på framsteg från ett pass genom data (kallas en epok eller en sats) till nästa.

Neurala nätverk och djupinlärning

Neurala nätverk inspirerades av arkitekturen i den biologiska visuella cortexen. Deep learning är en uppsättning tekniker för inlärning i neurala nätverk som involverar ett stort antal "dolda" lager för att identifiera funktioner. Dolda lager kommer mellan ingångs- och utgående lager. Varje lager består av konstgjorda nervceller, ofta med aktiveringsfunktioner för sigmoid eller ReLU (Rectified Linear Unit).

I ett matningsnätverk organiseras neuronerna i olika lager: ett inmatningsskikt, valfritt antal dolda bearbetningsskikt och ett utgående lager, och utmatningarna från varje lager går bara till nästa lager.

I ett matningsnätverk med genvägsanslutningar kan vissa anslutningar hoppa över ett eller flera mellanliggande lager. I återkommande neurala nätverk kan neuroner påverka sig själva, antingen direkt eller indirekt genom nästa lager.

Övervakad inlärning av ett neuralt nätverk görs precis som alla andra maskininlärningar: Du presenterar nätverket med grupper av träningsdata, jämför nätverksutmatningen med önskad utgång, genererar en felvektor och tillämpar korrigeringar i nätverket baserat på felvektorn , vanligtvis med hjälp av en backpropagationsalgoritm. Massor av träningsdata som körs tillsammans innan korrigeringar tillämpas kallas epoker.

Som med all maskininlärning måste du kontrollera prognoserna för det neurala nätverket mot en separat testdatauppsättning. Utan att göra det riskerar du att skapa neurala nätverk som bara lagrar deras ingångar utan att lära sig att bli generaliserade prediktorer.

Genombrottet i det neurala nätverksfältet för vision var Yann LeCuns 1998 LeNet-5, ett sju-nivå fällt neuralt nätverk (CNN) för igenkänning av handskrivna siffror digitaliserade i 32x32 pixelbilder. För att analysera bilder med högre upplösning skulle nätverket behöva fler nervceller och fler lager.

Convolutional neurala nätverk använder vanligtvis convolutional, pooling, ReLU, fullt anslutna och förlustskikt för att simulera en visuell cortex. Konvolutionsskiktet tar i princip integralerna i många små överlappande regioner. Poollagret utför en form av icke-linjär nedprovtagning. ReLU-lager, som jag nämnde tidigare, tillämpar den icke-mättande aktiveringsfunktionen f(x) = max(0,x).

I ett helt anslutet lager har neuronerna fullständiga kopplingar till alla aktiveringar i föregående lager. Ett förlustskikt beräknar hur nätverksutbildningen straffar avvikelsen mellan de förutsagda och sanna etiketterna med hjälp av en Softmax- eller korsentropiförlust för klassificering eller en euklidisk förlust för regression.

Naturlig språkbehandling (NLP) är ett annat viktigt applikationsområde för djupinlärning. Förutom maskinöversättningsproblemet som Google Translate behandlar inkluderar stora NLP-uppgifter automatisk sammanfattning, samreferensupplösning, diskursanalys, morfologisk segmentering, namngiven enhetsigenkänning, generering av naturligt språk, förståelse av naturligt språk, taggning av tal, tal analys och taligenkänning.

Förutom CNN: er adresseras NLP-uppgifter ofta med återkommande neurala nätverk (RNN), som inkluderar LSTM-modellen (Long-Short Term Memory).

Ju fler lager det finns i ett djupt neurala nätverk, desto mer beräkning krävs för att träna modellen på en CPU. Hårdvaruacceleratorer för neurala nätverk inkluderar GPU: er, TPU: er och FPGA: er.

Förstärkning lärande

Förstärkningsinlärning tränar en skådespelare eller agent att svara på en miljö på ett sätt som maximerar något värde , vanligtvis genom försök och fel. Det skiljer sig från övervakat och övervakat lärande, men kombineras ofta med dem.

Exempelvis lärde sig DeepMinds AlphaGo, för att lära sig spela (handlingen) spelet Go (miljön), att efterlikna mänskliga Go-spelare från en stor uppsättning historiska spel (lärlinglärande). Det förbättrade sedan sitt spel genom försök och fel (förstärkning), genom att spela ett stort antal Go-spel mot oberoende instanser av sig själv.

Robotkontroll är ett annat problem som har attackerats med inlärningsmetoder för djupförstärkning, vilket betyder förstärkningslärande plus djupa neurala nätverk, de djupa neurala nätverken är ofta CNN-utbildade för att extrahera funktioner från videoramar.

Hur man använder maskininlärning

Hur går det att skapa en maskininlärningsmodell? Du börjar med att rengöra och konditionera data, fortsätta med funktionsteknik och försök sedan varje maskininlärningsalgoritm som är vettigt. För vissa klasser av problem, såsom syn och bearbetning av naturligt språk, involverar algoritmerna som sannolikt kommer att fungera djupt lärande.

Datarengöring för maskininlärning

Det finns inget sådant som ren data i naturen. För att vara användbart för maskininlärning måste data filtreras aggressivt. Till exempel vill du:

  1. Titta på data och uteslut alla kolumner som har mycket saknad data.
  2. Titta på data igen och välj de kolumner du vill använda ( funktionsval ) för din förutsägelse. Det här är något du kanske vill variera när du upprepar.
  3. Uteslut rader som fortfarande saknar data i de återstående kolumnerna.
  4. Korrigera uppenbara stavfel och slå samman motsvarande svar. Till exempel bör USA, USA, USA och Amerika slås samman till en enda kategori.
  5. Uteslut rader som har data som ligger utanför intervallet. Till exempel, om du analyserar taxiresor i New York City, vill du filtrera ut rader med pickup eller drop-off latitud och longitud som ligger utanför huvudstadsregionens avgränsningsruta.

Det finns mycket mer du kan göra, men det beror på de insamlade uppgifterna. Detta kan vara tråkigt, men om du ställer in ett datarengöringssteg i din maskininlärningsrörledning kan du ändra och upprepa det efter behag.

Datakodning och normalisering för maskininlärning

För att använda kategoriska data för maskinklassificering måste du koda textetiketterna i en annan form. Det finns två vanliga kodningar.

Den ena är etikettkodning , vilket innebär att varje textetikettvärde ersätts med ett nummer. Den andra är en het-kodning , vilket innebär att varje textetikettvärde förvandlas till en kolumn med ett binärt värde (1 eller 0). De flesta maskininlärningsramar har funktioner som gör konverteringen åt dig. I allmänhet föredras en het-kodning, eftersom etikettkodning ibland kan förvirra maskininlärningsalgoritmen till att tro att den kodade kolumnen är ordnad.