Andrew Eun "Leidenschaft für maschinelles Lernen." Übersetzung der Kapitel 36-46

Drei Jahre sind seit der Veröffentlichung der ersten Kapitel von Andrew Ngs Machine Learning Yearning vergangen. Wenn Sie den Hub "Maschinelles Lernen" abonniert haben, müssen Sie sich nicht mit dem Autor bekannt machen, und höchstwahrscheinlich haben Sie das Buch selbst bereits vor langer Zeit in der Sprache der Originalquelle gelesen. Die Übersetzung der ersten Hälfte des Buches ins Russische wurde von alexey_nichnikov vorgenommen und zu diesem Zeitpunkt in einer Reihe von Artikeln auf Habré veröffentlicht .


Ich präsentiere Ihnen meine Version der Übersetzung der zweiten Hälfte des Buches, nämlich die Kapitel 36-58. Es ist geplant, die Veröffentlichung in zwei Artikel zu unterteilen. Außerdem können Sie eine vollständige Übersetzung dieser Kapitel im PDF- Format herunterladen. Vielleicht findet jemand dieses Format für das Lesen angenehmer.

Der erste Artikel konzentriert sich auf das Training und Testen verschiedener Distributionen sowie auf das Debuggen von Ausgabealgorithmen.

Training und Test auf verschiedenen Distributionen



Kapitel 36. Wann Sie verschiedene Distributionen trainieren und testen sollten



Benutzer Ihrer Cat Photo-App haben 10.000 Bilder hochgeladen, die Sie manuell als katzenhaltig oder katzenfrei gekennzeichnet haben. Sie haben auch einen größeren Satz von 200.000 Bildern, die Sie aus dem Internet heruntergeladen haben. Wie werden Training (Zugset), Validierung (Entwicklungsset) und Testauswahl (Testset) definiert?

Da 10.000 Bilder von Benutzern die tatsächliche Wahrscheinlichkeitsverteilung der Daten widerspiegeln, mit denen Sie in Zukunft erfolgreich arbeiten möchten, können Sie diese für Ihre Validierungs- und Testmuster verwenden. Wenn Sie einen Deep-Learning-Algorithmus trainieren, der die Anzahl der Trainingsbeispiele erfordert, können Sie ihm zusätzliche 200.000 Bilder zum Trainieren aus dem Internet herunterladen. Somit weisen die Daten in der Validierungs- und Testprobe unterschiedliche Wahrscheinlichkeitsverteilungen auf. Wie wird sich dies auf das Ergebnis Ihrer Arbeit auswirken?

Anstatt unsere Daten in Trainings-, Validierungs- und Testmuster zu unterteilen, können wir alle 210.000 verfügbaren Bilder aufnehmen und sie zufällig in Trainings-, Validierungs- und Testmuster mischen. In diesem Fall haben alle Daten dieselbe Verteilung. Die Verwendung dieser Methode wird jedoch nicht empfohlen, da ungefähr 97,6% (205.000 / 210.000) Ihrer Validierungs- und Testmuster aus Bildern bestehen, die aus dem Internet heruntergeladen wurden und nicht die tatsächliche Verteilung widerspiegeln, auf der Sie erfolgreich sein möchten.

Empfehlung zur Definition von Validierungs- und Prüfmustern:

  • Wählen Sie Validierungs- und Testmuster aus, die die Daten widerspiegeln, die Sie in Zukunft erwarten und mit denen Sie erfolgreich arbeiten möchten.

Die meisten akademischen Veröffentlichungen zum maschinellen Lernen legen nahe, dass die Trainings-, Validierungs- und Teststichproben alle die gleiche Verteilung aufweisen. 1 Zu Beginn des maschinellen Lernens waren die Daten knapp. Normalerweise hatten wir nur einen Datensatz mit einer gewissen Wahrscheinlichkeitsverteilung. Aus diesem Grund haben wir den gesamten Satz zufällig in Trainings-, Validierungs- und Teststichproben aufgeteilt, unter der Annahme, dass alle Daten aus derselben Quelle stammten, die normalerweise der Realität entsprach.
1 Es gibt eine Reihe von wissenschaftlichen Studien zum Training und Testen von Modellen für verschiedene Distributionen. Beispiele hierfür sind Domain Adaptation, Transfer Learning und Multitask Learning. Trotzdem gibt es immer noch eine große Lücke zwischen Theorie und Praxis. Wenn Sie ein Modell auf Datensatz A trainieren und auf Datensatz B testen, was sehr unterschiedlich ist, kann das Glück einen großen Einfluss auf die Leistung Ihres Algorithmus haben. (Unter „Glück“ versteht man hier die manuelle Auswahl von Attributen durch einen Forscher für eine bestimmte Aufgabe sowie andere Faktoren, die wir noch nicht verstehen.) Dies erschwert die Durchführung einer systematischen akademischen Studie zum Training und Testen verschiedener Distributionen.

Aber im Zeitalter von Big Data haben wir jetzt Zugang zu riesigen Trainingssets, wie z. B. Bildern mit Katzen aus dem Internet. Auch wenn die Verteilung des Trainingsmusters von der Verteilung der Validierungs- und Testmuster abweicht, möchten wir sie dennoch für das Training verwenden, da dies viele zusätzliche Informationen liefern kann.

In dem Beispiel mit einem Katzendetektor konnten nur 5.000 Bilder in die Validierungs- und Testmuster eingefügt werden, anstatt alle 10.000 von Benutzern hochgeladenen Bilder in die Validierungs- und Testmuster einzufügen. Und die restlichen 5.000 Beispiele können wir in das Trainingsset aufnehmen. Die Trainingsstichprobe wird daher aus 205.000 Beispielen bestehen und Daten mit der gleichen Verteilung wie in den Validierungs- und Teststichproben sowie 200.000 Internetbilder enthalten. Im nächsten Kapitel werden wir diskutieren, warum diese Methode nützlich ist.

Schauen wir uns ein zweites Beispiel an. Angenommen, Sie erstellen ein Spracherkennungssystem zum Transkribieren von Adressen für die Navigator-Sprachanwendung. Sie haben 20.000 Beispiele, in denen der Benutzer jeweils eine Adresse angibt. Sie haben aber auch 500.000 andere Audioaufnahmen, in denen Benutzer über kostenlose Themen sprechen. Sie können 10.000 Beispiele mit Adressen für Validierungs- und Testbeispiele und die verbleibenden 10.000 Beispiele sowie weitere 500.000 Beispiele für den Schulungssatz verwenden.

Wir gehen weiterhin davon aus, dass unsere Validierungs- und Testmusterdaten dieselbe Verteilung aufweisen. Es ist jedoch wichtig zu verstehen und sich daran zu erinnern, dass unterschiedliche Verteilungen in den Trainings- und Validierungs- / Testmustern zu besonderen Problemen führen.


Kapitel 37. So entscheiden Sie, ob Sie alle Ihre Daten oder nur einen Teil davon verwenden möchten



Angenommen, das Trainingsmuster Ihres Katzendetektors enthält 10.000 vom Benutzer hochgeladene Bilder. Lassen Sie diese Daten dieselbe Verteilung wie in den Validierungs- und Testmustern haben, und für eine solche Verteilung möchten Sie das maximale Ergebnis erzielen. Sie haben auch zusätzliche 20.000 Bilder aus dem Internet heruntergeladen. Müssen alle 20.000 + 10.000 = 30.000 Bilder in den Trainingssatz aufgenommen werden, oder ist es besser, 20.000 Internetbilder zu löschen, um Fehler in Ihren Lernalgorithmus einzufügen?

Bei Verwendung früherer Generationen von Lernalgorithmen (z. B. eines manuell erstellten Computer-Vision-Algorithmus, gefolgt von einem einfachen linearen Klassifikator) bestand das reale Risiko, dass die Kombination von Daten aus beiden Quellen die Ergebnisse beeinträchtigen könnte. Einige Techniker warnen Sie daher davor, 20.000 Online-Bilder aufzunehmen.

In der modernen Ära leistungsfähiger, flexibler Lernalgorithmen wie großer neuronaler Netze wurde dieses Risiko jedoch erheblich reduziert. Wenn Sie es sich leisten können, ein neuronales Netzwerk mit einer ausreichend großen Anzahl ausgeblendeter Ebenen aufzubauen, können Sie Ihrem Trainingssatz sicher 20.000 Internetbilder hinzufügen. Durch das Hinzufügen von Bildern wird Ihr Geschäftsergebnis wahrscheinlich verbessert.

Diese Beobachtung basiert auf der Tatsache, dass es eine Entsprechung xy gibt , die für beide Datentypen gut funktioniert. Mit anderen Worten, es gibt eine Art System, das, nachdem es entweder ein Internet-Bild oder ein Bild von einer mobilen Anwendung empfangen hat, ein Etikett zuverlässig vorhersagt, ohne die Quelle des Bildes zu kennen.

Das Hinzufügen von 20.000 zusätzlichen Internetbildern hat folgende Auswirkungen:

  1. Dies gibt Ihrem neuronalen Netzwerk mehr Beispiele dafür, wie Katzen aussehen / nicht aussehen. Dies ist nützlich, da Webbilder und Bilder, die von Benutzern einer mobilen Anwendung hochgeladen wurden, einige Ähnlichkeiten aufweisen. Ihr neuronales Netzwerk kann einen Teil des Wissens aus Online-Bildern auf Bilder aus einer mobilen Anwendung anwenden.
  2. Dies zwingt das neuronale Netzwerk, einen Teil seiner Ressourcen für das Erkennen von Eigenschaften zu verwenden, die für Internetbilder spezifisch sind (z. B. höhere Auflösung, verschiedene Entwurfsmethoden usw.). Teil der repräsentativen Fähigkeiten des neuronalen Netzes. Daher gibt es weniger Möglichkeiten zum Erkennen von Daten, die von einer mobilen Anwendung empfangen werden, und dies sollte Sie wirklich beunruhigen. Theoretisch kann dies die Leistung Ihres Algorithmus beeinträchtigen.

Um den zweiten Effekt mit anderen Worten zu erklären, können wir uns einer fiktiven Figur zuwenden, Sherlock Holmes, die sagt, dass Ihr Gehirn wie ein Dachboden aussieht, auf dem nur wenig Platz zur Verfügung steht. Er sagt: „Mit jedem Wissen vergisst du, was du vorher gewusst hast. Daher ist es äußerst wichtig, nicht zuzulassen, dass unnütze Fakten nützliche ersetzen. “ 2
2 "Etüde in Scharlach", Arthutre Conan Doyle, 1887

Glücklicherweise ist dieses oben beschriebene "Verdrängen" kein ernstes Problem, wenn Sie über die Rechenleistung verfügen, die zum Aufbau eines ausreichend großen neuronalen Netzwerks, dh eines "ausreichend großen Dachbodens", erforderlich ist. Sie haben genügend Schulungsmöglichkeiten sowohl für Internetbilder als auch für Bilder aus einer mobilen Anwendung, während beide Datentypen nicht um die Erkennungsfähigkeit konkurrieren. Das "Gehirn" Ihres Algorithmus ist groß genug, damit Sie sich keine Sorgen machen müssen, dass Sie plötzlich nicht mehr genug "Platz auf dem Dachboden" haben.

Wenn Sie jedoch nicht über ein ausreichend großes neuronales Netzwerk (oder einen anderen sehr flexiblen Lernalgorithmus) verfügen, sollten Sie Ihren Trainingsdaten, die Ihrer Validierung und Ihrem Testmuster entsprechen, mehr Aufmerksamkeit widmen.

Wenn Sie der Meinung sind, dass Sie Daten haben, die keinen Nutzen bringen, sollten Sie diese einfach ausschließen, um die Berechnungen zu beschleunigen. Angenommen, Ihre Validierungs- und Testmuster enthalten hauptsächlich zufällige Fotos von Personen, Orten, Zeichen und Zeigern sowie von Tieren. Angenommen, Sie haben auch eine große Sammlung gescannter historischer Dokumente:



Diese Dokumente enthalten nichts wie eine Katze. Sie unterscheiden sich auch grundlegend von den Daten aus Ihren Validierungs- und Testmustern. Es ist nicht sinnvoll, diese Daten als negative Beispiele zu verwenden, da in diesem Fall die im ersten Effekt beschriebenen Vorteile zu vernachlässigen sind. Basierend auf diesen Daten kann Ihr neuronales Netzwerk kaum etwas herausfinden, das für Ihre Validierung und Testprobe relevant sein könnte. Das Einbeziehen dieser Beispiele führt zu einem Verlust von Rechenressourcen und einer Abnahme der Repräsentationsfähigkeit des neuronalen Netzwerks.


Kapitel 38. Entscheiden, ob widersprüchliche Daten eingeschlossen werden sollen



Angenommen, Sie möchten lernen, wie Sie die Immobilienpreise in New York prognostizieren. Anhand der Größe des Hauses (Eingabe x ) möchten Sie den Preis vorhersagen (Zielbezeichnung y ).

Die Immobilienpreise in New York sind sehr hoch. Angenommen, Sie haben einen zweiten Datensatz - Immobilienpreise in Detroit, Michigan, wo die Immobilienpreise viel niedriger sind. Sollte ich diese Daten in mein Trainingsset aufnehmen?

Bei gleicher Größe x ist der Preis eines y- Hauses sehr unterschiedlich, je nachdem, ob es sich in New York oder in Detroit befindet. Wenn es Ihnen nur darum geht, die Immobilienpreise in New York vorherzusagen, wird Ihre Produktivität beeinträchtigt, wenn Sie die beiden Datensätze kombinieren. In diesem Fall ist es besser, keine widersprüchlichen Daten aus dem Detroit-Satz zu verwenden. 3
3 Es gibt einen Weg, das Problem der Inkompatibilität von Detroit-Daten mit New York-Daten zu lösen, nämlich jedem Trainingsbeispiel ein zusätzliches Merkmal hinzuzufügen, d.h. Ortsangabe. Mit dem Eingabewert von x , der nun die Stadt angibt, ist der Zielwert von y nun eindeutig bestimmt. In der Praxis sehe ich es jedoch immer noch nicht oft.

Inwiefern unterscheidet sich dieses Beispiel mit Wohnungen in New York und Detroit von unserem Beispiel mit Internetbildern von Katzen und Bildern aus einer mobilen Anwendung?

Das Beispiel mit den Bildern von Katzen unterscheidet sich darin, dass Sie anhand des Eingabebilds x das Etikett y zuverlässig vorhersagen können, das angibt, ob sich eine Katze darauf befindet, ohne zu wissen, ob wir das Bild aus dem Internet oder von einer mobilen Anwendung erhalten haben. Das heißt es gibt eine Funktion f (x), die die Entsprechung der Eingabe x zur Zielausgabe y zuverlässig widerspiegelt, ohne auch nur die Herkunftsquelle von x zu kennen . Die Aufgabe des Erkennens von Internetbildern "entspricht" somit der Aufgabe des Erkennens von Bildern aus einer mobilen Anwendung. Dies bedeutet, dass es ein kleines Minus (mit Ausnahme der Berechnungskosten) gab, wenn alle Daten einbezogen wurden, und ein mögliches signifikantes Plus. Im Gegensatz zu dem Beispiel mit widersprüchlichen Daten aus New York und Detroit, in dem bei gleichem Eingabewert x (Hausgröße) der Preis je nach Stadt, in der sich dieses Haus befindet, sehr unterschiedlich ist.


Kapitel 39. Wiegen von Daten



Angenommen, Sie haben 200.000 Online-Bilder und 5.000 Bilder von Benutzern Ihrer mobilen Anwendung. Zwischen den Größen dieser Datensätze besteht ein Verhältnis von 40: 1. Solange Sie ein riesiges neuronales Netzwerk aufbauen und es mit allen verfügbaren 205.000 Beispielen lang genug trainieren, ist theoretisch nichts falsch daran, dass der Algorithmus sowohl für Internetbilder als auch für mobile Bilder gut funktioniert.

In der Praxis müssen Sie mit 40-mal mehr Internet-Bildern als mit Bildern einer mobilen Anwendung möglicherweise 40-mal mehr Rechenressourcen aufwenden, als wenn Sie ein Netzwerk für nur 5.000 Bilder trainiert hätten.

Wenn Sie nicht über große Computerressourcen verfügen, können Sie Internet-Images als Kompromiss viel weniger Gewicht einräumen.

Angenommen, Ihr Optimierungsziel ist der quadratische Fehler (dies ist keine gute Wahl für das Klassifizierungsproblem, vereinfacht jedoch unsere Erklärung). Daher versucht Ihr Lernalgorithmus Folgendes zu optimieren:

$$ zeige $$ \ min_θ \ sum _ {(x, y) ∈MobileImg} (h_θ (x) -y) ^ 2 + \ sum _ {(x, y) ∈InternetImg} (h_θ (x) -y) ^ 2 an $$ display $$


Der erste Wert oben ist der Gesamtfehler für 5.000 mobile Bilder und der zweite Wert ist der Gesamtfehler für 200.000 Internetbilder. Stattdessen können Sie mit einem zusätzlichen Parameter optimieren  beta :

$$ display $$ \ min_θ \ sum _ {(x, y) ∈MobileImg} (h_θ (x) -y) ^ 2 + \ beta \ sum _ {(x, y) ∈InternetImg} (h_θ (x) -y) ^ 2 $$ Anzeige $$


Wenn Sie installieren  beta = 1/40, der Algorithmus wird 5.000 mobilen Bildern und 200.000 Internetbildern das gleiche Gewicht geben. Sie können den Parameter auch einstellen  beta andere Werte, möglicherweise Anpassung an die Validierungsprobe.

Wenn Sie Internet-Bildern eine geringere Gewichtung zuweisen, müssen Sie kein massives neuronales Netzwerk erstellen, um sicherzustellen, dass der Algorithmus beide Aufgabentypen gut bewältigt. Diese Methode der „Neugewichtung“ ist nur erforderlich, wenn Sie den Verdacht haben, dass zusätzliche Daten (Internetbilder) eine ganz andere Verteilung aufweisen als Daten in Validierungs- und Testmustern, oder wenn wesentlich mehr zusätzliche Daten vorliegen als Daten, die mit derselben Verteilung erhalten wurden wie in den Validierungs- und Testmustern (mobile Bilder).


Kapitel 40. Verallgemeinerung der Trainingsstichprobe zu einer Validierungsstichprobe



Angenommen, Sie wenden ML in einer Situation an, in der sich die Trainingsstichprobe von der Validierungs- / Teststichprobe unterscheidet. Angenommen, ein Schulungsbeispiel enthält Internetbilder und mobile Bilder, und Validierungs- / Testbeispiele enthalten nur mobile Bilder. Der Algorithmus funktioniert jedoch nicht sehr gut: Die Validierungs- / Teststichprobe weist einen viel höheren Fehler auf, als wir möchten. Hier sind einige Gründe, warum dies möglicherweise nicht der Fall ist:

  1. Der Algorithmus funktioniert mit dem Trainingssatz nicht sehr gut. Dies ist ein Problem einer hohen (vermeidbaren) Vorspannung der Verteilung der Trainingsprobe.
  2. Der Algorithmus funktioniert auf dem Trainingssatz gut, verallgemeinert sich jedoch schlecht auf neue (zuvor nicht gezeigte) Daten, die mit der gleichen Verteilung wie im Trainingssatz aufgenommen wurden. Dies ist eine hohe Varianz.
  3. Der Algorithmus verallgemeinert sich gut auf neue (zuvor nicht gezeigte) Daten, die mit derselben Verteilung wie in der Trainingsprobe aufgenommen wurden, jedoch nicht auf Daten aus der Validierungs- / Testprobe. Wir nennen dieses Problem Dateninkongruenz aufgrund der Tatsache, dass die Daten aus der Trainingsstichprobe schlecht mit den Daten aus den Validierungs- / Teststichproben korrelieren.

Nehmen wir zum Beispiel an, dass Menschen bei der Identifizierung von Katzen ein nahezu perfektes Ergebnis erzielen. Und Ihr Algorithmus hat erreicht:

  • 1% der Fehler in der Trainingsstichprobe
  • 1,5% Fehler bei neuen (bisher nicht für den Algorithmus angezeigten) Daten mit derselben Verteilung wie das Trainingsmuster
  • 10% der Fehler in der Validierungsprobe

In diesem Fall liegt definitiv ein Dateninkongruenzproblem vor. Um dies zu aktivieren, können Sie versuchen, das Schulungsbeispiel dem Validierungs- / Testbeispiel ähnlicher zu machen. Wir werden später einige Techniken dieser Technik diskutieren.

Um das Ausmaß zu diagnostizieren, in dem der Algorithmus unter jedem der oben beschriebenen Probleme 1-3 leidet, ist es nützlich, einen anderen Datensatz zu haben. Anstatt dem Algorithmus alle für das Training verfügbaren Daten zur Verfügung zu stellen, können Sie diese in zwei Teile aufteilen: das tatsächliche Trainingsmuster, auf dem der Algorithmus trainiert wird, und einen separaten Satz, den wir als Trainingsvalidierung bezeichnen („trainig dev“ -Satz) ), die wir im Training nicht verwenden werden.

Sie haben also 4 Datensätze:

  • Das Trainingsset (Trainingsset). Dies sind die Daten, auf denen der Algorithmus trainiert wird (z. B. Internetbilder + Bilder von einer mobilen Anwendung). Diese Daten müssen nicht mit derselben Verteilung erfasst werden, auf deren Ergebnis wir uns letztendlich konzentrieren (Validierungs- / Testmuster).
  • Schulungs- und Validierungsbeispiel („Training Dev“ -Set). Diese Daten werden mit der gleichen Verteilung wie im Trainingsbeispiel erfasst (z. B. Internetbilder + Bilder einer mobilen Anwendung). Dieser Satz ist normalerweise kleiner als der Trainingssatz und sollte groß genug sein, um den Fortschritt unseres Trainingsalgorithmus zu bewerten und zu verfolgen.
  • (dev set). , , ( , ).
  • (test set). , ( , ).

:

  • (training error), .
  • , , , - .
  • Die Effizienz des Algorithmus als Ganzes für das zu lösende Problem durch Bewertung anhand eines Validierungs- und (oder) Testmusters.

Die meisten Empfehlungen, die in den Kapiteln 5-7 dieses Handbuchs zur Auswahl der Größe der Validierungsstichprobe gegeben wurden, gelten auch für die Schulungs- und Validierungsstichprobe.


Kapitel 41. Bestimmung der Abweichung, Varianz und des Datenfehlanpassungsfehlers



Nehmen wir an, dass Menschen bei der Erkennung von Katzen eine nahezu perfekte Effizienz (Fehler tasks0%) erreichen und die optimale Fehlerquote bei etwa 0% liegt.

Angenommen, Sie haben:

  • 1% der Fehler in der Trainingsstichprobe
  • 5% Fehler in der Trainings- und Validierungsprobe
  • 5% der Fehler in der Validierungsstichprobe

Was sagt uns das? Sie wissen, dass Sie eine hohe Varianz haben. Mit den zuvor beschriebenen Dispersionsreduktionsmethoden sollten Sie einige Fortschritte erzielen.

Angenommen, Ihr Algorithmus hat erreicht:

  • 10% der Fehler im Trainingsmuster
  • 11% der Fehler in der Schulungs- und Validierungsstichprobe
  • 12% der Fehler in der Validierungsstichprobe

Dies deutet darauf hin, dass Sie eine hohe vermeidbare Tendenz im Trainingssatz haben. Das heißtDer Algorithmus liefert schlechte Ergebnisse auf dem Trainingssatz, aber die Methoden zur Reduzierung des Versatzes sollten helfen.

In den beiden obigen Beispielen leidet der Algorithmus nur an einer hohen Vorspannung (vermeidbare Vorspannung) oder nur an einer hohen Streuung (Varianz). Der Algorithmus kann auch unter jeder Kombination von hoher Vorspannung, hoher Streuung und Dateninkonsistenz leiden. Zum Beispiel:

  • 10% der Fehler im Trainingsmuster
  • 11% der Fehler in der Schulungs- und Validierungsstichprobe
  • 20%

(avoidable bias) (data mismatch) .

, , , :


, , X ( ). Y : , , , , . , .

: (« »), - . , ( ) , . . , ( A ) .

, , , , .


42.



, , - . : . ?

: (i) , ; (ii) , , . 4
4 « » (domain adaptation) — . , , .

, , : 100 , . , , , . . , , . , .

- , , . «» , «» - , , «» . , , / . «» / .

Leider gibt es in dieser Angelegenheit keine Garantien. Wenn Sie beispielsweise nicht die Möglichkeit haben, mehr Trainingsdaten zu erhalten, die besser mit den Validierungsbeispieldaten übereinstimmen, haben Sie möglicherweise keinen klaren Weg zur Verbesserung der Effizienz.


Kapitel 43. Künstliche Daten synthetisieren



Ihr Spracherkennungssystem benötigt mehr Daten, die so klingen, als würden die Audioaufnahmen dieser Beispiele in einem Auto erstellt. Anstatt viele Daten während der Fahrt zu sammeln, könnte es einen einfacheren Weg geben, diese Daten zu erhalten: indem Sie sie künstlich generieren.

, / . . , , , . «» / , , , , . , , , .

, , , . . , , , , , . - , .

, : , , , . , , 1000 , 1 . , 1000 , , . , , , — , , 1 . , , .

Angenommen, Sie haben 1000 Stunden Autolärm, aber nur 10 verschiedene Autos wurden verwendet, um sie aufzuzeichnen. In diesem Fall kann der Algorithmus die Aufzeichnungen dieser 10 Autos erneut trainieren und eine schlechte Leistung zeigen, wenn Aufzeichnungen von einem anderen Auto getestet werden. Leider sind diese Probleme schwer zu erkennen.


, , . , , , , . , . , ( ), , . 20 . 3D- , , , , , , , -. Das heißt . , , / — 20 . , 100,000 20 , , / , .

, , . ,
, , 20 , 1 . .

, , . , , .


44.



, . , A, Score A (S) S. , Score A (S) = P(S|A), .. , S, , A.

Score A (S), , :

Output=argmaxSScoreA(S)


«arg max» ? 50,000 , (50,000) N N. , .

, , S, () Score A (S). « » (beam search), K . ( .) S, Score A (S).

Stellen Sie sich vor, jemand sagte auf einem Tonband: "Ich liebe maschinelles Lernen." Anstelle der korrekten Transkription gibt Ihr System jedoch das falsche "Ich liebe Roboter" aus. Es gibt zwei mögliche Gründe für das, was schief gehen könnte:

  1. Probleme im Suchalgorithmus . Der Strahlensuchalgorithmus hat fälschlicherweise den Wert von S gefunden, wodurch die Bewertung A (S) maximiert wird .
  2. Ein objektives Problem mit der Bewertungsfunktion . Unsere Schätzung von Score A (S) = P (S | A) war nicht genau. Insbesondere die ausgewählte Punktzahl A (S) erlaubte es nicht, die korrekte Transkription "Ich liebe maschinelles Lernen" korrekt zu erkennen.

, - . , , Score A (S).

, , Score A (S). , . ?

S out (« »). S* (« »). , (Optimization Verification test): Score A (S*) Score A (S out ). , . :

  1. Score A (S*) > Score A (S out ), .. ().

    S*. S out . , S, Score A (S). , . , (beam search).
  2. Score A (S*) ≤ Score A (S out ), .. ().

    , Score A (.): S out . . Score A (S) S.

Unsere Diskussion ging auf ein einziges Beispiel ein. Um den Optimierungstest in die Praxis umzusetzen, müssen Sie die Fehler Ihrer Validierungsprobe überprüfen. Für jeden Fehler müssen Sie sicherstellen, dass die Schätzung für die erwartete (korrekte) Transkription höher ist als die Schätzung für die ausgegebene (falsche) Transkription, d. H. Punktzahl A (S *)> Punktzahl A (S out ). Jedes Beispiel aus dem Validierungsmuster, für das eine solche Ungleichung bestehen bleibt, wird als Fehler markiert, der vom Optimierungsalgorithmus verursacht wird. Jedes Beispiel, bei dem diese Ungleichung nicht auftritt, wird aufgrund der falschen Methode zur Berechnung von Punktzahl A (.) Als Fehler gewertet .

Beispielsweise stellen Sie fest, dass 95% der Fehler durch die Arbeit der Bewertungsfunktion bei der Berechnung von Punktzahl A verursacht werden (.), 5% . , , 5% . Score A (.).


45.



Sie können den Optimierungstest anwenden, wenn Sie ein x als Eingabe erhalten. Sie wissen, wie der Score X (y) berechnet wird, der angibt, wie gut die Ausgabe y dem angegebenen x an der Eingabe entspricht. Außerdem verwenden Sie den ungefähren Suchalgorithmus, um arg max Y Score X (y) zu finden, vermuten jedoch, dass der Suchalgorithmus beim Ermitteln des Maximums falsch ist. Im vorherigen Beispiel war bei einem Spracherkennungssystem x = A eine Audioaufzeichnung und y = S eine Ausgangstranskription.

Angenommen, y * ist der richtige Ausgabewert, aber der Algorithmus gibt stattdessen yout zurück. Dann ist die Hauptsache zu überprüfen, wie Score X (y *) und Score X (y out ) zusammenhängen. Ist die erste Schätzung größer als die zweite, so liegt die Fehlerursache im Optimierungsalgorithmus, ansonsten liegt der Fehler bei der Berechnungsfunktion der Punktzahl Punktzahl X (y).

Schauen wir uns ein anderes Beispiel an. Angenommen, Sie erstellen ein maschinelles Übersetzungssystem von Chinesisch nach Englisch. Ihr System empfängt einen Satz C als Eingabe und berechnet die Punktzahl C (E) für jede mögliche Version der Übersetzung E. Sie können beispielsweise die Punktzahl C (E) = P (E | C) verwenden, d. H. die Wahrscheinlichkeit, dass die Übertragung E ist, vorausgesetzt, Satz C wurde vorgelegt.

Ihre maschinelle Übersetzungsmaschine versucht zu berechnen:

Output=arg maxEScoreC(E)



Die Menge aller möglichen E-Sätze in Englisch ist jedoch so groß, dass Sie sich auf einen heuristischen Suchalgorithmus verlassen müssen.

Angenommen, Ihr Algorithmus erzeugt häufiger die falsche Übersetzung E out als eine korrekte Übersetzung E *. Dann ermöglicht der Optimierungskontrolltest die Berechnung der Ungleichheit Score C (E *)> Score C (E out ). Wenn es gespeichert ist, erkennt Score C (.) E * korrekt als die beste Ausgabe E out , sodass Sie diesen Fehler dem Anteil des ungefähren Suchalgorithmus zuschreiben, andernfalls der Berechnungsfunktion Score C (.).

Dies ist ein sehr allgemeines Muster in AI: Zuerst trainieren wir die Approximationsschätzfunktion Score x (.), Dann verwenden wir den Approximationsmaximierungsalgorithmus. Wenn Sie sich an dieses Muster erinnern, können Sie mit dem Optimierungstest die Fehlerquelle ermitteln.


Kapitel 46. Beispiel für das Erlernen der Verstärkung




Angenommen, Sie verwenden maschinelles Lernen, um einem Hubschrauber das Durchführen komplexer Manöver beizubringen. Oben ist ein Zeitrafferbild eines Hubschraubers zu sehen, der von einem Computer gesteuert wird, der bei ausgeschaltetem Motor landet.

Dieses Manöver wird als Landung bei Autorotation bezeichnet. Dadurch kann der Hubschrauber landen, auch wenn der Motor plötzlich abstürzt. Menschliche Piloten üben dieses Manöver im Rahmen ihres Trainings. Ihr Ziel ist es, den Algorithmus für maschinelles Lernen zu verwenden, damit der Hubschrauber auf einer bestimmten Flugbahn T fliegen und am Ende sicher landen kann.

Um Verstärkungstraining anzuwenden, müssen Sie eine „Belohnungsfunktion“ R (.) Entwickeln. Diese gibt eine Schätzung darüber, wie gut jede mögliche Flugbahn von T. war. Wenn die Flugbahn T beispielsweise zu einem Hubschrauberabsturz geführt hat, lassen Sie die Belohnung R (T) = - 1000, d.h. hat einen großen negativen Wert. Die Flugbahn T, die mit einer erfolgreichen Landung endete, weist eine positive Schätzung von R (T) auf, die genau die Abhängigkeit davon widerspiegelt, wie glatt die Landung war. Die Belohnungsfunktion R (.) Wird normalerweise manuell ausgewählt, um zu quantifizieren, wie wünschenswert die verschiedenen Flugbahnen von T sind. Sie muss verschiedene Faktoren ausgleichen: Wie stark hat sie bei der Landung gewackelt, ob der Hubschrauber genau an der richtigen Stelle gelandet ist, wie schwer der Abstieg für die Passagiere war und so weiter. Gute Belohnungsfunktionen sind nicht einfach zu entwickeln.

In Anbetracht der Belohnungsfunktion R (T) besteht die Aufgabe des Verstärkungslernalgorithmus darin, den Hubschrauber so zu steuern, dass er max. TR (T) erreicht. Verstärkungslernalgorithmen machen jedoch viele Annäherungen und können diese Maximierung möglicherweise nicht erreichen.

Angenommen, Sie definieren eine R (.) - Belohnungsfunktion und führen Ihren Lernalgorithmus aus. Seine Wirksamkeit ist jedoch viel schlechter als die eines menschlichen Piloten - er zittert bei der Landung stark und scheint weniger sicher zu sein. Wie kann festgestellt werden, ob der Fehler mit dem Verstärkungslernalgorithmus zusammenhängt, der versucht, dem maximalen TR (T) -Pfad zu folgen, oder ob der Fehler mit der Belohnungsfunktion zusammenhängt, die versucht, die ideale Beziehung zwischen dem akzeptablen Ruckeln während der Landung und der Genauigkeit der Landestelle zu messen und zu bestimmen?

Wir wenden den Optimierungstest an. Sei T human der vom Piloten eingeschlagene Weg und T out der vom Algorithmus gewählte Weg. Nach der obigen Beschreibung sind wir uns einig, dass die Flugbahn von T human besser ist als T out , dann lautet die Haupttestfrage, ob R (T human )> R (T out ) der Realität entspricht.

Option 1: Wenn diese Ungleichung weiterhin besteht, schätzt die Belohnungsfunktion R (.) Die Flugbahn von T human korrekt. Der Verstärkungslernalgorithmus wählte jedoch die Trajektorie T out mit schlechterer Bewertung. Das bedeutet, dass es sich lohnt, an der Verbesserung unseres Algorithmus zum Lernen der Verstärkung zu arbeiten.

Option 2: Diese Ungleichung bleibt nicht erhalten, d.h. R (T human ) ≤ R (T out ). Dies bedeutet, dass die Belohnungsfunktion R (.) Das schlechteste Ergebnis für T human zugewiesen hat, obwohl dies bei weitem die beste Flugbahn ist. Sie sollten daran arbeiten, R (.) Zu verbessern, um das beste Verhältnis der Faktoren zu finden, die einer guten Anpassung entsprechen.

Viele Anwendungen für maschinelles Lernen verfügen über diese „Vorlage“ zur Optimierung der Funktion Score x (.) Unter Verwendung des ungefähren Suchalgorithmus. Manchmal haben wir nicht genau die angegebene Eingabe x, daher wird die Optimierung nur auf die Bewertungsfunktion Punktzahl (.) Reduziert. Im obigen Beispiel war die Belohnungsfunktion die Belohnungsfunktion Score (T) = R (T), und der Optimierungsalgorithmus war ein Verstärkungslernalgorithmus, der versucht, eine gute Flugbahn T zu berechnen.

Der einzige Unterschied zwischen diesem Beispiel und früheren besteht darin, dass wir es nicht mit der „optimalen“ Ausgabe vergleichen, sondern mit der menschlichen Effizienz für T human . Wir gehen davon aus, dass der T-Pfad einigermaßen gut ist, auch wenn er nicht optimal ist. Im Allgemeinen kann der Optimierungssteuerungstest zeigen, ob es mehr gibt, solange Sie ein y * (in diesem Beispiel T human ) haben, das die beste Ausgabe in Bezug auf die Effizienz für Ihren aktuellen Lernalgorithmus darstellt (auch wenn es nicht „optimal“ ist) vielversprechend, den Optimierungsalgorithmus oder die Bewertungsfunktion zu verbessern.


[ Fortsetzung ]

Source: https://habr.com/ru/post/de485070/


All Articles