Was ist maschinelles Lernen? Aus Daten abgeleitete Intelligenz

Maschinelles Lernen definiert

Maschinelles Lernen ist ein Zweig der künstlichen Intelligenz, der Methoden oder Algorithmen zum automatischen Erstellen von Modellen aus Daten enthält. Im Gegensatz zu einem System, das eine Aufgabe nach expliziten Regeln ausführt, lernt ein maschinelles Lernsystem aus Erfahrung. Während ein regelbasiertes System eine Aufgabe jedes Mal auf die gleiche Weise ausführt (zum Guten oder Schlechten), kann die Leistung eines maschinellen Lernsystems durch Training verbessert werden, indem der Algorithmus mehr Daten ausgesetzt wird.

Algorithmen für maschinelles Lernen werden häufig in überwacht (die Trainingsdaten sind mit den Antworten versehen) und unbeaufsichtigt (eventuell vorhandene Bezeichnungen werden dem Trainingsalgorithmus nicht angezeigt) unterteilt. Überwachte Probleme des maschinellen Lernens werden weiter unterteilt in Klassifizierung (Vorhersage nicht numerischer Antworten wie die Wahrscheinlichkeit einer versäumten Hypothekenzahlung) und Regression (Vorhersage numerischer Antworten wie die Anzahl der Widgets, die nächsten Monat in Ihrem Geschäft in Manhattan verkauft werden).

Unbeaufsichtigtes Lernen wird weiter unterteilt in Clustering (Auffinden von Gruppen ähnlicher Objekte wie Laufschuhe, Wanderschuhe und Abendschuhe), Assoziation (Auffinden gemeinsamer Objektsequenzen wie Kaffee und Sahne) und Dimensionsreduktion (Projektion, Merkmalsauswahl) und Merkmalsextraktion).

Anwendungen des maschinellen Lernens

Wir hören täglich von Anwendungen des maschinellen Lernens, obwohl nicht alle davon unlegierte Erfolge sind. Selbstfahrende Autos sind ein gutes Beispiel, bei dem die Aufgaben von einfach und erfolgreich (Einparkhilfe und Spurverfolgung) bis komplex und zweifelhaft (vollständige Fahrzeugkontrolle in städtischen Umgebungen, was zu mehreren Todesfällen geführt hat) reichen.

Maschinelles Lernen beim Spielen ist für Dame, Schach, Shogi und Go, die menschliche Weltmeister geschlagen haben, sehr erfolgreich. Die automatische Sprachübersetzung war weitgehend erfolgreich, obwohl einige Sprachpaare besser funktionieren als andere, und viele automatische Übersetzungen können von menschlichen Übersetzern noch verbessert werden.

Die automatische Sprachausgabe funktioniert ziemlich gut für Personen mit allgemeinen Akzenten, jedoch nicht so gut für Personen mit starken regionalen oder nationalen Akzenten. Die Leistung hängt von den von den Anbietern verwendeten Trainingssätzen ab. Die automatische Stimmungsanalyse von sozialen Medien weist eine recht gute Erfolgsquote auf, wahrscheinlich weil die Trainingssätze (z. B. Amazon-Produktbewertungen, die einen Kommentar mit einer numerischen Bewertung verbinden) groß und leicht zugänglich sind.

Die automatische Überprüfung von Lebensläufen ist ein umstrittener Bereich. Amazon musste sein internes System zurückziehen, da es aufgrund von Vorurteilen bei der Schulung von Stichproben dazu führte, dass alle Bewerbungen von Frauen herabgestuft wurden.

Andere derzeit verwendete Lebenslauf-Screening-Systeme können Trainingsverzerrungen aufweisen, die dazu führen, dass sie Kandidaten, die „wie“ aktuelle Mitarbeiter sind, auf eine Weise aufrüsten, die rechtlich nicht von Bedeutung ist (z. B. junge, weiße, männliche Kandidaten aus gehobenen englischsprachigen Stadtteilen, die gespielt haben) Mannschaftssportarten bestehen eher das Screening). Die Forschungsanstrengungen von Microsoft und anderen konzentrieren sich auf die Beseitigung impliziter Verzerrungen beim maschinellen Lernen.

Die automatische Klassifizierung von Pathologie- und Radiologiebildern ist so weit fortgeschritten, dass sie Pathologen und Radiologen bei der Erkennung bestimmter Arten von Anomalien unterstützen (aber nicht ersetzen) kann. In der Zwischenzeit sind Gesichtsidentifikationssysteme sowohl umstritten, wenn sie gut funktionieren (aus Datenschutzgründen) als auch für Frauen und Farbige nicht so genau wie für weiße Männer (aufgrund von Vorurteilen in der Trainingspopulation).

Algorithmen für maschinelles Lernen

Maschinelles Lernen hängt von einer Reihe von Algorithmen ab, mit denen ein Datensatz in ein Modell umgewandelt werden kann. Welcher Algorithmus am besten funktioniert, hängt von der Art des zu lösenden Problems, den verfügbaren Rechenressourcen und der Art der Daten ab. Unabhängig davon, welchen Algorithmus oder welche Algorithmen Sie verwenden, müssen Sie zuerst die Daten bereinigen und konditionieren.

Lassen Sie uns die gängigsten Algorithmen für jede Art von Problem diskutieren.

Klassifizierungsalgorithmen

Ein Klassifizierungsproblem ist ein überwachtes Lernproblem, bei dem zwischen zwei oder mehr Klassen gewählt werden muss, wobei normalerweise Wahrscheinlichkeiten für jede Klasse angegeben werden. Ohne neuronale Netze und Deep Learning, die ein viel höheres Maß an Rechenressourcen erfordern, sind die häufigsten Algorithmen Naive Bayes, Decision Tree, Logistic Regression, K-Nearest Neighbors und Support Vector Machine (SVM). Sie können auch Ensemble-Methoden (Modellkombinationen) wie Random Forest, andere Bagging-Methoden und Boosting-Methoden wie AdaBoost und XGBoost verwenden.

Regressionsalgorithmen

Ein Regressionsproblem ist ein überwachtes Lernproblem, bei dem das Modell aufgefordert wird, eine Zahl vorherzusagen. Der einfachste und schnellste Algorithmus ist die lineare Regression (kleinste Quadrate), aber Sie sollten hier nicht aufhören, da Sie häufig ein mittelmäßiges Ergebnis erhalten. Andere gängige Regressionsalgorithmen für maschinelles Lernen (ohne neuronale Netze) sind Naive Bayes, Decision Tree, K-Nearest Neighbors, LVQ (Learning Vector Quantization), LARS Lasso, Elastic Net, Random Forest, AdaBoost und XGBoost. Sie werden feststellen, dass es einige Überschneidungen zwischen Algorithmen für maschinelles Lernen zur Regression und Klassifizierung gibt.

Clustering-Algorithmen

Ein Clustering-Problem ist ein unbeaufsichtigtes Lernproblem, bei dem das Modell aufgefordert wird, Gruppen ähnlicher Datenpunkte zu finden. Der beliebteste Algorithmus ist K-Means Clustering. Andere umfassen Mean-Shift-Clustering, DBSCAN (dichtebasiertes räumliches Clustering von Anwendungen mit Rauschen), GMM (Gaußsche Mischungsmodelle) und HAC (Hierarchical Agglomerative Clustering).

Algorithmen zur Dimensionsreduzierung

Die Reduzierung der Dimensionalität ist ein unbeaufsichtigtes Lernproblem, bei dem das Modell aufgefordert wird, Variablen zu löschen oder zu kombinieren, die nur geringe oder keine Auswirkungen auf das Ergebnis haben. Dies wird häufig in Kombination mit Klassifizierung oder Regression verwendet. Algorithmen zur Dimensionsreduzierung umfassen das Entfernen von Variablen mit vielen fehlenden Werten, das Entfernen von Variablen mit geringer Varianz, den Entscheidungsbaum, die zufällige Gesamtstruktur, das Entfernen oder Kombinieren von Variablen mit hoher Korrelation, die Eliminierung von Rückwärtsmerkmalen, die Auswahl von Vorwärtsmerkmalen, die Faktoranalyse und die PCA (Hauptkomponentenanalyse).

Optimierungsmethoden

Training und Evaluierung verwandeln überwachte Lernalgorithmen in Modelle, indem sie ihre Parametergewichte optimieren, um den Wertesatz zu finden, der am besten zur Grundwahrheit Ihrer Daten passt. Die Algorithmen stützen sich häufig auf Varianten des steilsten Abstiegs für ihre Optimierer, beispielsweise den stochastischen Gradientenabstieg (SGD), bei dem es sich im Wesentlichen um den steilsten Abstieg handelt, der mehrfach von zufälligen Startpunkten aus durchgeführt wird.

Übliche Verbesserungen bei SGD fügen Faktoren hinzu, die die Richtung des Gradienten basierend auf dem Impuls korrigieren, oder passen die Lernrate basierend auf dem Fortschritt von einem Durchgang durch die Daten (als Epoche oder Stapel bezeichnet) zum nächsten an.

Neuronale Netze und tiefes Lernen

Neuronale Netze wurden von der Architektur des biologischen visuellen Kortex inspiriert. Deep Learning ist eine Reihe von Techniken zum Lernen in neuronalen Netzen, bei denen eine große Anzahl von „verborgenen“ Schichten zur Identifizierung von Merkmalen verwendet wird. Versteckte Ebenen befinden sich zwischen den Eingabe- und Ausgabeebenen. Jede Schicht besteht aus künstlichen Neuronen, häufig mit Sigmoid- oder ReLU-Aktivierungsfunktionen (Rectified Linear Unit).

In einem Feed-Forward-Netzwerk sind die Neuronen in verschiedene Schichten unterteilt: eine Eingangsschicht, eine beliebige Anzahl versteckter Verarbeitungsschichten und eine Ausgangsschicht, und die Ausgaben von jeder Schicht gehen nur zur nächsten Schicht.

In einem Feed-Forward-Netzwerk mit Verknüpfungsverbindungen können einige Verbindungen über eine oder mehrere Zwischenschichten springen. In wiederkehrenden neuronalen Netzen können sich Neuronen entweder direkt oder indirekt durch die nächste Schicht beeinflussen.

Das überwachte Lernen eines neuronalen Netzwerks erfolgt wie bei jedem anderen maschinellen Lernen: Sie präsentieren dem Netzwerk Gruppen von Trainingsdaten, vergleichen die Netzwerkausgabe mit der gewünschten Ausgabe, generieren einen Fehlervektor und korrigieren das Netzwerk basierend auf dem Fehlervektor , normalerweise unter Verwendung eines Backpropagation-Algorithmus. Stapel von Trainingsdaten, die zusammen ausgeführt werden, bevor Korrekturen vorgenommen werden, werden als Epochen bezeichnet.

Wie bei jedem maschinellen Lernen müssen Sie die Vorhersagen des neuronalen Netzwerks anhand eines separaten Testdatensatzes überprüfen. Ohne dies zu tun, riskieren Sie die Erstellung neuronaler Netze, die nur ihre Eingaben speichern, anstatt zu lernen, verallgemeinerte Prädiktoren zu sein.

Der Durchbruch im Bereich des neuronalen Netzwerks für das Sehen war 1998 das LeNet-5 von Yann LeCun, ein siebenstufiges Faltungs-Neuronales Netzwerk (CNN) zur Erkennung handgeschriebener Ziffern, die in 32 x 32 Pixel großen Bildern digitalisiert wurden. Um Bilder mit höherer Auflösung zu analysieren, würde das Netzwerk mehr Neuronen und mehr Schichten benötigen.

Faltungs-Neuronale Netze verwenden typischerweise Faltungs-, Pooling-, ReLU-, vollständig verbundene und Verlustschichten, um einen visuellen Kortex zu simulieren. Die Faltungsschicht nimmt im Wesentlichen die Integrale vieler kleiner überlappender Bereiche auf. Die Pooling-Schicht führt eine Form der nichtlinearen Abwärtsabtastung durch. ReLU-Schichten, die ich bereits erwähnt habe, wenden die nicht sättigende Aktivierungsfunktion an f(x) = max(0,x).

In einer vollständig verbundenen Schicht haben die Neuronen vollständige Verbindungen zu allen Aktivierungen in der vorherigen Schicht. Eine Verlustschicht berechnet, wie das Netzwerktraining die Abweichung zwischen den vorhergesagten und den tatsächlichen Bezeichnungen unter Verwendung eines Softmax- oder Kreuzentropieverlusts zur Klassifizierung oder eines euklidischen Verlusts zur Regression bestraft.

Die Verarbeitung natürlicher Sprache (NLP) ist ein weiteres wichtiges Anwendungsgebiet für tiefes Lernen. Zusätzlich zu dem von Google Translate angesprochenen Problem der maschinellen Übersetzung umfassen die wichtigsten NLP-Aufgaben die automatische Zusammenfassung, die Auflösung von Co-Referenzen, die Diskursanalyse, die morphologische Segmentierung, die Erkennung benannter Entitäten, die Erzeugung natürlicher Sprache, das Verständnis natürlicher Sprache, das Markieren von Teilen der Sprache und die Stimmung Analyse und Spracherkennung.

Zusätzlich zu CNNs werden NLP-Aufgaben häufig mit wiederkehrenden neuronalen Netzen (RNNs) behandelt, zu denen das LSTM-Modell (Long-Short Term Memory) gehört.

Je mehr Schichten sich in einem tiefen neuronalen Netzwerk befinden, desto mehr Rechenaufwand ist erforderlich, um das Modell auf einer CPU zu trainieren. Hardwarebeschleuniger für neuronale Netze umfassen GPUs, TPUs und FPGAs.

Verstärkungslernen

Durch das Reinforcement-Lernen wird ein Akteur oder Agent darin geschult, auf eine Umgebung so zu reagieren, dass ein gewisser Wert maximiert wird , normalerweise durch Ausprobieren. Das unterscheidet sich vom überwachten und unbeaufsichtigten Lernen, wird aber oft mit ihnen kombiniert.

Zum Beispiel lernte DeepMinds AlphaGo, um zu lernen, das Go-Spiel (die Umgebung) zu spielen (die Aktion), zuerst menschliche Go-Spieler aus einem großen Datensatz historischer Spiele nachzuahmen (Lehrlingslernen). Es verbesserte dann sein Spiel durch Versuch und Irrtum (Verstärkungslernen), indem es eine große Anzahl von Go-Spielen gegen unabhängige Instanzen von sich selbst spielte.

Die Robotersteuerung ist ein weiteres Problem, das mit Lernmethoden für tiefe Verstärkung angegriffen wurde, dh Verstärkungslernen plus tiefe neuronale Netze, wobei die tiefen neuronalen Netze häufig CNNs sind, die darauf trainiert sind, Merkmale aus Videobildern zu extrahieren.

Wie man maschinelles Lernen benutzt

Wie erstellt man ein Modell für maschinelles Lernen? Sie beginnen mit dem Bereinigen und Konditionieren der Daten, fahren mit dem Feature-Engineering fort und probieren dann jeden sinnvollen Algorithmus für maschinelles Lernen aus. Für bestimmte Problemklassen, wie z. B. das Sehen und die Verarbeitung natürlicher Sprache, umfassen die Algorithmen, die wahrscheinlich funktionieren, tiefes Lernen.

Datenbereinigung für maschinelles Lernen

In freier Wildbahn gibt es keine sauberen Daten. Um für maschinelles Lernen nützlich zu sein, müssen Daten aggressiv gefiltert werden. Zum Beispiel möchten Sie:

  1. Sehen Sie sich die Daten an und schließen Sie alle Spalten aus, in denen viele Daten fehlen.
  2. Sehen Sie sich die Daten erneut an und wählen Sie die Spalten aus, die Sie für Ihre Vorhersage verwenden möchten ( Funktionsauswahl ). Dies ist etwas, das Sie möglicherweise ändern möchten, wenn Sie iterieren.
  3. Schließen Sie alle Zeilen aus, in denen noch Daten in den verbleibenden Spalten fehlen.
  4. Korrigieren Sie offensichtliche Tippfehler und führen Sie gleichwertige Antworten zusammen. Beispielsweise sollten USA, USA, USA und Amerika in einer einzigen Kategorie zusammengefasst werden.
  5. Schließen Sie Zeilen mit Daten aus, die außerhalb des Bereichs liegen. Wenn Sie beispielsweise Taxifahrten in New York City analysieren, möchten Sie Zeilen mit Breiten- und Längengraden für Abholung oder Rückgabe herausfiltern, die außerhalb des Begrenzungsrahmens der Metropolregion liegen.

Sie können noch viel mehr tun, dies hängt jedoch von den gesammelten Daten ab. Dies kann mühsam sein, aber wenn Sie einen Datenbereinigungsschritt in Ihrer Pipeline für maschinelles Lernen einrichten, können Sie ihn nach Belieben ändern und wiederholen.

Datencodierung und Normalisierung für maschinelles Lernen

Um kategoriale Daten für die Maschinenklassifizierung zu verwenden, müssen Sie die Textbeschriftungen in ein anderes Formular codieren. Es gibt zwei gängige Codierungen.

Eine davon ist die Beschriftungscodierung , was bedeutet, dass jeder Textbeschriftungswert durch eine Zahl ersetzt wird. Die andere ist die One-Hot-Codierung , dh jeder Textbeschriftungswert wird in eine Spalte mit einem Binärwert (1 oder 0) umgewandelt. Die meisten Frameworks für maschinelles Lernen verfügen über Funktionen, die die Konvertierung für Sie durchführen. Im Allgemeinen wird eine One-Hot-Codierung bevorzugt, da die Label-Codierung den Algorithmus für maschinelles Lernen manchmal verwirren kann, wenn er denkt, dass die codierte Spalte geordnet ist.