Andrew Eun "Leidenschaft für maschinelles Lernen." Übersetzung der Kapitel 47-58



Dies ist der zweite Artikel mit einer Übersetzung einzelner Kapitel von Andrew Un's Buch Passion for Machine Learning. Sie können die Übersetzung der vorherigen Kapitel hier lesen.

Dieser Artikel wird sich auf das durchgängige vertiefte Lernen konzentrieren, und der Autor des Buches wird einige Methoden zur Analyse der Fehler des Lernalgorithmus vorstellen.

End-to-End-Deep-Learning



Kapitel 47. Das Wachstum des End-to-End-Lernens



Angenommen, Sie möchten ein System zum Überprüfen von Produktbewertungen im Internet erstellen, mit dem Sie automatisch wissen, ob der Verfasser der Bewertung dieses Produkt gefällt oder nicht. Sie hoffen beispielsweise, die folgende Bewertung als sehr positiv zu bewerten:

  • "Das ist ein toller Mopp!"

und das folgende ist extrem negativ:

  • "Dieser Mopp ist von schlechter Qualität, sorry für den Kauf"

Das Problem des Erkennens positiver und negativer Meinungen wird als „Klassifizierung von Stimmungen“ bezeichnet. Um dieses System zu erstellen, können Sie eine "Pipeline" aus zwei Komponenten erstellen:

  1. Parser : Ein System, das Text mit Informationen beschriftet und die wichtigsten Wörter identifiziert. 1 Mit dem Parser können Sie beispielsweise alle Adjektive und Substantive bezeichnen. Sie erhalten daher folgenden kommentierten Text:

    • Das ist ein toller Mopp!

    1 Tatsächlich kommentiert der Parser den Text viel umfangreicher als beschrieben, aber diese vereinfachte Beschreibung wird ausreichen, um das durchgängige tiefe Lernen zu erklären.

  2. Sentiment Classifier : Ein Lernalgorithmus, der die Eingabe von kommentiertem Text übernimmt und dessen allgemeine Stimmung vorhersagt. Parser-Annotationen können für diesen Algorithmus eine große Hilfe sein: Indem Sie Adjektiven mehr Gewicht beimessen, können Sie schnell an Ihren Algorithmus denken, indem Sie wichtige Wörter wie "ausgezeichnet" verarbeiten und weniger wichtige Wörter wie "dies" ignorieren.

Wir können diese Pipeline aus zwei Komponenten wie folgt darstellen:



In letzter Zeit hat es eine Tendenz gegeben, Pipelines durch einen einzigen Lernalgorithmus zu ersetzen. Ein End-to-End-Lernalgorithmus für diese Aufgabe würde einfach den rohen Originaltext "Dies ist ein großartiger Mopp!" Als Eingabe verwenden und versuchen, seine Stimmung direkt zu erkennen:



Neuronale Netze werden üblicherweise in End-to-End-Lernsystemen verwendet. Der Begriff „Pass-Through“ bezieht sich auf die Tatsache, dass wir den Lernalgorithmus auffordern, direkt von der Eingabe zum gewünschten Ergebnis zu gelangen. Das heißt, der Lernalgorithmus verbindet das "Eingabeende" des Systems direkt mit dem "Ausgabeende".

Bei Aufgaben mit vielen Daten waren End-to-End-Systeme äußerst erfolgreich. Aber sie sind nicht immer eine gute Wahl. In den nächsten Kapiteln finden Sie weitere Beispiele für Querschnittsysteme sowie Tipps, wann und wann Sie diese nicht verwenden sollten.


Kapitel 48. Weitere Beispiele für bereichsübergreifendes Lernen



Stellen Sie sich vor, Sie möchten ein Spracherkennungssystem erstellen. Sie können ein System aus drei Komponenten erstellen:



Komponenten arbeiten wie folgt:

  1. Computerfunktionen: Rufen Sie manuell erstellte Features wie MFCC ( Mel-Frequenz-Cepstrum-Koeffizienten ) auf, die versuchen, den Inhalt einer Anweisung zu erfassen, während weniger wichtige Eigenschaften wie die Tonhöhe in der Dynamik ignoriert werden.
  2. Phonemerkennung: Einige Linguisten glauben, dass es grundlegende Toneinheiten gibt, die als "Phoneme" bezeichnet werden. Zum Beispiel ist der Anfangston "k" in "keep" dasselbe Phonem wie der Ton "c" in "cake". Dieses System versucht, einzelne Phoneme in Audioaufnahmen zu erkennen.
  3. End Recognizer: Nimmt eine Folge von erkannten Phonemen und versucht, sie zu einem Ausgabedatensatz zusammenzufügen.

Im Gegensatz zu dieser „Pipeline“ kann das End-to-End-System am Eingang eine Audioaufnahme empfangen und versucht, diese direkt auf die Ausgangsaufnahme zu übertragen:



Bisher haben wir nur vollständig lineare „Förderer“ des maschinellen Lernens beschrieben: Die Ausgabe wird sequentiell von einer Stufe zur anderen übertragen. Förderer können jedoch komplexer sein. Zum Beispiel ist hier eine einfache Architektur für ein unbemanntes Fahrzeug:



Dieser Förderer besteht aus drei Komponenten: Eine erkennt andere Autos anhand des Kamerabilds, die zweite erkennt Fußgänger und schließlich berechnet die letzte Komponente den Weg unseres Autos, um Kollisionen mit anderen Autos und Fußgängern zu vermeiden.

Nicht jede Komponente in dieser Pipeline wird geschult. Zum Beispiel beschreibt die Literatur über "Planung der Bewegung von Robotern" viele Algorithmen für die endgültige Berechnung der Fahrbahn eines Autos. Viele dieser Algorithmen erfordern kein Training.

Im Gegenteil, bei der End-to-End-Methode wird möglicherweise versucht, Sensorwerte zu empfangen und das Lenkrad direkt in die richtige Richtung zu drehen:



Obwohl durchgängiges Training zu vielen Erfolgen geführt hat, ist dies nicht immer der beste Ansatz. Beispielsweise funktioniert die Ende-zu-Ende-Spracherkennung gut. Ich bin jedoch skeptisch gegenüber dem Querschnittstraining des autonomen Fahrens für unbemannte Systeme. In den nächsten Kapiteln wird erklärt, warum.


Kapitel 49. Querschnittstraining: Vor- und Nachteile



Betrachten Sie das vorherige Beispiel der Spracherkennungs-Pipeline:



Viele seiner Teile sind "manuell" entworfen:

  • MFCC ist eine Reihe von speziell entwickelten Audiofunktionen. Und obwohl sie eine vernünftige Zusammenfassung aller am Eingang empfangenen Audiodaten liefern, vereinfachen sie das eingehende Signal auch, indem sie einige Informationen verwerfen.
  • Phoneme sind eine Erfindung von Linguisten. Sie sind eine unvollständige Darstellung der Sprachlaute. Da Phoneme eine schlechte Annäherung an die Realität darstellen, wird ein Algorithmus, der Phoneme zur Darstellung von Sprache verwendet, die Wirksamkeit des gesamten Spracherkennungssystems einschränken.

  • Anzeichen von MFCC sind gegenüber bestimmten Spracheigenschaften, die den Inhalt nicht beeinflussen, wie z. B. der Tonhöhe des Sprechers, robust. Auf diese Weise vereinfachen sie die Aufgabe für den Lernalgorithmus.
  • In dem Maße, in dem Phoneme eine vernünftige Repräsentation von Sprache darstellen, können sie dem Lernalgorithmus auch dabei helfen, die grundlegenden Klangkomponenten zu verstehen und somit seine Wirksamkeit zu erhöhen.

Mit mehr handgefertigten Komponenten kann ein Spracherkennungssystem am häufigsten aus weniger Daten lernen. Das mit MFCC und Phonemen „manuell“ erlangte Wissen „ergänzt“ das Wissen, das unser Algorithmus aus den Daten gewinnt. Wenn wir wenig Daten haben, ist dieses Wissen nützlich.

Betrachten Sie nun das End-to-End-System:



Dieses System verfügt nicht über genügend Kenntnisse, die "manuell" erworben wurden. Wenn der Trainingssatz klein ist, funktioniert dieses System möglicherweise schlechter als ein manuell konstruierter Förderer.

Wenn der Trainingssatz jedoch groß ist, gibt es keine Einschränkungen aufgrund der Verwendung von MFCC oder Phonemen. Wenn der Lernalgorithmus ein ausreichend großes neuronales Netzwerk ist und auf einem ausreichend großen Trainingssatz trainiert wird, hat er ein großes Potenzial und nähert sich möglicherweise sogar der optimalen Fehlerrate.

Ende-zu-Ende-Systeme sind in der Regel erfolgreich, wenn für beide Enden viele markierte Daten vorhanden sind - das „Eingabeende“ und das „Ausgabeende“. In diesem Beispiel benötigen wir eine große Anzahl solcher Paare (Audio und Transkription). Wenn Ihnen solche Daten nicht zur Verfügung stehen, lernen Sie mit größter Sorgfalt.

Wenn Sie an einer maschinellen Lernaufgabe arbeiten, bei der der Trainingssatz sehr klein ist, werden die meisten Informationen, die für Ihren Algorithmus verfügbar sind, dank Ihres menschlichen Verständnisses erhalten, d. H. aus manuell gestalteten Bauteilen.

Wenn Sie kein End-to-End-System verwenden möchten, müssen Sie entscheiden, welche Schritte sich in Ihrer Pipeline befinden und wie sie zusammenpassen sollen. Im nächsten Kapitel werden wir einige Ideen für den Entwurf solcher Systeme vorstellen.


Kapitel 50. Auswahl der Pipeline-Komponenten: Datenverfügbarkeit



Wenn Sie einen Förderer bauen, der kein End-to-End-System ist, welche Komponenten dieses Förderers sind eine gute Wahl? Die Art und Weise, wie Sie den Förderer konstruieren, wirkt sich stark auf die Gesamtsystemleistung aus. Ein wichtiger Faktor ist die einfache Erfassung von Daten für das Training der einzelnen Komponenten.

Betrachten Sie zum Beispiel diese autonome Fahrarchitektur:



Sie können Algorithmen zum maschinellen Lernen verwenden, um Autos und Fußgänger zu erkennen. Darüber hinaus ist es für sie nicht schwierig, Daten zu sammeln: Es gibt viele vorgefertigte Computer-Vision-Datensätze mit einer großen Anzahl gekennzeichneter Autos und Fußgänger. Sie können auch Crowdsourcing (wie Amazon Mechanical Turk) verwenden, um noch größere Datensätze zu erhalten. Daher ist es relativ einfach, Trainingsdaten zu sammeln, um einen Autodetektor und einen Fußgängerdetektor zu erstellen.

Betrachten Sie im Gegenteil ein sauberes End-to-End-System:



Um dieses System zu trainieren, benötigen wir einen großen Satz bereits zugeordneter Elemente (Bild = Lenkrad in die richtige Richtung drehen). Dies ist eine sehr zeitaufwendige und teure Aufgabe. Um solche Daten zu sammeln, ist es notwendig, dass Menschen Autos fahren und Daten über jede Umdrehung des Lenkrads aufzeichnen. Sie benötigen eine ganze Flotte speziell ausgestatteter Autos und eine Vielzahl von Arbeitsstunden, um die unterschiedlichsten Situationen abzudecken. Dies macht es sehr schwierig, das End-to-End-System zu erlernen. Es ist viel einfacher, eine große Anzahl von etikettierten Bildern von Autos und Fußgängern aufzunehmen.

Im Allgemeinen sollten Sie über die Verwendung eines Förderers nachdenken, der aus mehreren Komponenten besteht, wenn viele Daten für die Schulung von „Zwischen“ -Fördermodulen (z. B. einem Fahrzeugdetektor oder einem Fußgängerdetektor) verfügbar sind. Diese Methode könnte besser funktionieren, weil Sie können alle verfügbaren Daten für das Training von Zwischenmodulen verwenden.

Bis es mehr Daten für End-to-End-Modelle gibt, halte ich den traditionellen Ansatz für vielversprechender für autonomes Fahren: Die Architektur entspricht besser der aktuellen Datenverfügbarkeit.


Kapitel 51. Fördererkomponenten auswählen: Einfache Aufgabe



Bei der Auswahl der Pipeline-Komponenten sollten Sie neben der Datenverfügbarkeit auch den zweiten Faktor berücksichtigen: Wie einfach sind die Aufgaben, die einzelne Komponenten lösen? Sie sollten versuchen, Fördererkomponenten so auszuwählen, dass sie einfach zu bauen oder zu erlernen sind. Aber was bedeutet es, dass eine Komponente leicht zu erlernen ist?



Betrachten Sie die folgenden maschinellen Lernaufgaben, die in aufsteigender Reihenfolge der Komplexität aufgeführt sind:

  1. Die Definition überbelichtet das dargestellte Bild (wie im obigen Beispiel).
  2. Bestimmen, ob ein Bild in Innenräumen oder im Freien aufgenommen wird.
  3. Bestimmen, ob das Bild eine Katze enthält.
  4. Feststellen, ob das Bild eine Katze mit schwarz-weißem Fell enthält.
  5. Feststellung, ob das Bild eine siamesische Katze enthält (eine bestimmte Katzenrasse).

Für jedes dieser Probleme der binären Klassifizierung müssen Sie ein Bild am Ein- und Ausgang 0 oder 1 erhalten. Die zuvor in der Liste aufgeführten Aufgaben scheinen jedoch für neuronale Netze „einfacher“ zu erlernen zu sein. Sie können den Algorithmus für einfachere Aufgaben mit weniger Trainingsbeispielen trainieren.

Zum gegenwärtigen Zeitpunkt des maschinellen Lernens gibt es keine gute formale Definition dafür, was eine einzelne Aufgabe einfach oder schwierig macht. 2 Mit dem Wachstum von Deep Learning und mehrschichtigen neuronalen Netzen wird das Problem manchmal als einfach bezeichnet, wenn es mit weniger Berechnungsschritten gelöst werden kann (z. B. mit neuronalen Netzen mit einer kleinen Anzahl von Schichten), und wenn es mehr Schritte erfordert, wird die Aufgabe als schwierig bezeichnet Computing (was einem tiefen neuronalen Netzwerk entspricht). Dies ist jedoch eine informelle Definition.
2 In der algorithmischen Informationstheorie gibt es das Konzept der Kolmogorov-Komplexität, wonach die Komplexität der untersuchten Funktion die Länge des kürzesten Computerprogramms ist, das diese Funktion erzeugen kann. Dieses theoretische Konzept hat in der KI mehrere praktische Anwendungen gefunden.

Wenn Sie die Möglichkeit haben, eine komplexe Aufgabe in einfachere Unteraufgaben aufzuteilen, können Sie durch genaues Codieren jeder Unteraufgabe dem Algorithmus wichtige Kenntnisse vermitteln, mit denen das gesamte Problem effizienter gelöst werden kann.



Stellen Sie sich vor, Sie entwerfen einen Detektor für siamesische Katzen. Hier ist eine saubere End-to-End-Architektur:



Im Gegenteil, Sie können einen Förderer aus zwei Komponenten verwenden:



Im ersten Schritt (Katzendetektor) werden alle Katzen im Bild erkannt.



Anschließend werden im zweiten Schritt zugeschnittene Bilder jeder der nachgewiesenen Katzen einzeln an den Rassenklassifikator übertragen. Und schließlich, wenn eine der erkannten Katzen eine siamesische Katze ist, erhalten wir "1" am Ausgang.



Verglichen mit dem Unterrichten eines reinen Pass-Through-Klassifikators, der nur 0/1 Tags verwendet, scheint jede der beiden Komponenten in der Pipeline (Cat Detector und Breed Classifier) ​​einfacher zu erlernen zu sein und erfordert deutlich weniger Daten. 3
3 Wenn Sie mit den tatsächlich in der Praxis verwendeten Objekterkennungsalgorithmen vertraut sind, werden Sie verstehen, dass diese nicht nur mit Bildbezeichnungen 0/1 trainiert werden. Stattdessen werden sie unter Verwendung des restriktiven Rahmens trainiert, der als Teil der Trainingsdaten bereitgestellt wird. Ihre Erörterung würde den Rahmen dieses Kapitels sprengen.

Lassen Sie uns als letztes Beispiel noch einmal die Pipeline für die autonome Fahraufgabe in Erinnerung rufen:



Mit diesem Förderer teilen Sie dem Algorithmus mit, dass es beim Autofahren drei wichtige Schritte gibt:

  • Erkennen Sie andere Autos.
  • Fußgänger erkennen.
  • Planen Sie die Richtung der weiteren Bewegung.

Jeder dieser Schritte ist eine einfachere Aufgabe und kann mit weniger Daten trainiert werden als mit einem rein bereichsübergreifenden Ansatz.

Versuchen Sie daher bei der Entscheidung, welche Komponenten der Pipeline verwendet werden sollen, eine Pipeline zu erstellen, bei der jede Komponente eine relativ „einfache“ Funktion ist, die nur mit einer kleinen Datenmenge trainiert werden kann.


Kapitel 52. Lernen mit umfassenden Informationen



Der Bildklassifizierungsalgorithmus nimmt ein Eingabebild X auf und erzeugt eine Ganzzahl, die eine Bezeichnung für die Kategorie des Objekts darstellt. Kann der Algorithmus stattdessen einen ganzen Satz ausgeben, der das Bild beschreibt?

Zum Beispiel:



Y = "Ein gelber Bus fährt zwischen Bäumen und grünem Gras die Straße hinunter."

Die traditionelle Anwendung des Unterrichts mit einem Lehrer beinhaltet das Vorhandensein einer trainierten Funktion h: X → Y, wobei die Ausgabe (y) normalerweise durch eine ganze Zahl oder eine natürliche Zahl dargestellt wird. Zum Beispiel:

HerausforderungXY.
AntispamE-MailSpam / kein Spam (0/1)
BilderkennungBildGanzzahlige Bezeichnung
ImmobilienpreisprognoseHausmerkmalePreis in Dollar
ProduktempfehlungProdukt- und KundenspezifikationenKaufwahrscheinlichkeit


Eines der aufregendsten Dinge beim Querschnittstiefenlernen ist, dass es uns ermöglicht, Y direkt zu lernen, was viel komplizierter als Zahlen ist. In dem oben erwähnten Beispiel mit der Bildbeschreibungsaufgabe können Sie ein Bild (x) auf den Eingang des neuronalen Netzwerks anwenden und am Ausgang eine sofortige Beschreibung (y) erhalten.

Hier einige Beispiele:

HerausforderungXY.Zitat aus der Arbeit
Beschreibung der BilderBildTextMao und andere, 2014
Maschinelle ÜbersetzungEnglischer TextFranzösischer TextSuskever und andere, 2014
Antworten auf FragenPaar (Text + Frage)Antwort auf die FrageBordes und andere, 2015
SpracherkennungAudioTranskriptionHannun und andere, 2015
Text-to-SpeechText-TagsAudioVan der Oord et al., 2016


Dies ist ein zunehmender Trend im Deep Learning: Wenn Sie die richtigen (Eingabe-, Ausgabe-) gekennzeichneten Paare haben, können Sie manchmal ein End-to-End-Training wählen, selbst wenn die Ausgabe ein Satz, ein Bild, ein Audio oder eine andere Ausgabe ist, die viel mehr Informationen enthält. als nur einzelne Tag-Nummern.

Teilfehleranalyse


Kapitel 53. Fehleranalyse in Teilen



Angenommen, Ihr System basiert auf einer ausgeklügelten Pipeline für maschinelles Lernen und Sie möchten die Effizienz des Systems verbessern. Welchen Teil des Förderers sollten Sie verbessern? Indem Sie bestimmten Teilen der Pipeline Fehler zuweisen, können Sie entscheiden, wie Sie Ihre Arbeit priorisieren möchten.

Verwenden wir unser Siamkatze-Klassifikator-Beispiel:



Der erste Teil, ein Katzendetektor, erkennt Katzen und schneidet sie aus dem gesamten Bild aus. Der zweite Teil, der Klassifikator für Katzenrassen, entscheidet, ob es sich bei dieser Katze um eine siamesische Katze handelt. Sie können jahrelang daran arbeiten, eine dieser beiden Komponenten des Förderers zu verbessern. Wie entscheiden Sie, auf welche Komponente Sie sich konzentrieren möchten?

Bei der Analyse von Fehlern in Teilen können Sie versuchen, jeden Fehler des Algorithmus einem der beiden Teile der Pipeline (und manchmal beiden gleichzeitig) zuzuordnen. Beispielsweise klassifiziert der Algorithmus dieses Bild fälschlicherweise so, dass es keine siamesische Katze enthält (y = 0), obwohl die korrekte Bezeichnung y = 1 ist.



Lassen Sie uns manuell überprüfen, was der Algorithmus in jedem der beiden Schritte tut. Angenommen, ein Detektor für siamesische Katzen hat eine Katze wie folgt erkannt:



Dies bedeutet, dass der Klassifikator der Katzenrasse das folgende Bild erhält:



Der Zuchtklassifikator klassifiziert dieses Bild korrekt als keine siamesische Katze enthaltend. , : = 0. , , , = 0. , .

, :



dann würden Sie schließen, dass der Katzendetektor seine Arbeit korrekt erledigt hat und der Fehler aufgrund des Zuchtklassifikators aufgetreten ist.

Angenommen, Sie haben 100 falsch klassifizierte Bilder einer Validierungsprobe durchgesehen und festgestellt, dass sich 90 Fehler auf einen Katzendetektor und nur 10 Fehler auf einen Klassifikator für Katzenrassen beziehen. Sie können sicher schließen, dass Sie sich mehr auf die Verbesserung Ihres Katzendetektors konzentrieren sollten.

Darüber hinaus haben Sie erfolgreich 90 Beispiele gefunden, bei denen der Katzendetektor den falschen Begrenzungsrahmen angezeigt hat. Anhand dieser 90 Beispiele können Sie die
Fehler von Katzendetektoren genauer analysieren, um herauszufinden, wie Sie sie verbessern können.

, , : , , . . .


54.



:



, :



, , , y = 0, .. .



Der Katzendetektor hat schlechte Arbeit geleistet. Während eine ausgebildete Person zweifellos in der Lage sein wird, die siamesische Katze in diesem beschnittenen Bild zu erkennen. Daher führen wir diesen Fehler auf einen Katzendetektor oder einen Zuchtklassifikator oder beides zurück? Nicht klar.

Wenn die Anzahl solcher kontroversen Fälle gering ist, können wir eine Entscheidung treffen und ein ähnliches Ergebnis erzielen. Hier ist jedoch ein formaler Test, mit dem wir den Fehler genauer einem Teil zuordnen können:

  1. Ersetzen Sie den Ausgang des Katzendetektors durch einen manuell markierten Rahmen.
  2. Führen Sie das entsprechende zugeschnittene Bild durch den Rassenklassifikator. Wenn der Rassenklassifizierer das Bild immer noch nicht richtig klassifiziert, führen Sie den Fehler auf den Rassenklassifizierer zurück. Andernfalls führen Sie den Fehler auf den Katzendetektor zurück.

, . 2 :

  1. y = 0. .
  2. y = 1. , , . , .

, . , , , , , .


55.



. , A, B C, A B, B C.



, :

  1. A “” (.. “” ) B, C . , , A , . , A. 2.
  2. Versuchen Sie, den Ausgang von Stufe B manuell durch den „perfekten“ Ausgang zu ersetzen. Wenn der gesamte Algorithmus ordnungsgemäß funktioniert, schreiben Sie den Fehler der Komponente B zu. Andernfalls fahren Sie mit Schritt 3 fort.
  3. Ordnen Sie den Fehler der Komponente C zu.

Schauen Sie sich ein komplexeres Beispiel an:



Ihre Drohne benutzt diesen Förderer. Wie können Sie mithilfe der Stückchenfehleranalyse bestimmen, auf welche Komponente Sie sich konzentrieren möchten?

Sie können die Komponenten wie folgt markieren:

  • A. Erkennen Sie Autos.
  • B. Erkennen Sie Fußgänger.
  • C. Planen Sie den Weg.

Gehen Sie wie oben beschrieben vor, und testen Sie Ihr Auto auf einem geschlossenen Trainingsgelände. Suchen Sie einen Fall, in dem das Auto ein Manöver in eine schärfere Richtung wählt, als dies ein erfahrener Fahrer tun würde. In der Welt des unbemannten Fahrens wird ein solches Ereignis üblicherweise als Drehbuch bezeichnet. In diesem Fall:

  1. A ( ) «» (.. ). B C , C ( ) «» A. , , A , . A. 2.
  2. B ( ) «» . , B. 3.
  3. C.

(DAG), , , . ,
A→B→C DAG, .

, :

  • A. ( )
  • B. ( )
  • C.

, .


Kapitel 56. Fehleranalyse in Teilen und Vergleich mit der Effizienz auf menschlicher Ebene



Das Durchführen einer Fehleranalyse in einem Lernalgorithmus ähnelt der Verwendung von Data Science zur Analyse von ML-Systemfehlern, um eine Vorstellung davon zu bekommen, was als Nächstes zu tun ist. In den meisten Fällen zeigt eine stückweise Fehleranalyse, welche Komponente es wert ist, vor allem verbessert zu werden.

Angenommen, Sie haben einen Datensatz über Kunden, die Dinge auf einer Website kaufen. Ein Datenwissenschaftler kann Daten auf viele verschiedene Arten analysieren. Er kann viele verschiedene Schlussfolgerungen darüber ziehen, ob die Website die Preise erhöhen sollte, über den Wert der Kunden, die durch verschiedene Marketingkampagnen gewonnen wurden und so weiter. Es gibt keinen „richtigen“ Weg, einen Datensatz zu analysieren, es können viele nützliche Ideen entstehen. Ebenso gibt es keinen "richtigen" Weg, um Fehler zu analysieren. In diesen Kapiteln haben Sie einige der gebräuchlichsten Entwurfsmuster kennengelernt, um nützliche Informationen über Ihr ML-System zu erhalten. Sie können jedoch auch frei mit anderen Methoden der Fehleranalyse experimentieren.

Zurück zu der unbemannten Fahrzeuganwendung, in der der Autoerkennungsalgorithmus den Standort (und möglicherweise die Geschwindigkeit) von Autos in der Nähe anzeigt, zeigt der Fußgängererkennungsalgorithmus den Standort der nächsten Fußgänger an, und diese beiden Ausgaben werden schließlich verwendet, um den Weg für das Auto zu planen.



Um diese Pipeline zu debuggen und nicht genau nach dem im vorherigen Kapitel beschriebenen Verfahren vorzugehen, können Sie die folgenden Fragen stellen:

  1. Wie weit ist der Autoerkennungsalgorithmus von der menschlichen Effizienz bei der Lösung eines ähnlichen Problems entfernt?
  2. Wie weit ist der Fußgängererkennungsalgorithmus von der menschlichen Leistung entfernt, um ein ähnliches Problem zu lösen?
  3. ? , , ( ). , « » , ?

Wenn Sie feststellen, dass eine der Komponenten des Systems weit von der menschlichen Leistungsfähigkeit entfernt ist, haben Sie eine gute Gelegenheit, sich auf die Verbesserung der Wirksamkeit dieser Komponente zu konzentrieren.

Viele Fehleranalyseprozesse funktionieren besser, wenn wir versuchen, etwas zu automatisieren, das eine Person tun kann. Daher vergleichen wir die Ergebnisse mit den Ergebnissen einer Person. Die meisten unserer vorherigen Beispiele hatten diese implizite Annahme. Wenn Sie ein ML-System erstellen, in dem der endgültige Ausgang oder einige der Zwischenkomponenten Dinge tun, die selbst eine Person nicht gut kann, gelten einige dieser Verfahren nicht.

Dies ist ein weiterer Vorteil der Arbeit an Problemen, die von Menschen gelöst werden können. Sie verfügen über leistungsfähigere Tools zur Fehleranalyse und können daher die Arbeit Ihres Teams effizienter priorisieren.


Kapitel 57. Fehlererkennung in der ML-Pipeline



Was ist, wenn jede einzelne Komponente Ihres ML-Förderers auf menschlicher Ebene oder etwas weniger effizient ist, der allgemeine Förderer jedoch nicht der menschlichen Ebene entspricht? Normalerweise bedeutet dies, dass der Förderer Mängel aufweist und neu gestaltet werden muss. Mithilfe der Fehleranalyse können Sie auch herausfinden, ob Ihre Pipeline neu gestaltet werden muss.



Im vorigen Kapitel haben wir die Frage gestellt: Zeigt jede der drei Komponenten Effizienz auf menschlicher Ebene? Angenommen, die Antwort auf alle drei Fragen lautet Ja. Dann:

  1. , , () .
  2. , , () .
  3. , , , , , ( ).

Trotzdem meistert Ihr unbemanntes Fahrzeug das Fahren deutlich schlechter als eine Person. Das heißt, Menschen, die Zugriff auf Bilder von der Kamera haben, können den Weg des Autos viel besser planen. Welche Schlussfolgerung können Sie ziehen?

Die einzig mögliche Schlussfolgerung ist, dass Ihre ML-Pipeline nicht richtig ausgelegt ist. In diesem Fall funktioniert die Komponente, die den Fahrzeugpfad plant, genauso gut wie eingehende Daten, die nicht genügend Informationen enthalten. Sie sollten sich fragen, welche anderen Informationen, die nicht in der Ausgabe der beiden vorherigen Komponenten enthalten sind, für eine hervorragende Planung der Fahrzeugbahn erforderlich sind. Mit anderen Worten, welche anderen Informationen werden von einem erfahrenen Fahrer verwendet?

Angenommen, Sie verstehen, dass ein menschlicher Fahrer auch Straßenmarkierungen sehen muss. Dies schlägt vor, dass Sie die Pipeline wie folgt zurückentwickeln: 4


4 , , . «Task simplicity», 51, , . « » — , / .

, , , (, , , ), .

Fazit


58. ,



Herzlichen Glückwunsch zum Abschluss dieses Buches!
In Kapitel 2 haben wir darüber gesprochen, wie dieses Buch Ihnen helfen kann, ein Superheld in Ihrem Team zu werden.


Das einzige, was besser sein kann als ein Superheld zu sein, ist, Teil eines Teams von Superhelden zu sein. Ich hoffe, du teilst Kopien dieses Buches mit deinen Freunden und Teamkollegen und hilfst dabei, andere Superhelden zu erschaffen!

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


All Articles