Wat is machine learning? Intelligentie afgeleid van gegevens

Machine learning gedefinieerd

Machine learning is een tak van kunstmatige intelligentie die methoden of algoritmen omvat voor het automatisch maken van modellen op basis van gegevens. In tegenstelling tot een systeem dat een taak uitvoert door expliciete regels te volgen, leert een machine learning-systeem uit ervaring. Terwijl een op regels gebaseerd systeem een ​​taak elke keer op dezelfde manier zal uitvoeren (voor beter of slechter), kunnen de prestaties van een machine learning-systeem worden verbeterd door training, door het algoritme bloot te stellen aan meer gegevens.

Machine learning algoritmen worden vaak verdeeld in toezicht (de training gegevens worden gecodeerd met de antwoorden) en zonder toezicht (eventuele labels die kunnen bestaan zijn niet zichtbaar voor de training algoritme). Begeleide machine learning-problemen zijn verder onderverdeeld in classificatie (voorspellen van niet-numerieke antwoorden, zoals de kans op een gemiste hypotheekbetaling) en regressie (voorspellen van numerieke antwoorden, zoals het aantal widgets dat volgende maand in uw Manhattan-winkel wordt verkocht).

Ongecontroleerd leren is verder onderverdeeld in clustering (het vinden van groepen van vergelijkbare objecten, zoals hardloopschoenen, wandelschoenen en nette schoenen), associatie (het vinden van veelvoorkomende reeksen objecten, zoals koffie en room) en dimensionaliteitsreductie (projectie, feature selectie , en functie-extractie).

Toepassingen van machine learning

We horen dagelijks over toepassingen van machine learning, hoewel het niet allemaal onvervalste successen zijn. Zelfrijdende auto's zijn een goed voorbeeld, waarbij taken variëren van eenvoudig en succesvol (parkeerhulp en rijstrook volgen) tot complex en dubieus (volledige voertuigcontrole in stedelijke omgevingen, wat tot meerdere doden heeft geleid).

Game-playing machine learning is zeer succesvol voor dammen, schaken, shogi en Go, die wereldkampioenen van de mens hebben verslagen. Automatische taalvertaling is grotendeels succesvol geweest, hoewel sommige talenparen beter werken dan andere, en veel automatische vertalingen kunnen nog steeds worden verbeterd door menselijke vertalers.

Automatische spraak-naar-tekst werkt redelijk goed voor mensen met reguliere accenten, maar niet zo goed voor mensen met een aantal sterke regionale of nationale accenten; De prestaties zijn afhankelijk van de trainingssets die door de leveranciers worden gebruikt. Automatische sentimentanalyse van sociale media heeft een redelijk goed slagingspercentage, waarschijnlijk omdat de trainingssets (bijvoorbeeld Amazon-productbeoordelingen, die een opmerking koppelen aan een numerieke score) groot en gemakkelijk toegankelijk zijn.

Automatische vertoning van cv's is een controversieel onderwerp. Amazon moest zijn interne systeem intrekken vanwege vooroordelen over trainingsvoorbeelden waardoor het alle sollicitaties van vrouwen downgrade.

Andere cv-screening-systemen die momenteel in gebruik zijn, kunnen trainingsvooroordelen hebben waardoor ze kandidaten upgraden die 'als' huidige werknemers lijken op manieren die er wettelijk niet toe doen (bijv. Jonge, blanke, mannelijke kandidaten uit chique Engelssprekende buurten die speelden teamsporten komen eerder door de screening). Onderzoeksinspanningen van Microsoft en anderen zijn gericht op het elimineren van impliciete vooroordelen bij machine learning.

De automatische classificatie van pathologie- en radiologiebeelden is zo ver gevorderd dat het pathologen en radiologen kan helpen (maar niet vervangen) bij het opsporen van bepaalde soorten abnormaliteiten. Ondertussen zijn gezichtsherkenningssystemen zowel controversieel als ze goed werken (vanwege privacyoverwegingen) en zijn ze meestal niet zo nauwkeurig voor vrouwen en mensen van kleur als voor blanke mannen (vanwege vooroordelen in de trainingspopulatie).

Algoritmen voor machine learning

Machine learning is afhankelijk van een aantal algoritmen om van een dataset een model te maken. Welk algoritme het beste werkt, hangt af van het soort probleem dat u oplost, de beschikbare computerbronnen en de aard van de gegevens. Ongeacht welk algoritme of welke algoritmen u ook gebruikt, u moet eerst de gegevens opschonen en conditioneren.

Laten we de meest voorkomende algoritmen voor elk soort probleem bespreken.

Classificatie-algoritmen

Een classificatieprobleem is een leerprobleem onder supervisie dat vraagt ​​om een ​​keuze tussen twee of meer klassen, waarbij meestal kansen voor elke klas worden gegeven. Afgezien van neurale netwerken en deep learning, die een veel hoger niveau van computerbronnen vereisen, zijn de meest voorkomende algoritmen Naive Bayes, Decision Tree, Logistic Regression, K-Dichtstbijzijnde Neighbours en Support Vector Machine (SVM). U kunt ook ensemble-methoden (combinaties van modellen) gebruiken, zoals Random Forest, andere Bagging-methoden en boosting-methoden zoals AdaBoost en XGBoost.

Regressie-algoritmen

Een regressieprobleem is een leerprobleem onder supervisie dat het model vraagt ​​om een ​​getal te voorspellen. Het eenvoudigste en snelste algoritme is lineaire (kleinste kwadraten) regressie, maar daar moet je niet mee stoppen, omdat het je vaak een middelmatig resultaat geeft. Andere veel voorkomende regressie-algoritmen voor machine learning (afgezien van neurale netwerken) zijn onder meer Naive Bayes, Decision Tree, K-Dichtstbijzijnde Neighbours, LVQ (Learning Vector Quantization), LARS Lasso, Elastic Net, Random Forest, AdaBoost en XGBoost. U zult merken dat er enige overlap is tussen machine learning-algoritmen voor regressie en classificatie.

Clustering algoritmen

Een clusteringprobleem is een leerprobleem zonder toezicht dat het model vraagt ​​groepen vergelijkbare datapunten te vinden. Het meest populaire algoritme is K-Means Clustering; Andere zijn onder meer Mean-Shift Clustering, DBSCAN (Density-Based Spatial Clustering of Applications with Noise), GMM (Gaussian Mixture Models) en HAC (Hierarchical Agglomerative Clustering).

Dimensionaliteitsreductie-algoritmen

Dimensionaliteitsreductie is een leerprobleem zonder toezicht dat het model vraagt ​​variabelen te laten vallen of combineren die weinig of geen effect hebben op het resultaat. Dit wordt vaak gebruikt in combinatie met classificatie of regressie. Dimensionaliteitsreductie-algoritmen omvatten het verwijderen van variabelen met veel ontbrekende waarden, het verwijderen van variabelen met een lage variantie, beslissingsboom, willekeurig bos, het verwijderen of combineren van variabelen met een hoge correlatie, eliminatie van achterwaartse kenmerken, voorwaartse kenmerkselectie, factoranalyse en PCA (hoofdcomponentanalyse).

Optimalisatiemethoden

Door training en evaluatie worden leeralgoritmen onder supervisie omgezet in modellen door hun parametergewichten te optimaliseren om de reeks waarden te vinden die het beste overeenkomt met de grondwaarheid van uw gegevens. De algoritmen vertrouwen vaak op varianten met de steilste afdaling voor hun optimizers, bijvoorbeeld stochastische gradiëntafdaling (SGD), wat in wezen de steilste afdaling is die meerdere keren wordt uitgevoerd vanuit gerandomiseerde startpunten.

Gemeenschappelijke verfijningen op SGD voegen factoren toe die de richting van de gradiënt corrigeren op basis van momentum, of passen de leersnelheid aan op basis van de voortgang van de ene doorgang door de gegevens (een epoch of een batch genoemd) naar de volgende.

Neurale netwerken en diep leren

Neurale netwerken zijn geïnspireerd door de architectuur van de biologische visuele cortex. Deep learning is een reeks technieken voor leren in neurale netwerken die een groot aantal "verborgen" lagen omvat om kenmerken te identificeren. Verborgen lagen komen tussen de invoer- en uitvoerlagen. Elke laag is opgebouwd uit kunstmatige neuronen, vaak met sigmoïde of ReLU (Rectified Linear Unit) activeringsfuncties.

In een feed-forward netwerk zijn de neuronen georganiseerd in verschillende lagen: een invoerlaag, een willekeurig aantal verborgen verwerkingslagen en een uitvoerlaag, en de uitvoer van elke laag gaat alleen naar de volgende laag.

In een feed-forward netwerk met snelkoppelingsverbindingen kunnen sommige verbindingen over een of meer tussenliggende lagen heen springen. In terugkerende neurale netwerken kunnen neuronen zichzelf beïnvloeden, hetzij direct, hetzij indirect via de volgende laag.

Begeleid leren van een neuraal netwerk gebeurt net als elk ander machine learning: je presenteert het netwerk met groepen trainingsgegevens, vergelijkt de netwerkoutput met de gewenste output, genereert een foutvector en past correcties toe op het netwerk op basis van de foutvector , meestal met behulp van een backpropagation-algoritme. Batches met trainingsgegevens die samen worden uitgevoerd voordat correcties worden toegepast, worden epochs genoemd.

Zoals bij alle machine learning, moet u de voorspellingen van het neurale netwerk vergelijken met een afzonderlijke testgegevensset. Als u dat niet doet, riskeert u neurale netwerken te creëren die alleen hun invoer onthouden in plaats van te leren gegeneraliseerde voorspellers te zijn.

De doorbraak op het gebied van neurale netwerken voor visie was Yann LeCun's LeNet-5 uit 1998, een convolutioneel neuraal netwerk (CNN) met zeven niveaus voor herkenning van handgeschreven cijfers die zijn gedigitaliseerd in afbeeldingen van 32x32 pixels. Om afbeeldingen met een hogere resolutie te analyseren, heeft het netwerk meer neuronen en meer lagen nodig.

Convolutionele neurale netwerken gebruiken doorgaans convolutionele, pooling-, ReLU-, volledig verbonden en verlieslagen om een ​​visuele cortex te simuleren. De convolutionele laag heeft in feite de integralen van vele kleine overlappende gebieden. De poolinglaag voert een vorm van niet-lineaire down-sampling uit. ReLU-lagen, die ik eerder noemde, passen de niet-verzadigende activeringsfunctie toe f(x) = max(0,x).

In een volledig verbonden laag hebben de neuronen volledige verbindingen met alle activeringen in de vorige laag. Een verlieslaag berekent hoe de netwerktraining de afwijking tussen de voorspelde en echte labels bestraft, met behulp van een Softmax- of kruis-entropieverlies voor classificatie of een Euclidisch verlies voor regressie.

Natuurlijke taalverwerking (NLP) is een ander belangrijk toepassingsgebied voor diep leren. Naast het probleem van machinevertaling dat door Google Translate wordt aangepakt, omvatten belangrijke NLP-taken automatische samenvatting, resolutie van co-referentie, discoursanalyse, morfologische segmentatie, herkenning van entiteiten met naam, genereren van natuurlijke taal, begrip van natuurlijke taal, tagging van delen van spraak, sentiment analyse en spraakherkenning.

Naast CNN's worden NLP-taken vaak aangepakt met terugkerende neurale netwerken (RNN's), waaronder het Long-Short Term Memory (LSTM) -model.

Hoe meer lagen er zijn in een diep neuraal netwerk, hoe meer berekeningen er nodig zijn om het model op een CPU te trainen. Hardwareversnellers voor neurale netwerken zijn onder meer GPU's, TPU's en FPGA's.

Versterkend leren

Reinforcement learning traint een actor of agent om op een omgeving te reageren op een manier die enige waarde maximaliseert , meestal met vallen en opstaan. Dat is iets anders dan begeleid en onbewaakt leren, maar wordt er vaak mee gecombineerd.

Zo leerde AlphaGo van DeepMind, om (de actie) het spel Go (de omgeving) te leren spelen, eerst menselijke Go-spelers na te bootsen uit een grote dataset van historische spellen (leerling leren). Vervolgens verbeterde het zijn spel met vallen en opstaan ​​(reinforcement learning), door grote aantallen Go-spellen te spelen tegen onafhankelijke instanties van zichzelf.

Robotbesturing is een ander probleem dat is aangevallen met leermethoden voor diepe bekrachtiging, dat wil zeggen leren van bekrachtiging plus diepe neurale netwerken, waarbij de diepe neurale netwerken vaak CNN's zijn die zijn getraind om functies uit videoframes te extraheren.

Machine learning gebruiken

Hoe maak je een machine learning-model? U begint met het opschonen en conditioneren van de gegevens, gaat verder met feature-engineering en probeert vervolgens elk logisch algoritme voor machine learning uit. Voor bepaalde probleemklassen, zoals visie en natuurlijke taalverwerking, omvatten de algoritmen die waarschijnlijk zullen werken, diep leren.

Gegevens opschonen voor machine learning

Er bestaat niet zoiets als schone gegevens in het wild. Om bruikbaar te zijn voor machine learning, moeten gegevens agressief worden gefilterd. U wilt bijvoorbeeld:

  1. Bekijk de gegevens en sluit alle kolommen uit die veel ontbrekende gegevens bevatten.
  2. Bekijk de gegevens opnieuw en kies de kolommen die u wilt gebruiken ( functieselectie ) voor uw voorspelling. Dit is iets dat u wellicht wilt variëren wanneer u herhaalt.
  3. Sluit alle rijen uit waarin nog gegevens ontbreken in de resterende kolommen.
  4. Corrigeer duidelijke typefouten en voeg gelijkwaardige antwoorden samen. De VS, de VS, de VS en Amerika moeten bijvoorbeeld in één categorie worden samengevoegd.
  5. Sluit rijen uit die gegevens bevatten die buiten het bereik vallen. Als u bijvoorbeeld taxiritten binnen New York City analyseert, wilt u rijen filteren met ophaal- of afleverbreedtegraden en lengtegraden die buiten het begrenzingsvak van het grootstedelijk gebied vallen.

U kunt nog veel meer doen, maar het hangt af van de verzamelde gegevens. Dit kan vervelend zijn, maar als u een stap voor het opschonen van gegevens instelt in uw machine learning-pijplijn, kunt u deze naar believen wijzigen en herhalen.

Gegevenscodering en normalisatie voor machine learning

Om categorische gegevens te gebruiken voor machineclassificatie, moet u de tekstlabels in een ander formulier coderen. Er zijn twee veelgebruikte coderingen.

Een daarvan is labelcodering , wat betekent dat elke tekstlabelwaarde wordt vervangen door een nummer. De andere is one-hot-codering , wat betekent dat elke tekstlabelwaarde wordt omgezet in een kolom met een binaire waarde (1 of 0). De meeste frameworks voor machine learning hebben functies die de conversie voor u uitvoeren. Over het algemeen heeft one-hot-codering de voorkeur, omdat labelcodering het algoritme voor machine learning soms kan verwarren met de gedachte dat de gecodeerde kolom geordend is.