Deep Learning und neurale Netzwerke mit Python | Frank Kane | Skillshare
Drawer
Suchen

Playback-Geschwindigkeit


  • 0.5x
  • 1x (normal)
  • 1.25x
  • 1.5x
  • 2x

Deep Learning und neurale Netzwerke mit Python

teacher avatar Frank Kane, Machine Learning & Big Data, ex-Amazon

Schau dir diesen Kurs und Tausende anderer Kurse an

Erhalte unbegrenzten Zugang zu allen Kursen
Lerne von Branchenführern, Ikonen und erfahrenen Experten
Wähle aus einer Vielzahl von Themen, wie Illustration, Design, Fotografie, Animation und mehr

Schau dir diesen Kurs und Tausende anderer Kurse an

Erhalte unbegrenzten Zugang zu allen Kursen
Lerne von Branchenführern, Ikonen und erfahrenen Experten
Wähle aus einer Vielzahl von Themen, wie Illustration, Design, Fotografie, Animation und mehr

Einheiten dieses Kurses

    • 1.

      Einführung in den Kurs

      2:15

    • 2.

      Erste Schritte und Pre-Requisites

      11:40

    • 3.

      Die Geschichte der künstlichen neuronalen Netzwerke

      11:14

    • 4.

      Hands auf in der Hands-On

      12:00

    • 5.

      Deep Learning Details

      9:29

    • 6.

      Tensorflow

      11:29

    • 7.

      Tensorflow für Handschrifterkennung Teil 1

      13:11

    • 8.

      Tensorflow für Handschrifterkennung Teil 2

      12:03

    • 9.

      Keras präsentieren

      13:33

    • 10.

      Keras zur Kenntnis von politischen Partnerschaften

      12:05

    • 11.

      Convolutional

      11:28

    • 12.

      CNNs für Handschrifterkennung verwenden

      8:02

    • 13.

      Wiederkehrende neuronale Netzwerke

      11:02

    • 14.

      RNN's für Sentiment-Analyse verwenden

      9:37

    • 15.

      Transfer

      12:14

    • 16.

      Neuronale Netzwerke Absacken von Lernrate und großen Hyperparameters

      4:39

    • 17.

      Deep Learning Regularisation mit Dropout und Deep

      6:21

    • 18.

      Die Ethik des tiefen Lernens

      11:02

    • 19.

      Variational Auto-Encoders (VAE's)

      10:23

    • 20.

      VA: Hands on mit Hands-On

      26:31

    • 21.

      Generative Nebensystem (GAN's)

      7:39

    • 22.

      GAN Demos und Live-Training

      11:22

    • 23.

      GANs Hands mit Hands-On

      15:20

    • 24.

      Deep Learning Projekt Einführung

      4:48

    • 25.

      Deep Learning

      4:29

  • --
  • Anfänger-Niveau
  • Fortgeschrittenes Niveau
  • Fortgeschrittenes Niveau
  • Jedes Niveau

Von der Community generiert

Das Niveau wird anhand der mehrheitlichen Meinung der Teilnehmer:innen bestimmt, die diesen Kurs bewertet haben. Bis das Feedback von mindestens 5 Teilnehmer:innen eingegangen ist, wird die Empfehlung der Kursleiter:innen angezeigt.

4.207

Teilnehmer:innen

2

Projekte

Über diesen Kurs

Es ist schwer zu erwachen, eine heißere Technologie vorzustellen als Deep Learn, künstliche Intelligenz und künstliche neuronale Netzwerke. Wenn du Python unter deinem Band hast, wird dieser Kurs dieses spannende Feld mit allen wichtigen Themen entmystifizieren

Wir behandeln:

  • Künstliche neuronale Netzwerke
  • Multi-Layer
  • Tensorflow
  • Keras
  • Convolutional
  • Wiederkehrende neuronale Netzwerke
  • Variational Auto-Encoders (VAE's)
  • Generative Nebensystem (GAN's)

Und es ist nicht nur Theorie Neben dem Kursprojekt erhältst du die praktische Zeit mit einigen kleineren Aktivitäten und Übungen:

  • neurale Netzwerke für Handschrifterkennung erstellen
  • Erziehung die politische Partei eines Politikers basierend auf ihrer Stimmen
  • Repräsentation von Stimmung auf echten Filmbewertungen
  • Interaktive Entwicklung von tiefen neuronalen Netzwerken und Experimentieren mit verschiedenen Topologien
  • Synthetische Bilder von Kleidung erstellen

Ein paar Stunden braucht es alles, was es braucht zu beginnen und zu lernen, was alles in dem Hitze geht. Wenn du Angst vor AI hast, ist die beste Möglichkeit zu kämpfen , um zu verstehen, wie es wirklich funktioniert. Und das ist, was dieser Kurs liefert.

C6a0c215

Triff deine:n Kursleiter:in

Teacher Profile Image

Frank Kane

Machine Learning & Big Data, ex-Amazon

Kursleiter:in

Frank spent 9 years at Amazon and IMDb, developing and managing the technology that automatically delivers product and movie recommendations to hundreds of millions of customers, all the time. Frank holds 17 issued patents in the fields of distributed computing, data mining, and machine learning. In 2012, Frank left to start his own successful company, Sundog Software, which focuses on virtual reality environment technology, and teaching others about big data analysis.

Vollständiges Profil ansehen

Skills dieses Kurses

Entwicklung Programmiersprachen Python
Level: Beginner

Kursbewertung

Erwartungen erfüllt?
    Voll und ganz!
  • 0%
  • Ja
  • 0%
  • Teils teils
  • 0%
  • Eher nicht
  • 0%

Warum lohnt sich eine Mitgliedschaft bei Skillshare?

Nimm an prämierten Skillshare Original-Kursen teil

Jeder Kurs setzt sich aus kurzen Einheiten und praktischen Übungsprojekten zusammen

Mit deiner Mitgliedschaft unterstützt du die Kursleiter:innen auf Skillshare

Lerne von überall aus

Ob auf dem Weg zur Arbeit, zur Uni oder im Flieger - streame oder lade Kurse herunter mit der Skillshare-App und lerne, wo auch immer du möchtest.

Transkripte

1. Einführung in den Kurs: Willkommen zu Deep Learning neuronalen Netzwerken mit Python. Ich bin dein Instruktor, Frank Kane und ich verbrachte neun Jahre bei amazon dot com und ich bin devi dot com, einige ihrer bekanntesten Funktionen zu bauen und zu verwalten. Produktempfehlungen. People Who Pot kaufte auch Topseller und Filmempfehlungen, die I. M. D. B. Alle diese Funktionen erforderten die Anwendung maschineller Lerntechniken auf reale Datensätze , und dass ist, worum es bei diesem Kurs geht. Ich muss Ihnen nicht sagen, dass künstliche Intelligenz, Deep Learning und künstliche neuronale Netzwerke die wertvollsten technischen Fähigkeiten sind . Sofort. Diese Felder explodieren mit Fortschritten bei neuen Möglichkeiten. Der kurze Kurs wird Deep Learning angehen. Aus praktischer Sicht werden wir uns nicht in Notation und Mathematik verstrickt, aber Sie werden die Konzepte der modernen KI verstehen und die wichtigsten Techniken mit den gängigsten Softwaretools anwenden können . Heute beginnen wir mit einer Auffrischung für Python und die Pandas-Bibliothek, falls Sie neu sind . Dann werden wir Konzepte hinter künstlichen neuronalen Netzwerken abdecken. Dann tauchen Sie direkt in die Verwendung der Tensorflow-Bibliothek ein, um Ihr erstes neuronales Netzwerk von Grund auf neu zu erstellen und verwenden die Streichel-Bibliothek. Um das Prototyping neuronaler Netzwerke noch einfacher zu machen, werden Sie Multi-Level-Perceptron, tiefe neuronale Netzwerke, Faltung, alle neuronalen Netzwerke und wiederkehrende neuronale Netzwerke verstehen und anwenden tiefe neuronale Netzwerke, Faltung, Faltung, . Am Ende dieses Kurses, am Ende, am Ende, können Sie ein schnelles Abschlussprojekt üben, was Sie gelernt haben. Die Aktivitäten in diesem Kurs Luft wirklich interessant. Sie führen Handschrifterkennung Stimmungsanalyse durch und prognostizieren die politischen Parteien der Menschen mithilfe künstlicher neuronaler Netzwerke mit einer überraschend kleinen Menge Code. Wenn Sie ein Softwareentwickler oder Programmierer sind, der die spannenden Entwicklungen in einem I in den letzten Jahren verstehen möchte und wie alles funktioniert, ist dieser Kurs für Sie wird Konzepte direkt in Code verwandeln, Python ohne Unsinn und ohne akademischer Vorwand. Der Aufbau eines neuronalen Netzwerks ist nicht so schwer, wie Sie denken. Alles, was Sie einige Vorkenntnisse in der Programmierung oder Skripterstellung benötigen, um in diesem Kurserfolgreich zu sein , um in diesem Kurs , ist das allgemeine Format dieses Kurses die Einführung des Konzepts mit einigen Folien und grafischen Beispielen. Dann schauen wir uns Python-Code an, der das Konzept auf einigen realen oder hergestellten Daten implementiert . Sie erhalten dann einige Ideen, wie Sie den Code selbst ändern oder erweitern können, um einige Erfahrungen mit jedem Konzept zu sammeln. Der Code in diesem Kurs wird als Eye-Python-Notebookdatei bereitgestellt, was bedeutet, dass neben dem Riel-funktionierenden Python-Code, mit demSie experimentieren können , mit dem auch Hinweise zu jeder Technik enthält, die Sie für zukünftige Referenz. Wenn Sie eine kurze Erinnerung darüber benötigen, wie eine bestimmte Technik funktioniert, finden Sie dies eine einfache Möglichkeit, sich zu aktualisieren, ohne ein ganzes Video zu wiederholen. 2. Erste Schritte und Pre-Requisites: Es ist schwer, an ein heißeres Thema als Deep Learning zu denken, und darüber werden wir in den nächsten Stunden ausführlich und praxisnah sprechen und Ihnen zeigen, wie neuronale Netzwerke funktionieren. Künstliche neuronale Netzwerke, Perzeptronen, mehrschichtige Perzeptronen. Und dann werden wir uns mit einigen fortgeschritteneren Themen wie konvolutionale neuronale Netzwerke und wiederkehrende neuronale Netzwerke auseinandersetzen . Nichts davon bedeutet dir im Moment wahrscheinlich etwas. Aber die Quintessenz ist, wenn Sie neugierig gewesen sind, wie Deep Learning und künstliche neuronale Netzwerke funktionieren, werden Sie das bis zum Ende dieser nächsten Stunden verstehen. Betrachten Sie es also als Deep Learning für Menschen, die es eilig haben. Ich gebe dir gerade genug Tiefe, um gefährlich zu sein. Und es wird mehrere praktische Aktivitäten und Übungen geben, so dass Sie tatsächlich etwas Vertrauen bekommen und tatsächlich diese Techniken anwenden und wirklich verstehen, wie sie funktionieren und wofür sie sind. Ich denke, Sie werden feststellen, dass es viel einfacher zu bedienen ist und Sie vielleicht gedacht haben. Also lasst uns eintauchen und sehen, worum es geht. Dieser Abschnitt meines größeren Machine Learning und Data Science Kurses ist eigentlich auch als eigenständiger Kurs verfügbar. Wenn Sie also neu in diesem Kurs sind, müssen Sie die Kursmaterialien und eine Entwicklungsumgebung installieren , wenn Sie zusammen mit den praktischen Aktivitäten in diesem Deep Learning Abschnitt folgen möchten . Wenn Sie neu sind und auf sofort Punkt Sun Hund Bindestrich, soft.com Schrägstrich Maschine dash lernen Punkt HTML. Achten Sie auf Groß-/Kleinschreibung und Bindestriche in allen Angelegenheiten. Und Sie sollten hier zu dieser Seite kommen. Hier finden Sie einen praktischen Link zu den Kursmaterialien. Laden Sie das einfach herunter und dekomprimieren Sie es. Wie auch immer Sie tun das auf Ihrer Plattform und erinnern Sie sich, wo Sie es platziert haben. Und unsere Entwicklungsumgebung für diesen Kurs wird Anaconda sein , eine Scientific Python 3-Umgebung. Sie können es von hier installieren, es ist freie Software. Stellen Sie sicher, dass Sie die Python 3.7 oder neuere Version installieren. Sobald Sie Anaconda installiert haben, müssen Sie das TensorFlow-Paket installieren. Unter Windows würden Sie dies tun, indem Sie zur Anaconda-Eingabeaufforderung gehen. Gehen Sie also zu Anaconda in Ihrem Startmenü und öffnen Sie Anaconda Prompt. Unter macOS oder Linux würden Sie einfach zu einer Terminal-Eingabeaufforderung gehen und es wäre schon alles für Sie eingerichtet. Von dort aus würden Sie Conda eingeben, TensorFlow installieren und das laufen lassen, um das TensorFlow-Framework zu installieren, das wir in Anaconda verwenden werden. Wenn Sie eine NVIDIA-GPU haben, erhalten Sie möglicherweise eine bessere Leistung, indem Sie Tensor Fluid angeschlossene GPU sagen, aber manchmal führt dies zu Kompatibilitätsproblemen. Tu das nicht, es sei denn, du weißt, was du tust. Sie müssen jedoch nicht pi dot plus für diesen speziellen Abschnitt der Kurskamera installieren , um dies zu tun, das ist auch Teil der Setup-Anweisungen für den größeren Kurs. Und Sie müssen auch verstehen, wie Sie die Notebooks tatsächlich starten, sobald Sie sie installiert haben. Von dieser Anaconda Prompt, gleichen Anaconda Aufforderung, über die wir früher gesprochen haben , um tatsächlich eines der Notizbücher in diesem Kurs zu starten, würden Sie zuerst Ihr Verzeichnis dahin ändern, wo Sie die Kursmaterialien installiert haben. Also für mich, ich habe sie in C Doppelpunkt ML Kurs. Und wenn ich ein DIR mache, werden Sie sehen, dass alle Kursmaterialien hier sind. Von hier, wenn ich in Jupiter Notizbuch tippe, Jupiter ist lustig mit einem y geschrieben. Das sollte Ihren Web-Browser mit einem Verzeichnis aller verschiedenen Notebooks starten , die Teil dieses Kurses sind. Wenn ich also in diesem Kurs sage, zum Beispiel zu öffnen, kenne ich Tensorflow dot PY nicht und bin das TensorFlow Notebook, würden Sie einfach nach unten zu dieser Liste scrollen, TensorFlow dot IPO, EnB öffnen. Und nach oben sollte es kommen. Wenn Sie fertig sind, mit diesem Notizbuch zu experimentieren und herumzuspielen, können Sie einfach zu Datei, Schließen und Halt gehen , um aus dem Notizbuch herauszukommen. Wenn Sie mit Jupiter vollständig für diese Sitzung fertig sind, beenden Sie einfach und das wird alles für Sie heruntergefahren. In Ordnung, also wenn das aus dem Weg ist, gehen wir weiter. Lassen Sie uns über einige der mathematischen Voraussetzungen sprechen , die Sie benötigen, um Deep Learning zu verstehen. Es wird der schwierigste Teil des Kurses sein, eigentlich nur ein Teil des mathematischen Jargons, mit dem wir uns vertraut machen müssen. Aber sobald wir diese grundlegenden Konzepte unten haben, können wir über sie ein wenig leichter sprechen. Denken Sie, Sie werden feststellen, dass künstliche Intelligenz selbst tatsächlich ein sehr intuitives Feld ist. Und sobald Sie diese grundlegenden Konzepte herunter bekommen, ist es sehr einfach zu reden und sehr einfach zu verstehen. Das erste, worüber wir reden wollen, ist Gradientenabstieg. Dies ist im Grunde eine Machine Learning Optimierungstechnik , um zu versuchen, den optimalen Satz von Parametern für ein bestimmtes Problem zu finden. Also, was wir hier planen, im Grunde eine Art Kostenfunktion, Messung des Fehlers Ihres Lernsystems. Und das gilt für maschinelles Lernen im Allgemeinen, richtig? Wie Sie eine Art von Funktion haben müssen, die definiert, wie nah an dem gewünschten Ergebnis liegt, produziert Ihr Modell Ergebnisse für, richtig? So tun wir immer im Kontext des betreuten Lernens. Wir werden unseren Algorithmus oder Modell füttern, wenn Sie so wollen, eine Gruppe von Parametern, irgendeine Art von Möglichkeiten, wie wir das Modell abgestimmt haben. Und wir müssen verschiedene Werte dieser Parameter identifizieren , die die optimalen Ergebnisse liefern. Die Idee mit Gradientenabstieg ist also, dass Sie nur einen Punkt zufällig auswählen und jeder dieser Punkte einen Satz von Parametern darstellt. Ihr Modell, vielleicht sind es die verschiedenen Parameter für ein Modell, über das wir zuvor gesprochen haben, oder vielleicht sind es die genauen Gewichtungen innerhalb Ihres neuronalen Netzwerks, was auch immer es ist, versuchen Sie einige Parameter, um mit zu beginnen. Und wir werden dann messen, was auch immer die Luft ist, die auf unserem System erzeugt. Und dann, was wir tun, ist, dass wir hier die Kurve runter gehen, richtig? Also könnten wir hier einen anderen Satz von Parametern ausprobieren. Auch hier ist es so, als würde man sich in eine bestimmte Richtung mit verschiedenen Parameterwerten bewegen. Und dann messen wir den Fehler, den wir daraus bekommen. Und in diesem Fall haben wir tatsächlich weniger Fehler erreicht, indem wir diesen neuen Satz von Parametern ausprobiert haben. Also sagen wir, okay, ich denke, wir gehen hier in die richtige Richtung. Lassen Sie uns sie noch mehr auf die gleiche Weise ändern. Und wir machen das einfach in verschiedenen Schritten weiter bis wir hier endlich den unteren Rand einer Kurve treffen. Und unser Fehler beginnt sich nach diesem Punkt zu erhöhen. An diesem Punkt werden wir wissen, dass wir tatsächlich den Boden dieses Gradienten getroffen haben. So verstehen Sie die Natur des Begriffs hier, Gradientenabstieg. Grundsätzlich wählen wir einen Punkt zufällig mit einem bestimmten Satz von Parametern, die wir den Fehler von vier messen. Und wir schieben diese Parameter weiter in eine bestimmte Richtung, bis der Fehler sich minimiert und beginnt, einen anderen Wert zurück zu kommen, okay, und das ist, wie der Gradientenabstieg auf den Punkt gebracht wird, nicht in all die Hard-Core-Mathematik davon zu bekommen. All Das Konzept ist das, was hier wichtig ist, denn Gradientenabstieg ist, wie wir unsere neuronalen Netzwerke tatsächlich trainieren, um eine optimale Lösung zu finden. Jetzt können Sie sehen, es gibt einige Bereiche der Verbesserung hier für diese Idee. Zunächst einmal kann man sich das als eine Art Ball vorstellen, der bergab rollt. Also bei der Optimierung, über die wir später sprechen, ist die Verwendung des Konzepts eines Momentums. Sie können tatsächlich den Ball gewinnen Geschwindigkeit, wie er den Hügel hier runter geht, wenn Sie so wollen. Und langsam, wenn es den Boden erreicht und, du weißt schon, irgendwie Böden da draußen. Das ist ein Weg, um es schneller zu konvergieren, wenn Sie Dinge tun, in Ich kann das tatsächliche Training Ihrer neuronalen Netzwerke noch schneller machen. Eine andere Sache, die es wert ist, darüber zu sprechen, ist das Konzept der lokalen Minima. Also was, wenn ich zufällig einen Punkt wähle dann hier drüben auf dieser Kurve lande, könnte ich mich hier in diese Minima niederlassen, was nicht wirklich der Punkt des geringsten Fehlers ist. Der Punkt des geringsten Fehlers in diesem Diagramm ist hier vorbei. Das ist ein Problem. Ich meine, das ist ein allgemeines Problem im Gradienten, Gradientenabstieg. Wie stellen Sie sicher, dass Sie nicht in einem sogenannten lokalen Minima stecken bleiben? Denn wenn Sie nur diesen Teil des Diagramms betrachten, der wie die optimale Lösung aussieht. Und wenn ich zufällig hier neu anfange , werde ich dort stecken bleiben. Nun gibt es verschiedene Möglichkeiten, mit diesem Problem umzugehen. Offensichtlich könnten Sie an verschiedenen Orten beginnen, also versuchen Sie, diese Art von Sache zu verhindern. Aber in der Praxis stellt sich heraus, dass lokale Minima nicht wirklich so groß sind , wenn es darum geht, neuronale Netze zu trainieren. Es ist einfach nicht wirklich so oft passiert. Sie enden nicht mit Formen wie diesen in der Praxis. So können wir damit davonkommen, uns nicht so viel Sorgen zu machen. Das ist sehr wichtig. Gut, denn für eine lange Zeit glauben die Leute, dass KI durch diesen lokalen Minimaleffekt begrenzt werden würde. Und in der Praxis ist es wirklich nicht so groß. Ein anderes Konzept, das wir brauchen, um sich mit etwas namens Auto Diff vertraut zu machen. Und wir müssen nicht wirklich in die Hardcore-Mathematik eingehen, wie Auto Def funktioniert. Ich muss nur wissen, was es ist und warum es wichtig ist. Also, wenn du Gradientenabstieg machst, musst du irgendwie wissen, was der Gradient ist, richtig? Also müssen wir messen, was die Steigung ist, die wir entlang unserer Kostenfunktion nehmen, unsere Messung von Fehlern, oder es könnte ein mittlerer Standardfehler für alles, was wir wissen, sein. Und um das mathematisch zu tun, müssen Sie in den Kalkül kommen, richtig? Wenn Sie versuchen, die Neigung einer Kurve zu finden und Sie mit mehreren Parametern zu tun haben und wir über Teilderivate sprechen, richtig? Die ersten Teilderivate, die die Steigung herausfinden, in die wir gehen. Jetzt stellt sich heraus, dass dies für Computer sehr mathematisch intensiv und ineffizient ist. Also, indem man einfach den Brute-Force-Ansatz zum Gradientenabstieg macht. Das wird sehr schnell sehr teuer. Auto Diff ist eine Technik, um dies zu beschleunigen. Also speziell verwenden wir etwas, das Reverse-Modus-Auto-Diff genannt wird. Und was Sie wissen müssen, ist, dass es alle Teilderivate berechnen kann, die Sie benötigen, indem Sie Ihr Diagramm in der Anzahl der Ausgänge plus einer, die Sie haben, durchlaufen. Und das funktioniert in neuronalen Netzwerken sehr gut. Denn in einem neuronalen Netzwerk neigen Sie dazu eine künstliche Neurone zu haben, die sehr viele Eingänge haben, aber wahrscheinlich nur einen Ausgang oder sehr wenige Ausgänge im Vergleich zu den Eingängen. Das stellt sich also als ein ziemlich guter kleiner Kalkülentrick heraus. Es ist kompliziert. Sie können nachsehen, wie es funktioniert. Es ist ziemlich Hardcore-Zeug, aber es funktioniert und das ist, was wichtig ist. Und was auch wichtig ist, ist, dass es das ist, was die TensorFlow-Bibliothek unter der Haube verwendet, um ihren Gradientenabstieg zu implementieren. Also wieder, Sie werden nie wirklich Gradienten Abstieg von Grund auf neu implementieren müssen oder Auto anders Scratch implementieren müssen. Diese werden alle in die Bibliotheken gebacken, die wir verwenden. Bibliotheken wie TensorFlow für Deep Learning. Aber das sind Begriffe, die wir viel herumwerfen. Es ist also wichtig, dass du wenigstens weißt, was sie sind und warum sie wichtig sind. Also, nur um ein wenig zu sichern, ist Gradientenabstieg die Technik, die wir verwenden, um die lokalen Minima des Fehlers zu finden , der wir versuchen, für einen bestimmten Satz von Parametern zu optimieren. Und Auto Diff ist eine Möglichkeit, diesen Prozess zu beschleunigen. Wir müssen also nicht ganz so viel Mathematik oder ganz so viel berechnen, um diesen Gradienten des Gradientenabstiegs tatsächlich zu messen. Eines der Dinge, über die wir reden müssen, ist Softmax. Wieder, die Mathematik ist es hier so kompliziert. Aber wieder, was wirklich wichtig ist, ist zu verstehen, was es ist und wofür es ist. Wenn Sie also das Endergebnis eines neuronalen Netzwerks haben, Sie am Ende eine Reihe von Gewichten , die wir nennen , die am Ende aus dem neuronalen Netzwerk kommen. Also, wie nutzen wir das? Wie können wir die Ausgabe unserer neuronalen Netzwerke praktisch nutzen? Nun, da kommt Softmax ins Spiel. Grundsätzlich wandelt es jede der endgültigen Gewichtungen , die aus Ihrem neuronalen Netzwerk kommen, in eine Wahrscheinlichkeit um. Wenn Sie also versuchen, etwas in Ihrem neuronalen Netzwerk zu klassifizieren, wie zum Beispiel, entscheiden Sie, ob ein Bild ein Bild von einem Gesicht oder ein Bild eines Hundes oder ein Bild eines Stoppzeichens ist. Sie könnten softmax am Ende verwenden, um diese endgültigen Ausgaben der Neuronen in Wahrscheinlichkeiten für jede Klasse umzuwandeln , okay? Und dann können Sie einfach die Klasse auswählen, es hat die höchste Wahrscheinlichkeit. Es ist also nur eine Möglichkeit, Dinge, wenn Sie so wollen, in einen vergleichbaren Bereich zu normalisieren . Und so, dass Sie, wenn Sie tatsächlich den höchsten Wert der Softmax-Funktion aus den verschiedenen Ausgängen wählen , am Ende des Tages die beste Wahl der Klassifikation haben. Es ist also nur eine Möglichkeit, die endgültige Ausgabe Ihres neuronalen Netzwerks in eine tatsächliche Antwort für ein Klassifizierungsproblem zu konvertieren . Also wieder, Sie könnten das Beispiel eines neuronalen Netzwerks haben , das versucht, Ihr Auto für Sie zu fahren. Und es muss Bilder von Stoppschildern oder Verkehrsschildern oder Ampeln identifizieren. Sie könnten softmax am Ende eines neuronalen Netzwerks verwenden, das Ihr Bild nimmt und als einer dieser Sinus-Typen klassifiziert wird, richtig? Also wieder, nur um zu rekapieren, Gradientenabstiegsalgorithmus zur Minimierung von Fehlern über mehrere Schritte. Grundsätzlich beginnen wir mit einem zufälligen Satz von Parametern, messen den Fehler, bewegen diese Parameter in eine bestimmte Richtung, sehen, ob das zu mehr oder weniger Fehlern führt. Und versuchen Sie einfach, sich in die Richtung der Minimierung von Fehlern zu bewegen , bis wir den tatsächlichen unteren Teil der Kurve dort finden, wo wir eine Reihe von Parametern haben, die den Fehler von dem minimieren, was Sie versuchen zu tun, minimiert. Auto Diff ist nur ein Kalkül Tricks, um Gradienten Abstieg schneller zu machen. Es macht es einfacher, die Gradienten in Gradienten Abstieg zu finden , nur durch die Verwendung von Kalkül Trickery. Und Softmax ist nur etwas, das wir auf unserem neuronalen Netzwerk am Ende anwenden , um die endgültige Ausgabe unseres neuronalen Netzwerks in eine tatsächliche Wahl der Klassifizierung umzuwandeln , da mehrere Klassifizierungstypen zur Auswahl stehen. Ok? Das sind also die grundlegenden mathematischen Begriffe oder algorithmischen Begriffe, die Sie verstehen müssen, um über künstliche neuronale Netzwerke zu sprechen. dann unter unserem Gürtel Lassen Sie unsdann unter unserem Gürtelüber künstliche neuronale Netze sprechen. 3. Die Geschichte der künstlichen neuronalen Netzwerke: Lassen Sie uns in künstliche neuronale Netzwerke eintauchen und wie sie später auf einem hohen Niveau arbeiten, werden unsere Hände schmutzig machen und tatsächlich einige schaffen. Aber zuerst müssen wir verstehen, wie sie dort arbeiten, wo sie herkamen. Es ist also ziemlich cooles Zeug. Ich meine, dieses ganze Feld der künstlichen Intelligenz basiert auf einem Verständnis dafür, wie unser eigenes Gehirn funktioniert. Also, weißt du, über Millionen von Jahren Evolution hat die Natur einen Weg gefunden, uns zum Nachdenken zu bringen. Und wenn wir nur die Art und Weise zurückentwickeln, wie unser Gehirn funktioniert, können wir einige Einblicke bekommen, wie Maschinen entstehen, die das in Ihrem Gehirn denken. Speziell Ihre Großhirnrinde , wo ich lebe, denken Sie, dass passiert. Sie haben eine Reihe von Neuronen , diese Luft einzelne Nervenzellen, und sie sind miteinander über Exxons und Dendriten verbunden. Sie können sich diese als Verbindungen vorstellen. Wissen Sie, Drähte, wenn Sie so wollen, die verschiedene Akzente miteinander verbinden. Nun wird ein einzelnes Neuron feuern oder ein Signal an alle Neuronen senden, mit denen verbunden ist, wenn genug seiner Eingangssignale Luft aktiviert ist, so dass der einzelne Neuronpegel es ein sehr einfacher Mechanismus ist. Du hast nur diese Zelle. Das ist Neuron, das eine Reihe von Eingangssignalen enthält. Und wenn genug dieser Eingangssignale eine bestimmte Schwelle erreichen, wird es wiederum eine Reihe von Signalen an die Neuronen auslösen, dass es wiederum einer Schwellung verbunden ist. Aber wenn man anfängt, viele, viele dieser Neuronen auf viele, viele verschiedene Arten miteinander verbunden zu haben , viele dieser Neuronen auf viele, , mit unterschiedlichen Stärken zwischen den einzelnen Verbindungen, Dinge sehr kompliziert. Das ist also eine Art Definition von auftretendem Verhalten. Sie haben ein sehr einfaches Konzept, sehr einfaches Modell. Aber wenn Sie genug von ihnen zusammen stapeln, können Sie am Ende des Tages sehr komplexes Verhalten erstellen, zu Lernverhalten führen kann. Dies ist eigentlich das funktioniert und funktioniert nicht nur in Ihrem Gehirn, es funktioniert auch in unseren Computern. Denken Sie nun über die Skala Ihres Gehirns nach. Sie haben Milliarden von Neuronen, jede von ihnen mit Tausenden von Verbindungen, und das ist es, was es braucht, um tatsächlich einen menschlichen Geist zu erschaffen. Und das ist eine Skala, von der wir immer noch nur im Bereich Deep Learning und künstlicher Intelligenz träumen können . Aber es ist das gleiche Grundkonzept. Sie haben nur eine Reihe von Neuronen mit einer Reihe von Verbindungen, die sich individuell sehr einfach verhalten . Aber sobald Sie genug von ihnen zusammen bekommen genug komplexe und Möglichkeiten, können Sie tatsächlich erstellen sehr komplexe Gedanken, wenn Sie wollen, und sogar Bewusstsein. Die Plastizität deines Gehirns ist im Grunde darauf abzustimmen, wohin diese Verbindungen gehen und wie stark jeder ist, und dort passiert die ganze Magie, wenn du so willst. Darüber hinaus blicken wir tiefer in die Biologie Ihres Gehirns ein. Sie können sehen, dass in Ihrem Kortex Neuronen in Stapeln oder kortikalen Säulen angeordnet sind, die Informationen parallel verarbeiten . So zum Beispiel in Ihrem visuellen Kortex verschiedene Bereiche dessen, was Sie sehen, parallel durch verschiedene Säulen oder kortikale Säulen von Neuronen verarbeitet werden . Jede dieser Säulen ist wiederum aus diesen vielen Säulen von etwa 100 Neuronen pro viele Säule, die Luft dann in diese größeren Hypersäulen organisiert und in Ihrem Kortex gibt es etwa 100 Millionen dieser vielen Säulen, also wieder addieren sie sich einfach schnell. Nun, zufällig, ist dies eine ähnliche Architekturspitze. Wie die Grafikkarte, die Drei-D-Grafikkarte in Ihrem Computer funktioniert. Es hat eine Reihe von verschiedenen einfachen, sehr kleinen Verarbeitungseinheiten, die für die Datenverarbeitung verantwortlich sind. Wie kleine Gruppen von Pixeln auf Ihrem Bildschirm am Ende des Tages berechnet werden, und es kommt einfach so vor, dass dies eine sehr nützliche Architektur ist, um nachzuahmen, wie Ihr Gehirn funktioniert. Es ist also eine Art glücklicher Zufall, dass die Forschung, die zufällig ist, um Videospiele wirklich schnell verhalten oder spielen Call of Duty oder was auch immer es ist, dass Sie gerne spielen, sich für die gleiche Technologie, die künstliche Intelligenz möglich gemacht auf einem großen Maßstab und zu niedrigen Kosten. Die gleichen Grafikkarten, die Sie zum Spielen Ihrer Videospiele verwenden, können auch verwendet werden, um Deep Learning durchzuführen und künstliche neuronale Netzwerke zu schaffen. Denken Sie darüber nach, wie besser wäre, wenn wir tatsächlich Chips gemacht, die speziell für eine Simulation künstlicher neuronaler Netzwerke Zweck gebaut wurden . Nun, es stellte sich heraus, dass einige Leute gerade solche Schiffe entwerfen. Wenn du dir das ansiehst, sind sie vielleicht sogar Realität. Ich denke, Google arbeitet an einem, während wir sprechen, also hat irgendwann jemand gesagt: Hey, die Art, wie wir denken, dass Neuronen funktionieren, ist ziemlich einfach. Es wäre eigentlich nicht allzu schwer, das selbst zu replizieren und vielleicht unser eigenes Gehirn aufzubauen . Und diese Idee geht den ganzen Weg zurück bis 1943 Menschen haben gerade eine sehr einfache Architektur vorgeschlagen , wo, wenn Sie ein künstliches Neuron haben, vielleicht können Sie eine Architektur aufbauen, in der dieses künstliche Neuron brennt, wenn mehr als eine bestimmte Anzahl seiner Eingangsverbindungen aktiv sind und wenn sie in einem Informatikkontext tiefer darüber nachgedacht haben, erkennen die Menschen, dass Sie tatsächlich logische Ausdrücke Boolesche Ausdrücke erstellen können, indem dies tun. Abhängig von der Anzahl der Verbindungen, die von jedem Eingabe-Neuron kommen und ob jede Verbindung die Ehre aktiviert oder unterdrückt, und Sie können tatsächlich beides tun, was auch in der Natur funktioniert. Sie können verschiedene logische Operationen ausführen, so dass dieses spezielle Diagramm eine oder Operation implementiert. Stellen Sie sich vor, dass unsere Schwelle für unser Neuron war, dass, wenn Sie zwei oder mehr Eingänge aktiv haben , Sie wiederum ein Signal abfeuern. In dieser Einrichtung hier haben wir zwei Verbindungen zu Neuron A und wenden uns an Verbindungen, die von Neuron B kommen. Wenn eines dieser Neuronen, produzieren und Signal, das tatsächlich verursachen wird, noch auf See Feuer. So können Sie sehen, dass wir eine oder Beziehung hier geschaffen haben, wo, wenn entweder noch auf einem oder Neuron B Feeds Neuron, sehen Sie Eingangssignale, die dazu führen, dass sie ein Feuer entsetzen und einen echten Ausgang erzeugen. Also haben wir hier implementiert, die boolesche Operation C gleich A oder B ist, nur mit der gleichen Verkabelung, die in Ihrem eigenen Gehirn passiert, und ich werde nicht in die Details gehen, aber es ist auch möglich zu implementieren und und nicht in ähnlichen Mitteln. Dann begannen wir, auf dieser Idee aufzubauen. Wir schaffen etwas, das als Linear Threshold Unit (LTU) bezeichnet wird, kurz im Jahr 1957. Dies baute nur auf Dinge auf, indem man diesen Eingaben Gewichte zuweist. Also statt einfach nur Ein- und Ausschalter ist, haben wir jetzt die Fähigkeit des Konzepts wartet auf jede dieser Eingänge sowie, dass Sie weiter und wieder einstellen können. Dies wirkt mehr auf unser Verständnis der Biologie hin. Unterschiedliche Verbindungen zwischen verschiedenen Neuronen können unterschiedliche Stärken haben, und wir können diese Stärken in Bezug auf diese Gewichte an jedem Eingang in unser künstliches Neuron modellieren . Wir werden auch die Ausgabe durch eine Schrittfunktion gegeben werden. Das ist also im Geiste ähnlich wie wir es vorher benutzt haben. Aber anstatt zu sagen, dass wir feuern, wenn eine bestimmte Anzahl von Eingaben aktiv sind, na ja, es gibt kein Konzept mehr von aktiv, sind nicht aktiv. Da kommen Gewichte rein. Diese Gewichte könnten positiv oder negativ sein. Also werden wir sagen, wenn die einige dieser Gewichte größer als Null ist, werden wir voran gehen und Feuer auf ihre eigene aus seiner Lektion oder Lektionen. Null. Wir werden nichts tun. Also nur eine leichte Anpassung an das Konzept eines künstlichen Neurons hier, wo wir Gewichte anstelle von nur einfachen binären Ein- und Ausschalter einführen, ist so lassen Sie uns darauf noch weiter aufbauen und etwas namens Perceptron schaffen. Und ein Perzeptron ist nur eine Schicht aus mehreren linearen Schwelleneinheiten. Jetzt fangen wir an, in Dinge zu gelangen, die tatsächlich lernen können. Okay, Indem wir Gewichte zwischen diesen Lt-Gebrauch verstärken, die das Verhalten erzeugt haben, das wir wollen, können wir ein System erstellen, das im Laufe der Zeit lernt, wie man die gewünschte Ausgabe erzeugt. Und auch hier geht es mehr darum, unser wachsendes Verständnis dafür zu entwickeln, wie das Gehirn im Bereich der Neurowissenschaften funktioniert . Es gibt ein Sprichwort, dass Zellen, die zusammen feuern, verdrahtet. Und das ist eine Art, mit dem Lernmechanismus zu sprechen, der hier in unserem künstlichen Perzeptron stattfindet , wo, wenn wir Gewichte haben, die zu dem gewünschten Ergebnis führen, das wir wollen, wissen Sie, sie könnten an diese denken Gewichte wieder als Stärken der Verbindungen zwischen Neuronen. Wir können diese Gewichte im Laufe der Zeit verstärken und die Verbindungen belohnen, die das Verhalten erzeugt haben, das wir wollen. Okay, sehen Sie, hier haben wir unsere Eingaben in Gewichte, genau wie wir es in den Jahren zuvor getan haben. Aber jetzt haben wir mehrere Lt verwenden Bande zusammen in einer Schicht, und jeder dieser Eingänge wird mit jedem einzelnen Neuron in dieser Schicht verdrahtet, okay? Und wir wenden dann Schritt Funktion jeder. Vielleicht gilt dasfür das Klassifikationen. Vielleicht wäre dies ein Perzeptron, das versucht, ein Bild in eines von drei Dingen oder so etwas zu klassifizieren . Eine andere Sache, die wir hier vorgestellt haben, ist etwas namens Bias-Neutron da unten rechts . Und das ist nur etwas, um die Mathematik zum Laufen zu bringen. Manchmal müssen Sie ein wenig festen, konstanten Wert hinzufügen, der etwas anderes sein könnte, das Sie für uns optimieren können. Nun, das ist also ein Perzeptron. Wir haben unser künstliches Netzwerk genommen. Verschieben Sie diese in eine lineare Schwelleneinheit. Und jetzt haben wir mehrere lineare Schwelleneinheiten in einer Schicht zusammengesetzt, um ein Perzeptron zu erzeugen , und schon haben wir ein System, das tatsächlich lernen kann. Wissen Sie, Sie können tatsächlich versuchen, diese Gewichte zu optimieren, und Sie können sehen, dass es eine Menge von diesem Punkt gibt, wenn Sie jede dieser Eingaben zu jedem einzelnen LTU in Ihrem Layer gehen , sie summieren sich schnell, und das ist, wo die Komplexität des Deep Learning kommt. Machen wir das noch einen Schritt weiter und wir haben ein mehrschichtiges Perzeptron. Es wird von einer einzigen Schicht Perzeptron angekündigt. Wir werden mehr als eine haben, und wir haben tatsächlich jetzt eine versteckte Schicht in der Mitte dort, so können Sie sehen, dass Eingänge Luft in eine Schicht an der Unterseite gehen. Die Ausgabe startete Ebene an der Spitze, und dazwischen haben wir diese versteckte Schicht von zusätzlichen lt in Ihren Schwelleneinheiten verwendet, die ausführen können, was wir Deep Learning nennen. Also hier haben wir bereits das, was wir heute ein tiefes neuronales Netzwerk nennen würden. Jetzt gibt es Herausforderungen, diese Dinge zu trainieren, weil sie komplexer sind. Aber darüber reden wir später. Es kann getan werden. Und wieder ist die Sache, die Zeh hier wirklich zu schätzen wissen, wie viele Verbindungen es gibt? Obwohl wir hier nur eine Handvoll künstlicher Neuronen haben, können Sie sehen, dass es viele Verbindungen zwischen ihnen gibt, und es gibt eine Menge Gelegenheit, die Gewichte zwischen den einzelnen Verbindungen zu optimieren. Okay, so funktioniert ein mehrschichtiges Perceptron. Sie können das einfach wieder sehen. Wir haben aufkommendes Verhalten hier, und einzelne lineare Schwelleneinheit ist ein ziemlich einfaches Konzept. Aber wenn Sie sie in diesen Schichten zusammenstellen und mehrere Schichten alle miteinander verdrahtet haben , können Sie sehr komplexes Verhalten erhalten, da es viele verschiedene Möglichkeiten für alle Gewichte zwischen all diesen verschiedenen -Verbindungen. Schließlich werden wir über ein modernes tiefes neuronales Netzwerk sprechen, und das ist alles, was es dazu gibt. Wissen Sie, im Rest dieses Kurses werden wir nur über Möglichkeiten sprechen, so etwas umzusetzen . OK, alles, was wir hier getan haben, ist, dass wir diese Schrittfunktion durch etwas Besseres ersetzt haben. Wir werden über alternative Aktivierungsfunktionen sprechen. Das hier illustriert etwas namens „Rela you“, über das wir später reden werden. Der entscheidende Punkt dort. Diejenigen, die eine Schrittfunktion hat viele böse mathematische Eigenschaften, vor allem, wenn Sie versuchen, ihre Hänge in ihren Derivaten herauszufinden. So stellt sich heraus, dass andere Formen besser funktionieren und es Ihnen ermöglichen, schneller zu konvergieren wenn Sie versuchen, zu trainieren. Ein neuronales Netzwerk wird auch Soft Max auf die Ausgabe anwenden, über die wir in der vorherigen Vorlesung gesprochen haben. Das ist nur eine Art der Konvertierung. Die endgültigen Ausgänge unseres neuronalen Netzwerks sind tiefes neuronales Netzwerk in Wahrscheinlichkeiten, aus wir einfach die Deklassifizierung mit der höchsten Wahrscheinlichkeit wählen können. Und wir werden dieses neuronale Netzwerk auch mit gierigen Abstieg oder einer Variation davon trainieren. Es gibt mehrere von ihnen zur Auswahl. Darüber werden wir auch ausführlicher sprechen. Vielleicht wird das Auto Diff verwenden, dem wir auch früher gesprochen haben, um dieses Training tatsächlich effizienter zu machen. Das ist also so ziemlich es. Weißt du, in den letzten fünf Minuten oder so, dass wir gesprochen haben, habe ich dir die ganze Geschichte gegeben, ziemlich viel tiefer neuronaler Netzwerke im Deep Learning. Und das sind die wichtigsten Konzepte. Es ist nicht so kompliziert, oder? Das ist wirklich das Schöne daran. Es ist auftretendes Verhalten. Sie haben sehr einfache Bausteine. Aber wenn man diese Bausteine auf interessante Weise zusammensetzt, sehr komplex und ehrlich gesagt geheimnisvoll, kann es passieren. Also bin ich ziemlich aufgeregt wegen diesem Zeug. Lassen Sie uns in mehr Details darüber eintauchen, wie es als nächstes funktioniert. 4. Hands auf in der Hands-On: Jetzt, da wir die Konzepte künstlicher neuronaler Netzwerke und Deep Learning verstehen, lasst uns damit herumlaufen. Es ist überraschend einfach zu tun. Die Leute hinter Tensorflow bei Google haben eine nette kleine Website namens Playground dot Tensor Fluid out bewusst erstellt , die uns mit der Erstellung unserer eigenen neuronalen Netzwerke experimentieren lässt und Sie nicht schreiben Sie eine Codezeile, um es zu tun. Also ist es eine großartige Möglichkeit, um irgendwie, ah, Hände zu bekommen ah, und zu fühlen, wie sie funktionieren. Also lasst uns in so Kopf über Spielplatz dot Tensorflow Dot Org's und du solltest einen Bildschirm wie diesen sehen , den du hier folgen kannst oder einfach mir dabei zusehen. Aber ich ermutige Sie definitiv, selbst damit herumzuspielen und eine Art intuitives Gefühl zu bekommen , ,wie tief Lernen funktioniert. Dies ist eine sehr mächtige Sache, wenn Sie verstehen können, was auf dieser Webseite vor sich geht. Also, was wir hier zu tun versuchen, ist eine Reihe von Punkten zu klassifizieren, nur basierend auf ihrer Position in diesem zwei D-Bild. Also das ist unsere Ausbildung, Daten sagten, wenn Sie so wollen. Wir haben hier eine Reihe von Punkten und die in der Mitte sind klassifiziert ist blau, und die auf der Außenseite sind als orange klassifiziert. Unser Ziel ist es also, ein neuronales Netzwerk zu schaffen, das ohne Vorkenntnisse herausfinden kann, ob ein bestimmter Punkt blau oder orange sein sollte und erfolgreich vorhersagen , welche Klassifikationen sein sollten. Denken Sie also daran, dass dies unsere Trainingsdaten sind. Okay, wir wissen im Voraus, was die richtigen Klassifizierungen für jeden dieser Punkte sind. Und wir werden diese Informationen verwenden, um unser neuronales Netzwerk zu trainieren, um hoffentlich zu erfahren, dass das Zeug in der Mitte blau sein sollte und das Zeug auf der Außenseite orange sein sollte. Nun, hier haben wir ein Diagramm des neuronalen Netzwerks selbst, und wir können damit herumspielen. Wir können es manipulieren. Wir können Ebenen hinzufügen, um Ebenen herauszunehmen. ADM oder Neuronen. Zwei Schichten. Was immer Sie tun wollen, lassen Sie uns überprüfen, was hier vor sich geht. Zunächst einmal wählen wir den Datensatz aus, mit dem wir spielen möchten, wo er mit diesem Standard beginnt , einer, der Circle the Inputs Air genannt wird. Einfach, die X und Y koordinieren die vertikale und horizontale Position jedes Datenpunkts, so dass unser neuronales Netzwerk einen Punkt erhält, der klassifiziert werden kann. Alles, mit dem es arbeiten muss, sind diese beiden Werte, seine horizontale Position und seine vertikale Position. Und der Start ist gleichermaßen gewichtet als horizontal eine vertikale, so dass wir die Position eines dieser Punkte in Bezug auf sein Ergebnis und vertikale Position definieren können. Zum Beispiel würde dieser Punkt hier eine horizontale Position von negativem in einer vertikalen Position von etwa negativen fünf haben , und dann füttern wir ihn in unser Netzwerk ein. Sie können sehen, dass diese Eingangsnoten Verbindungen zu jedem dieser vier Neuronen haben und versteckte Ebene sind. Und wir können die Gewichte zwischen jeder dieser Verbindungen manipulieren, um das Lernen zu schaffen , das wir wollen. Diese wiederum ernähren sich hier in zwei Ausgangsneuronen, die letztendlich entscheiden, welche Klassifikationen wir am Ende des Tages wollen. Denken Sie also daran, dies ist ein Byeon Eri Klassifizierungsproblem. Es ist entweder blau oder orange, also am Ende des Tages, brauchen wir nur ein einziges Signal, wirklich, wirklich, und das ist es, was in diese Ausgabe kommt hier. Lass uns voran gehen , spielen und sehen, was passiert. Was wird es tun, begann Haufen von Iterationen, wo es aus diesen Trainingsdaten lernt. Also werden wir es weiterhin von diesem Trainingsdatensatz füttern. Und während es so geht, wie es durch sie erzeugt, werden Sie beginnen, die Verbindungen zu verstärken, die zu den korrekten Klassifizierungen durch Grady in die Mitte führen . Ein ähnlicher Mechanismus, oder? Und wenn wir das genug mal tun, sollte es zu einem neuronalen Netzwerk zusammenlaufen, das diese Dinge zuverlässig klassifizieren kann . Lasst uns spielen. Sieh es einfach in Aktion an. Behalten Sie also das Bild auf der rechten Seite. In Ordnung, Sie können sehen, dass wir bereits auf eine Lösung konvergiert haben. Ich kann voran gehen und pausieren, dass jetzt und ziemlich coole Sachen, so dass Sie sehen können, dass es erfolgreich dieses Muster erstellt hat , wo Sachen, die in diesen mittleren Bereich passen, hier klassifiziert ist ,blau ist , und Sachen auf der Außenseite als orange klassifiziert wird, so können wir in das eintauchen, was hier passiert ist. Diese Dicke all dieser Verbindungen repräsentieren ihre Gewichte, so dass Sie die einzelnen Gewichte sehen können , die zwischen jedem dieser Neuronen verdrahtet sind. Wir fangen hier an, Sie sehen diese Luft mehr oder weniger gleich gewichtet. Äh, nun nicht genau. Ebenso sind einige von ihnen irgendwie schwach. Aber was? Mindestens zwei ist dieses Verhalten in der Mitte? Wir beginnen also mit gleich gewichteten X- und Y-Koordinaten. Die gehen hier zu dieser Schicht. Also, zum Beispiel, diese versteckte Schicht hier, sagt dieses Neuron, ich will die Dinge etwas schwerer in dieser Ecke warten , okay? Und Dinge, die wie in der unteren linken Ecke sind, nicht so sehr. Und dann wählt dieser andere Sachen oben und unten aus. Das hier ist etwas diagonaler nach unten, oder? Und das hier ist sogar ganz rechts unten schwer. Und wenn Sie diese Dinge miteinander kombinieren, gingen wir mit diesen Ausgabe-Layern, die so aussahen. Ok? Und so haben wir am Ende mit diesen beiden Blobby-Dingen, wo wir den Dingen auf der rechten Seite einen Schub geben und Dinge, die in dieser Art liegen, einen Schub geben. Ah, mehr blobby kreisförmige Fläche. Und dann haben wir die zusammen kombiniert, die wir am Ende mit unserer endgültigen Ausgabe. Das sieht so aus. Nun, das könnte anders aussehen von Run zu Run. Weißt du, es gibt eine zufällige, zufällige Zufälligkeit, wie das alles initialisiert wird. Brauchen wir eigentlich sogar ein tiefes neuronales Netzwerk, um dies zu tun, obwohl eine Optimierungssache darin besteht, Ebenen zu entfernen und zu sehen, ob Sie damit davonkommen. Vielleicht brauchen wir nicht einmal Deep Learning. Ich meine, wirklich, das ist irgendwie eine einfache Sache. Wissen Sie, das Zeug in der Mitte ist blau. Zeug auf der Außenseite ist orange. Lassen Sie uns weiter gehen und eine dieser Neuronen wieder aus der Ausgangsebene entfernen. Alles, was wir brauchen, ist ein Kauf eines Ergebnisses ohnehin. Kann es noch funktionieren? Das tut es. In der Tat ist es einfach schnell. Brauche ich diese Schicht überhaupt? Lassen Sie uns voran und entfernen Sie diese letzte Schicht überhaupt noch funktioniert, oder? Also für dieses sehr grundlegende Problem aus müssen sogar Deep Learning. Alles, was ich hier habe, ist eine einzige Schicht. Also das ist nur Es ist nicht einmal ein mehrschichtiges Perzeptron. Es ist nur ein Perzeptron. Brauche ich überhaupt für Neuronen da drin? Nun, ich denke, vielleicht tue ich das, aber dieser hier macht nicht wirklich viel richtig. Alles, was es tut, ist im Grunde, es durchlaufen zu machen, und die Eingaben, die in sie kommen, wurden auf so ziemlich nichts abgewichtet. Also brauche ich das besser nicht mal. Lass es uns loswerden. Es funktioniert immer noch. Ist das nicht cool? Ich meine, denk darüber nach. Wir haben nur drei künstliche Neuronen, und das ist alles, was man braucht, um dieses Problem zu tun. Ich meine, vergleiche das mit den Milliarden von Neuronen, die in deinem Kopf existieren. Jetzt können wir wahrscheinlich nicht mit weniger davonkommen. Lassen Sie uns voran gehen und versuchen, sich an Neuronen zu wenden und zu sehen, was passiert. Ja, das wird einfach nicht passieren, oder? Also für dieses spezielle Problem, alles, was Sie brauchen, sind drei Neuronen, um es nicht zu schneiden. Lasst uns noch etwas herumspielen. Versuchen wir einen anspruchsvolleren Datensatz. Okay, hier ist also ein Spiralmuster, und Sie können sagen, dass das schwieriger wird, weil wir nicht einfach sagen können, dass Sachen in dieser Ecke diese Klassifizierung sein werden hier ist also ein Spiralmuster, und Sie können sagen, dass das schwieriger wird, weil wir nicht einfach sagen können, dass Sachen in dieser Ecke diese Klassifizierung sein werden, , wie wir brauchen eine viel feinere Art, wie die Identifizierung dieser einzelnen Spiralen. Und wieder werden wir sehen, ob wir einfach trainieren und Earl Network, um das auszuschließen . Und, nun, offensichtlich werden Tuner es schneiden. Gehen wir zurück zu vier. Mal sehen, ob das genug ist. Ich wette, das ist es nicht. Sie können sehen, dass es versucht, aber es ist wirklich zu kämpfen. Wir können das für eine Weile laufen lassen, und Sie können sehen, dass es anfängt, dorthin zu gelangen. Wissen Sie, die blauen Bereiche konvergieren auf einigen blauen Gebieten, und es ist es wirklich bemüht, aber es sind und es ist es wirklich bemüht, einfach nicht genug Neuronen, um das hier abzuziehen. Gehen wir weiter und fügen Sie eine weitere Ebene hinzu. Mal sehen, ob das hilft. Sie können sehen, dass es kompliziertere Dinge macht, jetzt, wo es mehr Neuronen hat, mit denen man arbeiten kann. Aber ich kann immer noch nicht ganz dahin kommen, wo es sein muss. Fügen wir jeder Schicht ein paar weitere Neuronen hinzu. Generell können Sie entweder mehr Neuronen zu einer Ebene hinzufügen. Fügen Sie weitere Layer hinzu. Es die wird diegleichen Ergebnisse liefern. Aber es könnte die Geschwindigkeit beeinflussen, in der es konvergiert, je nachdem, welcher Ansatz zu nehmen ist. Einfach faszinierend. Ich beobachte diese Arbeit, nicht wahr? Alles klar, dieser hier ist stecken geblieben. Es kann es immer noch nicht ganz abziehen. Lassen Sie uns eine weitere Ebene hinzufügen. Dies ist eigentlich ein sehr häufiges Muster. Sie werden sehen, wie Sie beginnen mit vielen Ebenen auf den ersten und sie irgendwie wie verengen sie wie Sie gehen. OK, also gehen wir zu einer anfänglichen Eingangsebene von sechs Neuronen zu einer versteckten Schicht von vier Neuronen und dann zu einer Schicht von zwei Neuronen, die letztlich einen binären Ausgang am Ende erzeugen wird . Nun, ich glaube, es kommt dorthin. Hier, Rio. Wow. Okay, also, technisch gesehen, ist es immer noch irgendwie so, als würde es sich selbst verfeinern, aber es hat es irgendwie richtig gemacht. Ich meine, jetzt ist es, was wir in gewissem Maße als passend bezeichnen, weißt du? Ich meine, offensichtlich hat es das. Er ist wie Ranken Luft, die hier durchschneidet, und das ist nicht wirklich Teil des Musters, nach dem wir suchen. Aber es läuft immer noch . Diese Ranken werden schwächer und schwächer. Also, weißt du, es hat immer noch nicht genug Neuronen, um genau das zu tun, was wir intuitiv tun würden . Aber ich meine immer noch, ich meine, das ist ein ziemlich kompliziertes Klassifikationsproblem. Es hat es herausgefunden und vielleicht ein wenig passt. Aber ich habe es herausgefunden, und alles, was wir haben, ist was, 12 Neuronen hier? Ich meine, das ist jetzt wahnsinnig. Eine andere Sache, über die ich hier auch reden möchte . ist, dass es irgendwie die Tatsache veranschaulicht, dass, wenn man in mehrere Schichten gelangt, es sehr schwer wird, intuitiv zu verstehen, was innerhalb des neuronalen Netzwerks vor sich geht. Das wird irgendwie gruselig, weißt du? Ich meine, was bedeutet diese Form wirklich? Ich meine, sobald du genug Neuronen hast, ist es irgendwie harte Zehe, die in deinen eigenen Kopf passen. Was die Muster alle wirklich darstellen. Ich meine, die erste Schicht ist ziemlich unkompliziert. Weißt du, es zerlegt das Bild im Grunde in verschiedene Abschnitte. Aber wenn Sie in diese versteckten Schichten kommen, beginnen die Dinge ein wenig seltsam zu werden, wenn sie miteinander kombiniert werden. Lasst uns weitermachen und einen weiteren Weg hinzufügen. Ich hätte zwei weitere zu dieser Ausgabe-Ebene sagen sollen und am Ende eine weitere Ebene hinzufügen sollen. Mal sehen, ob das hilft, die Dinge etwas schneller zu konvergieren. Ja, in Ordnung. Fang an, ein wenig zu kämpfen. Sieh das an, als hätte es hier jetzt eine Spiralform. Mit diesen zusätzlichen Neuronen war es in der Lage, etwas Interessanteres zu tun. Wir haben das noch. Ah, diese kleine Spitze hier, die das Falsche tut, und es scheint nicht ganz zu denken, dass der Weg aus dem einen ein paar mehr im Iran gab, obwohl er es vielleicht herausfinden könnte. Diese sind auch falsch klassifiziert. Aber ich finde es interessant, dass es hier tatsächlich selbst ein Spiralmuster geschaffen hat. So kann man mit ein paar mehr Neuronen oder einer weiteren Schicht tatsächlich eine noch bessere Lösung schaffen. Aber ich werde das als Übung für Sie überlassen. Nun, wissen Sie, um das zu spielen, ermutige ich Sie wirklich, um es herum zu verwirren und zu sehen, welche Art von Ergebnissen Sie bekommen können. Dieses Spiralmuster ist insbesondere ein interessantes Problem. Erklären Sie hier einfach einige der anderen Parameter. Wir machen hier eine Klassifizierung. Das ist, wo wir in diesem Abschnitt tun werden. Die Aktivierungsfunktion, die wir über nicht mit einer Schritt-Funktion gesprochen und mit etwas anderem , einige andere, die beliebte Rally sind, war eigentlich sehr beliebt im Moment der Realisierungsfunktion , über die wir noch nicht gesprochen haben. Die Lernrate ist nur im Grunde die Schrittgröße in der Zutat Descents, die wir tun, so können Sie anpassen, dass, wenn Sie wollen, auch, mal sehen, ob wirklich gut tatsächlich einen Unterschied macht, würde ich es erwarten nur, wissen Sie, beeinflussen die Geschwindigkeit. Oh, mein Gott. Sieh dir das an. Das ist ziemlich nah an dem, was wir wollen, oder? Ich meine, es gibt abgesehen von dieser kleinen kleinen Spitze hier, die nicht einmal da ist, ein bisschen überpassend dorthin zu gehen. Aber wir haben diese Spiralform im Grunde nur aus dieser Handvoll Neuron erschaffen. Scott, ich könnte das den ganzen Tag machen, Leute. Und ich hoffe, du weißt schon, dass du das einfach ausspielst. Es macht so viel Spaß, und es gibt dir so ein konkretes Verständnis dafür, was unter der Haube läuft. Ich meine, sieh dir diese versteckte Schicht an. Lassen Sie uns, wo diese Spiralformen auftauchen und zusammenkommen. Und wenn du darüber nachdenkst, dass dein Gehirn genauso funktioniert, dann ist es buchstäblich meine Arbeit. Verwirren Sie sich damit. Es ist eine wirklich tolle Übung und hoffe, dass Sie etwas Spaß damit haben. 5. Deep Learning Details: Alles klar. Ich weiß, dass du wahrscheinlich juckst, mittlerweile in einen Code einzutauchen, aber es gibt ein wenig mehr Theorie, die wir mit Deep Learning abdecken müssen. Ich möchte ein wenig darüber reden, wie sie trainiert werden, und ein paar Tipps, um sie zu optimieren , jetzt, wo Sie ein wenig Erfahrung mit ihnen auf dem Tensorflow-Spielplatz gemacht haben. Wie trainierst du ein mehrschichtiges Perceptron? Nun, es benutzt eine Technik namens „Backpropagation“. Es ist nicht so kompliziert, wirklich. Auf einer konzeptionellen Ebene, alles, was wir tun, ist Grady in Dissens, wie wir zuvor gesprochen haben, mit diesem mathematischen Trick des umgekehrten Modus auto def. Um es für jeden Trainingsschritt effizient zu machen, berechnen wir nur den Ausgabefehler für die Gewichte, die wir derzeit für jede Verbindung zwischen jedem künstlichen Neuron an Ort und Stelle haben . Und dann ist hier die Rückenausbreitung passiert. Da es mehrere Schichten zu bewältigen gibt, müssen wir diesen Fehler nehmen, der am Ende unseres neuronalen Netzwerks berechnet wird und wieder in die andere Richtung vermehrt wird, zurück durch das neuronale Netzwerk zurückschieben, Okay, und auf diese Weise können wir diesen Fehler über jede Verbindung zurück zu den Eingaben verteilen , indem wir die Gewichte verwenden, die wir derzeit in diesem Trainingsschritt verwenden. Okay, so ziemlich einfaches Konzept. Wir nehmen einfach die Luft. Wir verwenden die Gewichte, die wir derzeit in unserem neuronalen Netzwerk verwenden, um den Fehler auf einzelne Verbindungen zu übertragen . Und dann können wir diese Informationen verwenden, um die Gewichte durch Grady und Dissens zu optimieren, um tatsächlich zu versuchen, auf dem nächsten Durchgang in der nächsten Epoche, wenn Sie so wollen, zu einem besseren Wert zu gelangen wenn Sie so wollen, . Also, das ist alles wieder da. Propagation ist, dass wir eine Reihe von Gewichten ausführen, wir messen den Fehler, wir propagieren diesen Fehler zurück. Das zu benutzen, wartet auf Dinge, in die er steckt, in die gesandt ist. Versuchen Sie es noch einmal und wir machen das immer und immer wieder. Bis unser System konvergiert. Wir sollten ein wenig über die Aktivierungsfunktion sprechen. In unserer vorherigen Übung, mit dem Tensorflow-Spielplatz, haben wir standardmäßig die hyperbolische Tangentenaktivierungsfunktion verwendet. Und dann wechseln wir zu etwas namens Rela, und wir sahen, dass die Ergebnisse ein bisschen besser waren. Was war da los? Nun, die Aktivierungsfunktion ist nur die Funktion, die die Ausgabe eines Neurons bestimmt, angesichts der einige seiner Eingänge. Also nehmen Sie die Summe aller Gewichte der Eingänge, die in ein Neuron kommen. Die Aktivierungsfunktion ist, was etwas nimmt und es in ein Ausgangssignal verwandelt. Nun, wie wir bereits in der Vorlesung über eine Schrittfunktion gesprochen haben, ist das, was die Leute ursprünglich getan haben . Aber das funktioniert nicht wirklich mit Grady und Dissens, weil es keinen Grady int gibt. Wenn es sich um eine Schrittfunktion handelt, gibt es keine Neigung. Es ist entweder ein- oder ausgeschaltet. Es ist entweder direkt über oder rauf und runter. Da gibt es überhaupt kein nützliches Derivat. Deshalb funktionieren alternative Funktionen in der Praxis etwas besser. Es gibt einige andere, die als Logistic Function bezeichnet werden, die hyperbolische Tangentenfunktion, die mehr von einer kurvigen Kurve erzeugt. Wenn Sie darüber nachdenken, wie eine hyperbolische Tangente aussieht, ist es ah mehr von Ah, es hat nicht so scharf abgeschnitten ihre Null den Ursprung, so dass das ziemlich gut funktionieren kann. Es gibt auch etwas namens Exponential Linear Unit, die auch ein wenig kurviger ist. Was wir letztendlich benutzten, war Rallo. Das steht für gleichgerichtete lineare Einheit. Und das ist, was dieses Diagramm hier im Grunde zeigt es Null, wenn es kleiner als Null ist, und wenn es größer als Null ist, klettert es in einem 45-Grad-Winkel nach oben. Also ist es nur, weißt du, dir das eigentliche zu besorgen. Ein Teil der Eingabe wartet als Ausgabe, wenn diese Ausgabe größer als Null ist. Okay, so dass der Vorteil, den Rela hat, ist, dass es sehr einfach, sehr einfach und sehr schnell zu berechnen ist. Wenn Sie sich also Sorgen machen, schnell konvergieren zu können und Ihre Computing-Ressource ist, ist Rela eine wirklich gute Wahl. Jetzt gibt es Varianten von Rela, die noch besser funktionieren, wenn Sie sich nicht so sehr um Effizienz kümmern , wenn es undichte Rela genannt wird. Und alles, was ist, ist, anstatt flach links von Null zu sein, es hat tatsächlich ein bisschen eine Steigung dort, eine sehr kleine Steigung und wieder, das ist für mathematische Zwecke, um dort eine tatsächliche sinnvolle Ableitung zu haben, um mit , so dass dies eine noch bessere Konvergenz bieten kann. Es ist auch etwas, das laut Rela genannt wird, das auch bei der Konvergenz helfen kann. Aber, ah, heutzutage schreien Sie. Die exponentielle lineare Einheit erzeugt oft schnelleres Lernen. Das ist eine Art von der Es gewinnt an Popularität jetzt, dass Computing-Ressource ist Luft immer weniger ein Problem, jetzt, dass Sie tatsächlich Deep Learning über einen Cluster von PCs im Netzwerk in der Cloud tun können. Darum geht es bei den Aktivierungsfunktionen. Sie können auch verschiedene Optimierungsfunktionen auswählen. Wissen Sie, wir haben ganz allgemein über Grady und Dissens gesprochen, aber es gibt verschiedene Variationen von Grady in etwas, das Sie auch verwenden können. Wir haben ein wenig früher über die mo mentum Optimierung gesprochen. Grundsätzlich ist die Idee, die Dinge zu beschleunigen, dass Sie einen Hügel hinunter gehen und die Dinge verlangsamen, während Sie beginnen, sich diesem Minimum zu nähern. Es ist also eine Möglichkeit, das Gitter zu senden, schneller zu machen, indem man diese steileren Teile Ihrer Lernkurve überspringt . Nun, ich habe nie die Wort-Lernkurve im Kontext verwendet. Wort bedeutet eigentlich etwas mathematisch Sinnvolles. Aber wie auch immer, es gibt auch etwas namens Nesterov beschleunigt Grady in, das ist nur eine Optimierung auf der Spitze der Momentum-Optimierung. Im Grunde sieht es ein wenig nach vorn auf die Grady und vor Ihnen, diese Informationen zu berücksichtigen . Das funktioniert also noch besser. Es gibt auch etwas namens RMS-Prop, das nur eine adaptive Lernrate verwendet, die wiederum hilft, Sie in die richtige Richtung auf das Minimum zu zeigen . Denken Sie daran, wie die Begrüßung an gesendete funktioniert. Es ist nicht immer offensichtlich, in welche Richtung Sie gehen, angesichts einer Änderung der Parameter. Also unsere Chaos Requisite ist nur eine anspruchsvollere Art zu versuchen, die richtige Richtung zu finden. Schließlich gibt es etwas namens Adam steht für adaptive moment esten ization. Grundsätzlich ist es der Mo mentum Optimizer und RMS prop kombiniert Art von gibt Ihnen das Beste aus beiden Welten, und das ist eine beliebte Wahl heute, weil es wirklich gut funktioniert. Es ist sehr einfach, die Bibliothek wieder zu verwenden, die Sie für dieses Zeug verwenden werden, für ein sehr hohes Niveau und sehr einfach zu bedienen. Es ist also nicht so, dass du Nesterov beschleunigte Trauer von Grund auf umsetzen . Sie werden nur sagen, dass Optimizer gleich Adam ist und damit fertig sein. Weißt du, es ist nur eine Frage der Wahl, die Sinn für das macht, was du zu tun versuchst. Machen Sie Ihre eigenen Kompromisse zwischen Geschwindigkeit von ah, Konvergenz und Rechenressourcen und Zeit, die benötigt wird, um tatsächlich diese Konvergenz zu tun. Lassen Sie uns auch über die Anpassung sprechen. Sie können sehen, dass Sie oft mit Mustern wie diesem enden, wo Sie wissen, dass Sie nicht wirklich eine saubere Lösung bekommen. Weißt du, wie diese seltsamen Spikes manchmal, und manchmal, wenn man die Dinge etwas zu lang laufen lässt , verstärkt es diese Spikes. Weißt du, die über angepassten Bereiche, in denen du nicht wirklich zu dem Muster passt, nach dem du suchst. Sie passen nur zu den Trainingsdaten, die Ihnen gegeben wurden. Okay, also gibt es Möglichkeiten, das zu bekämpfen. Und natürlich, wenn Sie Tausende von Gewichten zu tunen haben, wissen Sie, dass diese Verbindungen zwischen jedem Neuron und jeder Schicht Ihrer Neuronen wirklich schnell summieren können . So ist es sehr einfach für über passende Zehe passieren. Es gibt Möglichkeiten, damit umzugehen, wenn es frühes Stoppen genannt wird. Sobald Sie also sehen, dass die Leistung zu sinken beginnt, könnte das in einer kleinen Art und Weise sein, Ihnen zu sagen, dass es Zeit für Sie sein könnte, mit dem Lernen aufzuhören . Weißt du, an diesem Punkt bist du vielleicht etwas mehr passend. Es gibt auch Regularisierungsbegriffe. Sie können die Kostenfunktion während des Trainings hinzufügen. Sie wissen, das kann im Grunde die Voreingenommenheit, über die wir früher gesprochen haben, mögen, die helfen könnte . Aber eine überraschend effektive Technik wird Dropout genannt, und ein Kennison ist ein Beispiel für eine sehr einfache Idee, die sehr effektiv ist. Die Idee ist nur, sagen wir,die Hälfte der Neuronen zufällig jeden Trainingsschritt zu ignorieren sagen wir, , tun, als ob sie nicht alles existieren. Und der Grund, warum dies funktioniert, ist, weil es Ihr Modell zwingt, sein Lernen zu verbreiten. Wenn Sie im Grunde die Hälfte seines Gehirns wegnehmen, wenn Sie bei jedem Trainingsschritt werden Sie die verbleibende Hälfte dieser Neuronen zwingen so viel Arbeit wie möglich zu erledigen. Das verhindert also, dass Dinge, bei denen einzelne Neuronen mehr Arbeit übernehmen, als sie sollten. Sie haben sogar in einigen der Beispiele gesehen, die wir auf dem Tensorflow-Spielplatz liefen, dass wir manchmal nicht mit Neuronen, die kaum benutzt wurden, und durch die Verwendung von Drop Out, das das Neuron gezwungen hätte, mehr verwendet zu werden effektiv. So sehr einfaches Konzept sehr effektiv, um sicherzustellen, dass Sie die volle Nutzung Ihrer neuronalen Netzwerk sind. Lassen Sie uns über das Optimieren Ihrer Topologie sprechen. Eine weitere Möglichkeit, die Ergebnisse Ihres Deep-Learning-Netzwerks zu verbessern , besteht darin, Spiele zu spielen, wie viele Neuronen Sie haben und wie viele Neuronen Sie haben. Eine Möglichkeit, damit umzugehen, ist nur Versuch und Irrtum. Weißt du, das ist irgendwie das, was wir in Tensorflow Playground gemacht haben, aber weißt du, es kann eine Methodik dafür geben. Und sogar Sie können mit der Strategie beginnen, ein kleineres Netzwerk mit weniger Neuronen in den versteckten Schichten auszuwerten , wo Sie ein größeres Netzwerk mit mehr Schichten bewerten können. Also, im Grunde, Sie wollen sehen. Kann ich mit einem kleineren Netzwerk davonkommen und immer noch gute Ergebnisse erzielen und einfach weiter machen es kleiner und kleiner, bis Sie das kleinste finden, kann es sicher sein, oder Sie können versuchen, Ihr Netzwerk größer und größer zu machen und sehen Sie wissen welchen Punkt es aufhört mehr Vorteile für Sie zu bieten. Also, wissen Sie, fangen Sie einfach an, Dinge anders zu dimensionieren und zu sehen, was funktioniert und was nicht wieder funktioniert. Es gibt eine Art gruseligen Aspekt, wie dieses Zeug alles zusammen funktioniert. Es ist sehr schwer, intuitiv zu verstehen, was in einem neuronalen Netzwerk vor sich geht, insbesondere in einem Deep-Learning-Netzwerk, so dass man manchmal nur Fuß hat. Verwenden Sie Ihre Intuition, um zu versuchen, das Ding zu optimieren und die richtige Anzahl von Ressourcen zu erhalten ist , Sie wissen schon, wieder in der heutigen modernen Computerumgebungen. Manchmal ist es dir nicht so sehr wichtig. Es ist wahrscheinlich in Ordnung. Toe haben ein tiefes neuronales Netzwerk, das mehr Neuronen hat, die es wirklich braucht, oder? Ich meine, was ist das wirklich teure daran beteiligt? Wahrscheinlich nicht viel. Ich werde sagen, dass mehr Schichten oft schneller lernen als mit mehr Neuronen und weniger Schichten. Wenn Sie sich also um die Geschwindigkeit der Konvergenz kümmern, ist das Hinzufügen von mehr Ebenen oft das Richtige. Oder Sie können auch etwas namens Modellzoos verwenden. Es gibt tatsächlich Bibliotheken des neuronalen Netzwerks, um sich für spezifische Probleme zu entschuldigen . Wenn Sie also nicht denken, dass Sie die erste Person auf der Welt sind, die ein bestimmtes Klassifizierungsproblem oder irgendetwas anderes löst , versuchen Sie, ein tiefes neuronales Netzwerk anzuwenden, um vielleicht eines zu überprüfen. Die Modelle sickern da draußen, um zu sehen, ob jemand bereits die optimale Topologie für Sie herausgefunden hat, anstatt zu versuchen, das Rad neu zu erfinden. Okay, Leute teilen diese Dinge aus einem Grund, und es kann Ihnen viel Zeit sparen. Das ist also genug Theorie. Das ist genug Gerede. In unserem nächsten Vortrag werden wir ihre Hände mit Tensorflow schmutzig machen und anfangen, einen echten Python-Code zu schreiben, um unsere eigenen neuronalen Netzwerke zu implementieren. 6. Tensorflow: Wenn Sie frühere Recherchen im Bereich Deep Learning durchgeführt haben, haben Sie wahrscheinlich von der TensorFlow-Bibliothek gehört. Es ist ein sehr beliebtes Framework, das von den Leuten bei Google entwickelt wurde. Und sie waren freundlich genug, es Open Source und der Welt frei zugänglich zu machen. Lassen Sie uns also darüber sprechen, worum es bei TensorFlow geht und wie es Ihnen dabei helfen kann, künstliche neuronale Netzwerke zu konstruieren. Die Sache, die mich irgendwie überrascht hat, als ich TensorFlow zum ersten Mal traf , war, dass es zunächst nicht wirklich speziell für Deep Learning oder sogar für neuronale Netzwerke im Allgemeinen entwickelt wurde. Es ist ein viel allgemeineres Tool, das Google entwickelt hat, das gerade zufällig für die Entwicklung von Deep Learning und neuronalen Netzwerken nützlich ist. Generell handelt es sich um eine Architektur zum Ausführen eines Graphen numerischer Operationen. Es geht nicht nur um neuronale Netze. Sie können eine beliebige Folge von Operationen haben und ein Diagramm definieren , wie diese Operationen zusammenpassen. Was TensorFlow tatsächlich tut, ist herauszufinden, wie diese Verarbeitung über die verschiedenen GPU-Kerne auf Ihrem PC oder über verschiedene Maschinen in einem Netzwerk verteilt wird. Und stellen Sie sicher, dass Sie massive Computing-Probleme auf verteilte Weise durchführen können. In dieser Hinsicht klingt es sehr nach Apache Spark. Wenn du andere Kurse von mir genommen hast, hast du wahrscheinlich gehört, dass ich über Spark rede. Es ist eine sehr spannende Technologie. Und Spark entwickelt auch maschinelles Lernen und KI und Deep Learning Fähigkeiten selbst. Tensorflow ist also in gewisser Weise ein Konkurrent zu Apache Spark. Aber es gibt einige wichtige Unterschiede, über die wir sprechen sollten. Es geht nicht nur darum, Rechendiagramme über einen Cluster oder über Ihre GPU zu verteilen . Sie können TensorFlow auch für fast alles ausführen. Eine Sache, die an TensorFlow besonders ist , ist, dass ich es sogar auf meinem Handy ausführen kann, wenn ich möchte. Es ist nicht auf die Ausführung auf Computern in einem Cluster in einigen Rechenzentren beschränkt. Das ist wichtig, weil Sie in der realen Welt diese Verarbeitung auf das Gerät des Endbenutzers verschieben möchten . Nehmen wir das Beispiel eines selbstfahrenden Autos. Sie würden nicht wollen, dass Ihr Auto plötzlich in eine Wand stürzt , nur weil es seine Netzwerkverbindung zur Cloud verloren hat. Würdest du jetzt? Die Art und Weise, wie es tatsächlich funktioniert, ist, dass Sie das tatsächlich trainierte neuronale Netzwerk zum Auto selbst schieben das tatsächlich trainierte neuronale Netzwerk zum Auto und tatsächlich dieses neuronale Netzwerk auf dem Computer ausführen , der in Ihrem Auto eingebettet ist. Denn das starke Aufheben von Deep-Learning ist das Training dieses Netzwerks. So können Sie das Training offline machen, schieben Sie die Gewichte dieses Netzwerks auf Ihr Auto, das relativ klein ist. Und dann führen Sie dieses neuronale Netzwerk vollständig in Ihrem Auto selbst. Durch die Möglichkeit, TensorFlow und eine Vielzahl von Geräten auszuführen, eröffnet es viele Möglichkeiten, Deep Learning am Rande zu machen, auf den tatsächlichen Geräten, auf denen Sie versuchen, es zu verwenden. Tensorflow wird in C plus plus unter der Haube geschrieben, während Spark in Scala geschrieben ist, die letztlich auf einer JVM läuft , indem man mit TensorFlow auf die C Plus Plus Ebene geht, das wird Ihnen größere Effizienz. Aber zur gleichen Zeit hat es eine Python Schnittstelle. So können Sie genau wie jede andere Python Bibliothek sprechen , die es einfach zu programmieren und einfach als Entwickler zu verwenden macht, aber sehr effizient und sehr schnell unter der Haube. Der andere Hauptunterschied zwischen TensorFlow und etwas wie Spark besteht darin, dass es auf GPUs funktionieren kann. Eine GPU ist nur Ihre Grafikkarte, die gleiche Grafikkarte, die Sie verwenden, um Fortnite zu spielen, oder was auch immer Sie spielen. Sie können die Arbeit tatsächlich über die GPU-Kerne auf Ihrem PC verteilen. Und es ist eine sehr häufige Konfiguration, sogar mehrere Grafikkarten auf einem einzigen Computer zu haben und diese tatsächlich zu nutzen, um mehr Leistung in Clustern zu erzielen , die speziell für Deep Learning entwickelt wurden. Plus TensorFlow ist kostenlos und es wird von Google gemacht. Nur die Tatsache, dass es von Google gemacht wird, hat zu einer Menge Adoption geführt. Es gibt konkurrierende Bibliotheken zu TensorFlow, insbesondere Apache MxNet. Tensorflow ist ab sofort immer noch bei weitem der beliebteste. Die Installation von TensorFlow ist wirklich einfach. Sie müssen lediglich die Conda-Befehle in Ihrer Anaconda-Umgebung verwenden , um TensorFlow zu installieren. Oder Sie können Anaconda Navigator verwenden, um alles über eine grafische Benutzeroberfläche zu tun. Es gibt auch ein TensorFlow Dash-GPU-Paket, das Sie stattdessen installieren können , wenn Sie die GPU-Beschleunigung nutzen möchten Wenn Sie dies unter Windows ausführen, würde ich es noch nicht ganz hingehen. Ich hatte einige Probleme, TensorFlow GPU auf meinem eigenen Windows-System zu arbeiten. Sie werden feststellen, dass viele dieser Technologien in erster Linie für Linux-Systeme entwickelt werden , die auf einem Cluster laufen. Wenn Sie also auf einem speziell entwickelten Computer in einem Cluster auf EC2 laufen oder etwas, das für Deep Learning entwickelt wurde. Gehen Sie vor und installieren Sie TensorFlow Dash-GPU, obwohl es wahrscheinlich für Sie installiert werden Alle bereit. Lassen Sie uns darüber sprechen, worum es bei TensorFlow geht. Was ist eigentlich ein Tensor? Nun, das ist ein weiteres Beispiel für ausgefallene, anspruchsvolle Terminologie, die Menschen nutzen, um sich schlau aussehen zu lassen. Am Ende des Tages ist ein Tensor nur ein ausgefallener Name für ein Array oder eine Matrix von Werten. Es ist nur eine strukturierte Sammlung von Zahlen und das war's. Das ist alles, was ein Tensor ist. Verwenden. Tensorflow kann ein wenig konterintuitiv sein, aber es ist ähnlich, wie etwas wie Apache Spark auch funktionieren würde. Sie führen Dinge nicht sofort aus. Stattdessen erstellen Sie ein Diagramm, wie Sie die Dinge ausführen möchten. Und dann, wenn Sie bereit sind, es auszuführen, sagen Sie, okay, TensorFlow gehen Sie tun dies. Tensorflow wird dann den optimalen Weg finden, um diese Arbeit über Ihre gesamte Gruppe von GPUs und Computern in Ihrem Cluster zu verteilen und zu parallelisieren . Werfen wir einen Blick hier auf die weltweit einfachste TensorFlow-Anwendung in Python. All dies wird tun, ist ein plus zwei zusammen hinzuzufügen. Aber es ist ein gutes illustriertes Beispiel dafür, was tatsächlich unter der Haube vor sich geht. Wir beginnen mit dem Import der TensorFlow-Bibliothek. Wir werden es als tf als Kurzschrift bezeichnen. Wir beginnen, indem wir sagen, dass ein gleich tf Punkt Variable ein Komma Name gleich a ist. Und alles, was tut, ist die Einrichtung einer Variablen in TensorFlow, einem variablen Objekt, das einen einzelnen Wert enthält eins und die mit dem Namen a geht. einem variablen Objekt, das einen einzelnen Wert enthält eins und die mit dem Namen a geht. Name wird in Visualisierungswerkzeugen für Ihr Diagramm angezeigt, wenn Sie diese Art von Sache verwenden. Aber intern wird das auch einer Variablen in Python zuweisen, die a genannt wird. Dann richten wir eine B-Variable ein, die dem Wert zwei zugewiesen ist und den Namen B gegeben Hier ist, wo die Magie beginnt zu passieren. Wir sagen, F ist gleich ein Plus b. Und Sie könnten denken, dass die Zahl drei in die Variable f setzen wird, aber das tut es nicht. F ist eigentlich Ihr Graph. Es ist die Verbindung, die Sie zwischen den a- und b-Tensoren aufbauen , um sie zusammenzufügen. Also f gleich a plus b tut nichts, außer diese Beziehung zwischen a und B und ihre Abhängigkeit zusammen auf diesem f-Diagramm, das Sie erstellen, zu etablieren. Nichts passiert tatsächlich, bis wir versucht haben, auf den Wert von f zuzugreifen, an welchen Punkten TensorFlow 2 etwas namens eifrige Ausführung verwendet , um dieses Diagramm an diesem Punkt tatsächlich auszuführen, es wird sagen, okay, ich muss ein Diagramm erstellen, das die Variable a, die eine enthält, und die B-Variable, die zwei enthält, und fügen Sie sie zusammen. Es wird herausfinden, wie man diese unglaublich komplizierte Operation verteilt. Ich bin sarkastisch, in Ihrem gesamten Cluster. Und das wird letztendlich den Wert drei in Form eines neuen Tensors drucken. Also haben wir gerade die komplizierteste Art und Weise geschaffen, die man sich vorstellen kann, eins plus zwei zu berechnen. Wenn es sich jedoch um größere Tensoren handelt, die sich mit größeren Datensätzen befassen, oder zum Beispiel ein riesiges Array oder eine Matrix von Gewichten in einem neuronalen Netzwerk, wird diese Verteilung der Arbeit wichtig. Obwohl das Hinzufügen von 1 plus 2 keine nützliche Übung mit dem TensorFlow ist. Sobald Sie dies auf die vielen, vielen Verbindungen in einem großen neuronalen Netzwerk skalieren , wird es sehr wichtig, diese Dinge effektiv verteilen zu können. Wie dehnen wir diese Idee also auf neuronale Netzwerke aus? Nun, die Sache mit TensorFlow ist, dass es nicht nur für neuronale Netzwerke gemacht ist, Dinge wie die Matrixmultiplikation tun kann. Und es stellt sich heraus, dass Sie darüber nachdenken können, alle verschiedenen Gewichte und Summen anzuwenden , die innerhalb einer einzigen Schicht eines Perzeptrons und Modells geschehen sind, das nur eine Matrixmultiplikation ist. Sie können einfach die Ausgabe der vorherigen Schicht in Ihrem mehrschichtigen Perzeptron nehmen und eine Matrixmultiplikation mit einer Matrix durchführen , die die Gewichte zwischen jedem Neuron der beiden Ebenen beschreibt , die Sie berechnen. Dann können Sie einen Vektor hinzufügen, der auch die Biasbegriffe enthält. Am Ende des Tages können Sie dieses ausgefallene Diagramm hier ändern, ein Perzeptron aussieht und es einfach als Matrixmultiplikation in Vektoraddierung modellieren. Gehen Sie zurück und lesen Sie Ihre lineare Algebra, wenn Sie mehr darüber wissen möchten, wie das mathematisch funktioniert. Aber dies ist nur eine einfache Matrixmultiplikationsoperation mit der Vektoraddierung am Ende für die Bias-Treme. Durch die Verwendung von TensorFlow APIs auf niedrigerer Ebene. Wir machen dies auf die harte Art und Weise, aber es gibt APIs höherer Ebene in TensorFlow, die es viel einfacher und intuitiver machen, tiefe neuronale Netzwerke zu definieren, da wir TensorFlow gerade auf einer niedrigen Ebene beschreiben, sein Zweck im Leben ist nur mathematische Operationen auf Gruppen von Zahlen zu verteilen sind Tensoren. Und es liegt an uns zu beschreiben, was wir versuchen, mathematisch zu tun. Es stellt sich heraus, dass es wirklich nicht so schwer ist, mit dem neuronalen Netzwerk zutun dem neuronalen Netzwerk zu , damit wir tatsächlich ein komplettes Deep-Learning-Netzwerk von Ende zu Ende berechnen. Es gibt mehr, als nur die Gewichte zwischen verschiedenen Schichten von Neuronen zu berechnen. Wir müssen dieses Ding irgendwie trainieren und es tatsächlich ausführen, wenn wir fertig sind. Das erste, was wir tun müssen, ist, die Trainingsdaten zu laden, die die Funktionen, die wir trainieren möchten, und die Ziellabels enthalten . Um ein neuronales Netzwerk zu trainieren, benötigen Sie eine Reihe bekannter Eingaben mit einer Reihe bekannter korrekter Antworten, die Sie verwenden können, um tatsächlich abzusteigen, auf die richtige Lösung von Gewichtungen zu konvergieren, die zu dem gewünschten Verhalten führen. Danach müssen wir dem Netzwerk eine Art Optimierer zuordnen. Tensorflow macht das sehr einfach. Es kann Gradienten Abstieg oder eine Variation davon wie Atom sein. Anschließend führen wir unseren Optimierer mit unseren Trainingsdaten aus. Und wieder macht Tensorflow das auch ziemlich einfach. Abschließend werden wir die Ergebnisse unseres Trainingsnetzwerks anhand unseres Testdatensets auswerten. Um auf einem hohen Niveau zusammenzufassen, werden wir eine bestimmte Netzwerktopologie erstellen und die Trainingsdaten mithilfe von Gradientenabstieg anpassen , um tatsächlich die optimalen Gewichte zwischen jedem Neuron in unserem Netzwerk zu konvergieren . Wenn wir fertig sind, können wir die Leistung dieses Netzwerks mit einem Test-Dataset bewerten , das es noch nie gesehen hat, und sehen, ob es die Daten, für die es nicht trainiert wurde, korrekt klassifizieren kann . Einen anderen. Gotcha. Wenn Sie neuronale Netzwerke verwenden, ist es sehr wichtig, sicherzustellen, dass Ihre Eingabedaten normalisiert sind, was bedeutet, dass alle im gleichen Bereich skaliert werden. Generell möchten Sie sicherstellen, dass Ihre Eingabedaten Mittelwert 0 und die Varianz der Einheiten aufweisen. Das ist nur der beste Weg, um die verschiedenen Aktivierungsfunktionen mathematisch funktionieren zu lassen. Was wirklich wichtig ist, ist, dass Ihre Eingabe-Features in Bezug auf die Größe vergleichbar sind. Ansonsten ist es schwer, diese Gewichte sinnvoll miteinander zu kombinieren. Ihre Eingaben befinden sich alle auf der gleichen Ebene am unteren Rand Ihres neuronalen Netzwerks und passen in diese unterste Schicht. Es ist wichtig, dass sie in Bezug auf Größen vergleichbar sind. So verzerrt man die Dinge nicht, wenn man Dinge auf seltsame Weise wartet. Zum Beispiel, wenn ich bereits ein neuronales Netzwerk erstellt , das versucht, Menschen basierend auf ihrem Alter und ihrem Einkommen zu klassifizieren. Alter kann zwischen 0 und 100 liegen, aber das Einkommen kann zwischen 0 und 1 Million liegen. Das sind sehr unterschiedliche Bereiche. Diese werden also zu echten mathematischen Problemen führen , dass sie zunächst nicht auf den richtigen Bereich skaliert werden. Glücklicherweise verfügt die Python scikit-learn-Bibliothek über ein Standard-Scaler-Paket, das Sie verwenden können , das automatisch mit nur einer Codezeile erledigt. Alles, was Sie tun müssen, ist daran zu denken, es zu benutzen. Und viele Datensätze, die wir während der Recherche verwenden, werden zunächst normalisiert. Einen, den wir bereits normalisiert verwenden, also müssen wir das nicht wirklich tun. Aber später im Kurs zeige ich Ihnen ein Beispiel für die Verwendung von Standard-Skalar. Wir haben darüber gesprochen, wie das alles auf einem niedrigen Niveau funktioniert. Und in TensorFlow 2 ist es immer noch möglich, ein komplettes neuronales Netzwerk grundsätzlich von Grund auf neu zu implementieren. Aber in TensorFlow 2 haben sie einen Großteil dieser Low-Level-Funktionalität durch eine übergeordnete API namens Keras ersetzt . Es ist Wert, zu verstehen, wie alles unter der Haube funktioniert zuerst. Lassen Sie uns also ein einfaches Beispiel für ein neuronales Netzwerk mit den APIs der unteren Ebene arbeiten. Als nächstes werden wir sehen, wie die Keras API gängige neuronale Netzwerk-Setups vereinfacht und eine Menge dieser Komplexität von Ihnen erhöht. 7. Tensorflow für Handschrifterkennung Teil 1: Okay, also lasst uns mit Tensorflow herumspielen, indem wir seinen niedrigeren Level AP verwenden, I Also bekommst du mehr eine Ah-Wertschätzung dessen, was unter der Haube vor sich geht, wenn du so willst. Unter Windows beginnt, indem Sie zu unserem Startmenü gehen und die Anaconda drei Gruppe finden. Und von dort, öffne deine Anakonda. Prompt auf Makrele in X, natürlich, Sie werden einfach ein Terminal öffnen, Sie werden aufgefordert, Sie werden gut sein. Als erstes möchten Sie sicherstellen, dass Sie Tensorflow selbst installiert haben . Also, wenn Sie sich nicht schon darum gekümmert haben, können Sie einfach sagen, dass Kanda Tensorflow installiert. Und ich habe das schon getan, so dass ich nichts für mich tun werde. Wenn Sie dies jedoch installieren oder aktualisieren müssen, werden Sie aufgefordert , dies zu tun. Gib dem eine Sekunde, nur um alles in Ordnung zu überprüfen. Sieht aus, als wären wir gut. Als Nächstes. Möchten Sie das in das Verzeichnis einsehen, in dem Sie die Kursmaterialien installiert haben? Also für mich, das wird CD C Doppelpunkt, Backslash, ml Kurs, ml Kurs, und aus dem Kursmaterialverzeichnis Typ in Jupiter mit einem Lügennotizbuch sein. Ich sollte Ihren Lieblings-Webbrowser von hier aus aufrufen, finden Sie das Tensorflow-Notebook und gehen Sie vor und öffnen Sie das und fangen wir an zu spielen, also starten wir mit der weltweit einfachsten Tensorflow-Anwendung, die wir in der Folien wurden nur die Zahlen eins plus zwei hinzufügen Zusammen mit Tensorflow, beginnen wir mit dem Import der Tensorflow-Bibliothek selbst und geben ihr den Namen. TF als Kurzschrift zwei Variablen in Tensorflow erstellen, wird als Kurzschrift zwei Variablen in Tensorflow erstellen,eine namens AM eins namens Be the Variable A wird die Nummer eins mit ihr verknüpft haben, und die Variable B wird mit der Nummer zwei initialisiert. Wir sagen dann, F ist ein Plus. B, die nicht die Zahl drei in F f setzt, stellt nur das Diagramm dar, das wir definieren . Das heißt F, stellt die Zugabe von allem dar, was in A und B zusammen ist. Also ist hier eigentlich nichts passiert, außer der Konstruktion dieses Graphen. Es ist nur, wenn wir sagen, TF-Punktdruck, der nach der Ausgabe von F sucht, wird Tensorflow die sogenannte eifrige Ausführung verwenden , um zu gehen und tatsächlich dieses Diagramm auszuführen und seine Ergebnisse zu bewerten . An diesem Punkt geht es los und sagt: Okay, Okay, wir haben dieses Handwerk gebaut aus A und B A enthält eins. B enthält zwei. Fügen wir sie zusammen und erhalten die Ausgabe des F-Graphen und drucken Sie das aus. Und er könnte das tatsächlich über einen ganzen Cluster verteilen, wenn es nötig wäre. Aber offensichtlich, um nur eins plus zwei hinzuzufügen, gibt es keinen Grund für all das. Aber mal sehen, ob es funktioniert. Gehen Sie voran und drücken Sie Shift Enter innerhalb dieses Blocks, nachdem Sie in ihn geklickt haben, und wir sollten die Nummer drei erhalten. Sicher genug für einige der drei NBA. Hey, es funktioniert. Also lasst uns etwas etwas Interessanteres machen. Lassen Sie uns die Handschrifterkennung mit Tensorflow durchführen. Dies ist ein ziemlich häufiges Beispiel, wenn Menschen Tensorflow lernen. Grundsätzlich handelt es sich um einen Datensatz von 70.000 Handschriftbeispielen, bei dem jede Probe jemanden darstellt, der versucht , die Zahlen von Null bis neun zu zeichnen. Also haben wir 70.000 Bilder, die 28 mal 28 Bilder von Menschen sind, die die Zahl Null bis neun zeichnen . Und unsere Herausforderung besteht darin, ein neuronales Netzwerk zu schaffen, das diese Bilder betrachtet und versucht herauszufinden, welche Zahl sie repräsentieren. , Dies ist ein sehr häufiges Beispiel,wenn Menschen Tensorflow vielleicht ein wenig zu häufig lernen . Aber dafür gibt es einen guten Grund. Es ist in Tensorflow eingebaut. Es ist einfach, den Kopf umwickeln. Es ist wirklich gut zum Lernen. Und unsere kleine Twist darauf, die Sie an vielen anderen Orten nicht sehen werden, verwendet tatsächlich niedrigere AP-Augen, um dieses neuronale Netzwerk zu implementieren. Also lasst uns hier reintauchen. Lassen Sie uns also durch das Laden dieser Daten gehen und sie in das Format konvertieren, das wir brauchen. Das erste, was wir tun werden, ist, die Bibliotheken zu importieren, die wir brauchen, und wir werden taub pie und auch Tensorflow selbst und die M verwenden Dieser Datensatz selbst ist Teil der Tensorflüsse tragen Bestandsdatensätze Paket, so dass wir nur importieren, dass direkt in und haben, dass Daten für uns zugänglich sind, werden einige bequeme Variablen definieren. Hier. Numb Klassen ist 10, die die Gesamtzahl der Klassifizierungen für jedes dieser Bilder darstellt . Also wieder, diese können die Zahlen Null bis neun repräsentieren, und das sind insgesamt 10 mögliche Klassifizierungen. Unsere Funktionen sind 784 in der Zahl, und wir bekommen das, indem wir sagen, dass jedes Bild ein 28 mal 28 Bild ist, richtig, also haben wir 28 mal 28, was 784 einzelne Pixel für jedes Trainingsbild, das wir haben . Unsere Trainingsmerkmale sind also jedes einzelne Pixel jedes einzelnen Bildes, mit dem wir unser neuronales Netzwerk trainieren. Beginnen wir mit dem Laden des Datensatzes selbst, so dass wir sagen und Herr beim Laden von Daten tatsächlich diese Daten aus TENSORFLOW abrufen. Und wir werden den resultierenden Datensatz in diese Variablen hier einfügen. Die Konvention, die wir normalerweise diesen zusätzlichen Vers verwenden, bezieht sich also auf Ihre Feature-Daten. Das ist deine, ah, in unserem Fall, die Bilder selbst. Und warum bezieht sich auf Ihre Etiketten? Dies stellt also dar, ob dieses Bild die Zahlen Null bis neun darstellt. Darüber hinaus teilen wir die Dinge in Trainings- und Testdatensätze auf. Mit Amnestie haben wir 60.000 Trainingsproben und 10.000 Testproben. Das bedeutet, dass wir nur unser neuronales Netzwerk mit diesem 60.000 Satz von Trainingsproben trainieren und eine Seite von 10.000 Testproben halten, so dass wir tatsächlich testen können, wie gut trainierte Netzwerk funktioniert auf Daten, die es noch nie gesehen wurde. So verhindern wir das Überpassen. Wir bewerten unser Modell tatsächlich anhand von Daten, die das Modell noch nie gesehen hat, so dass es zunächst keine Chance hatte, auf diese Daten zu passen. Als nächstes müssen wir dies in 32-Bit-Gleitkommawerte konvertieren, weil Tensorflow das erwartet. Also beginnen wir mit der Erstellung dieser tauben Scheiterhaufen Strahlen der zugrunde liegenden Trainings- und Testdaten und konvertieren diese zu Ende pinkelten 32 Datentypen. Wir flachen diese Bilder dann ab, so dass es als zweidimensionale 28 mal 28 Bilder kommt. Und es gibt Möglichkeiten, neuronale Netze zu konstruieren. Ich kann mit zweidimensionalen Daten umgehen. Wir werden dorthin kommen. Aber im Moment werden wir die Dinge einfach halten und einfach behandeln. Jedes Bild ist ein eindimensionales Array oder Vektor oder Tensor, wenn Sie so wollen, Von Senator in 84 Features 184 Pixel. In diesem Fall ist der Befehl „Umformen“, was das bedeutet. Indem wir sagen, dass „Umformen“ negativ ein taub einige Features aufweist. Wieder, es ist 784, die diese zweidimensionalen Strahlen auf eine eindimensionale 784 10 Jahre abflachen wird . Das wird also einen neuen X-Zug und einen neuen X-Test haben, der diese 784 Pixel eindimensionalen Sensoren enthält . Als nächstes müssen wir unsere Daten normalisieren. Darüber haben wir auch auf den Folien gesprochen. Also die Rohdaten, die aus diesem Datensatz kommen, haben alle Pixelvertreter und Integer-Wert zwischen Null und 2 55 Null stellt ein schwarzes Pixel 255 ein weißes Pixel dar, und Werte dazwischen stellen verschiedene Grauschattierungen dar. Wir müssen das auf den Bereich von 0 bis 1 skalieren. Also, um das zu tun, ganz einfach, teilen wir einfach alles durch 2 55 wir sind fertig. In Ordnung. Also haben wir hier unsere Daten vorbereitet, geschrubbt und gesäubert. Lasst uns noch ein paar Sachen damit machen. Beginnen wir damit, unsere Köpfe zu wickeln, wie diese Daten aussehen. Es ist also immer eine gute Idee, Ihre Daten, mit denen Sie trainieren werden, zu visualisieren und ihre Macken und Nuancen zu verstehen, bevor Sie tatsächlich versuchen, einen Algorithmus zu implementieren . Das ist, was wir in dieser Anzeige-Sample-Funktion hier tun. Es wird uns Input nehmen. Eine bestimmte Anzahl einer Probe aus unseren Trainingsdaten, die wir betrachten möchten, und wir extrahieren einfach das Etikett davon. Warum also wieder trainieren? Ist die Trainingsbeschriftung die Zahl Null bis neun, die dieses Bild darstellt? Und dann werden wir das auf eine zweidimensionale 28 mal 28 Minuten umformen, damit wir es tatsächlich auf dem Bildschirm anzeigen können . Wir geben ihm einen Titel, wird zeigen, dass zweidimensionale Bilder großen Maßstab und zeigen es einfach. Also lasst uns weitermachen und das losgehen. Eigentlich haben wir diesen vorherigen Markt nicht mit gestartet, oder? Also, bevor wir vergessen, gehen Sie zurück zu diesem Block, wo wir unsere Daten vorbereiten und verschieben, um das auszuführen. Und jetzt, da wir das getan haben, könnten wir tatsächlich die Daten visualisieren, die wir geladen haben. Klicken Sie hier unten und verschieben Sie Enter. Und hier ist ein Beispieldatensatzpunkt. So Beispiel Nummer 1000 ist dieses Bild hier, und wir können sehen, dass es die Zahl Null darstellen soll und, naja, es sieht aus wie eine Null. Das ist also keine besondere Herausforderung für uns zu lernen. Hoffentlich könntest du hier spielen. Probieren Sie verschiedene Stichprobennummern aus, um ein besseres Gefühl davon zu bekommen, wie der Zustand ist. Also lasst uns 1500 versuchen. Es stellte sich heraus, das ist die Nummer neun, äh, irgendwie seltsam aussehende Neun, also könnte das eine kleine Herausforderung sein. Wie wär's mit, ich weiß nicht, 1700. Das ist der eine. Sieht aus wie ein Eins. Aber wenn du rumstöchst hier rumstöchstund andere Werte ausprobierst, wirst du irgendwann einige seltsame finden. Zum Beispiel, das ist eine ziemlich lustige Suche. Aber Sie wissen, Sie können sehen, dass es eine Vielzahl von Handschrift-Fähigkeiten von Menschen gibt, die diese Testdaten erstellt haben . Das ist also eine gute Möglichkeit, deinen Kopf um das zu wickeln, womit wir es zu tun haben. Gehen Sie weiter. Wir konnten diese Visualisierung zum nächsten Schritt machen und diese eindimensionalen Strahlen visualisieren , die unser neuronales Netzwerk tatsächlich trainierten. Das wird uns also ein besseres Bild von der Eingabe geben, die unser neuronales Netzwerk sehen wird und uns irgendwie schätzen lassen, was hier vor sich geht und wie anders es, ah, Zitat unquote so denkt. Was wir hier tun werden, ist, alles auf eindimensionale Arrays von 784 Pixeln umzuformen . Nehmen Sie das auf einem unserer Trainingsdatensätze hier, und wir werden durch die ersten 500 Proben essen und können acht jedes einzelne Bild zu diesem Originalbild von Null kapitulieren . Also sind wir nicht. Nehmen Sie im Grunde die 1. 500 Trainingsbilder, glätten Sie sie auf eindimensionale Arrays der Mittelreise für Briefwerte, und kombinieren Sie diese dann alle zusammen zu einem einzigen zweidimensionalen Bild, das plotten wird. Gehen wir voran und klicken Sie hinein und drücken Sie die Umschalttaste, um es auszuführen. Und das ist interessant. Dies zeigt Ihnen also den Eingang, der in unser tatsächliches neuronales Netzwerk für jedes einzelne Bild für die 1. 500 Bilder geht , und Sie können sehen, dass Ihr Gehirn überhaupt keinen sehr guten Job macht, um herauszufinden, was diese Dinge vertreten, richtig? Jede einzelne Zeile dieses Bildes stellt also die Eingabedaten dar, die in unser neuronales Netzwerk gehen. Unser neuronales Netzwerk wird also in der Lage sein, jede dieser Zeilen eindimensionaler Daten zu nehmen und herauszufinden, welche Zahl im zweidimensionalen Raum repräsentiert damit Sie sehen können, dass es über die Welt denkt oder die Welt wahrnimmt. erhalten diese Bilder genauer auf eine ganz andere Art und Weise als Ihr eigenes Gehirn. Also weißt du, es ist manchmal eine gefährliche Annahme zu denken, dass neuronale Netzwerke genauso funktionieren wie dein Gehirn. Sie sind von Ihrem Gehirn inspiriert, aber sie funktionieren nicht immer auf die gleiche Weise. So wichtige Unterscheidung dort. In Ordnung, lasst uns tatsächlich anfangen, unser neuronales Netzwerk einzurichten, damit wir beginnen, indem wir einige Parameter oder Hyperparameterdefinieren , indem wir einige Parameter oder Hyperparameter , die definiert haben , wie das Training tatsächlich funktionieren wird. Die Lernrate ist im Grunde, wie schnell durch Grady absteigen und Dissens versuchen, die Herbstwerte zu finden. Die optimale Wartezeit für unsere neuronalen Netzwerk-Trainingsschritte ist im Grunde, wie viele Training bei Box tatsächlich durchführen wird, wie oft tatsächlich übergehen und über dieses gesamte neuronale Netzwerk iterieren versucht, es Fledermausgrößen zu trainieren. Wie viele zufällige Proben aus unseren Trainingsdaten während jedes Schrittes nehmen und nach oben verschoben werden ist genau wie oft unser Fortschritt angezeigt wird, wenn wir dieses neuronale Netzwerk trainieren und Unterstrichen Hidden repräsentiert, wie viele versteckte Neuronen in unserer versteckten Schicht haben werden. so dass die mittlere Schicht von Neuronen und unser neuronales Netzwerk 512 Neuronen darin haben wird. Und du kannst mit dieser Nummer spielen. Sehen Sie, welche Nummer für Sie am besten geeignet ist. Dies sind alle Hyperparameter, und das schmutzige kleine Geheimnis des maschinellen Lernens ist, dass Ah, viel von Ihrem Erfolg hängt davon ab, wie gut Sie die besten Werte für diese erraten können. Eine Menge davon ist nur Versuch und Irrtum, versuchen, den richtigen Wert der Lernrate zu finden, die richtige Anzahl von versteckten Neuronen. Diese Zahlen werden grundsätzlich durch Experimente bestimmt. Also, weißt du, es ist nicht genau die Wissenschaft, dass du es ISS denkst. Gehen wir voran und führen diese Blockverschiebung aus. Geben Sie ein. Außerdem werden wir hier unseren Datensatz weiter aufteilen und ihn für die Schulung des Anwendertensorfensters vorbereiten . Also werden wir ah TFT veralteten Datensatz verwenden, um aus unseren Schulungsbildern und Trainingsetiketten ein Datensatzobjekt innerhalb von Tensorflow zu erstellen . Wir werden diesen Datensatz dann verwenden, um unsere einzelnen Chargen zu erstellen, mit denen wir das neuronale Netzwerk trainiert haben. Also mischt 60.000 bedeutet, dass ich alle 60.000 Trainingsbilder mischen werde, die ich nur zufällig alle mischen. Ich werde sie dann in Chargen von 250 vor holen die 1. Charge. Also habe ich das bereit zu gehen. Das ist alles, was hier vor sich geht. Umschalttaste Eingabetaste Alles klar, jetzt werden wir anfangen, unser neuronales Netzwerk selbst zu konstruieren, indem wir die Variablen erstellen, die die Gewichtungen und voreingenommenen Begriffe für jede Schicht unseres neuronalen Netzwerks speichern . Also beginnen wir damit, ah, ah, alle über Variablen mit zufälligen Variablen zu initialisieren, nur um sicherzustellen, dass wir eine Reihe von anfänglichen zufälligen Einstellungen für unsere Gewichte haben . Wir wollen mit etwas beginnen, und aus Mangel an etwas Besseres wird mit zufälligen Werten beginnen. Eigentlich kann Ihre Wahl von ah Initialisierungswerten einen großen Unterschied in der Leistung Ihrer neuronalen Netzwerke ausmachen . Es lohnt sich also, zu prüfen, wie man die richtigen Anfangswerte für einen bestimmten Typ von neuronalem Netzwerk wählt. Wir richten hier unsere Gewichte für die versteckte Ebene ein, nennen diese Gewichte H und wir werden unsere zufällige, normale Funktion verwenden, die wir gerade hier definiert haben. Um diese Gewichte zufällig und ausgeblendet zu initialisieren, wie Sie sich noch einmal erinnern können, schauen wir uns hier nochmal nach oben. Fünf Jahre 12. Dadurch werden 512 Variablen erzeugt, die die Gewichte für versteckte Neuronen enthielten. Wir brauchen auch eine Reihe von Gewichten auf unserer Ausgangsebene von 10 Ausgangsneuronen. Also wird der Ausgang 10 Neuronen sein, bei denen jedes Neuron die Wahrscheinlichkeit darstellt, dass gegeben Klassifikationen Null bis neun, wir müssen auch Vorurteile mit beiden dieser Schichten assoziieren, also wird der Satz von Vorurteile mit unserer versteckten Schicht. Wieder wird es 5 bis 12 davon geben. Und wir haben auch Vorurteile, die mit ihrer Ausgangsschicht von Tenorneuronen an der Ausgangsschicht assoziiert sind. Diese werden Nullen initialisiert. Okay, also ein bisschen anders da für die Vorurteile Standardmäßig. Wir wollen, dass unsere Vorurteile Null sind. Gehen wir voran und führen das aus. Alles klar, weitermachen. 8. Tensorflow für Handschrifterkennung Teil 2: Jetzt werden wir die Topologie unseres neuronalen Netzwerks selbst einrichten. Das ist also das, was das neuronale Netz hier macht. Und wie wir in den Folien gesagt haben, können Sie diese Phantasie neuronalen Netzwerke definieren ist nur einfache Matrix, Multiplikation und Additionsfunktionen hier, richtig? Also beginnen wir mit TF Punkt matt Maulwurf zu sagen. Das ist es nur eine Matrixmultiplikation unserer Eingabe-Neuronen, die die rohen 784 Pixelwerte mit den 512 Gewichten in unserer versteckten Schicht von Neuronen dort , so dass die Matrixmultiplikation jeden dieser Eingangswerte mit den Gewichten multipliziert in dieser ausgeblendeten Ebene. Wir sagen dann TF Punkt hinzufügen, um in den voreingenommenen Begriffen hinzuzufügen, die wieder in der B-Variablen gespeichert sind, die wir gerade oben definiert haben. Okay, als nächstes müssen wir eine Sigmoid-Funktion auf die Ausgabe dieser versteckten Ebene anwenden. Also, das ist im Grunde die Aktivierungsfunktion auf jedem versteckten oder auf OK, das ist alles, was es passiert. Sie sind sehr einfach. Die Ausgabe-Ebene wird es wieder tun, also sagen wir, machen Sie eine Matrixmultiplikation mit unseren Ausgabegewichten und der versteckten Ebene, und dann fügen wir diese Ausgabe-Verzerrungen am Ende hinzu, und wir rufen Soft Max auf tatsächlich normalisieren diese Ausgangsneuronen auf eine endgültige Wahrscheinlichkeit jeder einzelnen Klassifizierung. So soft max wieder. Es ist nur ein mathematischer Trick, um die Ausgänge dieser neuronalen Netzwerke zu nehmen und diese Ausgabe-Neuronwerte in das umzuwandeln, was wir als Wahrscheinlichkeit interpretieren können, dass jede einzelne Klassifizierung, die diese Neuronen repräsentieren, korrekt ist. Gehen Sie weiter und führen Sie das aus. Und das geht auch schnell. Denken Sie noch einmal daran, alles, was wir tun, ist unsere Grafik zu definieren. An diesem Punkt trainieren wir noch nichts oder laufen etwas, aber ja, aber ja, nimmst du dir die Zeit, darauf zu nudeln? Wir haben im Grunde die Entschuldigung des neuronalen Netzwerks selbst konstruiert. Das nächste, was wir nicht tun mussten, ist herauszufinden, wie man dieses neuronale Netzwerk tatsächlich trainiert , richtig? Also wieder, wir machen das auf die harte Art und Weise, also müssen wir das von Hand schreiben. Wir beginnen mit der Definition unserer Verlustfunktion und ihrer sogenannten Kreuzentropie. Grundsätzlich ist es eine Möglichkeit, Grady zu tun und Dissens liefert eine log-arrhythmische Skala, und das hat den Effekt, falsche Klassifikationen viel mehr zu bestrafen als diejenigen, die nahe der richtigen Antwort sind. Das ist ah, praktische Eigenschaft, um das Training schnell gehen zu lassen. Also innerhalb dieser Funktion wird in die Dinge übergehen. Warum? Pred ist die vorhergesagten Werte, die aus unserem neuronalen Netzwerk kommen und warum wahr sind die bekannten wahren Labels, die mit jedem Bild verbunden sind. Also müssen wir an dieser Stelle über eine heiße Codierung sprechen. Wir sprechen darüber, wenn wir über Feature-Engineering im Kurs sprechen, aber um diesen bekannten Wert zu vergleichen, dass bekannte Label, die eine Zahl von 0 bis 9 auf die Ausgabe dieses neuronalen Netzwerks ist. Denken Sie daran, dass der Ausgang des neuronalen Netzwerks tatsächlich 10 verschiedene Neuronen beträgt, wobei jeder die Wahrscheinlichkeit einer gegebenen Klassifikation darstellt . Es vergleicht das tatsächlich mit dem bekannten korrekten Wert. Wir müssen diese bekannte korrekte Zahl in ein ähnliches Format konvertieren, also werden wir eine Hot-Codierung verwenden. Es wird am besten mit einem Beispiel verstanden. Nehmen wir also an, wir wissen, dass die Antwort für das bekannte korrekte Label für ein Bild eins ist. Wir würden eine heiße Kodierung, die als 10-Wert-Array hier, wobei jeder Wert die Wahrscheinlichkeit von ah darstellt, dass gegeben Klassifikationen, da wir mit 100% Sicherheit wissen, dass dieses Bild ein Eins war. Wir können sagen, dass für die Klassifizierungen Null, gibt es eine 0% Chance, dass für die Klassifikation eins eine 100% ige Chance auf diesen einen Punkt besteht. Oh, und für zwei wird es Null für 30 sein, so weiter und so weiter. Das ist also eine heiße Kodierung. Sie erstellen nur eine binäre Darstellung eines ganzzahligen Werts, wenn Sie dies tun. Die Nummer eins ist also repräsentativ. 0100000 Jeder dieser Slots im Array stellt einen anderen Klassifizierungswert dar , und dies erleichtert es der Mathematik, Dinge zu erarbeiten und zu konstruieren. In Ordnung, also fangen wir an, wie die Kodierung, dieses bekannte Label in einem heißen, kodierten Array. Wir machen dann einige Clipping ihre, um einige mathematische numerische Probleme zu vermeiden, die Null protokollieren. Und dann könnten wir einfach das Ah vergleichen und den tatsächlichen Cross-Entropie-Termin berechnen, indem wir einige reduzieren, um die gesamte Menge aller Werte innerhalb dieses Patches zu durchlaufen und diesen logischen arrhythmischen Vergleich zu verwenden, wie wir sagten , Entropie ohne Log arrhythmische Eigenschaft. Also lasst uns voran und ah, Shift, Enter, um das wieder zu tun, die wichtigsten Dinge hier sind reduziert mich und reduzieren einige, was bedeutet, dass wir das auf die gesamte Charge auf einmal anwenden werden. In Ordnung. Als nächstes müssen wir definieren, was ein Optimierer genannt wird, und in diesem Fall werden wir eine stochastische Grady und Dissens verwenden. Wir haben bereits darüber gesprochen, und wir werden unseren Hyper-Parameter für die Lernrate verwenden, der später wieder durch Experimente abstimmen möchte. Teoh, definieren Sie den Optimierer. Wir müssen eine Funktion schreiben, um diese Optimierung tatsächlich auszuführen. Und wieder mit der unteren Ebene Tensorflow ap Augen. Wir müssen das irgendwie auf die harte Art machen. Wir werden etwas namens Strahlungsband benutzen, um das automatisch zu machen. Was das tut, ist, dass Sie hier sehen können, dass es tatsächlich unsere neuronale Netzfunktion aufruft die die Topologie unseres neuronalen Netzwerks definiert. Wir werden die Verlustfunktion zu berechnen sind Cross-Entropie-Funktion, die wir oben definiert als auch. Das bindet also alles zusammen und ermöglicht es uns, dieses neuronale Netzwerk innerhalb dieser einen Funktion hier zu optimieren . Also nicht schrecklich wichtig zu verstehen, was hier auf einem niedrigen Niveau vor sich geht, können Sie hier durch die Kommentare verstehen, wir, äh wir aktualisieren unsere Variablen, während wir es durchgehen. Treten Sie hierher. Wir berechnen die Grady INts und aktualisieren dann unsere Gewichte und Vorurteile bei Leichtigkeit Trainingsschritt. Also dieser Code ist, was neue Gewichte und Vorurteile durch jeden Trainingspass wieder berechnet, Dies wird viel einfacher mit dem Streicheln höherer Ebene AP I Also gerade jetzt zeigen wir Ihnen nur dies, um Ihnen eine Wertschätzung dessen zu geben, was vor sich geht unter die Haube. Gehen wir weiter und verschieben uns. Geben Sie das auch ein. Alles klar, jetzt haben wir alles, was wir brauchen. Wir haben die Topologie unseres Netzwerks definiert. Wir haben die Variablen für unsere Gewichte und Verzerrungen definiert. Wir haben eine verlorene Funktion definiert, die Cross-Entropie ist, und wir haben eine Optimierungsfunktion, die alles zusammenbindet, genannt Run-Optimierung. Lass uns weitermachen und anfangen, dieses Ding zu trainieren. Das ist also, was hier los ist. Oh, warte. Noch eine Sache. Wir brauchen auch eine Genauigkeitsmetrik, also reicht eine Verlustfunktion nicht aus. Wir wollen auch die tatsächliche Genauigkeit in jeder Stufe zwei anzeigen und all diese Genauigkeitsmetrik sagt, lassen Sie uns das tatsächliche Maximalargument von jedem Ausgabe-Array vergleichen, das unserem einen heißen codierten Wert entsprechen wird . Und vergleichen Sie das mit dem einen heißen, kodierten, bekannten Wert, den wir für dieses Label haben. Das ist also nur eine Art zu bleiben. Wir werden anrufen, reduzieren mich, um tatsächlich die Genauigkeit jeder einzelnen Vorhersage zu berechnen und das über die ganzen Tage hinweg zu erreichen. Das ist also, was unsere Genauigkeitsmetrik hier auch tut. Umschalttaste, Eingabe. Und jetzt können wir es tatsächlich starten, damit Sie sehen können, dass wir alle schweren Heben gemacht haben. Jetzt ist es ziemlich einfach, es tatsächlich zu tun. Für jeden Trainingsschritt nehmen wir also einen Stapel aus unseren Trainingsdaten. Denken Sie daran, dass wir diese Stapel früher mit einem Datensatz über die Trainingsschritte hinweg erstellt haben. Das wird 3000 sein . Ich glaube, wir haben es gesagt. Und für jede Charge, jeden Schritt des Trainings, werden wir Optimierung durchführen. Das nennt also diese eine Funktion, die wir haben, die alles zusammengebunden hat, um unsere Optimierung in unserem neuronalen Netzwerk anzuwenden , um die optimalen Gewichte und Vorurteile bei jedem Schritt zu berechnen und ja, alle 100 Schritte. Das ist, was Displayschritt ist. Wir werden unsere Fortschritte machen, wie wir gehen. Alsowerden wirin jeder 1/100 Epoche werden wir unser neuronales Netzwerk hier auf dem aktuellen Batch ausführen und eine Reihe von Vorhersagen für diese Charge von 250 Werten dort erhalten und Cross-Entropie berechnen, um eine unser neuronales Netzwerk hier auf dem aktuellen Batch ausführen und eine Reihe von Vorhersagen für diese Snapshot unserer aktuellen Verlustfunktion und Rechengenauigkeit auch darauf. Tash, du erhältst eine Metrik unserer Genauigkeit in jedem Zustand, damit wir sehen können, dass dies im Laufe der Zeit für alle 100 Schritte in unseren 3000 Trainingsschritten oder in dieser Box konvergiert wird, wenn du so willst. Gehen wir weiter und starten das. Und hier findet die Aktion statt. Das wird also über eine One over 3000 F Box iteriert und wir können sehen, dass sich diese Genauigkeit ändert während wir gehen. Es ist irgendwie interessant, dies zu beobachten, weil die Genauigkeit ein wenig schwankt , während wir Angst gehen, also wissen Sie, Sie können diese Art von sagen, wie vielleicht in ein kleines lokales Minima hier niederzulassen und seinen Weg aus diesen und im Laufe der Zeit bessere Lösungen zu finden. Aber wie es geht, wird es beginnen, auf bessere und bessere Werte zu konvergieren. Also, wissen Sie, wir haben mit Justin 84% Genauigkeit begonnen. Im Moment sind wir bis zu 90 4%, aber es ist immer noch irgendwie überall. Lassen Sie uns an dieser Stelle ziemlich fest in den neunziger Jahren etwas mehr Zeit geben. Das ist also gut. 90 Drei, würde ich sagen, bis 2000 diese Box. Denk dran, wir gehen bis zu 3000 und wieder, weißt du, du musst dir das ansehen und sehen, wo es anfängt zu konvergieren. Wir könnten früh aufhören, um herauszufinden, an welchem Punkt wir tatsächlich aufhören, eine Verbesserung zu bekommen . Aber man muss irgendwie Augapfel der ersten, um ein Gefühl zu bekommen, wie viele Pocken Sie wirklich brauchen. Wir sind fast da und sehen so aus, als würden wir nicht viel besser machen als 93% Genauigkeit. Da haben wir es. Wir über 3000, dass Box wir landeten mit einer Genauigkeit von 92,8% und dies ist tatsächlich daran erinnern mit unserem Trainingsdatensatz. Es gibt also eine Möglichkeit, dass wir hier vorbei sind, um wirklich zu bewerten, wie gut dieses Modell funktioniert. Wir wollen es anhand des Testdatensatzes auf Daten, die es noch nie gesehen hat, auswerten. Lassen Sie uns also voran gehen und diesen Testdatensatz verwenden, den wir am Anfang beiseite legen und das neuronale Netzwerk darauf ausführen und tatsächlich unsere Genauigkeitsfunktion aufrufen, um zu sehen, wie gut es auf Testdaten-Testbildern funktioniert , die es noch nie gesehen hat. 93%. Nicht so schlimm, weißt du. Ich meine, wir könnten es besser machen. Aber für eine sehr einfache Verwendung von Tensorflow und das Einrichten eines sehr einfachen neuronalen Netzwerks mit nur einer versteckten Ebene ist das nicht schlecht. Wir werden es während des gesamten Kurses besser machen. Wir werden verschiedene Techniken ausprobieren, aber wir beginnen hier gleich wieder gut. Es ist gut, Ihre Daten zu verstehen, Dinge zu visualisieren, zu sehen, was tatsächlich unter der Haube vor sich geht. Werfen wir einen Blick auf einige dieser falsch klassifizierten Bilder und bekommen mehr von einem Bauchgefühl wie gut an unserem Modell wirklich ist. Werfen wir einen Blick auf einige Beispiele von Bildern, die es nicht richtig klassifiziert hat, und sehen wie verzeihbar diese Fehler sind. Das ist also, was diese Funktion tut. Im Grunde gehen wir durch 200 Bilder, die bekanntermaßen falsch sind. Werfen Sie einen Blick auf den tatsächlich vorhergesagten Wert und nehmen Sie so art max auf das Ausgangsfeld dort der Ausgangsneuronschicht. Und das mit den bekannten korrekten Etiketten zu vergleichen. Und wenn es nicht korrekt ist, wird es mit dem Originaletikett und der vorhergesagten Etikettenspitze ausdrucken. Verschaffen Sie sich eine Vorstellung davon, was hier passiert. Umschalttaste eingeben. In Ordnung, das sind also einige ziemlich chaotische Beispiele in diesem Beispiel. , Wir wussten,dass dieser Kerl versucht, fünf zu ziehen. Wir dachten, es wäre 1/6. Ja, das kann ich nicht verstehen. Ja, ich meine, das ist eine wirklich böse aussehende Fünf, und es ist ein ziemlich guter Fall, um zu sagen, dass das eigentlich eine Sechs war. Das ist also ein Fall, in dem dein menschliches Gehirn wahrscheinlich nicht viel besser machen könnte. Das würde ich nicht verstehen. Das ist eine Fünf, wie es aussieht wie ein Schnörkel. Diese, um, ähm, unsere beste Vermutung für mein Model war eine Sechs. Die Person beabsichtigt, vier, die nicht wie ein vier für mich aussieht. Ich meine, sieht aus wie die Hälfte von vier, im Grunde, als wüsste ich nicht, was mit dem Arm des Kerls passiert ist, als er ihn zeichnete. Aber auch hier wissen Sie, dass Sie schätzen können, wie gut es geht oder nicht. Ah, das hier. Ich bin mir nicht sicher, wie unser Model dachte, das wäre wieder eine Sieben. Das ist eine sehr seltsam aussehende Sechs, aber sieht aus wie eine Sieben, entweder , egal , dass eine, auch eine Art böse, sieht aus wie eine Zwei für das Gehirn. Es ist eine wirklich lustige, zerquetschte, seltsame Suche, aber ah, das ist ein Beispiel dafür, wo Ihr Gehirn einen besseren Job macht als ein einfaches neuronales Netzwerk. Aber insgesamt, wissen Sie, sind dies weitgehend verzeihbare Fehler. Jemand ist, wo ich vermasselt habe, waren einige ziemlich seltsame, chaotische Beispiele wie Was ist das? Ähm, ich schätze, es sollte eine Zwei sein. Wir schätze, es war eine Neun. Weißt du, ich konnte das in beiden Richtungen sehen. Also, ähm, nicht zu böse Jungs, weißt du? Wie auch immer, wenn Sie damit spielen wollen, ermutige ich Sie, dies zu tun. Sehen Sie, ob Sie die Dinge verbessern können. Wie wir darüber gesprochen haben, gibt es hier viele verschiedene Hyperparameter, um mit der Lernrate zu spielen. Wie viele versteckte Neuronen haben wir? Und so versuchen Sie verschiedene Werte. Probieren Sie verschiedene Lernraten aus. Probieren Sie mehr Neuronen, weniger Neuron. Sehen Sie, welche Wirkung, die gerade mit ihm herumspielen hat. Denn in der realen Welt musst du das tun. Versuchen Sie, eine zweite verborgene Ebene oder eine andere Stapelgröße oder eine andere Anzahl dieses Feldes hinzuzufügen. Machen Sie einfach Ihre Hände schmutzig und erhalten Sie ein gutes Bauchgefühl, wie diese verschiedenen Parameter die Ausgabe in den Endergebnissen beeinflussen , die Sie erhalten. Also gib es eine Chance. Und wenn Sie mehr als 93% Genauigkeit erhalten können, würden wir uns freuen, darüber in der Q und A zu hören 9. Keras präsentieren: Also haben wir einen Blick auf die Entwicklung neuronaler Netzwerke mit Tensorflow Art von niedrigeren Ebenen AP Augen. Wo statt wirklich über Neuronen oder Einheiten nachzudenken, denken Sie mehr über 10. Herren und Maitresse erleichtern und multiplizieren sie direkt zusammen, und das ist eine sehr effiziente Art, dies zu tun. Aber es ist nicht wirklich intuitiv. Es könnte ein wenig verwirrend sein, besonders wenn Sie anfangen, ein neuronales Netzwerk in diesen Begriffen zu implementieren. Glücklicherweise gibt es einen höheren AP , , den ich als Liebkosung bezeichnet habe, der jetzt in Tensorflow integriert ist. Früher war es ein separates Produkt, das auf Tensorflow stand. Aber ab Tensorflow 1.9 wurde es tatsächlich in Tensorflow selbst als Alternative, höhere Ebene a p I integriert , die Sie verwenden können. Und es ist wirklich schön, weil es wirklich Zweck für Deep Learning gebaut ist. So ist der gesamte Code sehr auf das Konzept der künstlichen neuronalen Netzwerke aufgebaut, und es macht es sehr einfach, die Schichten des neuronalen Netzwerks zu konstruieren und sie miteinander zu verdrahten und verschiedene Optimierungsfunktionen auf ihnen zu verwenden. Es ist viel weniger Code und viel weniger Dinge, die schief gehen könnten. Als Ergebnis, ein weiterer Vorteil der Liebkosung in, zusätzlich zu seiner Benutzerfreundlichkeit ist seine Integration mit Leichtigkeit. Psych Es lernte Bibliothek. Wenn Sie also daran gewöhnt sind, maschinelles Lernen in Python zu machen, verwenden Sie wahrscheinlich psychische lernen viel und verwenden Sie Liebkosung. Sie können tatsächlich Ihre tiefen neuronalen Netzwerke mit psychischem Lernen integrieren. Und Sie könnten in unserer vorherigen Vorlesung bemerkt haben, dass wir irgendwie über das Problem verloren tatsächlich trainierte Tests oder Kreuzvalidierung in unserem neuronalen Netzwerk durchzuführen, weil es eine Art großer Schmerz im Hintern gewesen wäre , aber es würde Psych es lernen. Es ist sehr einfach, Cross-Validierung durchzuführen und, wie, wie,eine ordnungsgemäße Analyse und Auswertung dieses neuronalen Netzwerks durchzuführen. Das macht es einfacher zu bewerten, was wir tun und es mit anderen Modellen zu integrieren oder sogar Chain ah, neuronales Netzwerk mit anderen Deep Learning oder maschinellem Lernen Techniken zu verknüpfen. Es gibt auch viel weniger zu denken, und das bedeutet, dass Sie oft bessere Ergebnisse erzielen können, ohne es zu versuchen. Wissen Sie, mit Tensorflow müssen Sie über jedes kleine Detail auf linearer Algebraebene nachdenken, wie diese neuronalen Netze konstruiert werden, weil es nicht wirklich nativ neuronale Netze aus der Box unterstützt . Sie müssen herausfinden, wie multipliziere ich alle Gewichte zusammen? Wie füge ich die Bias-Begriffe hinzu? Wie wende ich einen Optimierer an? Wie definieren wir eine Verlustfunktion? Dinge wie diese, während Karat kann sich um eine Menge dieser Details für Sie kümmern. Also, wenn es weniger Dinge gibt für Sie zu vermasseln und mehr Dinge, die streicheln kann für Sie in Bezug auf die Optimierung von Dingen, wo Sie wirklich versuchen, oft zu tun, können Sie bessere Ergebnisse erzielen, ohne uns viel Arbeit zu tun, was großartig ist. Warum ist das wichtig? Nun, je schneller Sie experimentieren und Prototypen können, desto besser werden Ihre Ergebnisse sein. Also, wenn es für Sie so viel einfacher ist, verschiedene Ebenen in Ihrem neuronalen Netzwerk auszuprobieren, wissen Sie, verschiedene Entschuldigungen, verschiedene Optimierer, verschiedene Variationen. Es wird so viel einfacher und schneller für Sie sein, auf die optimale Art von neuronalem Netzwerk für das Problem zu konvergieren , das Sie zu lösen versuchen. Während Tensorflow auf dem Weg eine Reihe von Straßensperren für Sie aufstellt. Am Ende des Tages haben Sie nur so viel Zeit, um sich diesen Problemen zu widmen, oder? Je mehr Zeit Sie also für die Topologie und das Tuning Ihres neuronalen Netzwerks und je weniger für die Implementierung, desto besser sind Ihre Ergebnisse am Ende des Tages. Jetzt könnten Sie feststellen, dass Paris letztendlich ein Prototyping-Tool für Sie ist. Es ist nicht so schnell, wie einfach nur nach Tensorflow zu gehen. Sie wissen also, manchmal möchten Sie auf die gewünschte Topologie konvergieren, dann zurückgehen und das auf der Tensorflow-Schicht implementieren. Aber auch hier lohnt sich der Einsatz von Prototyping allein. Es macht das Leben viel einfacher. Werfen wir einen genaueren Blick. Und wieder streicheln ist nur eine Schicht auf Tensorflow, die Deep Learning viel einfacher macht . Alles, was wir tun müssen, ist damit anzufangen, dieses Zeug zu importieren, das wir brauchen. Also werden wir die Liebkosbibliothek und einige spezifische Module daraus importieren. Wir haben hier den Amnestie-Datensatz, den wir mit dem sequentiellen Modell experimentieren , was eine sehr schnelle Möglichkeit ist, die Schichten eines neuronalen Netzwerks zusammenzustellen. Wir werden auch die dichten und Dropout-Ebenen importieren, so dass wir tatsächlich einige neue Dinge zu diesem neuronalen Netzwerk hinzufügen können, um es noch besser zu machen und Überanpassung zu verhindern. Und wir werden den RMS-Problemoptimierer importieren, was wir für unsere Grady und Dissens verwenden werden. Shift, geben Sie ein und Sie können sehen, dass sie bereits geladen haben streicheln nur durch den Import dieser Dinge. Es verwendet Tensorflow ist das Backend. Lassen Sie uns voran und laden Sie den Amnestie-Datensatz, den wir im vorherigen Beispiel verwendet haben. Paris' Version ist ein bisschen anders, tatsächlich hat 60.000 Trainingsmuster im Gegensatz zu 55.000 noch 10.000 Testproben, und das ist nur eine Einzeilen-Operation. , jetzt Also, jetztmüssen wir das nach wie vor in die Form umwandeln, wie vor in die Form umwandeln,die Tensorflow unter der Haube erwartet. Also werden wir die Trainingsbilder umgestalten, um 60.000 mal 7 84 Wieder werden wir diese immer noch als ein D-Bild behandeln. Wir werden diese alle im Schlepptau eine D-Rose von 784 Pixeln für jedes 28 mal 28 Bild abflachen . Wir haben auch unseren Testdatensatz von 10.000 Bildern mit jeweils 784 Pixeln Frieden und wir werden die Bilder explizit als schwebende 0,32-Bit-Werte darstellen, und das ist nur, um die Bibliothek ein wenig glücklicher zu machen. Darüber hinaus werden wir diese Dinge um 2 55 normalisieren Also die Bilddaten hier sind eigentlich acht Bit an der Quelle, also ist an der Quelle, es 0 zu 2 55 Also, um das in 01 zu konvertieren, was wir tun, im Grunde ist es hier in ein Fließkommazahl zuerst von diesem 0 bis 2 55 Imager und dann dividieren sie durch 2 55, um wieder zu skalieren, dass Eingabedaten 20 zu 1. Wir haben bereits über die Wichtigkeit der Normalisierung Ihrer Eingabedaten gesprochen, und das ist alles, was wir hier tun. Wir nehmen nur Daten, die als acht Bit 0 bis 2 55 Daten begonnen haben, und konvertieren diese 32-Bit-Gleitkommawerte zwischen Null und eins. Es geht immer dort wie zuvor vor, wir werden ARD-Etiketten in ein heißes Format konvertieren, also ist das, was zu kategorisch für Sie tut. Es konvertiert nur die Etikettendaten sowohl auf dem Training als auch das Testdatum festgelegt ist. Teoh ein heißer 0 10 Werte. Lassen Sie uns voran gehen und den vorherigen Block dort laufen, bevor wir vergessen und wir werden laufen. Das ist wieder gut. Ich mache nur eine Schicht. Geben Sie hier ein, nachdem Sie die entsprechenden Codeblöcke ausgewählt haben. In Ordnung, wie zuvor, lassen Sie uns einige der Daten visualisieren, nur um sicherzustellen, dass sie erfolgreich geladen wurden. Dies ist so ziemlich das gleiche wie das vorherige Beispiel. Wir werden nur unsere Eingabedaten für eine Stichprobennummer betrachten. 1234 und wir konnten sehen, dass ein Hot Label hier zeigt eine und Position für und da wir anfangen, es zu zählen, 00123 Das zeigt Etikett drei. Verwenden sind nicht Max. Das gibt uns das menschlich lesbare Etikett zurück. Und indem wir dieses 768 Pixel-Array in eine Zwei-D-Form umformen, können wir sehen, dass dies jemand versucht, die Nummer drei zu zeichnen. OK, bisher, so gute Rüstungsdaten sehen so aus, als ob es sinnvoll ist und korrekt geladen wurde. Jetzt erinnere dich daran, als wir es mit Tensorflow zu tun hatten, mussten wir eine ganze Menge Arbeit machen, um unser neuronales Netzwerk aufzubauen. Wir werden uns ansehen, wie viel einfacher es mit Streicheln ist alles, was wir tun müssen, ist zu sagen, dass wir ein Modell einrichten , ein sequentielles Modell. Und das bedeutet, dass wir unserem neuronalen Netzwerk einzelne Ebenen nacheinander hinzufügen können , , wenn Sie so wollen. Also beginnen wir, indem wir eine dichte Schicht von 512 Neuronen mit einer Eingangsform von 784 Neuronen hinzufügen. Dies ist also im Grunde unsere erste Ebene, die unsere 784 Eingangssignale von jedem Bild 1 für jedes Pixel nimmt und sie in eine versteckte Schicht von 512 Neuronen einspeist. Und diese Neuronen werden die Rela oh Aktivierungsfunktion haben mit verbunden, ähm Also mit einer Codezeile haben wir eine ganze Menge Arbeit geleistet, die wir vorher im Tensorflow erledigen mussten, und dann wird darüber hinaus eine Soft-Max-Aktivierung gesetzt Funktion oben auf eine letzte Ebene von 10, die unserer endgültigen Klassifikation, was eine Anzahl davon von 0 bis 9 darstellt, zugeordnet wird . Okay, so einfach war es auch nicht. Wir können sogar darum bitten, uns eine Zusammenfassung von dem, was wir eingerichtet haben, nur um sicherzustellen, dass die Dinge so aussehen, wie wir es erwartet haben. Und sicher genug, wir haben hier zwei Schichten, wissen Sie, eine, die 512 hat und dann zu einer 10 Neuronschicht für die endgültige Klassifizierung geht. Und das lässt den Eingabe-Layer irgendwie weglassen. Aber wir haben diese Eingabe-Form von 784 Features, die in diese erste Ebene gehen. Moment erinnern Sie sich vielleicht auch, dass es eine Art Schmerz im Hintern war, die Optimierung und verlorene Funktion wieder in Tensorflow einzurichten. Das ist ein Ein-Liner in Liebkosung. Nun, wir müssen tun, ist sagen, dass verloren Funktion ist kategorische Kreuz-Entropie, und es wird wissen, was dort zu tun ist. Wir werden den RMS Prop Optimizer nur zum Spaß verwenden. Wir könnten jeden von dem gebrauchen, den wir wollten. Wir könnten Adam nur sehen, wenn du es wolltest. Oder es gibt andere Möglichkeiten, wie Acht. Ein Grad SG kann auf diejenigen unter diesem Link hier lesen, wenn Sie wollen, und wir werden die Genauigkeit messen, wie wir gehen entlang. Das ist also alles, was gesagt wird, Lasst uns voran gehen und das trifft, und das wird den zugrunde liegenden Graphen erstellen, den wir in Tensorflow ausführen möchten . In Ordnung, also müssen wir es jetzt tatsächlich ausführen. Und wieder, das ist nur eine Zeile Code mit Liebkosung. Alles, was wir tun müssen, ist zu sagen, dass sie dieses Modell mit diesem Trainingsdatensatz passen diese Luft die Eingabe-Features, die Eingabe-Layer, die mit trainieren würden. Wir wollen Chargengrößen von 100 verwenden. Wir werden das 10 Mal ausführen. Ich werde die Ausführlichkeitsstufe von zwei festlegen, weil das am besten mit einem Auge Python Nacht-Notizbuch funktioniert und zur Validierung werden wir auch den Testdatensatz zur Verfügung stellen. Anstatt also diese große Funktion zu schreiben, die Berücksichtigung des Lernens von Hand tut, wie wir in Tensorflow-Liebkosung getan haben, tut es alles für uns. Also gehen wir weiter und schlagen, verschieben, verschieben, betreten und treten in das Büro. Nun, jetzt ist die Liebkosung langsamer als Tensorflow, und Sie wissen, dass es ein wenig mehr Arbeit unter der Haube macht, also wird das mehr Zeit in Anspruch nehmen, aber Sie werden sehen, dass die Ergebnisse wirklich gut sind. Ich meine, selbst bei dieser ersten Generation haben wir bereits die Genauigkeit erreicht, die wir nach 2000 Iterationen in unserer handcodierten Tensorflow-Implementierung erhalten haben. Wir sind bereits bis zu Epoche sechs und wir nähern uns 99% Genauigkeit in unseren Trainingsdaten. Sie daran, dass dies die Genauigkeit im Trainingsdatensatz misst, und wir sind fast da, aber ja. Ich meine, sogar mit nur 10? Pocken? Wir haben viel besser gemacht als Tensorflow zu verwenden. Und wieder, weißt du, Liebkosung ist irgendwie eine Menge der richtigen Dinge für dich automatisch zu tun, ohne dass du überhaupt darüber nachdenken musst. Das ist die Kraft der Liebkosung. Auch wenn es langsamer ist, kann es Ihnen bessere Ergebnisse in weniger Zeit am Ende des Tages geben. Nun, hier ist etwas, das wir mit dem Transferfluss nicht wirklich leicht machen konnten. Es ist möglich. Ich bin nur , nicht darauf eingekommen,weil der Vortrag lang genug war. Ist es Waas? Aber denken Sie daran, dass wir tatsächlich Liebkosung mit psychischen lernen integrieren können, so können wir einfach sagen Modell Punkt bewerten. Und das ist wie ein psychisch gelehrtes Modell. Da Faras Pythons betreffen und tatsächlich anhand unserer Testdaten messen, die Genauigkeit festlegen und den Testdatensatz als Benchmark verwenden, hatte es eine Erfolgsrate von 98%, die diese Bilder falsch klassifiziert, also ist das nicht schlecht. Nun, wohlgemerkt, eine Menge Forschung geht dazu, dies zu optimieren, und dieses Datensatzproblem in 98% wird nicht wirklich als gutes Ergebnis angesehen. Wie ich später im Kurs sagte, werden wir über einige bessere Ansätze sprechen, die wir verwenden können. Aber, hey, das ist viel besser als wir in der vorherigen Vorlesung hatten, oder? Wie zuvor, lassen Sie uns voran und werfen Sie einen Blick auf einige von denen, die es falsch gemacht, nur um ein Gefühl davon zu bekommen wo es Dinge beunruhigt hat, die sind. Neuronales Netzwerk hat Herausforderungen. Der Code ist hier ähnlich. Wir werden nur die ersten 1000 Testbilder hier durchlaufen, und da es eine viel höhere Genauigkeitsrate hat, müssen wir tiefer hineingehen. Getestet, um Beispiele für Dinge zu finden, die schief gelaufen sind, wird jede Daten jedes Bild umformen und ein flaches 784 Pixel-Array ausführen , was neuronales Netzwerk erwartet, ist Eingabe. Rufen Sie unsere Max auf die resultierende Klassifizierung und ein Hot Format und sehen Sie, ob diese vorhergesagte Klassifizierung mit dem tatsächlichen Label für diese Daten übereinstimmt. Wenn nicht ausdrucken. Alles klar, Sie können hier sehen, dass es diesem Modell wirklich besser geht. Der sagte, dass es falsch geht, sind ziemlich wackelig. Okay, in diesem Fall haben wir vorausgesagt, dass das eine Nummer neun war. Und wenn ich mir das selbst ansehen würde, könnte ich vermuten, dass das auch eine Neun war. Es stellte sich heraus, dass diese Person versucht hat, die Nummer vier zu zeichnen , aber , wissen Sie ist ein Fall, in dem sogar ein menschliches Gehirn in Schwierigkeiten gerät, was diese Person tatsächlich zu schreiben versuchte. Ich weiß nicht, was das sein soll. Anscheinend versuchten sie, die Nummer vier zu zeichnen. Unsere beste Vermutung war die Nummer sechs nicht unvernünftig, angesichts der Form der Dinge. Hier ist jemand, der auch versucht hat zu zeichnen . Aber es sieht noch viel mehr wie eine Sieben aus. Da wäre ich mir selbst zu sicher. Also, wissen Sie, obwohl wir diese Daten auf eine Dimension abflachen, ist dieses neuronale Netzwerk, das wir aufgebaut haben, bereits mit dem menschlichen Gehirn in Bezug auf die Handschrifterkennung dieser Zahlen konkurrieren . Ich meine, das ist irgendwie erstaunlich, und ich hätte wahrscheinlich eine Drei davon erraten, aber wieder. Sie können sehen, dass die Qualität der Sachen, die Probleme mit haben, wirklich skizzenhaft ist. Was ist das, ein Skorpion? Anscheinend sollte das eine Acht sein. Und unsere beste Vermutung war zwei. Aber das ist viel Wow. Okay, ja, manche Leute können es wirklich nicht. Richtig? Das ist eine Sieben. Ja. Ich meine, du verstehst den Punkt hier, also nur wenn wir Streicheln allein benutzen, haben wir eine bessere Genauigkeit bekommen. Wir haben ein besseres Ergebnis, weil wir weniger darüber nachdenken können. In Ordnung. Und Sie können sich wahrscheinlich noch mehr verbessern wie zuvor. Mit Tensorflow Ich möchte, dass Sie zurückgehen und sehen, ob Sie diese Ergebnisse tatsächlich verbessern. Versuchen Sie, einen anderen Optimierer als RMS-Prop-Test zu verwenden. Weißt du, verschiedene Entschuldigungen. Und das Schöne an Liebkosung ist, dass es viel einfacher ist, diese verschiedenen Tell Entschuldigungen jetzt auszuprobieren , oder? Karotten kommt tatsächlich in seiner Dokumentation mit einem Beispiel für die Verwendung von Amnestie, und das ist die eigentliche Topologie, die sie in ihren Beispielen verwenden. Also geh zurück. Versuchen Sie es, sehen Sie, ob es besser ist oder nicht. Sehen Sie, ob Sie die Dinge verbessern können. Eine Sache, die Sie hier sehen können, ist, dass sie tatsächlich Dropout-Ebenen hinzufügen, um ein Überpassen zu verhindern . Es ist also sehr einfach, diese Art von Funktionen hier hinzuzufügen. Grundsätzlich haben wir hier auf einer gleichen dichten Schicht getan, 512 versteckte Neuronen nehmen die 17 84 Funktionen. Und dann werden wir 20% der Neuronen fallen, die die nächste Schicht, um das Lernen zu zwingen , mehr verteilt zu werden und zu verhindern, dass über Anpassung. Es könnte also interessant sein zu sehen, ob das Ihre Ergebnisse auf dem Testdatensatz verbessert, indem Sie diese Dropout-Layer hinzufügen. In Ordnung, also geh mit dieser Mom spielen, komm zurück. Wir werden einige noch interessantere Sachen mit Liebkosung machen. 10. Keras zur Kenntnis von politischen Partnerschaften: Das war also viel einfacher mit Liebkosung, nicht wahr? Nun, die M NIST-Daten sagten, ist nur eine Art von Problem, dass Sie das neuronale Netzwerk lösen könnten. Es ist das, was wir Multi-Class-Classification nennen, Multi Class, weil die Klassifikationen, die wir in passen, von der Zahl Null bis neun reichen. In diesem Fall hatten wir 10 verschiedene mögliche Klassifizierungswerte, und das macht dies zu einem Mehrklassenklassifizierungsproblem. Nun, basierend auf Liebkosung ist Dokumentation und Beispiele. Sie haben allgemeine Ratschläge, wie man mit verschiedenen Arten von Problemen umgehen kann. Hier ist ein Beispiel dafür, wie sie vorschlagen, ein Multi-Classification Problem im Allgemeinen einzurichten . So können Sie hier sehen, dass wir ihm Schichten haben. Hier haben wir eine Eingabedimension von so vielen Funktionen, die Sie in das System kommen. In diesem Beispiel gibt es 20, aber abhängig von der Art Ihres Problems kann es mehr geben. Es richtet sich an Rela-Aktivierungsfunktionsebenen, jede mit jeweils 64 Neuronen und immer wieder, das ist etwas, das Sie eine Melodie wünschen würden, abhängig von der Komplexität dessen, was Sie erreichen wollen, es bleibt in einem Dropout-Schicht, um die Hälfte der Neuronen und jeden Handelsschritt wieder zu verwerfen. Das ist, um ein Überpassen zu verhindern. Und am Ende verwendet es eine Soft-Max-Aktivierung für einen von 10 verschiedenen Ausgabewerten in diesem Beispiel. OK, so geht es darum, das Amnestie-Problem in ihrer eigenen Dokumentation zu lösen. Sie verwenden dann einen SG-de-Optimierer für eine kategorische Kreuz- und Entropieverlustfunktion. Also wieder, Sie könnten einfach auf die Karussell Vergrößerung für einen allgemeinen Ausgangspunkt beziehen, wo Zehe beginnen, zumindest wenn Sie eine bestimmte Art von Problem wieder angehen, die tatsächliche Anzahl der Neuronen und die Anzahl der Schichten, die Anzahl der Ein- und Ausgänge. Nun, offensichtlich, sehr abhängig vom Problem, versuchen Sie es zu lösen. Dies ist die allgemeine Anleitung, die sie Ihnen geben, was die richtige Verlustfunktion ist zu beginnen . Was der richtige Optimierer für den Anfang könnte eine andere Art von Klassifizierungsproblem sein, ist Kauf einer Neuklassifizierung? Vielleicht versuchen Sie zu entscheiden, ob Bilder oder Menschen Bilder von Männern sind oder Frauen versuchen, zu entscheiden, ob jemand Partei Demokraten oder Republikaner ist. Wenn Sie weder oder eine Art Problem haben, dann nennen wir das ein binäres Klassifizierungsproblem, und Sie können hier sehen. Empfehlung hier ist, eine Sigmoid-Aktivierungsfunktion am Ende anstelle von soft max zu verwenden , da Sie nicht wirklich die Komplexität von soft max benötigen, wenn Sie nur versuchen, , da Sie nicht wirklich die Komplexität von soft max benötigen, wenn Sie nur versuchen, zwischen Null und eins zu gehen. Sigmoid ist also die Aktivierungsfunktion der Wahl. Im Fall von binären Klassifizierungen empfehlen sie auch den RMS-Prop-Optimierer, und die verlorene Funktion wird in diesem Fall binäre Kreuzentropie sein, insbesondere so wenige Dinge , die besonders daran sind, binäre Klassifizierung als im Gegensatz zu Multi-Klasse. Schließlich möchte ich ein wenig mehr über die Verwendung von Liebkosung mit Psych sprechen. Es lernt. Es macht es viel einfacher, Dinge wie Kreuzvalidierung zu tun. Und hier ist ein kleiner Codeausschnitt, wie das aussehen könnte. Also hier ist eine kleine Funktion, die ein Modell erstellt, das mit Psych verwendet werden kann, lernte es. Grundsätzlich haben wir hier ah Modellfunktion erstellen, die unser tatsächliches neuronales Netzwerk schafft. Also verwenden wir ein sequentielles Modell, das eine dichte Schicht mit vier Eingängen und sechs Neuronen einfügt und diese Schicht, die zu einer weiteren versteckten Schicht von vier Neuronen führt . Und schließlich geht es zu einem binären Klassifikator am Ende mit einer Sigmoid-Aktivierungsfunktion . So ein kleines Beispiel für die Einrichtung ein wenig Kauf Eri Klassifikationen Neural Netzwerk. Wir können dann einen Schätzer mit der Funktion „Streicheln“ einrichten, und das ermöglicht es uns, einen Schätzer zurückzubekommen, der mit Psych kompatibel ist. Es lernt. So sehen Sie am Ende dort, wir übergeben diesen Schätzer tatsächlich in psychische Lerne Cross Val Score Funktion und das wird es Psych erlauben, Ihr neuronales Netzwerk zu laufen, genau wie es jedes andere maschinelle Lernmodell in Psych eingebaut war. Es lernt, dass Cross Val Score automatisch Ihr Modell trainieren und dann seine Ergebnisse mit einer sorgfältigen Kreuzvalidierung auswerten und Ihnen eine sehr aussagekräftige Ergebnisse dafür geben kann, wie genau es in seiner Fähigkeit ist, die Klassifizierungen für Daten, die sie noch nie gesehen haben. Also, was diese Schnipsel unter unserem Gürtel? Lassen Sie uns versuchen, ähm , oder ein interessantes Beispiel. Lassen Sie uns endlich über die Amnestie-Probe hinausgehen, die wir tun werden, ist zu versuchen, die politischen Parteien des Kongressabgeordneten nur auf der Grundlage ihrer Stimmen im Kongress mit der Liebkosbibliothekvorherzusagen politischen Parteien des Kongressabgeordneten nur auf der Grundlage ihrer Stimmen im Kongress mit der Liebkosbibliothek . Also lasst uns das jetzt ausprobieren. Dies wird eigentlich ein Beispiel sein, das ich Ihnen geben werde, um sich selbst als Übung auszuprobieren . Also werde ich Ihnen helfen, diese Daten zu laden und aufzuräumen. Aber danach überlasse ich es Ihnen, tatsächlich ein neuronales Netzwerk mit Liebkosung zu implementieren, um diese Dinge wieder so zu klassifizieren , um zu sichern. Was wir tun werden, ist ein paar Daten über eine Reihe von Kongressabstimmungen zu laden, die verschiedene Politiker gemacht haben. Und wir werden versuchen zu sehen, ob wir vorhersagen können, ob ein Politiker Republikaner oder Demokrat ist, nur basierend auf der Abstimmung über 17 verschiedene Themen. Und das ist ältere Daten stammt aus 1984. Also müssen Sie definitiv ein bestimmtes Alter haben, sagen wir, um sich daran zu erinnern, was diese Probleme waren. Und wenn Sie von außerhalb der Vereinigten Staaten kommen, nur um Ihnen einen kurzen Primer in der US-Politik zu geben , gibt es im Grunde zwei politische Parteien in den Vereinigten Staaten, die Republikaner, die eher konservativ sind, und die Demokraten, die tendenziell progressiver sind, und offensichtlich haben sich diese im Laufe der Jahre verändert. Aber das ist das aktuelle Essen. Lassen Sie uns also über unsere Beispieldaten. Ich werde die Pandas-Bibliothek benutzen. Das ist Teil unserer wissenschaftlichen Python-Umgebung hier. Um diese CSB-Dateien oder einfach nur durch Kommas getrennte Datendateien zu laden und diese Daten zu massieren , , bereinigen Sie sie ein wenig und bringen Sie sie in eine Form, die streicheln kann akzeptieren. Also beginnen wir mit dem Importieren. Die Panis Library wird kurz eine PD nennen. Ich habe dieses Array von Spaltennamen aufgebaut, weil es nicht wirklich Teil der C S V-Datei , also muss ich das von Hand bereitstellen. Die Spalten der Eingabedaten werden also die politische Partei sein, Republikaner oder Demokrat, und dann eine Liste von verschiedenen Stimmen, über die sie abgestimmt haben. So zum Beispiel sehen, können wir zum Beispiel sehen,ob jeder Politiker ja oder nein für religiöse Gruppen und Schulen gestimmt hat. Und meine wirklich kurze, die Details dieser speziellen Rechnung waren. Aber wenn Sie diese lesen, können Sie wahrscheinlich die Richtung erraten, in die die verschiedenen Parteien wahrscheinlich stimmen würden . Also gehen Sie weiter und lesen Sie die CSP-Datei. Verwenden von Pandas lesen siehe SV-Funktion. Wir werden sagen, dass alle fehlenden Werte mit einem Fragezeichen gefüllt werden und ein Namensfeld des Feature-Namens übergeben wird . So wissen wir, was die Spalten aufgerufen werden sollen, die nur den resultierenden Datenrahmen mit dem Befehl head anzeigen . Also gehen Sie voran, Hit, Shift, geben Sie ein, um das zu bekommen und wir sollten so etwas sehen, ist nur die ersten 5 Einträge. Für die ersten 5 Politiker, die an der Spitze unserer Daten stehen, können wir sehen, wie die Partei jeder Person in dem Etikett ist, das wir dieser Person zugewiesen haben, das bekannte Label, das wir vorhersagen wollen, und ihre Stimmen zu jedem Thema. Nun können wir auch die Beschreibungsfunktion auf dem resultierenden Datenrahmen verwenden, um einen Überblick über die Art der Daten zu erhalten. Zum Beispiel können Sie diese Menge fehlender Daten sehen, zum Beispiel, obwohl es 435 Personen in der haben eine Partei mit ihnen verbunden. Auf Lee hatten 387 von ihnen zum Beispiel eine Abstimmung über die Kostenteilungsrechnung des Wasserprojekts . Also müssen wir uns hier irgendwie mit fehlenden Daten befassen. Und das einfachste, was zu tun ist, einfach wegzuwerfen Rose, die fehlende Daten haben Jetzt in der realen Welt, möchten Sie sicherstellen, dass Sie nicht eine Art von unbeabsichtigter Voreingenommenheit einführen, indem das tun. Vielleicht gibt es eher eine Tendenz für Republikaner, nicht zu wählen, als Demokraten oder umgekehrt . Vielleicht gibt es eher eine Tendenz für Republikaner, nicht zu wählen, als Demokraten oder umgekehrt Wenn das der Fall wäre, dann könnten Sie Ihre Analyse verzerren, indem Sie Politiker auswerfen, die nicht in jedem aktuellen Thema gestimmt haben. Aber nehmen wir an, dass es keine solche Voreingenommenheit gibt, und wir können einfach voran gehen und diese fehlenden Werte fallen lassen . Das ist es, was diese kleine Linie hier macht. Da steht: „ Drop in einem Ort. Es war wahr. Das bedeutet nur, dass wir alle Zeilen, die Daten fehlen, aus unserem Abstimmungsdatenrahmen fallen . Und dann werden wir noch einmal beschrieben und wir sollten sehen, dass jede Spalte die gleiche Anzahl hat weil an dieser Stelle keine Daten fehlen. Also haben wir Fenster Dinge unten auf 232 Politiker hier, nicht ideal. Aber, hey, damit müssen wir arbeiten. Das nächste, was wir tun müssen, ist tatsächlich massieren diese Daten in eine Form, die streicheln kann konsumieren . Carris beschäftigt sich also nicht mit klugen und endet. Es befasst sich mit Zahlen, also lasst uns alle Weisen ersetzen und endet mit Einsen und Nullen, die diese Zeile hier verwenden. Panis hat eine praktische Dandy ersetzt Funktion auf Datenrahmen, die er verwenden kann, um dies zu tun, und ähnlicher Weise wird die Strings Democrat und Republican ersetzen, auch mit den Zahlen eins und Null. Dies macht dies zu einem binären Klassifizierungsproblem. Wenn wir jemanden als der Label eins einstufen, und das wird darauf hindeuten, dass ein Demokrat und mit Null gekennzeichnet sind, wird darauf hindeuten, dass er republikanisch ist. Also lassen Sie uns voran und führen, dass diese Daten bereinigen, und wir sollten jetzt sehen, ob Sie auf diesem Datenrahmen wieder laufen. Alles wurde in numerische Daten zwischen Null und Eins umgewandelt, was genau das ist, was wir für die Eingabe in ein neuronales Netzwerk wollen. Alles klar, schließlich extrahieren wir diese Daten in, äh, äh, Num Pie Raise, die wir tatsächlich füttern können, um zu streicheln. Um das zu tun, werden wir nur Punktwerte in den Spalten aufrufen, die uns wichtig sind. Wir werden alle Feature-Spalten in das Feature-Array und alle tatsächlichen Labels die tatsächlichen Parteien in allen Klassen Array extrahieren . Also gehen wir weiter und gehen Sie ein, um das zu bekommen und an diesem Punkt werde ich es Ihnen übergeben. Für den Moment. Die Code-Snippets, die Sie benötigen, wurden tatsächlich in den Folien behandelt, kurz bevor Sie hier zu diesem Notizbuch kommen . Also verweisen Sie sich einfach auf das, und das sollte Ihnen das Zeug geben, von dem Sie arbeiten müssen und tatsächlich die Dinge hier ausprobieren . Also möchte ich, dass du es selbst probierst. Nun, meine Antwort ist hier unten. Kein Spähen. Ich habe ein wenig Binge dorthin gelegt, um zu versuchen, dich davon abzuhalten, weiter zu scrollen, als du solltest. Aber wenn Sie hier Pause machen wollen, können wir später wiederkommen. Und Sie können Ihre Ergebnisse mit meinen vergleichen. Okay, an diesem Punkt möchte ich, dass Sie dieses Video pausieren und es selbst ausprobieren. Und wenn du denkst, du hast etwas am Laufen, oder wenn du nur ah, willst voran springen und sehen, wie ich es gemacht habe, wieder spielen und ich werde es dir jetzt zeigen. In Ordnung. Ich hoffe, Sie haben hier Ihre Hausaufgaben gemacht. Lassen Sie uns voran und werfen Sie einen Blick auf meine Implementierung hier wieder. Es ist ziemlich geradeaus. Von den Folien genommen, die ich dir vorhin gezeigt habe. Alles, was wir tun werden, ist das Zeug, das wir brauchen, von Caris hier importieren. Wir verwenden dichte Dropout und sequentielle, und wir werden auch Cross Val erzielte tatsächlich Evaluator-Modell verwenden und tatsächlich veranschaulichen die Integration von Liebkosung mit psychischen gelernt, wie wir auch gesprochen. Also, wenn mit interviewt wurden, wie, es lernt, dass wir eine Funktion erstellen müssen, die unsere Modelle erstellt. Wir können das in Cross Val Partitur übergeben. Letztendlich werden wir sequenzielles Modell erstellen, und wir werden nur dem Muster folgen, das wir früher gezeigt haben, ein binäres Klassifizierungsproblem zu machen . In diesem Fall haben wir 16 verschiedene Themen, über die die Leute abgestimmt haben. Wir werden eine Rela-Aktivierungsfunktion mit einer Schicht von 32 Neuronen verwenden. Und ein ziemlich häufiges Muster ist, mit einer großen Anzahl von Neuronen und einer Schicht und Fenster Dinge nach unten zu beginnen , wenn Sie die höheren Schichten erhalten. Also werden wir diese 32 Neuronen auf eine weitere versteckte Schicht von 16 Neuronen destillieren, und ich benutze den Begriff Einheiten in diesem speziellen Beispiel hier ein wenig beiseite, Mawr und Mawr Forscher Luft mit dem Begriff Einheit anstelle von Neuron. Und das sehen Sie in einigen der AP Augen und Bibliotheken, die herauskommen. Der Grund dafür ist, dass wir anfangen, ein wenig zwischen künstlichen neuronalen Netzwerken zu divergieren und wie sie funktionieren und wie das menschliche Gehirn tatsächlich funktioniert, in einigen Fällen haben Biologie tatsächlich verbessert. Einige Forscher nehmen also Probleme damit, diese künstlichen Neuronen tatsächlich zu nennen, weil wir über Neuronen hinausgehen, und sie werden zu ihrem eigenen Ding an diesem Punkt. Schließlich haben wir eine letzte Schicht mit einem einzigen Ausgangsneuron. Denn es gibt binäre Klassifizierung mit einer Sigmoid-Aktivierungsfunktion zwischen Null und eins zu wählen , und wir werden die binäre Kreuzentropie-Verlust-Funktion der Adam Optimizer verwenden und kick es off. An diesem Punkt betrachten wir einen Streichelungs-Klassifikator, um das tatsächlich auszuführen, und wir werden ein Schätzer-Objekt daraus erstellen, das wir dann in die Psych übergehen können. Es lernt Cross Viale Score Toe, tatsächlich K Fold Cross Validierung automatisch durchführen, und wir werden das mittlere Ergebnis anzeigen, wenn wir fertig sind. Also verschieben, eingeben und sehen, wie lange das dauert. Sie waren 1984 Politiker nicht so polarisiert wie heute, also könnte es ein bisschen schwieriger sein, als es heute wäre. Eigentlich jemand Parteien nur auf der Grundlage ihrer Stimmen vorherzusagen, wird sehr interessant sein, um zu sehen, ob das der Fall ist, mit moderneren Daten. Hey, wir sind schon mit 93,9% Genauigkeit fertig, und das ist, ohne es zu hart zu versuchen. Also, wissen Sie, wir haben keine Zeit damit verbracht, die Topologie dieses Netzwerks zu optimieren. Es alles vielleicht könnten Sie einen besseren Job machen, wissen Sie, wenn Sie eine deutlich bessere Ergebnisse bekommen, posten Sie, dass im Kurs hier, Ich bin sicher, die Schüler würden gerne hören, was Sie getan haben. So gibt es es mit Karat für amore. Interessantes Beispiel. Die Vorhersage der politischen Parteien der Menschen mit einem neuronalen Netzwerk und auch die Integration mit psychischen gelernt, das Leben noch einfacher zu machen. Das ist die Magie der Liebkosung für dich. 11. Convolutional: Bisher haben wir die Macht gesehen, nur ein einfaches mehrschichtiges Perzeptron zu verwenden, um eine Vielzahl von Problemen zu lösen . Aber du kannst die Dinge auf eine Kerbe nehmen. Sheikhoun arrangieren Maura komplizierte neuronale Netzwerke zusammen und machen kompliziertere Probleme mit ihnen. Lassen Sie uns damit beginnen, von Faltung allein, neuronalen Netzwerken oder CNNs kurz zu sprechen . Normalerweise hören Sie von CNNs im Kontext der Bildanalyse, und ihr ganzer Punkt ist, Dinge in Ihren Daten zu finden, die möglicherweise nicht genau dort sind, wo Sie es erwarten. Technisch gesehen nennen wir diesen Feature-Standort. In der Variante bedeutet das, dass, wenn Sie nach einem Muster oder einer Funktion in Ihren Daten suchen, aber Sie nicht wissen, wo sich genau in Ihren Daten befindet, ein CNN Ihre Daten scannen und diese Muster für Sie finden kann, wo immer sie sich befinden. So zum Beispiel in diesem Bild dieses könnte zum Beispiel in diesem Bild diesesStoppzeichens irgendwo im Bild sein, und ein CNN ist in der Lage, dieses Stoppzeichen zu finden, egal wo es sein könnte. Nun ist es nicht nur auf die Bildanalyse beschränkt. Es kann auch für jede Art von Problem verwendet werden, bei dem Sie nicht wissen, wo sich die Funktionen befinden, die Sie in Ihren Daten und maschinelle Übersetzung oder Verarbeitung natürlicher Sprache befinden. Kommen Sie dazu in den Sinn, Sie wissen nicht unbedingt, wo das Substantiv oder das Verb oder eine Phrase, die Sie interessieren, in einem gewissen Absatz Prozent sein könnte und sagen, dass Sie analysieren, aber ein CNN hat es beschränkt und es für Sie ausgesucht. Stimmungsanalyse. Eine andere Anwendung von CNN, so dass Sie vielleicht nicht genau wissen, wo eine Phrase sein könnte, die einige glückliche Stimmung oder eine frustrierte Stimmung anzeigt, oder was? Was auch immer Sie suchen könnten. Aber ein CNN kann Ihre Daten scannen und herausreißen, und Sie werden sehen, dass die Idee dahinter nicht so kompliziert ist, wie sie sich anhört. Dies ist ein weiteres Beispiel für die Verwendung von ausgefallenen Wörtern. Teoh lässt die Dinge komplizierter klingen, als sie wirklich sind. Also, wie funktionieren sie? Während CNN Faltung, alle neuronalen Netzwerke sind von der Biologie Ihres visuellen Kortex inspiriert, es nimmt Hinweise darauf, wie Ihr Gehirn tatsächlich Bilder von Ihrer Netzhaut verarbeitet, und es ist ziemlich cool. Und es ist auch ein weiteres Beispiel für interessantes auftretendes Verhalten. Die Art und Weise, wie Ihre Augen arbeiten, ist, dass einzelne Gruppen von Neuronen einen bestimmten Teil Ihres Sichtfeldes bedienen. Also nennen wir diese lokalen empfänglichen Felder dort nur Gruppen von Neuronen, die nur auf einen Teil von dem reagieren , was du bist. Ich sehe, dass es Sub-Samples das Bild von Ihren Netzhaut kommt und nur spezielle Gruppen von Neuronen für die Verarbeitung bestimmter Teile des Sichtfeldes hat , die Sie mit Ihren Augen sehen . Jetzt überlappen sich diese kleinen Bereiche, um Ihr gesamtes Sichtfeld abzudecken, und das wird Faltung genannt. Faltung ist nur ein schickes Wort zu sagen, ich werde diese Daten in kleine Stücke aufteilen und diese Stücke einzeln verarbeiten, und dann werden sie ein größeres Bild von dem zusammenstellen, was Sie oben in der Kette sehen. Die Art und Weise, wie es in Ihrem Gehirn funktioniert, ist, dass Sie viele Schichten haben. Es ist ein tiefes neuronales Netzwerk, das verschiedene komplexe Städte von Merkmalen identifiziert, wenn Sie so wollen. Die erste Ebene, in die Sie von Ihrer Faltung gehen, gesamte neuronale Netzwerk innerhalb Ihres Kopfes könnte nur horizontale Linien oder Linien in verschiedenen Winkeln oder, Sie wissen, bestimmte Schnittzeiten von Kanten identifizieren verschiedenen Winkeln oder, Sie wissen, . Wir nennen diese Filter, und das könnte in eine Ebene über ihnen fließen, die dann die Linien, die sie auf der unteren Ebene identifiziert, in Formen zusammenfügen würde . Und vielleicht gibt es eine Ebene darüber, die in der Lage wäre, Objekte basierend auf den Mustern von Formen zu erkennen , die Sie sehen. Und dann, wenn Sie mit Farbbildern zu tun haben, müssen wir alles mit drei multiplizieren, weil Sie tatsächlich spezielle Zellen in Ihrem Recht genug haben , um rotes, grünes und blaues Licht zu erkennen . Und wir müssen diese auch zusammen zusammenbauen. Diejenigen, die jeweils einzeln verarbeitet werden, so das ist alles, was ein CNN ist. Es nimmt nur eine Quelle, Bild oder Quelldaten jeglicher Art und zerlegt sie wirklich in kleine Stücke, die als Faltungen bezeichnet werden. Und dann stellen wir diese zusammen und suchen nach Mustern und immer höheren Komplexitäten auf höheren Ebenen in eurem neuronalen Netzwerk. Woher weiß dein Gehirn, dass du dort auf ein Stoppschild schaust? Lassen Sie uns über diese und umgangssprachliche Sprache sprechen, wenn Sie so wollen. Also, wie gesagt, Sie haben einzelne lokale empfängliche Felder, die für die Verarbeitung bestimmter Teile von dem, was Sie sehen, verantwortlich sind , und diese lokalen empfänglichen Felder Luft scannen Ihr Bild und sie überlappen sich miteinander auf der Suche nach Kanten. Sie werden feststellen, dass Ihr Gehirn sehr empfindlich gegenüber Kontrastkanten ist, die es in der Welt sieht , neigt dazu, Ihre Aufmerksamkeit zu erregen, oder? Deshalb erregen die Buchstaben auf dieser Folie Ihre Aufmerksamkeit, denn es gibt einen hohen Kontrast zwischen den Buchstaben und dem weißen Hintergrund hinter ihnen. Auf einem sehr niedrigen Niveau wählen Sie also an den Rändern dieses Stoppzeichens und an den Rändern der Buchstaben auf dem Stoppzeichen Jetzt. . Höhere Ebene könnte diese Kanten annehmen und die Form dieses Stopps erkennen, sagt Science. Oh, da ist ein Achteck, das mir etwas Besonderes bedeutet. Oder diese Buchstaben bilden das Wort Stopp. Das bedeutet auch etwas Besonderes für mich, auch etwas Besonderes für mich, und letztendlich wird das mit jedem Klassifikationsmuster übereinstimmen, das Ihr Gehirn von einem Stoppzeichen hat. Also egal, welches empfängliche Feld dieses Stoppzeichen auf einer Ebene aufgenommen hat, es wird an einem Stop-Zeichen erkannt. Und außerdem, weil Sie Daten und Farben verarbeiten, könnte es auch die Information verwenden, dass das Stoppzeichen rot ist und diese weiter verwenden, um die Klassifizierung dessen zu erleichtern , was dieses Objekt wirklich ist. Irgendwo in deinem Kopf gibt es ein neuronales Netzwerk, das sagt: Hey, wenn ich Ränder sehe, die ein achteckiges Muster anordnen, das viel Rot darin hat und sagt: Stop in der Mitte. Das bedeutet, dass ich wahrscheinlich die Bremsen an meinem Auto schlagen sollte und es ist etwas höher. Das seltsame Gehirn macht eigentlich höhere Argumentation. Das ist es, was passiert ist. Es gibt einen Draht, der besagt: Hey, hier kommt ein Stop-Schild. Ich bremse besser in meinem Auto. Und wenn du lange genug gefahren bist, denkst du nicht einmal mehr an. Mögen Sie es ist fast fest verdrahtet, und das kann buchstäblich der Fall sein. Eine Faltung, ganzes neuronales Netzwerk, eine künstliche Faltung. Alle neuronalen Netze funktionieren auf die gleiche Weise. gleiche genaue Idee. Wie baust du ein CNN mit Liebkosung? Offensichtlich möchten Sie dies wahrscheinlich nicht auf der unteren Ebene Tensorflow-Schicht tun, die Sie können. Aber CNN wird ziemlich kompliziert. Ah, höhere Bibliothek wie Karotten wird essentiell. Zunächst müssen Sie sicherstellen, dass Ihre Quelldaten die entsprechenden Dimensionen der entsprechenden Form aufweisen, wenn Sie dies tun, und Sie werden die tatsächliche Zwei-D-Struktur eines Bildes beibehalten. Wenn Sie hier mit Bilddaten zu tun haben, so kann die Form Ihrer Daten die mit der Zeit der Länge, der Zeiten, Zeiten, der Anzahl der Farbkanäle und nach Farbkanälen sein. Ich meine, wenn es ein Schwarz-Weiß-Bild ist, gibt es nur eine Farbe Schwarz-Weiß, also haben Sie keinen Farbkanal für ein Graustufenbild. Aber wenn es sich um ein Farbbild handelt, hätten Sie drei Farbkanäle, einen für Rot, einen für Grün und einen für Blau, denn Sie können jede Farbe erstellen, indem Sie Rot, Grün und Blau miteinander kombinieren . Okay, jetzt gibt es einige spezielle Arten von Layern in Carriacou verwenden, wenn Sie mit Faltung zu tun haben , alle neuronalen Netzwerke, zum Beispiel gibt es die Umwandlung in D-Layer-Typ, der die tatsächliche Faltung auf einem Zwei-D-Bild. Und wieder zerlegt Faltung dieses Bild nur in kleine Unterfelder, die sich für die individuelle Verarbeitung überlappen . Es gibt auch eine conv one D und eine con drei D Schicht als auch verfügbar. Sie müssen CNN's nicht mit Bildern verwenden, wie wir gesagt haben. Sie kann beispielsweise auch mit Textdaten verwendet werden . Das könnte ein Beispiel für eindimensionale Daten sein, und es ist auch ein Con. Drei D-Schicht ist ebenfalls erhältlich. Wenn Sie mit drei D-volumetrischen Daten irgendeiner Art zu tun haben. So haben die vielen Möglichkeiten dort eine spezielle Schicht und streicheln für CNN's. Ist Max Pooling zu D? Offensichtlich ist das ein Eins D und drei D auch sehr in das. Die Idee davon ist nur, die Größe Ihrer Daten nach unten zu reduzieren. Wenn ich also nur den maximalen Wert in einem bestimmten Block eines Bildes nehme und ihn auf diese Maximalwerte reduziere , ist es nur eine Möglichkeit, die Bilder so zu verkleinern, dass es die Verarbeitungslast des CNN reduzieren kann . Wie Sie sehen werden, ist CNNs sehr rechenintensiv, und je mehr Sie tun können, um die Arbeit zu reduzieren, müssen Sie umso besser tun. Wenn Sie also mehr Daten in Ihrem Bild haben, als Sie ein Maximum benötigen, kann das Ziehen von zwei D-Schichten nützlich sein, um diese bis zur bloßen Essenz dessen zu destillieren, was Sie analysieren müssen. Schließlich müssen Sie irgendwann diese Daten in eine flache Schicht von Neuronen einspeisen, richtig, dass irgendwann in ein Perzeptron gehen wird, und in diesem Stadium müssen wir diese zwei D-Schicht in eine D-Schicht abflachen also könnten wir es einfach in eine Schicht von Neuronen geben. Und von diesem Punkt sieht es wie jede andere Multi-Level-Wahrnehmung aus. Also passiert die Magie von CNN wirklich auf einer niedrigeren Ebene, weißt du. Letztendlich wird es in das umgewandelt, was aussieht wie die gleichen Arten von Multi-Layer-Perceptron ist, dass wir verwendet haben, bevor die Magie passiert und tatsächlich Ihre Daten verarbeitet, die es beinhalten und es auf etwas reduzieren, das überschaubar. So würde die typische Verwendung der Bildverarbeitung mit dem CNN so aussehen. Sie können mit einem Conto de Layer beginnen, der die tatsächliche Faltung Ihrer Bilddaten durchführt. Sie können das mit einer maximalen Ziehung von zwei D-Schicht darüber nachverfolgen, die dieses Bild nach unten destilliert, schrumpft nur die Menge der Daten, mit denen Sie umgehen müssen. Sie könnten dann eine Dropout-Schicht darüber machen, die einfach verhindert, dass ein Überpassen, wie wir zuvor gesprochen haben. An diesem Punkt können Sie eine abgeflachte Ebene anwenden, um tatsächlich in der Lage zu sein, diese Daten in ein Perzeptron zu füttern, und das ist, wo eine dicht oder könnte ins Spiel kommen. So dichte Schicht und Liebkosung ist nur ein Perceptron, wirklich, Sie wissen, es ist eine Schicht von, ah, ah, versteckten Schicht von Neuronen. Von dort aus könnte er eine weitere Drop-out Vergangenheit machen, um weiter zu verhindern, dass das Überpassen und schließlich ein Soft-Max tun , um die endgültige Klassifizierung zu wählen, die aus Ihrem neuronalen Netzwerk kommt jetzt. Wie ich schon sagte, CNN ist unsere rechenintensive. Sie sind sehr schwer und Ihre CPU, Ihr GP Sie und Ihre Speicheranforderungen mischen all die Daten um es beteiligt summieren sich wirklich, wirklich schnell. Und darüber hinaus gibt es eine Menge von dem, was wir Hyperparameter nennen, viele verschiedene Regler und Zifferblätter, die Sie auf CNNs einstellen können. Also, zusätzlich zu den üblichen Sachen, können Sie wie die Topologie Ihres neuronalen Netzwerks einstellen oder was Ihren Benutzer optimieren, welche verlorene Funktion zu verwenden oder welche Aktivierungsfunktion zu verwenden ist. Es gibt auch Entscheidungen über die Colonel-Größen zu treffen. Was ist der Bereich, in dem Sie tatsächlich involviert sind? Wie viele Schichten haben Sie? Wie viele Jahre haben Sie? Wie viel Pooling machen Sie, wenn Sie das Bild reduzieren? Es gibt viele verschiedene hier, die fast eine unendliche Menge an Möglichkeiten für die Konfiguration eines CNN und oft. Nur die Daten zu erhalten, mit denen Sie Ihre CNN trainieren können, ist der schwierigste Teil. Also, zum Beispiel, wenn Sie wollen, Tesla's, das macht tatsächlich Fotos von der Welt um Sie herum, auf der Straße um Sie herum und all die Straßenschilder und Ampeln, während Sie fahren, und jede Nacht sendet es all diese Bilder zurück zu einigen Datenservern irgendwo. So kann Tesla tatsächlich Training in eigenen neuronalen Netzwerken basierend auf diesen Daten durchführen. Wenn Sie also nachts einen Tesla fahren, werden diese Informationen irgendwo in ein großes Rechenzentrum geschleudert, und Tesla wird dran knirschen und sagen, Hey, Hey, gibt es hier ein Muster, um gelernt werden, was ich von den Kameras aus dem Auto sah? Das bedeutet, dass Sie im Fall eines selbstfahrenden Autos auf die Pausen zuschlagen sollten, und Sie denken über den Umfang dieses Problems nach, nur die schiere Größe der Verarbeitung und Gewinnung und Analyse all dieser Daten, die sehr herausfordernd werden in und für sich selbst. Nun, zum Glück, das Problem der Abstimmung der Parameter muss kein SARD sein, wie ich es beschrieben habe, gibt es spezialisierte Architekturen der Faltung, alle neuronalen Netzwerke, die einige tun von dieser Arbeit für Sie. Die Lauder-Forschung versucht also, die optimalen Entschuldigungen und Parameter für einen CNN für eine bestimmte Art von Problem zu finden , und Sie könnten einfach denken, dass dies wie eine Bibliothek ist, aus der Sie ziehen können. So zum Beispiel die Lynette Five-Architektur, gibt es zum Beispiel die Lynette Five-Architektur,die Sie verwenden können, die für die Handschrifterkennung geeignet ist . Insbesondere gibt es auch einen namens Alex Net, für die Bildklassifizierung geeignet ist. Es ist ein tieferes neuronales Netzwerk als Lynette . So haben wir im Beispiel auf der vorherigen Folie gesprochen, so dass wir nur eine einzige versteckte Ebene hatten. Aber Sie können so viele freigegeben haben, wie viel Rechenleistung Sie zur Verfügung haben. Es gibt auch etwas namens Google Lynette. Sie können wahrscheinlich erraten, wer das ausgedacht hat. Es ist noch tiefer, aber es hat eine bessere Leistung, weil es dieses Konzept namens Inception Module einführt. Sie gruppieren im Grunde Faltungsebenen zusammen, und das ist eine nützliche Optimierung dafür, wie alles funktioniert. Schließlich wird das anspruchsvollste heute rez Net genannt, das für Restnetzwerk steht. Es ist ein noch tieferes neuronales Netzwerk, aber es behält die Leistung durch das, was man überspringen nennt. So hat es spezielle Verbindungen zwischen den Schichten des Perceptrons, um die Dinge weiter zu beschleunigen . So baut es auf der grundlegenden Architektur eines neuronalen Netzwerks auf, optimiert seine Leistung, und wie Sie sehen, CNNs, kann sehr anspruchsvoll an der Leistung sein. Also lassen Sie es uns eine Chance geben. Lassen Sie uns tatsächlich einen CNN verwenden und sehen, ob wir bei der Bildklassifizierung einen besseren Job leisten können, als wir es vor der Verwendung eines getan haben. 12. CNNs für Handschrifterkennung verwenden: und wir werden das M NIST-Handschrifterkennungsproblem überdenken, bei dem wir versuchen, eine Reihe von Bildern von Menschen zu klassifizieren, die die Zahl von Null bis neun zeichnen und sehen, ob wir einen besseren Job machen könnten. Verwendung von CNNs gegen CNNs eignet sich besser für Bilddaten im Allgemeinen, besonders wenn Sie nicht genau wissen, wo sich das gesuchte Feature in Ihrem Bild befindet . Wir sollten also erwarten, dass wir hier bessere Ergebnisse erzielen. In Ordnung, also werden wir damit beginnen, all das Zeug zu importieren, das wir von Liebkosung importiert haben,... den Datensatz, der mit dem sequentiellen Modell gespielt hat, damit wir unser neuronales Netzwerk zusammenbauen können . Und dann werden wir all diese verschiedenen Ebenentypen importieren, über die wir in den Folien gesprochen haben . Die dichte Dropout beruhigen auf De Max, ziehen auf t und glätten Schichttypen, und in diesem Beispiel wird die RMS prop Optimizer verwenden. Geh weiter und schmeiß das los. Und der Rest hier für das Laden der Trainings- und Testdaten wird genauso aussehen wie vorher . Immer noch darauf zu warten, kümmert sich darum, sich dort zu initialisieren. In Ordnung, damit das den M nus Datensatz laden sollte, werden wir den Zustand etwas anders gestalten. Also, da ah, Faltung, können alle neuronalen Netzwerke zu D-Daten in all ihren zwei d Ruhm verarbeiten. Wir werden diese Daten nicht in flache 1-D-Arrays von 768 Pixeln umformen. Stattdessen werden wir es in die mit der Zeit der Länge mal die Anzahl der Farbkanäle formen. In diesem Fall unsere Daten Graustufen in der Natur. Es gibt also nur einen einzigen Farbkanal, der genau definiert, wie breiter die Bilder dunkel das jeweilige Pixel ist. Und es gibt ein paar verschiedene Möglichkeiten, wie Daten gespeichert werden können. Also müssen wir hier ein paar verschiedene Fälle behandeln. Es kann als Farbkanäle nach Zeitlänge organisiert werden oder mit Zeiten, Lebenszeiten, Farbkanälen sein Lebenszeiten, . Das ist also, was dieses kleine bisschen Code hier zu tun hat. Aber so oder so, wir werden sehen, ob es sich um ein Kanalformat handelt oder nicht, und die Daten entsprechend umformen. Und wir werden diese Form in dieser Sache speichern, die als Eingabe-Form bezeichnet wird. Das ist die Form unserer Eingabetestdaten und Trainingsdaten . Wie zuvor werden wir diese Daten nach unten skalieren, so dass es als acht Bit-Byte-Daten kommt, und wir müssen das in normalisierte Gleitkommazahl konvertieren. Also werden wir diese Daten in schwebende 80,0,32-Bit-Werte konvertieren und dann jedes Pixel durch 2 55 teilen , um das in eine Zahl zwischen Null und eins zu transformieren. Geh weiter, schlag, Schicht. Geben Sie da rein, um das zu starten, Ordnung. Und wie zuvor werden wir die Labeldaten in ein heißes, kategorisches Format konvertieren , da das gut mit der Ausgabe unseres neuronalen Netzwerks übereinstimmt und hier nichts anderes ist. Wir sind gerade wieder zu einer Sanity-Check gekommen, um sicherzustellen, dass wir unsere Daten erfolgreich importiert haben. Also wählen wir hier auf dem Display ein zufälliges Trainingsset Musterzehenabdruck aus. Und da ist das eine heiße Format der drei beschriftet 0123 Das ist richtig. Menschlich lesbares Format. Drei. Und so sieht es aus. Sicher genug, das sieht aus wie die Nummer drei, so sieht es so aus, als wären unsere Daten in gutem Zustand für die Verarbeitung. Also lassen Sie uns jetzt tatsächlich ein CNN einrichten und sehen, wie das funktioniert. Lassen Sie uns also wie zuvor durch das, was in diesem nächsten Codeblock vor sich geht, beginnen wir mit der Einrichtung eines sequenziellen Modells, das es uns ermöglicht, sehr einfach Schichten aufzubauen , um hier unser neuronales Netzwerk aufzubauen. Und wir werden mit einem ruhigen Händler beginnen. Was diese Syntax hier bedeutet, ist, dass unsere Faltung, alle zwei d-Layer, 32 Fenster oder 32 regionale Felder haben wird, wenn Sie so wollen , dass es verwendet wird, um dieses Bild zu sampeln und jedes dieser Beispiele wird drei mal drei Oberst Größe. Es muss auch die Form Ihrer Eingabedaten kennen, die wir zuvor gespeichert haben, dass CEO gewann von 28 von 28 oder 28 von 28 nach einem, je nach Eingabeformat. Dort fügen wir dann eine zweite Faltung hinzu. Alle Filter darüber, um hoffentlich höherwertige Features zu identifizieren. Dieser wird 64 Colonels haben, auch eine drei mal drei Größe, und wir werden eine gelbe Action-Aktivierungsfunktion verwenden. Also haben wir hier Faltungsschichten aufgebaut. Ah, und wieder möchten Sie einfach jede frühere Forschung wiederverwenden, die Sie für ein bestimmtes Problem tun können. Es gibt so viele Möglichkeiten, CNNs zu konfigurieren, dass Sie, wenn Sie von Grund auf neu beginnen, eine sehr harte Zeit haben werden, es zu optimieren, besonders wenn Sie überlegen, wie lange es dauert, um zwischen jedem Lauf zu generieren. Diese sind sehr ressourcenintensiv. Also habe ich das gerade aus dem CNN-Beispiel genommen, das mit der Liebkosbibliothek kommt, und meine anfängliche Topologie daraus gezogen . Also, jetzt, wo wir unsere Faltungsschichten gemacht haben, werden wir ein Maximum ziehen zwei D Step Toe, tatsächlich reduzieren das ein wenig. Also nehmen wir eine zwei mal zwei Pool-Größe und für jeden zwei mal zwei Pixel-Block in diesem Stadium werden wir das auf ein einzelnes Pixel reduzieren, das das maximale Pixel darstellt, das in diesem Pool gefunden wird. Beachten Sie also, dass sich die Poolgröße von der zugrunde liegenden Oberstgröße von der Faltung unterscheiden kann. Sie haben also wirklich getan, dies ist nur eine Technik, um Ihre Daten auf etwas zu verkleinern, das zu diesem Zeitpunkt besser überschaubar ist. Wird einen Ausfallausfall übergeben, um zu verhindern, dass das Überpassen. Wir werden dann abflachen, was wir bisher haben. Das wird also R zwei D-Daten nehmen und es auf eine 1-d-Schicht abflachen. Und von diesem Punkt wird es wie jedes andere mehrschichtige Perceptron aussehen, genau wie wir es vorher benutzt haben. Also ist die ganze Magie von CNN an diesem Punkt passiert, und jetzt werden wir sie einfach in eine flache Schicht umwandeln, die wir in eine versteckte Schicht von Neuronen eingeben . In diesem Fall haben wir wieder 128 in dieser Schicht mit einer Schiene. Ihre Aktivierungsfunktion wird eine weitere Drop-out Vergangenheit tun, um zu verhindern, dass überpasst und schließlich unsere endgültige Kategorisierung der Zahl Null bis neun durch den Aufbau einer endgültigen Ausgangsschicht von 10 Neuronen mit Leichtigkeit wählen . Soft Max Aktivierungsfunktion darauf. Na gut, also lass uns weitermachen und das wieder laufen lassen. Nichts passiert wirklich, bis wir das Modell tatsächlich starten, so dass es überhaupt keine Zeit in Anspruch nimmt. Wir können ein Modell dieser Zusammenfassung machen, nur um zu überprüfen, dass alles so ist, wie wir es beabsichtigt haben . Und Sie können sehen, dass wir zwei Faltungsschichten hier sind, gefolgt von einer Pooling-Schicht, gefolgt von einem Tropfen aus flachen. Und von dort haben wir einen dichten Dropout in dichten mehrschichtigen Perceptron tatsächlich unsere endgültigen Klassifikationen zu tun . Alles klar, schließlich müssen wir dieses Modell mit einem bestimmten Optimierer und verlorener Funktion kompilieren. In diesem Fall werden wir den Adam Optimizer und die kategorische Crossentropie verwenden, da dies die geeignete Verlustfunktion für ein Mehrfachkategorie-Klassifizierungsproblem ist . Und schließlich werden wir es jetzt tatsächlich ausführen. Wie ich schon sagte, CNN Luft sehr teuer zu laufen. Wenn wir also darüber sprechen, was dieser Befehl tut, , sagt nichts Ungewöhnliches hier nur, dass wir Batches von 32 ausführen werden, die kleiner sind als zuvor, weil es viel höhere Rechenkosten von gibt. Dies hat wirklich 10 Epochen dieses Mal laufen, denn wieder, es dauert eine lange Zeit oder wäre besser. Aber es gibt nur so viel, dass wir Zeit haben, Ausführlichkeitsstufe 2 zu tun, weil das ist, was Sie wählen möchten, um in einem Auge Python-Notebook laufen zu lassen und wir werden in unseren A-Validierungstestdaten übergeben , damit es mit uns funktioniert? Nun, Nun, ich werde das nicht wirklich laufen lassen, weil das tatsächlich eine Stunde dauern könnte, und wenn Sie nicht die beefy Maschine haben, könnte es nicht alles beenden. Weißt du, wenn du nicht genug RAM hast, waren genug CPU-Leistung. Dies könnte sogar zu viel für ein System sein. Also werde ich hier überspringen. Eigentlich lief das früher und es dauerte etwa 45 Minuten. Aber man kann sehen, dass es hier sehr schnell zu einem sehr guten Accuracy Valley konvergierte und es immer noch zunahm. Es wäre also wahrscheinlich Wert gewesen, hier sogar über 10 Iterationen des Trainings hinauszugehen . Aber selbst nach nur 10 bei Box oder 10 Iterationen landeten wir mit einer Genauigkeit von über 99%. Und wir können das tatsächlich anhand unserer Testdaten auswerten und diese 99% Genauigkeit neu erstellen. Das ist also irgendwie genial. CNN lohnt sich also definitiv zu tun, wenn Genauigkeit der Schlüssel ist und für Anwendungen, in denen Leben auf dem Spiel stehen , wie ein selbstfahrendes Auto, Offensichtlich ist das die Mühe wert, oder? Sie wollen vollständige Genauigkeit der Erkennung, wenn es ein Stoppschild vor Ihnen, High Teeley , richtig? Selbst 0,1% Fehler wird in einer Situation wie dieser inakzeptabel sein. Das ist also die Macht von CNN. Sie sind komplizierter, um viel mehr Zeit zu nehmen, um zu laufen. Aber wie gesagt, die Macht von Tensorflow, die streicheln läuft auf Mittel, die Sie ihre Arbeit über eine ganze Wolke von Computern in einer ganzen Reihe von GP verteilen könnten , nutzen unsere auf jedem Computer. Es gibt also Möglichkeiten, dies zu beschleunigen. Wir nutzen das einfach nicht in diesem kleinen Beispiel. Hier, es ist nur anschaulich. So haben Sie es, Ihre erste Faltung, alle neuronalen Netzwerk, und Sie können sehen, wie mächtig es ist und erfolgreich Bildklassifizierung, unter anderem. So cool, gehen wir als nächstes zu einer anderen Art von neuronalem Netzwerk über. 13. Wiederkehrende neuronale Netzwerke: Lassen Sie uns über eine andere Art von neuronalem Netzwerk sprechen, das wiederkehrende neuronale Netzwerk. Wofür sind unsere und endet? Nun, ein paar Dinge, im Grunde ihre ersten Sequenzen von Daten. Und das könnte eine Sequenz in der Zeit sein, so dass Sie es für eine Verarbeitung Zeitreihendaten verwenden könnten . Wir versuchen, eine Sequenz von Datenpunkten im Laufe der Zeit zu betrachten und vorherzusagen, dass das zukünftige Verhalten etwas im Laufe der Zeit ist. Im Gegenzug sind also keine Antworten basierend auf sequentiellen Daten irgendeiner Art. Einige Beispiele für zeitschwerwiegende Daten könnten Weblogs sein, bei denen Sie im Laufe der Zeit verschiedene Treffer auf Ihre Website erhalten, oder Sensorprotokolle unterschiedliche Eingaben von Sensoren aus dem Internet der Dinge erhalten. Oder vielleicht versuchen Sie, das Aktienverhalten vorherzusagen, indem Sie sich historische Börsenhandels-Informationen ansehen . Dies sind alle potenziellen Anwendungen für wiederkehrende neuronale Netzwerke, da sie einen Blick auf das Verhalten im Laufe der Zeit werfen und versuchen, dieses Verhalten zu berücksichtigen, wenn es zukünftige Projektionen macht . Ein anderes Beispiel könnte sein, wenn Sie versuchen, ein selbstfahrendes Auto zu entwickeln, haben Sie möglicherweise eine Geschichte davon, wo Ihr Auto war. Seine vergangenen Flugbahnen, und vielleicht kann das informieren, wie Ihr Auto könnte in der Zukunft drehen wollen, so dass Sie berücksichtigen, die Tatsache, dass Ihr Auto hat sich entlang einer Kurve drehen, um vorherzusagen, dass sie vielleicht weiter fahren sollten entlang einer Kurve, bis die Straße gerade ist. Und noch ein Beispiel. Es muss nicht nur Zeit sein. Es kann jede Art von Sequenz beliebiger Länge sein. Also etwas anderes, das in den Sinn kommt, sind Sprachen, wissen Sie, Sätze dort, nur Sequenzen von Wörtern, richtig, so dass Sie auch unsere und Enden auf Sprache oder Maschine anwenden können. Übersetzungen produzieren Untertitel für Videos oder Bilder. Dies sind Beispiele dafür, wo die Reihenfolge der Wörter im Satz wichtig ist, und die Struktur des Satzes und die Zusammenstellung dieser Wörter könnten mehr Bedeutung vermitteln . Dann könnten Sie nur diese Wörter einzeln ohne Kontext betrachten. Also wieder, in unserem nn kann Gebrauch von dieser Reihenfolge der Wörter machen und versuchen, das als Teil seines Modells zu verwenden . Eine weitere interessante Anwendung von sind ein Ende ist maschinell erzeugte Musik. Sie können auch an Musik denken, wie Text, wo anstelle einer Sequenz von Wörtern oder Buchstaben, Sie haben eine Sequenz von Notennoten. Also ist es irgendwie interessant. Sie können tatsächlich ein neuronales Netzwerk aufbauen, das vorhandene Musikstück aufnehmen kann und sich irgendwie darauf erstrecken kann, indem Sie ein wiederkehrendes neuronales Netzwerk verwenden, um zu versuchen, die Muster zu erlernen, die der Musik in der Vergangenheit ästhetisch ansprechend waren . Konzeptionell sieht so ein einziges rezidivierendes Neuron in Bezug auf ein Modell aus. Es sieht also sehr aus wie ein , künstliches Neuron,das wir uns vorher angesehen haben. Der große Unterschied ist diese kleine Schleife hier. Okay, jetzt, wenn wir einen Trainingsschritt für dieses Neuron ausführen, einige Trainingsdaten in das Neuron eingespeist. Oder vielleicht ist dies eine Eingabe von einer vorherigen Ebene in unserem neuronalen Netzwerk, und es wird eine Art Schrittfunktion nach etwas alle Eingaben in sie anwenden. In diesem Fall werden wir etwas mehr wie eine hyperbolische Tangente zeichnen, weil mathematisch, Sie wollen sicherstellen, dass wir einige der Informationen erhalten und mehr eine glatte Art und Weise. Normalerweise würden wir nur das Ergebnis dieser Summation und dieser Aktivierungsfunktion als Ausgang dieses Neurons ausgeben. Normalerweise würden wir nur das Ergebnis dieser Summation und dieser Aktivierungsfunktion als Aber wir werden das auch wieder in dasselbe Neuron füttern. Wenn wir also das nächste Mal einen Lauf ausführen, werden einige Daten durch diesen Speicher auf diesen Daten aus dem vorherigen Lauf auch in die Ergebnisse summiert . Okay, Also, wenn wir dieses Ding immer und immer wieder laufen, werden einige neue Daten kommen, die zusammen mit dem Ausgang des vorherigen Durchlaufs durch dieses Neuron gemischt werden, und das passiert immer und immer wieder . So können Sie sehen, dass im Laufe der Zeit das vergangene Verhalten dieses Neurons sein zukünftiges Verhalten beeinflusst , und es beeinflusst, wie es lernt. Eine andere Art, darüber nachzudenken, besteht darin, es rechtzeitig zu entrollen. Was dieses Diagramm zeigt, ist das gleiche einzelne Neuron, nur drei verschiedene Male Schritte. Und wenn Sie anfangen, in die Mathematik zu graben, wie unsere Enden funktionieren, ist dies eine nützlichere Art, darüber nachzudenken. Also betrachten wir dies als Zeit, Schritt Null. Sie können sehen, dass eine Art von Dateneingabe in dieses rezidivierende Neuron kommt und das wird eine Art Ausgabe erzeugen, nachdem sie seine Aktivierungsfunktion durchlaufen hat. Und diese Ausgabe wird auch in den nächsten Zeitschritt eingespeist. Also, wenn dies Zeit ist Schritt eins mit dem gleichen Neuron. Sie können sehen, dass dieses Neuron nicht nur einen neuen Eingang erhält, sondern auch den Ausgang aus dem vorherigen Zeitschritt und diese bekommen einige zusammen, die Aktivierungsfunktion wird darauf angewendet, und das wird auch ausgegeben. Und die Ausgabe dieser Kombination wird dann dem nächsten Zeitschritt zugeführt, der diesen Zeitschritt genannt wo ein neuer Eingang für die Zeit Schritt zwei in dieses Neuron eingespeist wird, und der Ausgang aus dem vorherigen Schritt wird auch eingespeist. Sie bekommen einige zusammen, die Aktivierungsfunktion wird ausgeführt und wir haben eine neue Ausgabe. Dies wird als Speicherzelle bezeichnet, weil es Speicher seiner vorherigen Ausgaben im Laufe der Zeit beibehalten . Und Sie können sehen, dass, obwohl es bei jedem Zeitschritt im Laufe der Zeit einige zusammenbringt, diese früheren Verhaltensweisen irgendwie verwässert werden, oder? Also wissen Sie, wir fügen in dieser Zeit Schritt zu diesem Zeitschritt hinzu und dann einige dieser beiden Dinge, die in diesem arbeiten, also eine Eigenschaft von Speicherzellen ist, dass neueres Verhalten eher eine Einfluss auf das aktuelle Verhalten, das Sie aus einem rezidivierenden Neuron erhalten, und dies könnte ein Problem in einigen Anwendungen sein. Es gibt also Wege, gegen das zu arbeiten, über das wir später sprechen können. Ich steigerte das hier. Sie können eine Schicht aus wiederkehrendem Irland haben, also müssen Sie natürlich nicht nur eine haben . In diesem Diagramm betrachten wir also vier einzelne rezidivierende Neuronen, die als Teil einer Schicht zusammenarbeiten , und Sie können einige Eingaben haben. diese Schicht zu gehen, ist das Loch, das in diese vier verschiedenen wiederkehrenden Neuronen verbracht wird . Und dann kann der Ausgang dieser Neuronen wieder in den nächsten Schritt zu jedem Neuron in dieser Schicht eingespeist werden. Also alles, was wir tun, ist , ah, das horizontal zu skalieren. Statt eines einzigen wiederkehrenden Iran haben wir in diesem Beispiel eine Schicht aus vier wiederkehrenden Neuronen, in denen sich der gesamte Ausgang dieser Neuronen im nächsten Lernschritt dem Verhalten dieser Neuronen zufügt. Okay, also können Sie uns skalieren, um mehr als ein Neuron zu haben und kompliziertere Muster als Ergebnis zu lernen , sind nicht Enden eröffnen eine breite Palette von Möglichkeiten, denn jetzt haben wir die Fähigkeit, umzugehen, nicht nur mit Vektoren von Informationen statische Snapshots einer Art von Zustand. Wir können uns auch mit Sequenzen von Daten befassen, so dass es hier vier verschiedene Kombinationen gibt, mit denen Sie umgehen können. Wir können uns mit Sequenz zu Sequenz neuronaler Netzwerke beschäftigen. Wenn wir die Eingabe haben, ist eine Zeit Siri oder eine Art von Sequenz von Daten. Wir können auch eine Ausgabe haben, die eine Zeit Siri oder eine Sequenz von Daten ist. Wenn Sie also versuchen, Aktienkurse in der Zukunft basierend auf historischen Trades vorherzusagen, könnte dies ein Beispiel für Sequenz-Topologie sein. Wir können auch Sequenzen mit den älteren statischen Vektorzuständen mischen und abgleichen, die wir mit der Verwendung von Multi-Layer-Perceptron vorhergesagt haben . Wir würden das eine Sequenz zum Vektor nennen. Wenn wir also mit einer Sequenz von Daten beginnen würden, könnten wir nur eine Momentaufnahme eines Zustands erzeugen. Als Ergebnis der Analyse dieser Sequenz. Ein Beispiel könnte die Abfolge von Wörtern in einem Satz betrachten, um eine Vorstellung von der Stimmung zu erzeugen , die dieser Satz vom letzten vermittelt. Die Leute bekommen das in Kürze ein Beispiel. Du könntest auch umgekehrt gehen . Sie können von einem Vektor zu einer Sequenz gehen, also wäre ein Beispiel dafür, ein Bild zu nehmen, das ein statischer Vektor von Informationen ist, und dann eine Sequenz von diesem Faktor erzeugen würde, zum Beispiel Wörter in einem Satz, der eine Beschriftung aus einem Bild erstellt. Und wir können diese Dinge gemeinsam auch auf interessante Weise ändern. Wir können Encoder und Decoder aufbauen, die ineinander einspeisen. Zum Beispiel könnten wir mit einer Sequenz von Informationen aus, ah, Satz einer Sprache beginnen ah, , verkörpern, was dieser Satz als eine Art Vektordarstellung bedeutet und dann umdrehen in eine neue Folge von Wörtern in einer anderen Sprache. So könnte ein maschinelles Übersetzungssystem funktionieren. beispielsweise Sie könnenbeispielsweisemit einer Folge von Wörtern auf Französisch beginnen, einen Vektor aufbauen, der die Bedeutung dieses Satzes verkörpert und dann neue Geheimnisse von Wörtern in Englisch oder in welcher Sprache Sie wollen. Das ist ein Beispiel für die Verwendung eines wiederkehrenden neuronalen Netzwerks für die maschinelle Übersetzung. So viele spannende Möglichkeiten hier Training sind und enden genau wie CNN's. Es ist schwer. In gewisser Hinsicht. Es ist noch schwieriger. Die Hauptdrehung hier ist, dass wir uns nicht nur durch das neuronale Netzwerk selbst in allen seinen Schichten, sondern auch durch die Zeit weiter ausbreiten selbst in allen seinen Schichten, müssen. Und in der Praxis sieht jeder einzelne dieser Schritte wie eine andere Schicht in unserem neuronalen Netzwerk aus, während wir versuchen, unser neuronales Netzwerk zu trainieren, und diese Zeitschritte können sich schnell summieren. Im Laufe der Zeit landen wir mit einem noch tieferen und tieferen neuronalen Netzwerk, das wir trainieren müssen, und die Kosten für die tatsächliche Durchführung vonGrady und Dissens in diesem zunehmend tiefen neuronalen Netzwerk werden zunehmend einem noch tieferen und tieferen neuronalen Netzwerk, das wir trainieren müssen, und die Kosten für die tatsächliche Durchführung von Grady und Dissens in diesem zunehmend tiefen neuronalen Netzwerk werden zunehmend groß. Soto legte eine obere Kappe auf die Trainingszeit. Wenn wir die Back-Propagation auf eine begrenzte Anzahl von Zeitschritten beschränken, nennen wir diese abgeschnittene Back-Propagation durch die Zeit. Also nur etwas, das Sie beachten sollten, wenn Sie in R N N trainieren. Sie müssen nicht nur durch die von Ihnen erstellte neuronale Netzwerktopologie, sondern auch eine Gesäßtasche , die sich durch alle Zeitschritte ausbreitet, die Sie bis zu , diesem Punkt aufgebaut haben. Wir sprachen vorhin über die Tatsache, dass, wie Sie sich in unserem Ende aufbauen, der Staat aus früheren Zeiten. Schritte werden im Laufe der Zeit verdünnt, weil wir nur das Verhalten vom vorherigen Schritt in unserem Lauf bis zum aktuellen Schritt einführen . Und das könnte ein Problem sein, wenn Sie ein System haben, bei dem älteres Verhalten nicht weniger wichtig ist als neueres Verhalten. beispielsweise Wenn SiebeispielsweiseWörter in einem Satz betrachten, die Wörter am Anfang des Satzes sogar wichtiger sein als Wörter am Ende . Also, wenn Sie versuchen, die Bedeutung eines Satzes zu lernen, die Position des Wortes im Satz gibt es keine inhärente Beziehung zwischen dem , wo dieses Wort ist und wie wichtig es in vielen Fällen sein könnte. Das ist also ein Beispiel dafür, wo Sie etwas tun möchten, um diesem Effekt entgegenzuwirken. Und eine Möglichkeit, dies zu tun, ist etwas namens L S. T. M. Cell erstreckt sich auf eine langfristige, kurzfristige Gedächtniszelle, und die Idee hier ist, dass sie getrennte Ideen sowohl kurzfristig als auch langfristig aufrechterhält Zustände, und es tut dies auf eine ziemlich komplexe Art und Weise. Nun, zum Glück, müssen Sie nicht wirklich verstehen, die netten Details, wie es funktioniert. Es gibt hier ein Bild davon, damit Sie sich ansehen können, wenn Sie neugierig sind. Aberwissen Sie, wissen Sie, die Bibliotheken, die Sie verwenden, werden dies für Sie implementieren. Das Wichtigste ist, dass Sie, wenn Sie mit einer Sequenz von Daten zu tun haben, bei der Sie neuere Daten nicht bevorzugt behandeln möchten, wahrscheinlich eine L S T M-Zelle verwenden möchten, anstatt nur eine gerade nach oben r n n zu verwenden. Es gibt auch eine Optimierung auf L S T M Zellen genannt G R U Zellen, die für gated rezidivierende Einheit steht . Es ist nur eine Vereinfachung auf Ellis TM-Zellen, die fast einen Schwung ausführt. Also, wenn Sie eine Balance oder einen Kompromiss zwischen Leistung in Bezug auf, wie gut Ihr Modell funktioniert und Leistung in Bezug auf, wie lange es dauert, um es zu trainieren, Aguiar Sie verkaufen könnte eine gute Wahl sein. Es ist wirklich schwer, sie zu trainieren. Wenn Sie dachten, CNN's wäre schwer, warten Sie bis VCR und endet. Sie sind sehr empfindlich auf die Topologie ist, dass Sie wählen und die Wahl der Hyper-Parameter . Und da wir Dinge im Laufe der Zeit simulieren müssen, und nicht nur durch Sie wissen, die statische Topologie Ihres Netzwerks. Sie könnten extrem ressourcenintensiv werden. Und wenn Sie hier die falschen Entscheidungen treffen, haben Sie möglicherweise ein wiederkehrendes Netzwerk oder ein Netzwerk, das nicht alles konvergiert. Sie wissen, dass es völlig nutzlos sein könnte, auch wenn Sie stundenlang laufen, um zu sehen, ob es tatsächlich funktioniert. Auch hier ist es wichtig, an früheren Forschungen zu arbeiten. Versuchen Sie, einige Sätze von Entschuldigungen und Parameter zu finden, die gut für ähnliche Probleme funktionieren was Sie versuchen, dio. Das alles macht viel mehr Sinn mit einem Beispiel, und Sie werden sehen, dass es wirklich nirgends annähernd so schwer ist, wie es klingt, wenn Sie streicheln jetzt. Ich habe früher bei IMDB gearbeitet, also kann ich nicht widerstehen, ein filmbezogenes Beispiel zu verwenden. Also lasst uns in das nächste eintauchen und sehen unsere und endet wiederkehrenden neuronalen Netzwerke in Aktion 14. RNN's für Sentiment-Analyse verwenden: Was wir hier tun werden, ist zu versuchen, die Stimmungsanalyse zu machen. Dies wird also ein Beispiel für eine Sequenz zu Vektor sind in und Problem, wo wir die Sequenz von Wörtern in einer vom Benutzer geschriebenen Filmbewertung nehmen. Und wir versuchen, einen Vektor auszugeben, der nur ein einzelner binärer Wert ist, ob dieser Benutzer den Film mag oder nicht, wo er eine positive Bewertung gegeben hat. Dies ist also ein Beispiel für Sentiment-Klassifizierungen mit riel User Review Daten von IMDB. Und da ich früher gelaufen bin, bin ich DVS Engineering-Abteilung. Dies ist ein bisschen zu verlockend für mich, nicht zu tun, ist ein Beispiel hier. Nun, etwas dagegen, du gibst einfach Kredit, wo Kredit fällig ist. Dies wird stark auf eines der Beispiele gezogen, dass Schiffe mit streicheln die IMdB l s t M Probe gezogen. Ich habe hier irgendwie ein wenig verschönert, aber die Idee ist, dass es sagt, Kredit zu geben, wo Kredit fällig ist, und es wärmt mein Herz übrigens , dass sie den IMDb-Datensatz als Teil von Liebkosung enthalten, mit dem sie experimentieren können. Es ist also eine gute Erinnerung für mich zurück. Ich habe es genossen dort zu arbeiten. Wie auch immer, dies ist kein anderes Beispiel dafür, wie wir L S t M Zellen lange kurzfristige Speicherzellen verwenden werden, denn wieder, wenn Sie mit textueller Datensequenz von Wörtern im Satz zu tun haben, ist es nicht notwendigerweise egal, wo in dem Satz, das Wort erschien. Sie möchten nicht, dass die Eigenschaft von Wörtern gegen das Ende des Satzes mawr zu Ihren Klassifizierungen zählt , als Wörter am Anfang des Satzes. In der Tat, oft ist es umgekehrt. Wir werden also eine L S T m-Zelle verwenden, um zu versuchen, dem Effekt entgegenzuwirken, den Sie in normalen RN-Enden sehen , wo Daten im Laufe der Zeit verdünnt werden oder wie die Sequenz in diesem Beispiel fortschreitet . Also lasst uns einfach eintauchen und sehen, wie es funktioniert. Wird damit beginnen, all das Zeug, das wir von Caris brauchen, zu importieren. Wir werden Sequenz Pre-Processing-Module verwenden, sequentielles Modell, so dass wir verschiedene Ebenen einbetten können. Zusammen werden wir eine neue Einbettungsschicht als Teil unserer einführen und zusätzlich zu der dichten Schicht, die wir vorher hatten, werden wir das LS tm Modul importieren und schließlich den IMDb Datensatz und Schiff eingegeben, um all das zu tun und Liebkosung initialisiert zu bekommen. Und das ist jetzt erledigt. So können wir jetzt unsere Schulungs- und Testdaten importieren. Wie ich schon sagte, Caris hat einen praktischen Dandy IMDb Datensatz vorinstalliert. Seltsamerweise hat es 5000 Trainingsbewertungen und 25.000 Testberichte, was mir rückwärts scheint. Aber es ist, was es ist. Der einzige Parameter, den Sie hier für taube Wörter sehen, gibt an, wie viele eindeutige Wörter Sie in Ihren Trainings- und Testdatensatz laden möchten . Indem man also Zahlen gleich 20.000 sagt, bedeutet das, dass ich meine Daten auf die 20.000 beliebtesten Wörter und den Datensatz beschränken werde. Also benutzt jemand ein wirklich obskures Wort. Es wird nicht in unseren Eingabedaten erscheinen. Lasst uns weitermachen und das aufladen. Und da es etwas nachdenken muss, kommt es nicht sofort zurück, sondern ziemlich schnell. Ok, waren wir hier im Geschäft. Werfen wir einen Blick darauf, wie diese Daten aussehen. Also werfen wir einen Blick auf die erste Instanz von Trainingsdaten hier, und was zum Teufel, Es ist nur eine Reihe von Zahlen. Es sieht für mich nicht nach einer Filmbewertung aus. Nun, du kannst den Leuten sehr dankbar sein, die sich dafür interessieren, das für dich zu tun. Die Sache ist also, wenn Sie maschinelles Lernen im Allgemeinen machen, funktionieren Modelle normalerweise nicht mit Wörtern. Sie arbeiten mit Zahlen, oder? Also müssen wir diese Wörter in Zahl umwandeln. Irgendwie ist der erste Schritt, und Liebkosung hat all diese Vorverarbeitung für Sie bereits erledigt. Also wissen Sie, die Nummer eins könnte dem Wort entsprechen, oder ich habe eigentlich keine Ahnung, was entspricht , aber sie haben jedes einzelne Wort zwischen Null und 20.000 codiert, weil wir sagten, wir wollten die 20.000am meisten populäre Wörter zwei Zahlen. Okay, also ist es irgendwie ein Mist, dass wir diese Bewertungen nicht wirklich lesen können und eine Art intuitive Bedeutung dessen bekommen , was diese Bewertungen sagen. Aber es erspart uns eine ganze Menge Arbeit. Und ich habe schon gesagt, dass oft eine Menge der Arbeit im maschinellen Lernen nicht so sehr ist Ihre Modelle zu bauen und sie zu optimieren. Es geht nur darum, Ihre Eingabedaten zu verarbeiten und zu massieren und sicherzustellen, dass Ihre Eingabedaten gut aussehen. Also, auch wenn das nicht wie eine Filmbewertung aussieht. Es ist eine Filmrezension. Sie haben gerade alle Wörter durch eindeutige Zahlen ersetzt, die jedes Wort darstellen. Wir können auch einen Blick auf die Trainingsdaten werfen. So war die Klassifizierung dieser speziellen Überprüfung eine, die nur bedeutet, dass sie es mochte . Die einzigen Klassifizierungen sind also Null und eine, die einer negativen oder positiven Stimmung für diese Überprüfung entsprechen . Okay, also haben wir alle Eingabedaten bereits in numerisches Format konvertiert. Das ist großartig. Jetzt müssen wir nur noch weitermachen und die Dinge aufstellen. Beginnen wir mit der Erstellung einiger Vektoren wurden hier eingegeben. Also werden wir hier unsere Trainings- und Testdaten ausbrechen. Wir werden Sequenz-Stop-Pad-Sequenzen aufrufen, nur um sicherzustellen, dass alles eine Grenze für sie auf 80 Wörter hat . Der Grund, warum wir das tun, ist, weil, wie gesagt, unsere und Enden sehr schnell explodieren können. Sie müssen sich durch die Zeit fortpflanzen. Also wollen wir eine Obergrenze haben, wie oft Schritte wir zurückverbreiten müssen. Indem wir sagen, dass Max Line gleich 80 ist, bedeutet dies, dass wir nur die ersten 80 Wörter in jeder Rezension betrachten und unsere Analyse darauf beschränken werden. Das ist also eine Möglichkeit, unsere Rückenausbreitung durch die Zeit zu kürzen. Es ist eine Art Low-Tech-Art, es zu tun, aber es ist effektiv. Sonst würden wir das Ding tagelang leiten. Okay, der einzige Punkt hier ist, alle diese Bewertungen sowohl im Training als auch im Testdatensatz auf ihre ersten 80 Wörter zu schneiden , die wieder für uns in Zahlen umgewandelt wurden. Lasst uns das Modell selbst aufbauen. Hey, wir sind nicht wirklich davongelaufen. Lauf. Lasst uns weitermachen. Ish getroffen, Shift, Geben Sie auf den Block. Okay, jetzt können wir das Modell selbst aufbauen. Und für solch ein kompliziertes neuronales Netzwerk denke ich, es ist ziemlich bemerkenswert, wie wenige Codezeilen Zehr hier ablaufen. Also lasst uns durchreden. Dies wird mit der Erstellung eines sequentiellen Modells beginnen, was bedeutet, dass wir hier einfach die Topologie unseres Netzwerks einen Schritt nach dem anderen aufbauen können, so dass wir mit einigen zusätzlichen Vorverarbeitung beginnen wurden verwendet wurde eine Einbettungsschicht hier genannt , und alles, was tut, ist, unser Eingabedatum von Wörtern von in die ersten 80 Wörter umzuwandeln und eine Überprüfung in dichte Vektoren einiger fester Größe zu geben . Es wird also einen dichten Vektor mit einer festen Größe von 20.000 Wörtern erzeugen und dann in 128 Treffer und Neuronen in meinem neuronalen Netzwerk eintrichten . Das ist alles, was die Einbettung von Layer tut, ist, nur die eingegebenen Textdaten zu nehmen, diecodiert wurden, und diese in ein Format zu konvertieren, das für die Eingabe in mein neuronales Netzwerk geeignetist codiert wurden, und diese in ein Format zu konvertieren, das für die Eingabe in mein neuronales Netzwerk geeignet . Dann mit einer einzigen Codezeile bauen wir mit einer einzigen Codezeileunser wiederkehrendes neuronales Netzwerk auf. Also sagen wir einfach, fügen Sie in L S T M und wir können die Eigenschaften hier durchgehen, wenn sie 128 wiederkehrende Neuronen in dieser Ellis TM-Schicht haben wollen . Und wir können auch Dropout-Begriffe nur in demselben Befehl hier angeben. Wir können also sagen, dass wir einen Rückgang von 20% machen wollen und das ist alles, was es dazu gibt. Diese eine Codezeile richtet R l s T M neuronales Netzwerk mit 128 rezidivierenden Neuronen ein und fügt Dropout-Phasen von 20% in einem Schritt hinzu. Schließlich müssen wir das auf ein einziges Ausgabe-Neuron mit einer Sigmoid-Aktivierungsfunktion aufkochen weil wir es mit einem binären Klassifizierungsproblem zu tun haben, und das war's. Daher haben wir die Topologie unseres Netzwerks mit nur vier Codezeilen definiert, obwohl es sich um ein sehr kompliziertes, wiederkehrendes neuronales Netzwerk mit L S T M-Zellen und Dropout-Phasen handelt. Aber Liebkosung macht das alles sehr einfach zu tun. Wir müssen dann sagen, streicheln, wie man diese neuronale Vernetzung optimiert, wie man sie trainiert. So werden wir binäre Kreuzentropie verwenden, weil dies letztlich ein binäres Klassifizierungsproblem ist . Hat die Person wie diesen Film oder nicht, wird den Adam Optimizer dieses Mal verwenden, nur weil das ist irgendwie das Beste aus beiden Welten für Optimizer, und dann können wir es starten. Also lassen Sie uns voran gehen und diese beiden vorherigen Blöcke verschieben, eingeben, verschieben, eingeben und an diesem Punkt, Sie sind bereit, tatsächlich Ihr neuronales Netzwerk zu trainieren. Und lasst uns einfach durchlaufen wird hier los. Es ist sehr ähnlich aus den vorherigen Beispielen. In diesem Fall werden wir Chargengrößen von 32 Bewertungen auf einmal verwenden. Wir werden es über 15 Trainingsschritte oder Epochen Satz von Ausführlichkeitsschicht ausführen, die mit I Python Notebooks kompatibel ist und die Validierungsdaten vierziger Jahre sowie zur Verfügung stellen. Nun, wieder, ich werde das jetzt nicht wirklich ausführen, weil es etwa eine Stunde dauern wird. Wie ich schon sagte, unsere und Enden sind hart. Sie brauchen viel Rechenleistung. Ressource ist. Und da ich nur diese Online-Single-CPU betreibe, habe ich nicht einmal Dinge konfiguriert, um meinen GP zu verwenden. Sie sind geschweige denn ein Cluster von Computern. Das dauert sehr lange. Aber ich habe es früher ausgeführt, und Sie können die Ergebnisse hier sehen. So über 50 Net Box, können Sie sehen, dass die Genauigkeit, die es auf den Trainingsdaten gemessen wurde begann zu konvergieren. Scheint so, als ob es nach etwa 13 Schritten so gut war, wie es bekommen würde. Und dann können wir dieses Modell anhand des Testdatensatzes tatsächlich auswerten. Also lassen Sie uns voran und rufen Sie Evaluate auf, mit unseren Testdaten wieder 32 Chargen verwenden, und wenn wir laufen würden, würden wir sehen, dass wir hier mit einer Genauigkeit von 81% auf unserem Modell enden . Klingt nicht so beeindruckend, aber wenn man bedenkt, dass alles, was wir tun, ist die ersten 80 Wörter jeder Rezension zu betrachten und zu versuchen, nur basierend auf diesem Anfang herauszufinden. Ob ein Benutzer den Film mag oder nicht, das ist nicht so schlimm. Aber wieder, treten Sie zurück und denken Sie darüber nach, was wir gerade hier gemacht haben. Wir haben ein neuronales Netzwerk geschaffen, das im Wesentlichen englischsprachige Bewertungen lesen und eine Art Bedeutung hinter ihnen bestimmen kann. In diesem Fall haben wir es trainiert, wie man eine Sequenz von Wörtern zu Beginn eines Films zu nehmen, überprüfen, dass einige menschliche Straße und klassifizieren, dass als eine positive Bewertung oder eine negative Bewertung. Also, in einem sehr realen Sinne, haben wir auf einer sehr einfachen Ebene, unseren Computer gelehrt, wie man lesen kann. Wie cool ist das? Und die Menge an Code, für die wir geschrieben haben, war minimal, oder? Also ist es irgendwie zu verleumden. Es geht wirklich nur darum zu wissen, welche Technik Sie verwenden müssen, um Ihr neuronales Netzwerk aufzubauen, die entsprechenden Trainingsdaten bereitzustellen, und dann erledigt Ihr neuronales Netzwerk den Rest. Es ist wirklich irgendwie gruselig, wenn man sich zurücklehnt und trotzdem darüber nachdenkt. Cooles Zeug. Es ist also ein großartiges Beispiel dafür, wie mächtig Liebkosung sein kann und ein großartiges Beispiel für eine Anwendung eines wiederkehrenden neuronalen Netzwerks, das nicht das typische Beispiel für Börsenhandelsdaten oder so etwas verwendet , sondern für die Stimmungsanalyse wo wir eine Sequenz von Wörtern genommen haben und diese verwenden, um eine binäre Klassifizierung einer Stimmung basierend auf dieser Sequenz zu erstellen, so lustige Sachen sind in Enden und streicheln. 15. Transfer: die Welt der Augen in einer seltsamen und aufregenden Zeit. Mit Transfer-Learning war es noch nie einfacher, ein vollständig ausgebildetes künstliches Intelligence-Modell einzusetzen und es für reale Probleme zu verwenden. Die Idee hier ist, bereits vortrainierte Modelle zu verwenden, die da draußen sind, für jedermann im Internet verfügbar sind. Und für viele häufige Probleme können Sie einfach ein vorgeschultes Modell importieren, das jemand anderes die harte Arbeit geleistet hat, die richtigen Parameter und die richtige Topologie zusammenzustellen und zu optimieren und herauszufinden, und sie einfach zu verwenden. Also, zum Beispiel, wenn Sie versuchen, Bildklassifizierung durchzuführen, gibt es vortrainierte Modelle da draußen, die Sie einfach einen Teil des Mordes namens rez importieren können . Net Inception, Mobile Net in Oxford, v. G. Oder einige Beispiele. Und sie kommen vortrainiert mit einer sehr Vielzahl von Objekttypen. So können Sie in vielen Fällen einfach eines dieser Modelle aus dem Regal entfesseln, eine Kamera auf etwas zeigen, und es wird Ihnen sagen, was es iss. Das ist irgendwie verrückt. Ebenso für die Verarbeitung natürlicher Sprachen auch vortrainierte Modelle, gibt es für die Verarbeitung natürlicher Sprachen auch vortrainierte Modelle,wie zum Beispiel, wo Tyvek und Handschuh, die Sie verwenden können, um Ihrem Computer im Grunde beizubringen, wie man lesen . Mit nur ein paar Zeilen Code. Jetzt können Sie sie einfach so verwenden, wie sie ist, aber Sie können sie auch einfach als Ausgangspunkt verwenden, wenn Sie auf sie erweitern oder auf ihnen für spezifischere Probleme aufbauen möchten . Selbst wenn sie das spezifische Problem nicht lösen, das Sie zu lösen versuchen, können Sie immer noch die vortrainierten Modelle als Ausgangspunkt verwenden, um daraus aufzubauen, ist, Sie wissen viel einfacher zu machen. Sie müssen nicht viel Zeit damit verschwenden, die richtige Topologie und Parameter für eine bestimmte Art von Problem herauszufinden . Sie können mit ihnen alles beginnen, was bereits alles für Sie herausgefunden hat, und fügen Sie einfach oben drauf . Dies wird Transfer Learning genannt. Grundsätzlich übertragen wir und bestehendes Zugmodell von jemand anderem auf Ihre Anwendung. Jetzt finden Sie weitere dieser vortrainierten Modelle und die sogenannten Modellzoos. Ein beliebter wird die Cafe Models genannt. Oh, und es ist ah, ich bin mir nicht sicher, an all das zu denken. Ich meine, es ist super einfach, ein I bereitzustellen. Nun, wie Sie bald in unserem nächsten Beispiel sehen werden, können Sie einfach ein vorhandenes Modell importieren, das modelliert und es mit, nur, wissen Sie, vier oder fünf Codezeilen. Man muss nicht wirklich, Ah, sehr guter Entwickler sein , um AI tatsächlich für praktische Anwendungen nutzen zu können. So irgendwie ein seltsamer Ort für die Industrie, um jetzt zu sein und irgendwie eröffnet eine Menge interessanter und potenziell beängstigender Möglichkeiten. Wie Leute anfangen könnten, diese Technologie zu verwenden, wenn es eine so niedrige Barriere gibt, um jetzt tatsächlich zu verwenden, lassen Sie uns in ein Beispiel der realen Welt eintauchen, und ich werde Ihnen zeigen, wie beängstigend einfach es jetzt ist. Lassen Sie uns also in Transfer-Learning eintauchen. Öffne das Transfer-Lern-Notizbuch in deinem Kursmaterial, und du solltest das sehen, und du wirst bald sehen, wie verrückt es einfach ist zu benutzen und wie verrückt es gut sein kann. Also werden wir hier das Resonanzmodell 50 verwenden. Dies wird für die Bildklassifizierung verwendet, so dass es eine unglaublich einfache Möglichkeit ist, Objekte in beliebigen Bildern zu identifizieren. Also, wenn Sie, ah, ein Bild von irgendetwas haben ah, , vielleicht kommt es von einer Kamera oder Videobildern oder was haben Sie diese comptel Sie? Was ist auf dem Bild? Ziemlich zuverlässig, es stellt sich heraus. Also lasst uns etwas Spaß damit haben. Also, nur um einen Punkt zu beweisen, werde ich einige meiner eigenen Urlaubswahlen hier damit versuchen. Es ist so werden wir sicher sein, dass die Bilder, die ich gebe Bewohner 50, um unsere Bilder zu klassifizieren , die es noch nie gesehen hat, und sehen, was es damit tun könnte. Zum Beispiel habe ich dieses Bild von einem Kampfflugzeug gemacht, während ich die Wüsten Kaliforniens erkundete. Lassen Sie uns einfach laufen, dass Dies ist mit Ihrem Kursmaterial enthalten, und dort haben wir ein Bild von einem Kampfflugzeug. zunächst sehen, Lassen Sie unszunächst sehen,ob das Resident 50-Modell es identifizieren kann und sehen, was an der Beschichtung beteiligt ist . Erster. Wir müssen nur die Module importieren, die wir brauchen, also müssen wir das Resident 50-Modell selbst wieder importieren, das in Liebkosung eingebaut ist, zusammen mit einigen anderen Modellen. Wir müssen nicht einmal die Mühe machen, es herunterzuladen und zu installieren. Es ist nur da und von wir werden auch importieren, um Pre-Verarbeitungstools zu verwalten, sowohl von streicheln selbst und ist Teil des Resident 50-Pakets selbst. Wir werden auch wichtig, ähm, Kuchen, weil wir taub Kuchen verwenden, um die Bilddaten tatsächlich in einen höheren Strahl zu manipulieren , was letztlich das ist, was wir brauchen, um in einen neuralen -Netzwerk. Also lasst uns fortfahren und den Block jetzt laufen lassen. Eine Art von Einschränkung des Resident 50-Modells ist, dass Ihre Eingabebilder auf 24 x 2 24 Auflösung sein müssen . Wissen Sie, das ist zum Teil, um sicherzustellen, dass es effizient laufen kann. Es ist auch auf eine von 1000 möglichen Kategorien beschränkt, und das klingt vielleicht nicht nach viel. Aber ich denke, Sie werden überrascht sein, wie viel Detail es Ihnen geben wird, was die Sache ist. Also lasst uns weitermachen und das Bild wieder aufladen. Dieses Mal werden wir es auf 2 24 mal 2 24 skalieren, während wir es laden, und wir werden das in einen tauben Pirat mit diesen zwei Codezeilen konvertieren und dann die residenten 50 Modelle vor Prozesseingabe aufrufen , um etwas zu tun, um das vorzubereiten -Daten. Ich nehme an, es skaliert es in den gewünschten Bereich und macht vielleicht eine Vorverarbeitung des Bildes selbst, damit es besser funktioniert. Es ist irgendwie eine Blackbox, und das ist ein bisschen. Was ist seltsam an der Verwendung von Transfer-Learning? Weißt du, du nimmst es irgendwie auf den Glauben, dass es das Richtige tut. Aber aus praktischer Sicht ist das für Dio keine schlechte Sache. Lass uns weitermachen und das alles in Ordnung machen, also hat es mein Bild vorbearbeitet. Das war ziemlich schnell. Jetzt laden wir das eigentliche Modell selbst. Eine Codezeile ist alles, was nötig ist. Modell entspricht Resident 50. Die Gewichtungen dort stellen dar, dass Gewichtungen verwendet werden, die aus dem Bild-Netzdatensatz gelernt wurden. So können Sie sogar Variationen von Resident 50 verwenden, die auf verschiedenen Sätzen von Bildern trainiert wurden . Möglicherweise dort. Also lassen Sie uns voran und laden Sie das Modell und das ist erledigt. Jetzt können wir es einfach benutzen. Also haben wir jetzt ein vorgeschultes Bildklassifizierungsmodell mit einer Codezeile, und wir können es jetzt einfach verwenden. Alles muss nur anrufen. Sagen Sie es voraus und wir sind fertig, dass es das ist. Es ist wirklich so einfach. Also lasst es uns versuchen. haben wir. Ah, wie Sie sich an unser vorverarbeitetes Kampfflugstrahlbild hier im X-Strahl erinnern, und wir werden nur modellierte operative Decks nennen und sehen, was es zurückkommt. Ich komme mit einer Klassifizierung zurück und um das in etwas menschliches Lesbares zu übersetzen, wird einfach die Decodierungs-Prognosefunktion aufrufen, die auch mit dem Resident 50-Modell kommt . Es ist einfach so einfach. Okay, buchstäblich zwei Codezeilen hier, richtig? Wir entscheiden eine Zeile, um das Resident 50-Modell tatsächlich zu laden und dieses Lernen auf unsere Anwendung zu übertragen , wenn Sie so wollen, indem Sie einen bestimmten Satz von Gewichten angeben, die aus einem bestimmten Satz von Bildern gelernt wurde. Und dann rufen wir einfach „ Vorhersagen“ auf diesem Modell und wir sind fertig. Das war's. Lassen Sie uns das laufen und sehen, ob es tatsächlich funktioniert. Wow. Okay, ja, ja, es ist die beste Vorhersage war eigentlich Kampfflugzeug, und genau das ist das, wovon es ein Bild ist, obwohl es dieses Bild noch nie gesehen hat. Und ich habe nichts getan, um sicherzustellen, dass das Foto aus dem rechten Winkel ist oder richtig gerahmt oder so etwas oder, wissen Sie, vorverarbeitet. Mit viel Kontrast funktioniert es einfach. Es ist irgendwie gruselig. Gut. Zweite Vermutung war eine Rakete, gefolgt von Projektil. Und ja, es gab auch Raketen und Geschosse in dem Flugzeug. Also erzählte mir nicht nur, dass es ein Kampfflugzeug war, und erzählte mir, dass es ein Kriegsflugzeug war, das Raketen darauf hatte . Ich meine, Wow, das ist verrückt. Gut, richtig? Versuchen wir es mit einigen anderen Bildern. Mögen wir nur Glück haben. Also lassen Sie uns ein wenig bequem machen. Ah, funktioniere hier, um dies auf einem bestimmten Bild schneller zu tun. Also werden wir hier eine kleine Klassifizierungsfunktion schreiben, und es wird beginnen, indem ein Bild von der Sache angezeigt wird, die wir hier zu klassifizieren beginnen . Es wird dann das Bild nach oben senken und es auf die erforderliche Größe auf 24 x 2 24 skalieren. Konvertieren Sie das in einen tauben Scheiterhaufen, ein Pre-Prozess es und dann rufen Sie einfach an, prognostizieren Sie auf dem Resident 50-Modell und sehen Sie, was es zurückkommt. Also, jetzt könnten wir einfach sagen klassifizieren und was auch immer unser Bilddateiname ist, und es wird uns sagen, was ISS Also haben wir unseren ein wenig Code hier auf nur eine Zeile reduziert jetzt, also kann ich jetzt nur einen Hit Shift eingeben, um diese Funktion zu definieren. Und jetzt könnte ich einfach sagen, Nun, ich habe, AH-Akte namens Bunny Dodge a Pig und meine Kursmaterialien. Lassen Sie uns diese Verschiebung klassifizieren. Geben Sie ein. Es gibt ein Bild von einem Kaninchen in meinem Vorgarten, das ich einmal genommen habe, und sicher genug, die Top-Klassifizierung ist, dass Kaninchen gefolgt von Haaren. Also sagt es nicht nur, dass es ein Kaninchen ist, ist mir sagen, welche Art von Kaninchen ich nicht wirklich kenne meine Kaninchenart so gut, also bin ich mir nicht sicher, ob das eigentlich ein Holzkaninchen ist, aber es könnte sein, Du kennst deinen Weg. Es ist ziemlich beeindruckend. Ich meine, es ist nicht einmal wie ein prominentes Stück dieses Bildes. Es ist einfach so, als würde ich da in der Mitte sitzen, meinem Rasen. Es ist auch nicht einmal so klar von einem Foto . Stellen Sie sich diese Skala nach unten 2 auf 24 mal 2 24 Es gibt wirklich nicht viele Informationen dort, aber es ist immer noch herausgefunden, dass das ein Kaninchen ist. Wie wäre es mit einem Feuerwehrauto Bild von einem Feuerwehrauto und das ist auch kein normaler Feuerwehrauto. Das ist wie in dem gleichen Luftfahrtmuseum, das ich ein Foto von diesem Kriegsflugzeug gemacht habe ,einer , Art von einem antiken Feuerwehrauto, der von der Luftwaffe benutzt wurde. Aber trotzdem ist Feuerwehrauto die beste Vorhersage. Äh, wow, das ist irgendwie cool. Ich habe einmal ein Foto von meinem Frühstück in einem schicken Hotel in London gemacht. Mal sehen, was es damit macht. Ein komplettes englisches Frühstück, wohlgemerkt. Wenn man in London ist, muss man essen. Seine Londoner tun es. Eigentlich weiß ich nicht, ob er dort wirklich englisches Frühstück gefühlt hat, aber es ist immer noch gut. Ah, ja. Also nahm es auf, dass es einen Esstisch auf diesem Bild gibt. Da ist ein Tablett mit meinem Essen. Ein Restaurant. Ich meine, das , war eigentlich Zimmerservice, aber man könnte sich definitiv vorstellen, dass das in einem Restaurant ist. Also, ja, wieder, ein beeindruckender Job hier auf einem zufälligen Foto aus dem Urlaub. Es hat dieses Bild noch nie gesehen. Ich nahm absolut keine , Gedanken daran,sicherzustellen, dass dies ein Bild war, das gut mit maschinellem Lernen funktionieren würde . Künstliche Intelligenz für Bildklassifizierungen. Lasst uns weitermachen. Als ich England war,besuchte ich einige Schlösser in Wales. Als ich England war, Bild einer Besetzung lebt Hat Goto Wale. Leute, es ist wunderschön dort. Äh, ja, es ist ein Schloss. Das war's. Hör auf Vorhersage. Zweite Vermutung war ein Kloster oder ein Palast. Beide gute Vermutungen, aber ja, es ist ein Schloss. Und, wissen Sie, es ist nicht einmal ein typisch aussehendes Schloss. Ich hatte es immer noch herausgefunden. Das ist unglaubliches Zeug. Alles klar, mal sehen, ob ich es hochkriegen kann. Ich nahm auch eine Reise nach New Mexico einmal und besuchte hieß die Very Large Array. Dies ist im Grunde eine Reihe von riesigen Radio-Astronomie-Gerichten mit nur 1000 Klassifikationen . Ich würde mir nicht vorstellen, dass es das richtig machen würde. Es gibt also ein Bild. Es sind nur ein Haufen gigantischer Radioastronomie-Teleskope. Und da steht, es ist ein Radioteleskop. Uh, hat das getan? Das ist etwas verwirrendes Zeug, Leute. In Ordnung, noch eins. Ich habe einmal ein Foto von Bridge gemacht und du erinnerst dich, was Bridget ist. Londoner Brücke. Offenbar eso Okay, was ist dieser Bewohner 50 eine Hängebrücke. Und es gibt auch einen Ketten- und Kettengliederzaun da drin, für ein gutes Maß. Ah, das ist ziemlich beeindruckend, oder? Ich meine, wenn Sie also eine Bildklassifizierung vornehmen müssen. Sie müssen nicht einmal die Details wissen, wie Faltung l neuronale Netzwerke Arbeiter, wie sie zu optimieren. Und, ah, du weißt, wie man die richtige Entschuldigung aufbaut, und es hat sich auf die richtigen Hyperparameter gesetzt. Sie können einfach die Arbeit eines anderen verwenden, die das bereits getan hat, und indem Sie Modelle von den Café-Modellen verwenden, die anderswo für viele häufige Probleme sind , können Sie in ein paar Codezeilen aufstehen und laufen. Es war noch nie einfacher, künstliche Intelligenz in einer realen Anwendung zu verwenden. Obwohl es gut ist, die Grundlagen zu verstehen, besonders wenn Sie etwas tun wollen, das niemand je zuvor für häufige AI-Probleme getan hat, gibt es in den letzten Jahren so viel Forschung, dass es eine gute Chance gibt dass jemand bereits das Problem gelöst hat, das Sie lösen wollen. Und Sie können einfach ihre Ergebnisse wiederverwenden, wenn sie freundlich genug waren, um sie auf einem Modell zu veröffentlichen , die irgendwo , Wow, also ja, ausprobiert auf ein paar Fotos von Ihren eigenen zu meinem Nicht, wenn Sie einige nur den Kurs werfen Materialien und rufen Sie meine Classify Funktion auf und sehen Sie, was es damit macht. Viel Spaß damit, und Sie können auch einige verschiedene Modelle ausprobieren und sehen, wie sie sich anders verhalten. Resident 50 war eigentlich das Modell, das am besten für meine Fotos funktionierte. Aber es gibt andere Modelle, die mit Liebkosung enthalten sind, einschließlich Inception und Mobile Net, die Sie vielleicht ausprobieren möchten. Wenn Sie mit ihnen spielen möchten, müssen Sie hier zur Dokumentation zurückkehren. Hier gibt es einen Link dazu. Sie müssen wissen, in welchen Bilddimensionen es zum Beispiel die Eingabe erwartet, oder jemand, der alle arbeitet. Also ja, ich gebe es, um es zu versuchen und ah, Mann, es ist Verstand, Sachen zu blasen. Leute wie, äh, äh, sitzen und lassen Sie es sinken, dass es so einfach ist, Ai jetzt zu benutzen. 16. Neuronale Netzwerke Absacken von Lernrate und großen Hyperparameters: Lassen Sie uns ein wenig darüber reden, Ihre neuronalen Netzwerke zu optimieren. Das ist kein Zeug, das normalerweise gelehrt wird, aber ich versuche nicht, es so gut wie möglich zu vermitteln. Lassen Sie uns also über Lernrate sprechen. Zunächst einmal, was meinen wir mit Lernrate? Nun, Sie müssen verstehen, wie diese neuronalen Netzwerke trainiert werden. Sie verwenden eine Technik namens Gradienten Abstieg oder etwas Ähnliches wie Gradienten Abstieg ist verschiedene verschiedene Geschmacksrichtungen davon da draußen. Die Grundidee ist, dass wir an einem zufälligen Punkt von Gewichten in unserem neuronalen Netzwerk beginnen. Und wir haben gerade verschiedene Lösungen, verschiedene Sätze von Gewichten versucht, einige Kostenfunktionen zu minimieren , die wir über mehrere Epochen definiert haben. Das sind also die Schlüsselwörter dort. Wir haben viele Epochen, Iterationen, über die wir trainieren. In jeder Epoche versuchen wir einen anderen Satz von Gewichten in unserem neuronalen Netzwerk und versuchen, einige Kostenfunktionen zu minimieren, was die Gesamtgenauigkeit sein könnte, wie gut es Vorhersagen für unsere Validierungssätze macht. Also müssen wir eine Art Reim und Grund haben wie wir diese Proben von verschiedenen Lösungen, unterschiedlichen Gewichten machen, wenn Sie so wollen, wenn wir das in eine Art zweidimensionalen Graphen kochen würden, würde es vielleicht etwas aussehen wie diese, wo wir nur verschiedene Punkte hier entlang einer Kurve von Lösungen abtasten. Und wir versuchen, diejenige zu finden, die die Kostenfunktion minimiert. Das ist also die Y-Achse hier. Was wir also versuchen zu finden, ist der tiefste Punkt in diesem Diagramm. Und wir versuchen, dorthin zu gelangen, indem wir es an verschiedenen Punkten abtasten und von jeder vorherigen Probe lernen. Das ist es, worum es bei Gradienten Abstieg geht. Bei der Lernrate geht es also darum, wie weit diese Proben voneinander entfernt sind. So sehen Sie hier vielleicht, dass wir hier angefangen haben und unsere Lernrate sagte: Okay, ich werde einen anderen Punkt hier versuchen und es erneut versuchen, so weiter und so weiter, bis ich endlich den tiefsten Punkt entlang dieser Kurve finde und das mein Bestes nenne -Lösung. Also nicht zu schwer, die Auswirkungen der Lernrate auf Ihr Training zu verstehen, oder? Wenn Sie eine zu hohe Lernrate haben, können Sie diese Lösung möglicherweise vollständig überschritten. Stellen Sie sich also vor, meine Lernrate war riesig und ich ging direkt von hier nach hier. Vielleicht vermisse ich diesen Punkt. Sie sind ganz, wenn meine Lernrate zu hoch wäre. Aber Sie können sehen, dass, wenn meine Lernrate zu klein ist, ich hier eine ganze Menge verschiedener Punkte abtasten werde. Und es wird eine Menge Epochen dauern, viele Schritte, um tatsächlich die optimale Lösung zu finden. Eine zu hohe Lernrate könnte bedeuten, dass ich die richtige Lösung vollständig überschritte, aber zu klein für die Lernrate bedeutet, dass mein Training länger dauern kann, als es nötig ist. Jetzt ist die Lernrate ein Beispiel für das, was wir Hyperparameter nennen. Es ist einer der Regler und Zifferblätter, die Sie während des Trainings Ihres Deep-Learning-Modells verwenden , die sich auf das Endergebnis auswirken können. Und oftmals können diese Hyperparameter genauso viel Einfluss auf die Qualität Ihres Modells haben wie die Topologie des Modells, das Feature-Engineering, das Sie bei allem anderen durchgeführt haben. Es ist also nur ein weiteres Stück des Puzzles, an dem Sie experimentell ankommen müssen. Neben der Lernrate ist ein weiterer wichtiger Hyperparameter die Chargengröße, und so werden in jeder Epoche viele Trainingsbeispiele verwendet. Hämmerte das in deine Köpfe, Jungs, weil es irgendwie konterintuitiv ist. Sie würden denken, dass eine große Chargengröße eine gute Sache wäre, oder? Je mehr Daten, desto besser. Aber nein, so funktioniert es nicht. Es stellt sich heraus, dass, wenn Sie eine kleine Chargengröße haben, es eine bessere Fähigkeit hat, aus dem, was wir lokale Minima nennen, herauszuarbeiten. Also in diesem Beispiel hier können Sie sehen, dass wir hier ein Minima haben, eine Art Dip in der Grafik hier, wo wir einen ziemlich guten, schönen niedrigen Verlust Funktionswert hier haben , was wir versuchen zu optimieren, ist hier ziemlich gut. Aber während des Gradientenabstiegs besteht die Gefahr, dass wir in diesen lokalen Minima stecken bleiben , wenn in der Tat die bessere Lösung hier irgendwo ist. Also wollen wir sicherstellen, dass wir während des Prozesses des Gradientenabstiegs eine gewisse Fähigkeit haben, unseren Weg aus dieser Sache zu wackeln und diese bessere Lösung zu finden. Es stellt sich heraus, dass kleinere Losgrößen das effektiver machen können als größere. So kann eine kleine Chargengröße seinen Weg aus diesen lokalen Minima wackeln. Aber eine große Chargengröße könnte dort stecken bleiben, wie im Grunde darauf warten, wenn Sie so wollen. So können Chargengrößen, die zu groß sind, am Ende in der falschen Lösung stecken bleiben. Und was noch seltsamer ist, dass Sie normalerweise zufällig Ihre Daten zu Beginn jeder Trainingsperiode mischen. Dies kann sich am Ende als sehr inkonsistente Ergebnisse von Run zu Run manifestieren. Also, wenn meine Chargengröße nur ein bisschen zu groß ist, werde ich manchmal in diesen Minima stecken bleiben und manchmal werde ich es nicht. Und ich werde sehen, dass in den Endergebnissen das von Lauf zu Lauf zu sehen ist. Manchmal bekomme ich diese Antwort und manchmal bekommen sie diese Antwort, richtig. Also gehämmert dies in Ihren Kopf Jungs ist kleinere Chargengrößen neigen dazu, nicht in lokalen Minima stecken zu bleiben, aber große Chargengrößen können zufällig auf die falsche Lösung konvergieren. Eine große Lernrate kann die richtige Lösung übersteigen, aber kleine Lernraten können die Trainingszeit erhöhen. Also denken Sie daran, schreiben Sie es auf, wichtige Dinge und es ist wieder, es ist ein Beispiel für Dinge, die die meisten Menschen gerade auf den harten Weg durch Erfahrung gelernt haben, aber ich versuche, es Ihnen an der Grenze beizubringen. 17. Deep Learning Regularisation mit Dropout und Deep: Lassen Sie uns in die Regularisierungstechniken in der Welt der neuronalen Netze eintauchen. Was ist die Regularisierung überhaupt? Nun, im Grunde ist die Regularisierung jede Technik, die eine Überanpassung verhindern soll. Was ist Überanpassung? Nun, wenn Sie ein Modell haben, das gut darin ist, Vorhersagen zu den Daten zu machen , auf denen es trainiert wurde, aber es funktioniert nicht so gut bei neuen Daten, die es vorher noch nicht gesehen hat. Dann sagen wir, dass dieses Modell überpasst ist. Das bedeutet, dass es sich um erlernte Muster in deinen Trainingsdaten handelt, die in der realen Welt nicht wirklich im allgemeinen Sinn existieren. Wenn Sie also eine hohe Genauigkeit auf Ihrem Trainings-Dataset sehen, aber eine geringere Genauigkeit für Ihren Testsatz oder Ihren Auswertungsdatensatz. Das ist die Art, Ihnen zu sagen, dass Sie vielleicht überpassen. Machen wir einen Schritt zurück. Dies ist wahrscheinlich das erste Mal, dass ich das Wort Evaluation-Dataset verwendet habe. Auch wenn Sie neu in dieser Welt sind, in der Welt des Deep Learning sprechen wir in der Welt des Deep Learning typischerweise über drei verschiedene Datensätze. Wir haben also den Trainingsdatensatz. Dies sind die tatsächlichen Trainingsdaten, die von unten nach oben in Ihr neuronales Netzwerk eingespeist werden. Und das ist es, worauf wir eigentlich das Netzwerk trainieren, richtig? Und dann, während wir jede Epoche trainieren, können wir die Ergebnisse dieses Netzwerks anhand eines Auswertungs-Datasets auswerten. Also im Grunde ist das der Satz des Trainingssets, der beiseite gelegt wird, um die Ergebnisse und die Genauigkeit Ihres Modells zu bewerten, während es trainiert wird. Und dann können wir auch einen Testdatensatz haben, der außerhalb all dessen lebt. Sobald wir also ein vollständig geschultes Modell haben, können wir dann unser Test-Dataset verwenden, um das vollständige, fertige Modell auszuwerten , wenn Sie so wollen. Wenn Sie also feststellen, dass Ihre Trainingsgenauigkeit viel mehr ist als die Genauigkeit, die am Ende mit Ihren Auswertungsdaten oder Ihren Testdaten gemessen wurde, bedeutet dies wahrscheinlich, dass Sie die Trainingsdaten übermäßig anpassen. Diese Grafik auf der rechten Seite macht es ein wenig leichter zu verstehen. Stellen Sie sich also vor, ich versuche ein Modell zu bauen, das Dinge, die blau sind, von Dingen trennt , die hier rot sind. Wenn Sie also diese Daten augapfel, kann Ihr Gehirn so ziemlich herausfinden, dass diese Kurve wahrscheinlich diese Art von trennt , wo das blauste Zeug ist und wo das rote Zeug ist, richtig? Aber in der realen Welt sind Daten unordentlich. Da ist auch ein bisschen Lärm. Wenn also ein Modell, das wir überpassen, könnte es tatsächlich lernen, dass grüne Kurve dort, die tatsächlich in und aus allen Daten schleicht, um zu versuchen, das an Trainingsdaten anzupassen. Genau. Aber weißt du, das ist nur Lärm, oder? Ich meine, wenn du es dir ansiehst, weiß dein Gehirn, dass das nicht korrekt ist. Aber in deinem neuronalen Netzwerk ist diese Intuition nicht wirklich integriert. Wir brauchen also Regularisierungstechniken, um das zu verhindern, um zu verhindern, dass sich ein neuronales Netzwerk oder irgendein maschinelles Lernmodell kurvt und wellig macht, und diese höhere Frequenz aus dem Weg zu überpassen seine Daten zu seinem Modell. In Ordnung, das ist, was überpasst, es ist ein guter Weg, es zu verallgemeinern. Die so genannte richtige Antwort, das richtige Modell wäre diese schwarze Linie, aber ein überpassendes Modell wäre eher wie die grüne Linie. Und das ist eigentlich etwas, das wirklich in neuronalen Netzwerken passiert. Wenn Sie ein wirklich tiefes neuronales Netzwerk mit vielen Gewichten und Verbindungen und Neuronen haben, die darin eingebaut sind. Es kann auf komplexe Muster wie diese völlig aufgreifen. Also musst du vorsichtig damit sein. Hier kommt also die Welt der Regularisierungstechniken ins Spiel. Lasst uns auf welche gehen. Eine sehr einfache Sache könnte sein, dass Sie einfach zu komplex eines Modells haben. Vielleicht haben Sie zu viele Schichten sind zu viele Neuronen. Du könntest also ein tiefes neuronales Netzwerk haben , das zu tief oder vielleicht zu breit ist oder vielleicht beides, oder? So. Indem Sie Ihr Modell tatsächlich vereinfachen, schränkt dies seine Fähigkeit ein, kompliziertere Muster zu erlernen , die möglicherweise überpassen. Also ein sehr einfaches Modell, das nur eine einfache Kurve wie diese ist, die wahrscheinlich durch eine Regression erreicht werden könnte. Vielleicht bist du besser dran mit einem einfacheren Modell. Und die einfachste Regularisierungstechnik ist einfach, weniger Neuronen zu verwenden oder weniger Schichten zu verwenden. Das ist eine völlig gültige Sache zu tun. Manchmal müssen Sie damit experimentieren. Wenn Sie also feststellen, dass Ihr Modell überpasst, ist wahrscheinlich die einfachste Sache, nur ein einfacheres Modell zu verwenden. Versuchen Sie es, weniger Layer auszuprobieren, weniger Neuronen in jedem Layer auszuprobieren, und sehen Sie, welche Art von Effekt dies hat, wenn Sie immer noch die gleiche Genauigkeit und Ihr Test-Dataset haben, aber nicht übermäßig an Ihr Trainings-Dataset anpassen Warum sollten Sie dann mehr Neuronen, als du brauchst? Eine andere Technik wird Dropout genannt. Und das ist irgendwie interessant. Die Idee mit einer Dropout-Schicht ist also, dass es tatsächlich einige der Neuronen in Ihrem Netzwerk in jeder Epoche während des Trainings entfernt. Und das hat den Effekt, dass Ihr Modell im Grunde dazu zwingt, zu lernen und sich auszubreiten. Es lernt zwischen den verschiedenen Neuronen und Schichten in Ihrem Netzwerk. Indem wir also bestimmte Neuronen auslöschen, die zufällig ausgewählt werden, und jeden Trainingsschritt, zwingen wir das Lernen im Grunde dazu, sich mehr auszubreiten. Und das hat den Effekt zu verhindern, dass jedes einzelne Neuron zu einem bestimmten Datenpunkt passt, richtig? Es ist also ein wenig konterintuitiv, dass Neuronen aus Ihrem neuronalen Netzwerk entfernt und es tatsächlich besser trainiert werden. Aber das ist es, was passiert, das verhindert eine Überanpassung. Das ist also, worum es bei Ausfallenden geht. Auch hier eine sehr effektive Regularisierungstechnik. Wir sehen das viel in sagen CNNs zum Beispiel, es ist ziemlich Standard, eine ziemlich aggressive Dropout-Schicht zu haben, wie vielleicht sogar 50 Prozent für mich für jedes Training Vergangenheit gehalten werden. Also, das ist alles Ausfallende ist. Es entfernt nur einige Neuronen nach dem Zufallsprinzip, bei jedem Trainingsschritt, um Ihr Modell zu zwingen, sein Lernen etwas besser zu verbreiten. Und das hat einen Regularisierungseffekt, der eine Überanpassung verhindert. Eine andere sehr einfache Lösung wird als frühes Stoppen bezeichnet. Werfen wir einen Blick auf diesen Ausdruck, während wir tatsächlich ein echtes neuronales Netzwerk trainieren. So können Sie sehen, dass, wenn Sie sich die Genauigkeit des Validierungssatzes ansehen, das ist die rechte Spalte dort. Wir sind von 95 Prozent auf 97% gegangen und die Dinge werden besser. Und dann kommen wir plötzlich auf etwa 98% und die Dinge beginnen seltsam zu werden. Es fängt an zu oszillieren, oder? Wir können also nur sagen, wenn wir uns das ansehen, dass wir nach ungefähr Epoche fünf keinen Nutzen mehr machen, indem wir weiter trainieren. In der Tat könnten wir mehr schaden als nützen , weil wir an dieser Stelle wahrscheinlich anfangen zu überpassen. Und in der Tat, wenn Sie sich die Genauigkeit des Trainingssatzes, das ist die erste Spalte der Genauigkeit, die zweite Spalte der Zahlen, die Sie diese Anzeige gesehen haben, die Genauigkeit auf dem Trainingsset steigt weiter, wenn wir mehr und mehr trainieren Epochen. Aber die Genauigkeit des Validierungssatzes hörte bei etwa fünf auf, besser zu werden. Das fängt also ziemlich klar an, über die fünfte Epoche hinaus zu überpassen. Ordnung. Ich werde früh aufhören ist, ist ein Weg, das automatisch zu erkennen. Und es ist ein Algorithmus, den wir einfach sagen werden, okay, die Validierungsgenauigkeit wird ausgeglichen. Meine Trainingsgenauigkeit steigt immer noch. Wir sollten jetzt wohl aufhören. Früh zu stoppen bedeutet nur, okay, ich weiß, du wolltest zehn Epochen, aber ich sehe hier, dass nach fünf Dingen nur noch schlimmer werden, was die Überanpassung betrifft. Also werden wir bei fünf Kerlen anhalten, wir sind hier fertig. Das war's. Das ist alles frühe frühe Stopp geht um. Es stellt nur sicher, dass du dein neuronales Netzwerk nicht weiter trainierst , als du solltest. Und das verhindert Überanpassungen. Sehr einfache Lösung. - Da. 18. Die Ethik des tiefen Lernens: Viele Leute sprechen über die Ethik des Deep Learning. Erschaffen wir eigentlich etwas, das gut für die Menschheit ist oder letztendlich schlecht für die Menschheit? Also lass uns jetzt dorthin gehen. Ich werde dir nicht über Cinci in Robotern predigen, die die Welt übernehmen. Ich meine, vielleicht wird das in 50 Jahren ein Problem sein, vielleicht sogar früher. Aber für die unmittelbare Zukunft ist es subtilere Möglichkeiten, wie Deep Learning missbraucht werden kann, mit denen Sie sich beschäftigen sollten. Und es ist jemand, der das Feld betritt, entweder als Forscher oder Praktizierender. Es liegt an Ihnen, sicherzustellen, dass diese leistungsstarke Technologie für das Gute und nicht für das Böse verwendet wird . Und manchmal kann dies sehr subtil sein, also könnten Sie eine neue Technologie in Ihrer Begeisterung einsetzen, und dies könnte unbeabsichtigte Konsequenzen haben. Und das ist vor allem, worüber ich in diesem Vortrag sprechen möchte. Verstehen unbeabsichtigter Folgen der Systeme, die Sie mit Deep Learning entwickeln. Zunächst einmal ist es wichtig zu verstehen, dass Genauigkeit nicht die ganze Geschichte erzählt. Also haben wir unsere neuronalen Netzwerke anhand ihrer Fähigkeit bewertet, etwas genau zu klassifizieren, und wenn wir wie einen 99,9% Genauigkeitswert sehen, gratulieren wir uns selbst und klopfen uns auf den Rücken, aber oft reicht das nicht aus, um darüber nachzudenken. Zuallererst gibt es verschiedene Arten von Fehlern. Das nennen wir einen Typ-Eins-Fehler, der ein falsches Positiv ist. Dann sagst du, dass etwas etwas ist, das es nicht ist. Zum Beispiel, vielleicht vermissen Sie falsch interpretiert einen Tumor, der von einigen Sie wissen, gemessen wurde, Biopsie, die aus einer Brustprobe als bösartig genommen wurde, und dass falsch positiv von bösartigen Krebsergebnis könnte in Riel unnötige führen Chirurgie zu jemandem. Oder vielleicht entwickeln Sie ein selbstfahrendes Auto, und Ihre Kamera auf der Vorderseite Ihres Autos sieht einen Schatten von einer Überführung vor Ihnen. Das passiert mirübrigens, übrigens, und knallt auf die Bremsen, weil es denkt, dass die Straße einfach in Vergessenheit in diese dunkle Masse fällt , und es gibt nichts, was du vor dir fahren kannst. Beide sind nicht sehr gute Ergebnisse. Das könnte schlimmer sein. Wohlgemerkt, ich meine, es ist wohl schlimmer, einen Krebs unbehandelt zu lassen, als ein falsches Positiv zu haben. Oder es könnte schlimmer sein. Zehe fahren tatsächlich vom Rand einer Klippe ab, als auf Ihre Bremsen zu schlagen. Aber das ist auch sehr schlecht, oder? Sie müssen über die Auswirkungen dessen nachdenken, was passiert, wenn Ihr Modell jetzt für das Beispiel etwas falsch bekommt . Das selbstfahrende Auto. Vielleicht könnte es das Vertrauensniveau von dem, was es denkt, ist vor Ihnen und vielleicht daran arbeiten, wer hinter Ihnen ist. Also wenigstens, wenn du ohne Grund auf die Bremsen schlägst, könntest du sicherstellen, dass nicht jemand auf deinem Schwanz fährt, der nach hinten Andy geht oder so etwas. Denken Sie also darüber nach, was passiert, wenn Ihr Modell falsch ist, denn selbst eine Genauigkeit von 99,9% bedeutet, dass Sie einmal von 1000 falsch machen werden. Und wenn die Leute Ihr System mehr als 1000 Mal benutzen, wird es eine schlimme Konsequenz geben, die passiert. Als Ergebnis müssen Sie Ihren Kopf um das wickeln, was dieses Ergebnis ist und wie Sie damit umgehen möchten. Der zweite Typ ist ein falsches Negativ, und zum Beispiel können Sie Brustkrebs haben, ihn aber nicht erkennen. Vielleicht haben Sie falsch klassifiziert. Es ist gutartig statt bösartig. Jemand stirbt, wenn du das falsch verstehst. Ok? Denken Sie also sehr genau darüber nach, wie Ihr System verwendet wird und die Vorbehalte, die Sie eingerichtet haben, und die Fail-Safes und die Sicherungen, die Sie sicherstellen müssen, dass, wenn Sie ein System haben , das bekanntermaßen Fehler unter einigen Bedingungen, sind Sie mit denen in einer verantwortungsvollen Weise zu tun. Ein weiteres Beispiel für ein falsches Negativ wäre zu denken, dass es nichts vor Gewerkschaften, selbstfahrendes Auto, wenn es tatsächlich gibt. Vielleicht erkennt es nicht das Auto, das an einer Ampel vor dir angehalten hat. Das ist mir auch passiert. Was passiert dann, Wenn Sie sind, wenn der Fahrer nicht wachsam ist, Sie stürzen in das Auto vor Ihnen und das ist wirklich schlecht wieder. Menschen können sterben. OK, also sind die Menschen sehr begierig, Deep Learning auf verschiedene Situationen in der realen Welt anzuwenden. Aber oft sind die realen Konsequenzen, etwas falsch zu machen, eine Sache des Lebens und des Todes , ganz buchstäblich. Also müssen Sie wirklich, wirklich, wirklich, wirklich darüber nachdenken, wie Ihr System verwendet wird. Und stellen Sie sicher, dass Ihre Vorgesetzten und die Leute, die dies tatsächlich in die Welt bringen, verstehen die Folgen dessen, was passiert, wenn Dinge schief gehen, und die rial Chancen dass Dinge schief gehen. Du weißt, dass du deine Systeme nicht übertrieben verkaufen kannst, ist absolut zuverlässig, weil ich dir verspreche dass sie es nicht sind. Es könnte auch versteckte Vorurteile in Ihrem System geben. Nur weil das künstliche neuronale Netzwerk, das du aufgebaut hast, nicht menschlich ist, bedeutet das nicht, dass es von Natur aus fair und unvoreingenommen ist. Denken Sie daran, Ihr Modell nur so gut ist wie die Daten, mit denen Sie es trainieren. Also lassen Sie uns Beispiel nehmen, wenn Sie vorhaben, ein neuronales Netzwerk aufzubauen, das versuchen kann vorherzusagen ob jemand eingestellt wird oder nicht nur basierend auf Attributen dieser Person. Jetzt können Sie, Ihr Modell selbst, ganz rein sein und was nicht. Aber wenn Sie es Schulungsdaten von echten Menschen füttern, die Einstellungsentscheidungen getroffen haben, dass Training es wird all ihre impliziten Vorurteile widerspiegeln. Das ist nur ein Beispiel. So könnten Sie am Ende ein System haben, das in der Tat rassistisch,altersistisch oder sexistisch ist in der Tat rassistisch, , einfach weil die Trainingsdaten, die Sie ihm zur Verfügung stellen, von Menschen gemacht wurden , die diese impliziten Vorurteile haben, die sie vielleicht nicht einmal in vollem Umfang im Zeit. Okay, also musst du auf diese Dinge aufpassen. Einfache Dinge, die Sie tun können. Ich meine, offensichtlich wäre es eine ziemlich schlechte Idee für dieses Modell zu machen, das Alter oder Geschlecht oder Rasse oder Religion beinhaltet , ? Aber ich kann sehen, wie manche Leute das tun. Denken Sie zweimal nach, bevor Sie so etwas tun. Aber selbst wenn Sie nicht implizit Features einfügen, die Sie nicht berücksichtigen möchten, dass sie Teil Ihres Modells sind, können Sie unbeabsichtigte Konsequenzen oder Abhängigkeiten in Ihren Features haben, an die Sie möglicherweise nicht nachgedacht haben. zum Beispiel Wenn Siezum Beispieljahrelange Erfahrung in das System einspeisen, das vorhersagt, ob jemand ein Vorstellungsgespräch bekommen sollte oder nicht , werden Sie eine implizite Voreingenommenheit in ihrem Recht haben. Die jahrelange Erfahrung wird auf jeden Fall mit dem Alter des Antragstellers korreliert sein. Also, wenn Ihre bisherigen Trainingsdaten eine Voreingenommenheit gegenüber Ihnen hatten, wissen Sie, weiße Männer in ihren zwanziger Jahren, die frisch aus dem College sind, wird Ihr System erfahrenere Kandidaten bestrafen, die in der Tat bessere Kandidaten sein könnten , die bestanden wurden einfach, weil sie von Menschen als zu alt angesehen wurden. Denken Sie also tief darüber nach, ob das System, das Sie entwickeln, versteckte Vorurteile aufweist und was Sie tun können, um zumindest transparent zu sein, was diese Vorurteile sind. Eine andere Sache zu beachten ist, ist das System, das Sie gerade gebaut haben, wirklich besser als ein Mensch. Also, wenn Sie ein Deep Learning System aufbauen, dass die Menschen in Ihrer Verkaufsabteilung oder Ihrem Management oder Ihre Investoren wirklich wollen, um etwas zu verkaufen, das Arbeitsplätze ersetzen und sparen Menschen waren Unternehmen Geld sparen. Vielmehr müssen Sie darüber nachdenken, ob das System, das Sie verkaufen, wirklich so gut ist wie ein Mensch. Und wenn es nicht der Fall ist, was sind die Konsequenzen davon? Zum Beispiel können Sie Deep-Learning-Systeme erstellen, die medizinische Diagnosen durchführen, und Sie haben vielleicht einen sehr eifrigen Vertriebsmitarbeiter, der verkaufen möchte, der besser ist als ein menschlicher Arzt. Ist es wirklich das, was passiert, wenn Ihr It System schief geht? Sterben Menschen? Das wird schlimm sein. Es wäre besser, mit Ihren Vorgesetzten darauf zu bestehen, dass dieses System nur als zusätzliches Instrument vermarktet wird , um Ärzten bei der Entscheidung zu helfen, und nicht als Ersatz für Menschen, eine Entscheidung zu treffen, die das Leben beeinflussen könnte oder den Tod wieder. Selbstfahrende Auto ist ein weiteres Beispiel, wo, wenn Sie es falsch verstehen, wenn Sie ein selbstfahrendes Auto sind, ist nicht wirklich besser als ein Mensch und jemand setzt Ihr Auto auf Autopilot, es kann tatsächlich Menschen töten. Also sehe ich, dass das schon passiert. Du weißt, wo selbstfahrende Autos überverkauft werden, und es gibt viele Randfälle auf der Welt, in denen selbstfahrende Autos es einfach nicht schneiden können, wo der Mensch könnte, und ich denke, das ist sehr gefährlich. auch Denken Sieauchüber unbeabsichtigte Anwendungen Ihrer Forschung nach. Also lass mich dir eine Geschichte erzählen, denn das passiert mir mehr als einmal. Manchmal entwickeln Sie etwas, von dem Sie denken, dass es eine gute Sache ist, die für den positiven Einsatz in der realen Welt verwendet wird . Aber es wird von anderen Menschen zu etwas verdreht, das zerstörerisch ist, und das ist etwas anderes, worüber man nachdenken muss. Lassen Sie mich Ihnen eine Geschichte erzählen, also müssen Sie darüber nachdenken, wie die Technologie, die Sie entwickeln, auf eine Weise verwendet werden kann, die Sie nie erwartet haben. Und es können diese Verwendungen in der Tat bösartig sein in der Tat . Das passiert mir tatsächlich ein paar Mal. Ich rede hier nicht theoretisch, und das beschränkt sich nicht nur auf Deep Learning. Es ist wirklich ein Problem mit maschinellem Lernen im Allgemeinen oder wirklich jeder neuen, leistungsstarken Technologie. Manchmal kommt unsere Technologie vor uns selbst als Spezies, weißt du, sozial. Lassen Sie mich Ihnen eine Geschichte erzählen. Das ist also nicht wirklich mit Deep Learning zu tun. Aber eines der ersten Dinge, die ich in meiner Karriere gebaut habe, war eigentlich ein Militärflugsimulator und Trainingssimulator. Es war die Idee, den Kampf in einer Art virtueller Realität zu simulieren , ,um unsere Soldaten zu trainieren, um ihr eigenes Leben besser zu bewahren und sicher aus dem Schlachtfeld zu kommen. Ich fühlte, dass das eine positive Sache war. Hey, ich rette das Leben von Soldaten. Aber nach ein paar Jahren wurde die gleiche Technologie, die ich gemacht habe, in einem Kommando- und Steuersystem eingesetzt. Er wurde verwendet, um Kommandanten zu helfen, tatsächlich zu visualisieren, wie man echte Truppen ausrollen und tatsächlich echte Menschen töten kann. war ich nicht in Ordnung. Und ich verließ die Industrie teilweise wegen dem Zeug. Ein relevanteres Beispiel. Damals, als ich bei amazon dot com arbeitete, war ich einer der Männer, die ich will zu viel Anerkennung dafür nehmen, weil die Leute, die die Ideen kamen, vor mir waren. Aber ich war einer der frühen Leute, die tatsächlich Empfehlungsalgorithmen und Personalisierungsalgorithmen im Internet implementierten , Ihr Benutzerverhalten im Internet nahm und das in Empfehlungen für Inhalte zu zeigen Sie es Ihnen. Und das war letztendlich eine Art Grundlage, auf der im Laufe der Jahre aufgebaut wurde. Das führte letztlich zu Dingen wie Facebook Targeting-Algorithmen ist ein weiteres Beispiel dafür . Und weißt du, wenn ich mir anschaue, wie Leute gefälschte Nachrichten und gefälschte Konten in sozialen Medien benutzen, um zu versuchen , ihre politischen Überzeugungen zu verbreiten, oder , weißt du, ein zusätzliches Motiv, das finanziell angetrieben und nicht wirklich zum Wohle der Menschheit, ich fühle mich nicht sehr gut darin,weißt du, weißt du, ich meine die Technologie, die ich damals erschaffen habe, um mehr Bücher zu verkaufen, was harmlos genug schien, am Ende zu etwas verdreht, das den Verlauf der Geschichte in einer Weise verändert hat , die gut oder schlecht sein könnte, abhängig von Ihrer politischen Neigung. also noch einmal daran, dass Sie, wenn Sie tatsächlich einen Job im Deep Learning und maschinellem Lernen haben, überall hin gehen können, wo Sie wollen. Wenn du dich dazu aufgefordert wirst, etwas zu tun, das moralisch fragwürdig ist, musst du es nicht tun. Du kannst morgen einen neuen Job finden, okay? Ich meine, das ist ein wirklich heißes Feld, und zu der Zeit, wenn Sie echte Welterfahrung darin haben, ist die Welt Ihre Auster. Weißt du, wenn du gefragt wirst, etwas zu tun, das moralisch fragwürdig ist, kannst du nein sagen, morgen wird dich jemand anderes einstellen. Ich verspreche dir, wenn du überhaupt gut bist. Also sehe ich, dass das in letzter Zeit viel passiert. Es gibt viele Leute, die Forschung über die Verwendung neuronaler Netzwerke veröffentlichen, um die Passwörter von Menschen zu knacken . Oder Teoh, wissen Sie, illustrieren, wie es für das Böse verwendet werden könnte, zum Beispiel versucht, indem man zum Beispiel versucht,die sexuelle Orientierung der Menschen nur auf der Grundlage eines Bildes ihres Gesichts vorherzusagen. Ich meine, das kann nirgendwohin gehen. Gute Jungs. Was versuchst du zu zeigen, indem du diese Art von Forschung tatsächlich veröffentlichst? Denken Sie also zweimal nach, bevor Sie solche Sachen veröffentlichen, überlegen Sie zweimal, bevor Sie solche Sachen für einen Arbeitgeber implementieren, weil Ihr Arbeitgeber sich nur darum kümmert, Geld zu verdienen, um einen Gewinn zu erzielen. Sie sind weniger besorgt über die moralischen Auswirkungen auf die Technologie, die Sie entwickeln um diesen Gewinn zu erzielen, und die Leute werden sehen, was Sie da draußen bauen, und sie werden wahrscheinlich dieselbe Technologie verwenden, die gleichen Ideen und verdreht in etwas, das Sie vielleicht nicht in Betracht gezogen haben. Ich möchte nur, dass Sie diese Ideen und diese Sorgen im Hinterkopf behalten, denn Sie haben es hier mit neuen und leistungsstarken Technologien zu tun. Und es liegt wirklich an uns als Technologen, zu versuchen, diese Technologie in die richtige Richtung zu lenken und sie zum Wohle der Menschheit zu nutzen und nicht zum Nachteil der Menschheit. Klingt sehr, sehr hoch, hohe Pferdeprechierung, ich weiß. Aber das sind sehr reale Bedenken, und es gibt viele Leute da draußen, die meine Besorgnis teilen. Also bitte bedenken Sie diese Bedenken, wenn Sie in Ihre Deep Learning Karriere eintauchen. 19. Variational Auto-Encoders (VAE's): Alles klar, es ist Zeit, in den lustigen Teil dieses Kurses zu kommen. Wir werden über generative Modellierung sprechen. Dies ist die Technologie hinter all diesen viralen Apps, mit denen Sie Gesichter ausgetauscht und Menschen und so etwas altern können. Auch die Technologie hinter tiefen Fälschungen, eine Art Plakatkind der Ethikdiskussion, die wir früher im Kurs hatten, aber ich erspare Ihnen meine Verzweiflung darüber bevor wir über generative gegnerische Netzwerke sprechen können, Das ist die Technologie hinter all dem Zeug. Wir müssen über Variationsautoencoder sprechen, was die Grundlage generativer gegnerischer Netzwerke ist. Also lassen Sie uns zuerst in VAEs eintauchen, bevor wir über Variationsautoencoder sprechen, Lassen Sie uns zuerst über Auto-Encoder im Allgemeinen sprechen. Irgendwie ein Diagramm, wie sie funktionieren. So lernt ein Encoder, Eingaben auf seine latenten Funktionen zu reduzieren. Das ist also irgendwie die linke Seite dieses Diagramms hier, der gelbe Teil dort. Also im Grunde nehmen wir eine Eingabe, die oft ein Bild ist. Und durch die Verwendung von Faltung, genau wie wir in konvolutionalen neuronalen Netzwerken gesehen haben, destillieren wir, dass bis zu einer Art Darstellung der latenten Merkmale latente Vektoren dieses Eingangssignals sind. So sieht unser Encoder dort viel wie ein CNN aus. Es verwendet Faltschichten und Max-Pooling und all das Zeug, um die Muster in der Eingabe zu destillieren, mit der wir es trainieren, hin zu diesen latenten Vektoren, die wir hier als die blaue Z-Box in der Mitte darstellen dort. So gibt es nichts wirklich Neues. Auf der anderen Seite haben wir den Decoder, der im Grunde die Umkehrung des Encoders ist. Es wird also trainiert, wie vollständige Bilder rekonstruiert werden, sind vollständige Daten, allgemeiner von diesen latenten Vektoren in der Z-Box dort. Also durch die Verwendung von transponierten Windungen und max d Pooling und solche Dinge. Es lernt, diese latenten Vektoren zu nehmen und sie in ein vollständiges vollständiges Bild oder einen vollständigen Datensatz zu rekonstruieren . Während wir das trainieren, besteht das Ziel darin, zu versuchen, den Eingang und den rekonstruierten Eingang so ähnlich wie möglich zu bekommen . Das ist es, was wir versuchen, dort zu optimieren. Also sollte x gleich x prime sein, wobei x die ursprünglichen Eingabebilder ist, die wir auf x prime trainieren, oder die generierten rekonstruierten Bilder basierend auf diesen latenten Faktoren, diesen latenten Vektoren, die wir durch das Training gelernt haben -Prozess. So ziemlich interessantes Zeug. Nun wird das System als Ganzes so trainiert, dass der ursprüngliche Eingang, der in den Encoder so nah wie möglich an den vom Decoder erzeugten rekonstruierten Daten liegt. Weißt du, was ich gerade gesagt habe? Aber lassen Sie mich versuchen, es ein wenig reales Beispiel zu machen. Sagen wir, wir trainieren das auf Bildern von Schuhen, Ordnung, nur um dort etwas aus dem Blauen zu wählen. Also würde der Encoder das in eine Art Essenz destillieren , was eine andere Art von Schuh ausmacht. Und es wird nicht darüber nachdenken, in diesen Begriffen. Es ist nur ein neuronales Netzwerk, richtig? Aber was diese latenten Vektoren letztendlich darstellen könnten ist, dass dieses Ding irgendwie zum Muster einer Sandale passt, und diese Art von Sache passt irgendwie zum Muster eines Sneakers. Und diese andere Sache passt zu dem Muster eines Stiefels, den ich gelernt habe. Es weiß nicht, wie man sie beschriften oder sie diese Dinge nennt, aber das könnte es in diesen latenten Vektoren in der Z-Box in der Mitte lernen. Und der Decoder wird lernen, wie man das nimmt und ein vollständiges Bild eines Stiefels, einer Sandale oder eines Sneakers basierend auf diesem latenten Vektor dort rekonstruiert . Und es könnte mehr sein als nur eine Klassifizierung, oder? Ich meine, ein sehr einfacher latenter Vektor wäre nur eine Klassifizierung dessen, was für ein Schuh das ist, aber wir können mehr Informationen haben, die nuancierter sind. Und das ist irgendwie die Schönheit dieses Systems ist ein bisschen mehr, ein bisschen flexibler. Und was, sobald wir das ganze System trainiert haben, könnten wir den Encoder wegwerfen, weil wir ihn nur für das Training des Decoders wirklich verwendet haben. Wenn Sie also nur synthetische Bilder von verschiedenen Arten von Schuhen erzeugen möchten, könnten Sie den Decoder verwenden, um das zu tun und die Ideen, können Sie eine Reihe von synthetischen erzeugten Bildern von Sandalen oder Sneakers oder was auch immer es ist wenn du es wolltest. Und das ist irgendwie, wo die Grundlagen all dieser Art von, Sie wissen schon, fabrizierten Gesichtern, die Sie auf viralen Apps sehen, herkommen. Es gibt also viele Anwendungen dafür. Ich meine, wissen Sie, zurück zur Ethik-Diskussion, niemand beabsichtigte wirklich, dass dies für tiefe Fälschungen verwendet wird, die Leute täuschen schreiben, das ursprüngliche Ziel war eigentlich für Kompression. Sie können sich das also als eine Art geräuschlose Art der Komprimierung von Daten vorstellen. Wenn Sie also eine wirklich saubere Art zu sagen haben wollen, möchte ich nur ein Bild von einer Sandale haben. Hier ist ein Weg, dies mit nur im Grunde ein paar Bytes von Informationen zu tun, wo es lernt, das ohne Lärm zu rekonstruieren. Es kann auch auf die Zweidimensionalitätsreduktion angewendet werden. Offensichtlich das Gleiche wie Kompression. Wir nehmen diesen höherdimensionalen Eingang und kochen ihn auf diese latenten Vektoren, statt auf eine unterdimensionale Darstellung. Es hat auch Anwendungen auf der Suche. So könnten wir das verwenden, um einen Korpus von Textdaten bis hin zu seinen relevanten Suchbegriffen zu destillieren . De-Noising, wir können, kann der Decoder verwendet werden, um ein Bild zu rekonstruieren , das kein Rauschen in ihm hat, basierend auf Bild, das Rauschen in ihm hat. Das ist eine weitere gute Anwendung. Ich habe das in Photoshop die ganze Zeit tatsächlich verwendet. Oder eine Kolorisierung ist auch eine coole Anwendung. Vielleicht kann das dann trainiert werden, um zu erkennen, dass dieses Bild einer Person aussieht, als ob er eine Jeans trägt und dieses Schwarz-Weiß-Bild. Und basierend auf der Form und dem Grauton in diesem Bild, denken wir, dass es eine Jeans ist und vielleicht sollte ich sie blau färben, weil die meisten Gene blau sind. Also nochmal, es denkt nicht in diesen Begriffen darüber nach, aber das sind die Etiketten, die wir an das anbringen könnten, was unter der Haube dort vor sich geht. Der Trick, dies im Decoder zu tun, besteht also wieder darin, eine Transponierungsfaltung anstelle der Faltungen zu verwenden. Also anstelle von Conf 2D-Ebenen. Wir verwenden conf 2D transponierte Ebenen, um Bilder aus diesen latenten Features zu rekonstruieren, über die wir gesprochen haben. Was wird also alle Gewichte lernen, die verwendet werden sollen, um ein neues Bild mit neuen Pixeln aus einer niedrigeren dimensionalen Darstellung zu erstellen. Und wieder, es kann auf mehr als nur Bildern verwendet werden, wie wir gesprochen haben, Such- und Textinformationen sind eine andere Anwendung, aber Bilder sind irgendwie das einfachste Beispiel, um Ihren Kopf hier zu wickeln. Mit einer Transponierfaltung destillieren wir keine Dinge oder verkleinern Bilder. Wir erweitern sie tatsächlich in ihre ursprüngliche Form. Wir versuchen es, Sie werden es oft mit einem Schritt von zwei verwendet sehen. Ich habe auch einige Decoder gesehen , wo sie versuchen, von 12 auf verschiedenen Schichten zu schlagen. Also, wenn Sie mehr Komplexität benötigen, aber Sie werden wahrscheinlich irgendwo einen Schritt von zwei sehen. Und wieder, wenn Sie Max Pooling anstelle von max Pooling verwenden, wie wir darüber gesprochen haben, wenn wir über konvolutionale neuronale Netzwerke sprechen. Denken Sie also an die Dakota oder ungefähr als CNN, die rückwärts arbeitet, ist eine Art gute Möglichkeit, Ihren Kopf um sie zu wickeln. Lassen Sie uns also speziell über Variationsautoencoder sprechen. Was meinen wir damit? In einem Variationsautoencoder sind diese latenten Vektoren Wahrscheinlichkeitsverteilungen. Und dies ist die Art und Weise, wie wir diese Wahrscheinlichkeitsverteilungen für einen bestimmten, bestimmtenSatz von Kategorien oder was Sie haben, grafisch darstellen könnten diese Wahrscheinlichkeitsverteilungen für einen bestimmten, bestimmten . Daher stellen wir diese Wahrscheinlichkeitsverteilungen durch den Mittelwert und die Varianz der Gaußschen Normalverteilung dar. Ein Variationsautoencoder verwendet also speziell Gaußsche Normalverteilungen und die Eigenschaften dieser Verteilungen als seine latenten Vektoren, die er im Laufe der Zeit lernt. Mathematisch können wir es so ausdrücken. Die Eingabedaten x wird als Wahrscheinlichkeit von Z gegeben X ausgedrückt , wobei Z oder diese latenten Vektoren sind. Und dann können wir z rekonstruieren mit einer Wahrscheinlichkeit von X gegeben Z. Also drehen Sie das zurück auf den Kopf, um das ursprüngliche Bild zu rekonstruieren. Und das ist die Inspiration generativer gegnerischer Netzwerke oder GANs. Also kommen wir bald dorthin. Wir werden sehen, dass GANs nur ein weiterer Spin auf Variationsautoencodern sind , wo es allgemeiner ist als die Verwendung von Gaußschen Normalverteilungen. Eine Sache, die Sie in dem Code sehen werden, über den wir reden sollten , ist etwas, das die Reparaturen genannt wird. Wow, das ist schwer zu sagen. Reparametrisierungstrick. Das werde ich nicht noch einmal sagen, weil das ein Zungenbrecher ist. Ein mathematisches Problem mit der Idee von VAEs ist also, dass die Wahrscheinlichkeitsverteilung, die wir Z nennen, nicht differenziert werden kann. Jedes Mal, wenn Sie Zufälligkeit in der Gleichung haben, diese zufälligen Verteilungen, die einen Schraubenschlüssel in den Kalkül werfen, richtig? Und wie Sie sich vielleicht erinnern, als wir über das Training neuronaler Netzwerke gesprochen haben, müssen wir die Derivate des Systems für die Rückverbreitung und das eigentliche Lernen nutzen , richtig? Der Trick, den wir verwenden, um zu umgehen, ist, indem die zufällige Sampling und z in eine deterministische Form konvertieren. Also mathematisch könnten wir nennen, dass Z gleich mu plus sigma mal epsilon ist. Die spezifischen griechischen Buchstaben, die er verwendet hat , spielen keine Rolle, wir verwenden tatsächlich verschiedene auf dem Diagramm hier. Aber die Idee ist, dass wir diesen neuen Epsilon-Begriff vorstellen , oder wie auch immer Sie es nennen wollen, wo die Zufälligkeit bewegt wird. Epsilon ist also die Zufallsvariable aus der Standardnormalverteilung hier. Und indem wir das in seinen eigenen Begriff drängen, der den zufälligen Schritt aus dem Netzwerk schiebt, einen Eingang hat und dann können wir wieder einen verbundenen Graph haben, den wir tatsächlich differenzieren und tatsächlich Training auf und Rückverbreitung machen können . Also werde ich nicht zu viel in die Mathematik geraten. Es will nur, dass du weißt, was das ist. Auch im Thema Dinge müssen Sie nur wissen, was sie sind, ist Kullback-Leibler-Divergenz oder KL Divergenz kurz. Dies löst das Problem der Messung der Distanz zwischen zwei Wahrscheinlichkeitsverteilungen. Also, was wir als Umschulung brauchen, um den Abstand zwischen den Wahrscheinlichkeitsverteilungen unserer ursprünglichen Daten und den rekonstruierten Daten zu messen. Wir wollen, dass das so nah wie möglich ist, oder? Und eine Möglichkeit, das zu messen, ist die KL-Divergenz. Manchmal nennen sie es die Erde Mover Distanz wegen einer Analogie verwendet wie viel Erde müssten Sie bewegen, um die Vereinigten Staaten in die Gestalt des Vereinigten Königreichs zu verwandeln. Ich denke, das ist das eigentliche Beispiel. Aber es ist einfacher, darüber nachzudenken, wie dieses Diagramm hier. Nehmen wir an, wir haben eine, eine Form von drei Stapel von drei Blöcken. Es ist im Grunde, wie viele Blöcke muss ich bewegen, um es wie neun Stapel von einem Block aussehen zu lassen, oder? Es ist also nur, wie viele Informationen ich brauche, um diese beiden Distributionen, diese 2D-Graphen, miteinander in Einklang zu bringen. Mathematisch sieht es so aus. Also Summe von P von x mal das Log von P von x über q von x, was mathematisch der Kreuzentropie von p und q abzüglich der Entropie von P entspricht . So haben wir manchmal auch diese relative Entropie genannt. Und wie Sie sich vielleicht erinnern, ist Entropie eine wirklich häufige Verlustfunktion. Es bedeutet also, dass wir dies als Verlustfunktion verwenden können, während wir unseren Variationsautoencoder trainieren. Und weiter können wir zersetzen, dass als diese Funktion hier, werde ich nicht in die mathematische Ableitung davon bekommen. Aber wenn Sie diese Funktion sehen, kommt sie hier her. Das ist hier die Kullback-Leibler-Verlustfunktion, wie er sie in TensorFlow sehen könnte. Lassen Sie uns also in ein Notizbuch eintauchen und sehen, wie VAEs tatsächlich funktionieren. 20. VA: Hands on mit Hands-On: Alles klar, mal sehen wir Variationsautoencoder in Aktion und das arme kleine bisschen Twist auf die Dinge. Wir werden nicht die traditionelle MNIST-Datensatz von handgeschriebenen Zahlen laufen East LA Fashion MNIST-Datensatz verwenden , die eigentlich ein kleines Bild ist Kleidungsstücke, also mischen Sie es ein wenig hier. Wir werden versuchen, unsere VAE zu trainieren, um Bilder von Kleidung zu erzeugen. Also mal sehen, wie es funktioniert. In Ordnung, also lasst uns hier eintauchen Notizbuch der Variationsautoencoder aus den Kursmaterialien öffnen , wenn ihr mitverfolgen wollt. Wenn Sie jedoch folgen möchten, ist es ziemlich wichtig, dass Sie eine GPU zur Verfügung haben, dass Sie TensorFlow GPU installiert haben. Sonst wirst du feststellen, dass dies eine wirklich lange Zeit dauert, um zu trainieren. Also, wenn Sie nicht nur zu diesem Link hier bei tensorflow.org Schrägstrich installieren Slash GPU. Und das wird dich durch das führen, was du brauchst. Sie benötigen eine NVIDIA-Grafikkarte, und Sie müssen wahrscheinlich auf die NVIDIA-Entwickler-Website gehen und sich anmelden, um auch die CU DNN Library zu installieren. Aber das führt Sie durch, was Sie tun müssen, wenn Sie folgen möchten und Sie TensorFlow GPU nicht installiert haben, wenn Sie nicht wissen, ob Sie GPU-Unterstützung bereit haben. Das ist es, was dieser erste Block überprüft. Also lasst uns voran gehen und Shift Enter hier rein. Und es wird nur auflisten, auf wie viele GPUs ich von TensorFlow zugreifen kann. Es wird auch die TensorFlow-Bibliothek selbst laden. Das wird also ein bisschen mehr Zeit in Anspruch nehmen. Ich kann hören, wie meine Festplatte wegwirbelt, wenn sie TensorFlow lädt. Alles klar, das Schaukeln, es verlangsamt sich. Wir haben eine GPU zur Verfügung. Das ist genug. Aber wenn es wieder 0 sagt, werden Sie wahrscheinlich in stoppen wollen entweder gehen TensorFlow GPU installieren oder einfach nur das Video anschauen, ohne dabei zu folgen, weil sonst sowohl VAEs als auch GaNs eine lange Zeit dauern, um zu trainieren. Ordnung, wir werden auch eine konsistente Zufallszahl festlegen, damit ich etwas konsistente Ergebnisse aus diesem Notizbuch bekommen kann und keine bösen Überraschungen habe. Das ist ziemlich kompliziert. Es ist schwieriger, als Sie vielleicht denken, einen konsistenten zufälligen Samen zu haben und konsistente Ergebnisse zu erzielen. Und das liegt daran, dass wir eine GPU verwenden. Also machen wir eine Reihe von Schulungen parallel und erhalten konsistente Ergebnisse daraus, wenn Sie mit zufällig generierten Anfangsbedingungen und verschiedenen Zufälligkeit innerhalb des Modells selbst zu tun haben . Sogar das kann ein bisschen schwerfällig werden. Selbst bei all dem, was wir hier machen, werden wir keine vollkommen konsistenten Ergebnisse erzielen, aber es wird zumindest nah sein. Also lassen Sie uns voran gehen und Shift Enter auch darauf. In Ordnung, lassen Sie uns ein wenig über diesen Mode-M-Nest-Datensatz reden. Wie ich schon sagte, es ist wie das MNIST-Dataset, das, das wir zuvor benutzt haben, wo es nur handschriftliche Ziffern 00 bis neun sind, richtig? Der Unterschied ist, dass wir anstelle von Zahlen Bilder von Kleidung betrachten. Also ein bisschen interessant. Und die verschiedenen Klassen, die wir zur Verfügung haben, unsere T-Shirts, Hosen und Pull-Overs. Ich schätze, das kam aus Großbritannien oder etwas , das Hosen und Pullover sind, wo ich herkomme. Kleider, Mäntel, Sandalen, Shorts, Sneakers, Taschen und Stiefeletten. Und so können Sie sehen, dass Beispiel ich sprach über in den Folien haben verschiedene Arten von Schuhen war nicht theoretisch. Wir werden uns hier wirklich unabhängig Sandalen, Sneakers und Stiefel ansehen . Beginnen wir also mit dem Importieren unserer Daten und stellen sicher, dass wir die Dimensionalität davon verstehen. Also alles, was wir hier tun werden, ist das Mode-m-Nest-Dataset zu laden, das für uns bereits in Keras Punktdatensätze integriert ist, obwohl das oben ist und wir werden einfach überprüfen, dass alles so ist, wie wir es erwarten, 60 Tausend Trainingsbilder und 10 Tausend Testbilder. Jeder ist 28 mal 28 Graustufenbild. Alles klar, Shift Enter und nichts beschwert sich. Also ist alles so, wie wir es erwarten. Und es ist immer eine gute Idee, einen Blick auf die Daten zu werfen und ein Gefühl dafür zu bekommen , bevor Sie anfangen, sich mit ihm herumzudrehen. Also, was wir hier tun werden, ist eine Handlung. Wie das in einem neun mal neun Raster aussieht, nehmen neun Stichproben zufällig aus unserem 60000 Trainingsset und zeichnen jedes mit Graustufen aus. Und mal sehen, ob wir nur neun zufällig ausreißen. So können Sie sehen, wir haben sieht aus wie ein, Ich denke, es würde eine Sandale Handtasche genannt werden. Lassen Sie uns einige Hosen oder Hosen ansprechen, wie sie es nennen, Stiefelette, schätze ich. Ehrlich gesagt, ich bin mir nicht sicher, was das ist. Ich glaube, das ist eine Handtasche. So können Sie sehen, dass die Daten zu Beginn nicht die größten sind, aber das ist es, was es herausfordernd und interessant macht, richtig? Aber sie sind hübsch für das Ding. Ich bin mir nicht sicher, was das ist. Alles andere ist ziemlich erkennbar als Kleidungsstück. Alles klar, das erste, was wir tun müssen, ist die Vorverarbeitung unserer Daten. Das erste, was wir tun werden, ist, unsere Trainings- und Testdaten miteinander zu kombinieren. Warum? Da dies kein Klassifizierungsproblem ist , versuche ich nicht herauszufinden, dass diese Überheit eine Hose ist. Ich versuche ein System zu erstellen, das Bilder von Kleidung im Allgemeinen erzeugen kann. Also, weil ich nicht wirklich versuche, meine Fähigkeit zu testen, diese Dinge zu klassifizieren, die Dataset mit diesen Labeldaten testen. Das sagt mir, wenn ich es richtig klassifiziert habe, ist für dieses Problem nicht wirklich nützlich. Stattdessen werde ich es nur für zusätzliche Trainingsdaten verwenden. Das erste, was wir tun werden, ist, das Trainings-Dataset und das Test-Dataset zu einem einzigen Datensatz zu verketten , das kreativ Dataset genannt wird. Ich werde diesem Dataset auch eine zusätzliche Dimension hinzufügen, da unsere Faltschichten drei Eingabekanäle erwarteten, nicht nur. Ich werde das auch in Gleitkommadaten konvertieren und das auf 0 zu eins normalisieren. Die Rohdaten werden also nur ganzzahlige Daten von 0 bis 255 sein , die darstellen, wie hell dieses Pixel ist. Dies transformiert diese tatsächlich in eine Gleitkommazahl zwischen 01, da die Sigmoid-Aktivierungswerte in unserem Modell zwischen 01 liegen. Also massieren wir die Daten hier nur dass sie der Eingabe unserer Faltschichten entsprechen. Besser Shift Enter, um das auszuführen. Alles klar, jetzt werden die Dinge interessant. Das erste, was wir einrichten werden, ist unsere Sampling-Schicht hier. hier kommt dieser Reparametrisierungstrick, der es tatsächlich richtig gemacht hat, hier ins Spiel. Also denken Sie daran, dass wir diese zufällige Komponente in einen Epsilonbegriff verschieben müssen , während Mu und Sigma, den Mittelwert und die Varianz unserer Daten, die hier hereinkommen, beibehalten werden, tatsächlich werden wir das Protokoll der Varianz wie wir hier kommen, wie Sie in Kürze sehen werden. Unsere Sampling-Schicht wird also diese benutzerdefinierte Ebene sein, und es wird die Eingaben des Mittelwerts und der Log-Varianz aufnehmen. Es wird dann extrahieren, wie, was die Chargengröße ist, indem man sich die erste Dimension der Z-Mitteleingabe anschaut. Und die Dimensionalität dieser Daten, indem wir die zweite Dimension betrachten, berechnen wir dann Epsilon, das ist der zufällige Begriff, über den wir in den Folien gesprochen haben. Es ist nur eine normalisierte Zufallszahl dieser Form, die wir erwarten, dass wir übereinstimmen, was wir für die Z-Mitteldaten bekommen, die hereinkommen. Also erstellen wir eine Reihe von Epsilon-Zufallszahlen in der Größe der Chargengrößen mal der Anzahl der Dimensionen, die wir haben. Und was wir zurückkehren, ist nur u plus Sigma mal Epsilon. Es ist ein bisschen komplizierter, da wir später das Protokoll der Varianz hier für Trainingszwecke verwenden. Um diese zurück in acht tatsächliche Varianz zu konvertieren, nehmen wir die Exponentialzahl des 0,5-fachen Protokolls der Varianz. Also einige grundlegende Algebra da. Aber im Grunde gibt dies den Reparametrisierungstrick zurück, den wir von z gleich mu plus Sigma mal Epsilon gesprochen haben. In Ordnung, als nächstes lassen Sie uns unser Encoder-Modell erstellen. Lassen Sie uns das laufen, bevor wir Shift Enter vergessen. Wir werden die Keras funktionalen APIs verwenden, um dies zu erstellen weil es ein bisschen kompliziert oder komplizierter als üblich ist. So schwer ist es nicht. In Ordnung, also werden wir diese Bauordnung oder Funktion haben. Seine Aufgabe ist es, ein Keras-Modell für den Encoder-Teil unseres größeren Modells zurückzugeben. Beginnen wir mit dem Einrichten eines sequentiellen Modells, das aus zwei conf 2D Schichten besteht. Wir fangen mit einem 128 an. Die Anzahl der Filter geht auf 64, wird dann abflachen und es in eine dichte Schicht von 256 Neuronen am Ende abwerfen. Und zu zwei, wie wir geredet haben. Auch hier handelt es sich um Hyperparameter, diese Topologie, die genaue Anzahl der Filter, die Sie verwenden, jede Faltungsebene, das sind Dinge, mit denen Sie spielen können. Die Anzahl der Faltungsebenen, die Sie haben, was die Schritte sind. Also habe ich gesehen, wie ich schon sagte, Inter lassen einen Schritt von 12 da drin für mehr Komplexität. Wenn sie mehr benötigen, mehr Neuronen in ihrem Modell für eine komplexere Aufgabe. Auch hier ist es eine Menge Versuch und Irrtum, das richtig zu machen. Also ist es irgendwie das schmutzige kleine Geheimnis des Deep Learning und eine Menge davon ist nur Experimentieren und Ausprobieren verschiedener Dinge, bis Sie sehen, was am besten funktioniert. In Ordnung, also werden wir unsere Eingaben durch diesen Konvolutionsblock übergeben. Also nennen wir nur das sequentielle Modell, das wir gerade mit den Encoder-Eingängen eingerichtet haben, die in diese Funktion kommen, diese Baucode oder Funktion. Als Nächstes erstellen wir einen dedizierten Layer, um den Mittelwert und die Varianz parallel zu lernen. Also schicken wir sie hier auf verschiedene Ebenen. Man wird eine dichte Schicht der Dimensionalität sein , die wir als Parameter übergeben, um Encoder wieder zu bauen, ein weiterer Hyperparameter, mit dem wir spielen können. Man wird sich dem Erlernen der Mittel widmen, und diejenigen werden sich dem Erlernen der Protokolle der Varianzen widmen, während wir gehen. Ok? Wir rufen dann die Sampling-Schicht mit dem z Mittelwert und z Log Vera, die wir gerade dort eingerichtet haben. Wieder, das ist es hier, wo wir diesen Reparametrisierungstrick anwenden , um alles zusammen zu kombinieren. Okay, und wir geben endlich das eigentliche Keras-Modell zurück, aus dem überhaupt besteht. Wir übergeben in das Modell mit den Encoder-Eingängen Z, mir, siehe log var und die latenten Vektoren dort, z. Alles klar, und ein kleiner Hinweis hier in den Kommentaren hier zu beachten, dass z bedeuten und z log vara oder nicht die endgültige Ausgabe dieses Encoders, aber wir werden das in den Verlust der KL Divergenz einspeisen. Und ein bisschen, jetzt, wo wir unsere Funktion haben, den Encoder zu bauen, lassen Sie es uns tatsächlich verwenden. Wir richten hier unseren Eingabe-Layer von 28 mal 28 mal 1 ein. Also wieder, unsere Eingabebilder von Mode m-nest oder 28 mal 28 mit einem Farbkanal, nur Graustufen. Wir rufen den Encoder an. Eingänge übergeben es in Build-Encoder mit einer latenten Größe von nur zwei. Und die Eingaben, die wir gerade geladen haben. Und wir drucken die Zusammenfassung aus, nur um eine Vernunft Check durchzuführen, Shift Enter. Siehst du, wir kommen dorthin, wir gehen. Alles klar, sieht vernünftig aus für mich. Gehen Sie weiter. Jetzt müssen wir auch unseren Decoder implementieren. Also wieder, es ist eine Art Umkehrung von dem, was wir gerade getan haben. Wir werden nur eine ruhige 2D-Transponierung anstelle von ruhigen 2D-Transponieren verwenden denn anstatt zu versuchen, diese Bilder auf ihre latenten Vektoren zu reduzieren, werden wir sie von ihren latenten Vektoren zu einem Bild erweitern. Also gehen wir hier irgendwie rückwärts. Das Modell hier wird mit der dichten Schicht um eine Umformung beginnen , die zu 7 mal 7 von 64 umgeht. Und dann werden wir drei com 2D transponierte Ebenen einrichten, beginnend bei 128, filtert bis zu 64, und dann schließlich bis zu einem einzigen Bild, das wir beenden sollten. Ein bisschen verwirrend potenziell hier, weil Sie vielleicht zu sich selbst sagen, warum gehen wir hier in Größe, wenn wir versuchen, ein größeres Bild zu machen. Aber das ist die Dimensionalität der Anzahl der Filter, die wir hier anwenden, und nicht die Größe des Bildes, das wir produzieren. Also bedenken Sie das. Alles klar, wir geben das Modell zurück. Wieder, nur in diesem Modell übergeben, das wir es hier L1 nennen , mit einem latenten Eingänge, die in Build-Decoder übergeben werden. Und wir nennen es Decoder. Und dann werden wir es tatsächlich bauen, indem wir die Eingabeform dort wieder laden, die Form, die hereinkommt, ist nur zwei, weil wir den Encoder mit der Dimensionalität von zwei direkt über uns erstellt haben , dann Bill Decoder dort aufrufen und ausdrucken die Zusammenfassung des Decoder-Modells. Umschalttaste Eingabetaste Ja, sieht vernünftig aus für mich. In Ordnung, als nächstes müssen wir unsere Verlustfunktionen einrichten. Ja, Plural, es gibt zwei davon, und ich habe das nicht wirklich explizit auf den Folien gemacht, glaube ich nicht, aber es ist definitiv explizit hier. Hier gibt es also zwei Verlustfunktionen. Eine davon ist der Verlust der Rekonstruktion, und das ist, was wird bestrafen Bilder , die den Originalbildern nicht ähnlich sind. Denken Sie daran, dass unser Hauptziel ist, dass unser Decoder Bilder erzeugt , die so nah wie möglich an den Originalbildern liegen , die in den Auto-Encoder eingespeist wurden. Und das ist die Verlustfunktion, die misst, dass es nur binäre Kreuzentropie auf die ursprünglichen Daten passt und die rekonstruierten Daten, die von unserem Decoder generiert wurden. Okay, ziemlich einfaches Zeug da, Shift Enter. Und dann werden wir auch hier den Verlust der KL Divergenz messen. Und darüber haben wir in den Folien ausführlich darüber gesprochen, worum es geht. Also werde ich es nicht nochmal durchgehen, aber wir haben darüber gesprochen, wo all diese Formeln herkamen. Auch hier geht es um den Abstand zwischen den Wahrscheinlichkeitsverteilungen auf beiden Seiten. Wir betrachten also die Wahrscheinlichkeitsverteilung der ursprünglichen Daten im Vergleich zu der Wahrscheinlichkeitsverteilung, die aus den generierten Daten generiert wird. Und wir wollen, dass diese wieder so nah wie möglich sind. Und das messen wir hier mit der KL-Divergenzverlustfunktion. Also lasst uns weitermachen und das auch definieren. Umschalttaste Eingabetaste Und nun, wir müssen eine Gesamtverlustfunktion am Ende des Tages haben, man kann nicht wirklich zwei Verlustfunktionen gleichzeitig haben. Das ist also, was dieser nächste Block tut, der den Gesamtverlust als Funktion sowohl des Rekonstruktionsverlustes berechnet , wiederum nur misst, wie ähnlich die ursprünglichen und rekonstruierten Bilder einander sind. Und der KL Divergenzverlust, wiederum misst, wie nah die Wahrscheinlichkeitsverteilungen jedes Bildes ist. Jetzt müssen wir sie irgendwie miteinander kombinieren. Die offensichtliche Sache wäre, nur den Mittelwert der beiden zu nehmen. Aber es stellt sich heraus, dass die Gewichtung auch ein weiterer wichtiger Hyperparameter ist, der abgestimmt werden muss. So können Sie sehen, dass wir ziemlich tief in die Anzahl der Hyperparameter eingehen, die in diesem Modell im Variationsautoencoder abgestimmt werden müssen. Deshalb ist es so schwierig, diese Dinge gut trainiert zu bekommen. Jetzt ist dieses KL-Gewicht im Grunde das, was wir diesen Parameter 3 nennen. Grundsätzlich werden wir auf den Verlust der KL Divergenz um diese Zahl warten. Und das ist ein sehr wichtiger Parameter bewirken, wie gut ihre Endergebnisse sind, es stellt sich heraus, also habe ich bereits einige Experimente gemacht und mich auf die Zahl der drei festgelegt, aber vielleicht können Sie es besser machen. Vielleicht wird eine andere Art und Weise tatsächlich bessere Ergebnisse für Sie produzieren. Gehen wir weiter und Shift Enter. Wieder. Alles, was wir hier tun, ist, den Wiederaufbauverlust zu nehmen, Verlust eins zu nennen, den KL-Divergenzverlust, der zwei verloren hat. Und wir geben beide Verluste zurück, damit wir sie beim Training verfolgen können. Aber der endgültige Totalverlust, den wir tatsächlich optimieren werden, wird der Rekonstruktionsverlust plus das Gewicht des dreifachen KL-Divergenzverlustes sein . So kombinieren wir sie zusammen in die Gesamtverlustfunktion. Na gut, weitermachen. Da wir also eine benutzerdefinierte Verlustfunktion haben, müssen wir irgendwie unser eigenes benutzerdefiniertes Modell erstellen, das es verwendet. größte Teil dieses Codes sieht aus wie eine Menge Code, aber die meisten von uns behalten nur den Überblick über diese verschiedenen Verlustfunktionen, so dass wir sie grafisch darstellen und sie später visualisieren können. Wir werden hier ein VAE-Modell erstellen, das von Keras Punkt-Modell ableitet. Es ist also nur ein benutzerdefiniertes Modell. Wir werden hier unseren kleinen Konstruktor erstellen, der nur einen Totalverlust-Tracker, einen CE verlorenen Tracker und einen KL Loss Tracker aufbaut einen CE verlorenen Tracker . Dies wird also nur verwendet werden, um den Gesamtverlust zu verfolgen, der den Verlust verbindet, über den wir gesprochen haben, das umfasst das Gewicht auf dem KL-Verlust, den Rekonstruktionsverlust , der hier CE-Verlust genannt wird, und die Verlust, der k l os genannt wird. Und wir erklären diese als alle, die hier in diesem Codeblock beobachtbar sind. Und hier ist, wo wir das eigentliche Fleisch unseres tatsächlichen Modells hier bekommen , indem wir die Zugstufenfunktion überschreiben. So verwenden wir hier im Tensorfluss ein Gradientband, um tatsächlich explizit zu definieren, wie das Training funktioniert. Für den Vorwärtspfad rufen wir einfach autodidaktische Encoder mit den Daten an. Und das kehrt zurück, wie wir oben gesehen haben, das Z-Mittelwert, das z-Log var und das z selbst. Wir konstruieren dann das rekonstruierte Bild durch den Aufruf von self dot d coder und tatsächlich geben uns unsere rekonstruierten Bilder zurück. Also läuft der Encoder wieder unser Encoder-Modell aus, um diese Bilder auf diese Wahrscheinlichkeitsverteilung Z zu reduzieren. Und wir verfolgen auch hier die Mittel und Varianzen unabhängig voneinander. Und dann wird der Decoder mit dieser resultierenden Wahrscheinlichkeitsverteilung Z aufgerufen , um zu versuchen, dieses Bild zu rekonstruieren. Und wir nennen das Rekonstruktion. Wir berechnen dann den Gesamtverlust zwischen den beiden. Und wieder betrachtet der totale Verlust sowohl den Wiederaufbauverlust als auch den Verlust der KL Divergenz. Und wir werden sie beide unabhängig verfolgen, damit wir sie sehen können. Schließlich, schauen Sie sich einfach den totalen Verlust zwischen den beiden für das eigentliche Training selbst, das in der Backpropagationsphase passiert, oder? Wenn Sie sich erinnern, ich habe neuronale Netze nur im Allgemeinen arbeiten. Also, was wir hier tun werden, ist, die Steigungen hier zu berechnen , basierend auf den trainierbaren Gewichten, die wir eingerichtet haben. Und wir werden Steigungen anwenden, indem wir diese Steigungen und die trainierbaren Gewichte einfach zusammendrehen . Und wir werden diese trainierbaren Gewichte optimieren. Was uns alle verbindet, ist, diesen totalen Verlust hier zu verwenden, der aus dem totalen Kalkverlust kam , um das tatsächlich in die Art und Weise zu backen, wie die Rückverbreitung funktioniert. Das ist wirklich, wo wir unsere benutzerdefinierte Verlustfunktion in die Ausbildung dieses Modells integrieren. Wieder werden wir all diese individuellen Verlustfunktionen im Auge behalten. Sowohl das Chaos, der Rekonstruktionsverlust als auch die Totalverlustfunktion , die die beiden unabhängig voneinander kombiniert, so dass wir sie alle unabhängig voneinander abbilden können. Und wir haben alle drei zurückgebracht, damit wir sie verfolgen können. Alles klar, Shift Enter, um das einzurichten, sollte nicht lange dauern, aber dieser nächste Block wird lange dauern. Hier werden wir eigentlich das Training machen. Also werden wir unser VAE-Modell einrichten, das unser Encoder-Modell und unser Decoder-Modell übergibt, das VAE-Modell bringt sie alle zusammen. Wir werden dieses Modell mit dem Adam-Optimierer kompilieren. Und diese Lernrate ist ein weiterer Hyperparameter, der abgestimmt werden muss. Dies ist eine, die ich ziemlich viel zwicken musste während ich selbst mit diesem Notizbuch experimentierte. Und schließlich werden wir fit sein, um das Training selbst zu machen. Wir werden 32 Epochen des Trainings und eine Chargengröße von 128 verwenden. Noch mehr Hyperparameter, die abgestimmt werden müssen. Im Allgemeinen sind mehr Epochen besser. Aber wenn Sie feststellen, dass das Modell nicht stabil ist, was ziemlich üblich ist, sind mehr vielleicht nicht besser. Also wieder, Experimentieren ist notwendig, um zu sehen, wie viele Epochen Sie wirklich brauchen, wenn Sie alles andere richtig bekommen, um gute Ergebnisse zu erzielen. Und welche Chargengröße macht Sinn. So sehr einfach zu überpassen hier, sehr einfach für, wissen Sie, in einem lokalen Minima stecken bleiben und nicht aus ihm herauskommen. Das ist auch etwas, das viel passiert, wenn du diese Einstellungen trainierst. Also werde ich voran gehen und das mit einer GPU starten. Es wird eine Weile dauern. Also, was ich tun werde, ist durch die Magie der Videobearbeitung, nur um diese Aufnahme zu pausieren und wieder zu kommen, wenn es fertig ist, Lassen Sie uns die erste Epoche sehen, obwohl, bevor ich das tue, ich denke, der Akt der Aufnahme dieses Videos war tatsächlich um Ressourcen auf meiner GPU konkurrieren. Da geht es. So können Sie hier sehen, dass wir den Wiederaufbauverlust des KL-Verlustes und den Totalverlust beobachten können, der dort zusammenkommt. Und Sie können irgendwie sehen, warum wir ein Gewicht hatten, dass KL ein wenig verlieren. Das sind viel kleinere Zahlen, zumindest zuerst im Vergleich zu den Rekonstruktionsverlusten. So ist der Wiederaufbauverlust wirklich dominiert den Handel jetzt und seinen Beitrag zum Totalverlust. Und wenn wir im Laufe der Zeit gehen, sollten wir sehen, dass der Wiederaufbau Verlust immer kleiner wird. Und wenn das passiert, wird der Verlust der KL mehr ein Faktor sein, wenn er weiter trainiert. Also wirklich, je mehr Epochen Sie haben, desto besser wird es und desto mehr wird KL Verlust ins Spiel kommen. Alles klar, wie ich schon sagte, ich werde das nur pausieren und zurückkommen, wenn es fertig ist. Alles klar, das dauerte etwa 10 Minuten, sogar mit einer GPU, aber unser Training ist endlich eingepackt und wir können irgendwie Augapfel, was hier passiert ist , indem wir uns die im Laufe der Zeit gemeldeten Verlustfunktionen ansehen. Sie können sehen, wir beginnen mit einem Totalverlust von 313 und stieg auf etwa 266 hier. Man kann auf jeden Fall nur durch Augäpfel sehen, dass es wirklich irgendwie einen Punkt der sinkenden Renditen hier erreicht, war eigentlich wirklich zu kämpfen. Als wir 31 waren, ging es tatsächlich um 32 Uhr wieder hoch. 266 scheint also ungefähr so gut zu sein, wie wir es bekommen können. Ob das, weil es die beste Lösung gefunden hat oder weil es in einem lokalen Minima stecken geblieben ist. Nun, ich schätze, wir werden es herausfinden. Sie können auch sehen, dass der Rekonstruktionsverlust wirklich viel größer ist als der Verlust der KL. Das war also wirklich viel zu zahlen, eine viel größere Rolle spielen als k l Verluste gingen wir. So könnte es sinnvoll sein, mit einem größeren Gewicht auf dem k zu experimentieren. Ein Verlust, wenn Sie Zeit haben, möchten Sie vielleicht mit, dass ein wenig spielen. Und es ist auch möglich, dass wir hier in einem lokalen Minima stecken geblieben sind, ich denke, wir werden sehen, wie gut die Ergebnisse sind hier in einem Moment. Aber wenn ja, experimentierte mit der Chargengröße könnte ein guter Weg sein , um zu versuchen, aus diesem Minimum leichter herauszukommen. Wie auch immer, wir können irgendwie Augapfel, was hier vor sich geht, aber lassen Sie es uns planen, weil wir all diese Mühe durchgemacht haben, tatsächlich den Überblick über all diese Zahlen zu behalten. Also Luke, und hier können wir tatsächlich sehen, wie der Totalverlust, der Rekonstruktionsverlust und der Verlust der KL. Auch hier ist das Chaos ein viel kleinerer Wert. Schwer zu sehen, was da los ist. Und Sie können sehen, dass nach nur ein paar Epochen hier, es irgendwie wirklich zu kämpfen hat, um die Lunch-Verlustfunktion weiter zu verbessern und zu verringern, dieses Chaos ist schwer zu sehen, weil es im Vergleich so klein ist. Also lassen Sie uns hineinzoomen und schauen Sie einfach den KL-Verlust unabhängig hier an. Man kann sehen, dass sich das im Laufe der Zeit noch schlimmer wurde. Das ist also irgendwie interessant, oder? Also wissen Sie, definitiv nicht die Richtung, die Sie für eine Verlustfunktion gehen wollen, aber zumindest war es nicht so, dass, wissen Sie, exponentiell nach oben gehen, es begann zumindest zu nivellieren. Das könnte also darauf hindeuten, dass das Training für noch mehr Epochen vorteilhaft gewesen sein könnte, weil wir an einen Punkt kommen, an dem wir nicht wirklich etwas mehr aus dem Rekonstruktionsverlust herausholen konnten , aber es gibt Verbesserungen an auf KL Verlust gemacht werden. Also, wenn wir weitergehen und eine Ausbildung, könnten wir gesehen haben, dass KL Gesetz beginnen zu fallen, als es begann, im Grunde zu drehen, um das Modell so besser zu machen. Okay, also mal sehen, welche Art von Ergebnissen wir hier haben. Also werden wir einfach zufällig ein Mu von Eins und ein Varianz-Sigma von zwei auswählen und sehen, was wir rauskommen. Also wieder, die Idee hier ist, jetzt, wo wir das Modell trainiert haben, wir können den Encoder wegwerfen und einfach den Decoder verwenden, um synthetische Bilder zu konstruieren. Also mal sehen, was eine Wahrscheinlichkeitsverteilung von 12 uns gibt. Also werden wir einfach den Decoder anrufen, ihn bitten, vorherzusagen, tatsächlich ein Bild basierend auf der Eingabe von einem Komma zwei zu generieren. Und wieder, das entspricht unserem Mittelwert und Varianz wird nur das als Graustufenbild 28 mal 28 darstellen und sehen, was wir von ihm zurückbekommen. Hey, das ist ziemlich cool. Also haben wir synthetisch geschaffen, anscheinend eine Hose, die vernünftig aussieht, oder? Also hey, ich bin ziemlich glücklich damit. Das ist das Training funktioniert. Ehrfürchtig. Gehen wir weiter. Also lassen Sie uns tatsächlich 256 Bilder jetzt völlig zufällig generieren. Was wir tun werden, ist bei der Z-Verteilung jedes Mal mit einem zufälligen Mu und Sigma zu erraten . Und mach dir keine Sorgen darüber, hier zu raten, wir können tatsächlich die tatsächlichen mu und sigma, die mit jeder Kategorie verbunden sind, systematischzurückbekommen sigma, die mit jeder Kategorie verbunden sind, systematisch oder zumindest annähern, wenn wir wollen. Aber jetzt lassen Sie uns nur 256 zufällige Bilder generieren. Also werden wir nur mit zufälligen Normalverteilungen für Mu und Sigma in einer Skala von vier erraten und sehen, was wir zurück bekommen. Also dieses Konstrukt 256, so dass diese zufälligen Verteilungen den Decoder auf diesem gesamten Array von Eingabewerten genannt und sie alle nacheinander wie wieder und 28 mal 28 Graustufenbilder und ein 16 mal 16 Raster darstellen . Und da haben wir es. 256 synthetisch erzeugte Bilder von geschlossenen. Und die sind eigentlich ziemlich verdammt gut. Wow, damit bin ich zufrieden. Also ja, ich meine, das ist nicht wirklich viel schlimmer als die Quellbilder wirklich. Also ich denke, wir hatten Glück, und wir haben tatsächlich eine echte Lösung hier während des Trainings getroffen, ja, ich sehe, du weißt schon, Pullover, ich sehe Hemden, ich sehe Hosen, ich sehe Sandalen, ich sehe Stiefeletten. Ja, wir hatten wirklich Glück bei diesem hier. So gute Ergebnisse, würde ich sagen, bis jetzt. Das ist also alles gut und gut. Wir können zufällige Bilder von Kleidungsstücken erzeugen. Aber was, wenn ich eine bestimmte Art von Kleidungsstück erzeugen möchte? Wie mache ich das? Was ist, wenn ich nur ein Paar Sandalen zeichnen will oder so, richtig? Nun, ein Weg, es zu tun, wäre, einfach einen bekannten Fall einer bestimmten Kategorie durch den Encoder zu laufen , beobachten Sie die Mu und Sigma, die vom Encoder für dieses Bild zurückkamen, und senden Sie das zurück in den Decoder, um zu versuchen ein ähnliches Bild wie das, das Sie gerade durch den Encoder, richtig? Es ist nicht perfekt. Es ist kein ganz konkreter Weg, dies zu tun. Es gibt etwas, das als bedingte Variationsautoencoder bezeichnet wird, wenn Sie einen konkreteren Ansatz dazu wünschen, aber dies ist ein vernünftiger Weg, dies zu tun. Weißt du, mach ein Foto von einem Hemd und stecke es zum Decoder und sag, ich will ein Bild, das so aussieht, und du wirst wahrscheinlich eine kurze zurück bekommen. Also lassen Sie uns einfach zufällig eine Bildnummer einhundert, zweihundertachtzig auswählen , was auch immer es in unserem Trainings-Dataset ist. Ich werde das in drei Dimensionen erweitern, so wie der Encoder es erwartet. Und gehen Sie vor und konvertieren Sie das in einen Gleitkommawert zwischen 01, gehen Sie, um die Form auszudrucken, nur um es zu überprüfen, senden Sie es an unseren Encoder, bitten Sie es, vorherzusagen, was diese Wahrscheinlichkeitsverteilung am Ende für dieses spezifische Bild. Und dann übergeben wir diese Wahrscheinlichkeitsverteilung in unseren Decoder, um ein synthetisiertes Bild zurück zu bekommen. Und wir werden sehen, was genau diese Wahrscheinlichkeitsverteilung ist, indem wir am Ende nur z eingeben, um sie auszudrucken. Umschalttaste Eingabetaste Alles klar, damit wir überprüfen können, dass wir ein Bild von 28 mal 28 haben. Sie sind genau so, wie wir erwartet haben. Und was vom Encoder zurückkam, war eine Wahrscheinlichkeitsverteilung mit einem Mittelwert von negativem 0,427 und einer Varianz von 1,259. Alles klar, cool. Also lasst uns voran gehen und diese Verteilung nehmen und sehen, was sie uns gibt. So haben wir bereits den Decoder auf, dass und speichern Sie das Ergebnis in synthetisierten visualisieren, was Sünde Synth. Und wir werden das neben dem Originalbild auch visualisieren. Also richten Sie hier eine Handlung ein. Wir werden das Trainingsbild zeichnen, das wir in den Encoder eingespeist haben, um eine Sache zu bekommen, die ähnlich ist. Und sie werden das synthetisierte Bild zurückspucken, das ihm ähnlich sein sollte. Also Shift Enter. Und ja, sicher genug, es stellt sich heraus, dass die Bildnummer 11280 Adresse ist, und wir haben eine Form, die irgendwie wie Adresse aussieht. Auf diese Weise konnten wir eine bestimmte Kategorie der Nähe synthetisieren. Das ist also eine Möglichkeit, diesen VAE zu benutzen. Eine andere Sache, für die Sie VAEs verwenden können, ist grundsätzlich unbeaufsichtigtes Lernen. Lassen Sie uns also visualisieren, was diese Wahrscheinlichkeitsverteilungen nachschlagen, wenn wir a, färben sie durch die tatsächlichen bekannten Klassifikationen. Also werde ich in Labels von unseren Trainings- und Testdaten hier in dieses Diagramm einspeisen und die Mittel und Varianzen über unseren gesamten Datensatz dort vom Encoder plotten. Wir werfen also das gesamte Dataset in unseren Encoder, plotten, die resultierenden Wahrscheinlichkeitsverteilungen und färben diese basierend auf ihren bekannten Kategorien. Hab es. Lass uns voran gehen und die Umschalttaste eingeben und sehen, wie das aussieht. Und da hast du es. Sie können sehen, dass wir diese Cluster sehen. Wir können tatsächlich visualisieren, dass es unterschiedliche Wahrscheinlichkeitsverteilungen gibt, diese verschiedenen Arten von Kleidung. Ich weiß also nicht, was diese verschiedenen Farben darstellen. Vielleicht sind die lila Hosen und sie wären die grünen Kleider. Ich weiß es nicht. Aber Sie können sich dies als eine Form des unbeaufsichtigten Lernens vorstellen, bei diese unterschiedlichen Bereiche von Wahrscheinlichkeitsverteilungen wahrscheinlich Klassifizierungen entsprechen, verschiedene Arten von Dingen in unseren Quelldaten. Wenn ich also nicht wüsste, was diese Labels der Zeit voraus waren, könnte ich sie vielleicht ableiten, indem ich nachdenke, woran diese unterschiedlichen Wahrscheinlichkeitsverteilungen in unseren Quelldaten zurückbinden. So eine weitere mögliche Anwendung von VAEs, unbeaufsichtigtes Lernen von Kategorien. Aber die interessantere Anwendung ist es, synthetische Bilder zu erzeugen. Und als nächstes werden wir mit GANs darauf aufbauen. 21. Generative Nebensystem (GAN's): Nun, da wir Variationsautoencoder unter unserem Gürtel haben, reden wir über generative gegnerische Netzwerke. Es ist eine ähnliche Idee, aber anders, weißt du, anders genug, dass es seine eigene Sache ist. Ja, das ist die Technologie hinter tiefen Fälschungen und all diese viralen Gesicht-tauschen Apps in alternden Apps, die Sie zuvor gesehen haben. Zum Beispiel ist dies ein Bild von jemandem, der es nicht gibt. Dies ist die Ausgabe eines generativen gegnerischen Netzwerks, die gerade geschult wurde, wie realistisch aussehende Bilder der Köpfe der Menschen zu erzeugen. Echte Sache. Ja, und nochmal, ich werde mich nicht mit der Ethik beschäftigen. Wir haben Ihnen bereits vorhin im Kurs Vorlesungen unterrichtet. Aber das ist die Technologie hinter tiefen Fälschungen, aber es ist auch die Technologie hinter all diesen viralen Apps Sie sehen, um Gesicht tauschen in alternden Menschen, indem Menschen wie Disney-Charaktere aussehen und all das Zeug, richtig? Forscher so hatte edle Absichten für diese Arbeit. Ursprünglich, einige der geplanten Anwendungen, generieren wir synthetische Datensätze, wenn Sie private Informationen haben. Dies ist also besonders nützlich im medizinischen Bereich, wo Sie aufgrund der Datenschutzgesetze nicht einfach echte Trainingsdaten erhalten können, richtig? Also, wenn Sie versuchen, ein neues neuronales Netzwerk zu generieren , das lernen kann, Brustkrebs oder so zu erkennen. Es ist schwierig, echte Daten dafür zu erhalten, um es zu trainieren. Aber indem wir eine GAN auf realen Daten trainieren, können wir sie irgendwie trainieren, wie synthetische Datensätze erstellt werden, die sehr nahe an den ursprünglichen liegen, aber ohne tatsächliche private Informationen darin enthalten sind. Das ist also eine praktische Anwendung von GANs, die nicht nur eine virale App auf Ihrem Handy ist. Es kann auch für die Erkennung von Anomalien verwendet werden. Es kann verwendet werden, um ein Bild mit dem zu vergleichen, wie es denkt, ein Bild sollte aussehen und Anomalien automatisch auf diese Weise erkennen. Es hat auch Anwendungen in selbstfahrenden Autos. Es hat auch Anwendungen in Kunst und Musik. Weißt du, du könntest eine GAN trainieren, wie man ein Kunstwerk im Stil von Picasso oder was auch immer dein Lieblingskünstler ist, oder wie man eine Symphonie und den Stil von Beethoven oder Mozart erzeugt. Und das Zeug funktioniert wirklich. Sie können synthetische Kunstwerke und synthetische Werke mit GANs erzeugen, die ziemlich überzeugend sind. Wenn Sie also all diese beeindruckenden Demos einer KI, die ihre eigene Symphonie gemacht hat, funktioniert es und ich denke, das wird für Sie entmystifiziert werden. Es ist nicht wirklich so kompliziert, wie Sie vielleicht denken. Also, um zu verstehen, wie GANs tatsächlich funktionieren, muss man wirklich auf diesem Diagramm hier nudeln, das fasst wirklich zusammen, wie alles zusammenkommt. Und wie Sie sehen können, ist es nicht so schwer, oder? Es ist also ziemlich einfach. Zunächst einmal gehen wir nicht davon aus, dass Gaußsche Normalverteilungen in den latenten Vektoren, die wir wie VAEs lernen. Es könnte alles im Fall von GANs sein. Aber die Sache, die hier wirklich anders ist, ist, dass wir zufälliges Rauschen in unserem Generator den Wahrscheinlichkeitsverteilungen zuordnen oder was auch immer sie sein könnten. Und indem wir das tun, indem wir zufällige Geräusche und Eingaben , können wir zufällige, was auch immer es ist, dieses Generators erzeugen. Also lernt der Generator, wie man eine Art Zufallssignal nimmt und ein zufälliges Gesicht oder ein zufälliges Musikstück oder eine zufällige Kunst oder einen zufälligen Datensatz macht , richtig? Das ist also, wo diese Zufälligkeit als Eingang zum Generator dort eintritt. Und auf der anderen Seite haben wir einen Diskriminator , der versucht zu lernen Was ist der Unterschied zwischen echten Bildern, auf denen ich das System als Ganzes trainiere Vergleich zu den generierten Bildern, die vom Generator kommen. Okay, also ist das wirklich das Herz von allem. Wir haben diesen Generator, der lernt, alle Arten von Bildern oder Daten zu generieren, die wir erstellen möchten. Und die Aufgabe von Diskriminatoren ist es zu erkennen, ob diese erzeugten Bilder von den realen Bildern im Allgemeinen unterschieden werden können, oder? Also wirst du dies auf einer Reihe von Beispielbildern von Gesichtern trainieren. Lassen Sie uns also eine Reihe von echten Gesichtsbildern geben. Der Diskriminator wird lernen, wie man diese realen Gesichter von generierten Gesichtern im Allgemeinen unterscheidet . Und als er zu dem Punkt kam, wo der Diskriminator den Unterschied nicht mehr erkennen kann. Das ist, wenn wir mit dem Training fertig sind. Sie haben also dieses ungünstige gegnerische Netzwerk hier vor sich. Der gegnerische Teil ist, dass der Generator dem Diskriminator widerspricht. Also der Generator versucht, immer den Diskriminator zu täuschen , zu denken, dass das Bild ist es schafft sind real. Und der Diskriminator versucht, den Generator im Lügen zu fangen, oder? Also gibt es eine Art Absicht miteinander. Und das macht es zu einer sehr kniffligen Sache, in Praktiken zu trainieren, ist ein sehr zerbrechliches System, um tatsächlich loszugehen. Aber sobald es funktioniert, funktioniert es wirklich gut. Und deshalb sage ich, dass, sobald der Diskriminator denUnterschied zwischen den realen Gesichtern und den generierten Gesichtern nicht mehr erkennenkann Unterschied zwischen den realen Gesichtern und den generierten Gesichtern nicht mehr erkennen , das wahre ist, was in den generierten Dingen ist, wir sind theoretisch trainiert. Weil es in der Praxis wirklich schwer ist, das richtig zu trainieren? Es ist, es gibt eine Menge Hyperparameter zu stimmen. Es endet sehr instabil. Also ist eine schreckliche Menge Versuch und Irrtum notwendig, um tatsächlich eines dieser Dinge zu trainieren und gute Ergebnisse daraus zu erzielen. Aber wenn man sich diese Mühe macht, landet man mit einigen ziemlich beeindruckenden Sachen von GAN. Also, bevor ich weitermache, möchte ich Sie irgendwie Nudeln auf diesem Diagramm ein wenig mehr lassen , weil dies wirklich das Herz des Verständnisses GAN ist. Also, okay, also haben wir zufälliges Geräusch, das wir verwenden, das in einen Zug geht, ein Generator, der lernt, wie man erzeugt, produziert, was auch immer es ist Gesichter in diesem Beispiel ist. Dann trainieren wir das System als Ganzes auch mit echten Gesichtern. Der Diskriminator wird geschult, wie man das Reale von den gefälschten Bildern oder Daten unterscheidet. Im Allgemeinen sind sie im Laufe der Zeit hat der Diskriminator eine schwierigere und schwierigere Zeit lernen, was real und gefälscht ist, da ein Generator bei der Erzeugung überzeugender gefälschter Bilder besser und besser wird . Wir kommen zu einem Punkt, wenn der Diskriminator den Unterschied nicht mehr erkennen kann, wir haben ein wirklich gut ausgebildetes generatives gegnerisches Netzwerk, das hier vor sich geht. Okay, also das ist irgendwie das Herz davon. Wir trainieren einen Generator, wie man gefälschte Daten generiert, ein Diskriminator, der darin trainiert ist, den Unterschied zwischen realen Daten und gefälschten Daten zu erkennen. Und wenn diese Dinge zusammenkommen, haben wir einen Generator, der Dinge erzeugen kann , die der Diskriminator den Unterschied zwischen dem echten Zeug nicht erkennen kann. Ok? Phantasie Mathematik. Das ist es, worauf es ankommt. Nicht zu viel kommen, aber das ist die gegnerische Verlustfunktion für das System als Ganzes. Wir nennen es ein Min-Max-Spiel, so dass es wert ist, darüber zu reden. Auch hier versucht der Generator, seinen Verlust zu minimieren und realistische Bilder zu erstellen. Während der Diskriminator maximiert seine Fähigkeit zu erkennen, Fälschungen zu erkennen. Das ist, wenn wir sagen, Min sub g, das ist ein Generator, der seinen Verlust minimiert und max sub D gibt es den Diskriminator, der seine Fähigkeit maximiert, Fälschungen zu erkennen. Das ist also, was das alles in Bezug auf die ausgefallene Mathematik bedeutet. Ich wie gesagt, es ist alles sehr kompliziert und zart. Das Training kann sehr instabil sein. Es gibt eine Menge Tuning, eine Menge Versuch und Fehler beteiligt, um es gut funktionieren zu lassen. Und nur die Herstellung des Notizbuchs, das wir gerade betrachten, dauerte eine lange Zeit, um das zusammen zu bekommen, und Sie erhalten halbwegs anständige Ergebnisse daraus. Es kann auch sehr lange dauern, um zu trainieren, viele Rechenressourcen zu trainieren. Aber sobald Sie es haben, ist es eine sehr effiziente Möglichkeit, gefälschte Bilder von Gesichtern zu schaffen oder was auch immer Sie versuchen, einige andere Probleme zu schaffen , die es in diese etwas namens Modus kollabieren läuft. Ein Problem ist also, dass, wenn Sie verschiedene Arten von etwas haben, wissen Sie, verschiedene Arten von Gesichtern, verschiedene Arten von Bildern von Schuhen, was auch immer es ist. Das System kann einfach lernen, wie man eines dieser Dinge sehr effizient und sehr überzeugend macht. Und das wird immer noch zu einer verlustarmen Funktion im gesamten System führen. So ist es nicht ungewöhnlich, zum Beispiel, wenn Sie versuchen, es zu trainieren, wie man gefälschte Bilder von Schuhen erstellt. Denn es nur wirklich lernen, wie man gefälschte Bilder einer Sandale macht. Und das ist ein Problem, das Moduskollaps genannt wird, wo wir gerade gelernt haben, wie man eine bestimmte Art von Sache wirklich gut macht. Aber es ist nicht so allgemein, wie wir es wollen. Es leidet auch sehr unter dem verschwindenden Gradientenproblem. Darüber haben wir früher im Kurs gesprochen. Und damit lassen Sie uns einige Beispiele für das Sehen von GANs in Aktion gehen, weil ich denke, dass es viel mehr Sinn macht, wenn er irgendwie sieht, was es in Echtzeit unter der Haube passiert. Und dann tauchen wir in ein Notizbuch ein und machen es mit einem praktisch. 22. GAN Demos und Live-Training: Um Ihnen zu helfen, zu verstehen, wie GANs trainiert werden, schauen wir uns hier ein paar praktische interaktive Beispiele an. Und danach werden wir durch ein Notizbuch gehen, um es genauer durchzugehen. Aber ein wirklich nettes Werkzeug, um zu visualisieren, wie dieses Training funktioniert, ist das GAN-Labor hier. Und reden wir darüber, was hier vor sich geht. Also, anstatt mit dem Versuch zu beginnen, gefälschte Bilder zu erzeugen, Lassen Sie uns mit etwas einfacher beginnen, einfacher, um unsere Köpfe zu wickeln. Wählen wir hier einfach eine zweidimensionale Datenverteilung aus. Also, was ich tun werde, ist versuchen, eine GAN zu schaffen, die lernt, wie man einen Ring schafft. Ok? So haben wir diese Verteilung von 2D-Punkten in dieser allgemeinen Ringform hier. Und was wir tun wollen, ist eine GAN zu trainieren, um eine zufällige Eingabe und zufällig generierte Verteilung zu nehmen , die dem so gut wie möglich entspricht. In dieser Visualisierung werden wir die realen Datenpunkte in grün dargestellt sehen. Dies kommt von unserer realen Verteilung und die gefälschten, die von unserem Generator erstellt werden, werden in lila erscheinen, während wir trainieren. Und während das Training weitergeht, können wir in einer Heatmap die Verlustfunktionen des Generators und des Diskriminators visualisieren . Also, während wir gehen, werden wir sehen, wie der Diskriminator versucht, diese Punkte zu klassifizieren ist real oder gefälscht. Und was wir sehen sollten, ist, dass es irgendwann um eine Art Ringform konvergieren sollte , wo es Dinge im Ring als real identifiziert und Dinge, die außerhalb des Rings als gefälscht sind. Und wir können tatsächlich im Laufe der Zeit sehen, wie gut der Generator macht einen kniffligen Diskriminator und wie gut der Diskriminator tut eine erzählende echte und gefälschte auseinander. Also lasst uns weitermachen und das loslegen. Lass uns spielen und wir können es in Aktion sehen. So können Sie sehen, dass unsere gefälschten Daten hier, es ist irgendwie wie durch den ganzen Ort zu gehen hier auf den ersten, wie es beginnt zu lernen. Aber ziemlich schnell wird es anfangen, in immer mehr Ringform zu fallen. Und wir können hier unseren Diskriminator sehen, Heatmaps. Also gerade jetzt sagt der Diskriminator, okay, gefälschte sind hier drüben, sie sind hier. Das Purpur ist wieder gefälscht und grün ist echt. Und schon können wir sehen, dass wir diesen Ring bekommen, diesen Kreis hier aus Weiß, wo er anfangen wird, die grüne echte Klassifizierung um diesen Ring herum zu legen und überall sonst eine lila gefälschte Klassifizierung. Und wie wir weiter und weiter gehen und enger und enger werden sollten, sehen wir , dass lila gefälschte Proben erzeugt versuchen mehr und mehr innerhalb dieser tatsächlichen Verteilung zu bekommen , die von der ursprünglichen realen Datenverteilung dort kam. Und werfen wir einen Blick auf die Metriken hier. Wir können also sehen, dass im Laufe der Zeit die Verlustfunktion der Diskriminatoren abnimmt aber irgendwie stabil bleibt, weil es schwieriger wird, die beiden voneinander zu unterscheiden, oder? Aber die Verlustfunktion des Generators beginnt sich hier zu stabilisieren. Könnte besser sein. Sie werden hier irgendwie ein bisschen wackelig. Wir können sehen, dass wir schon irgendwie ein lokales Minima getroffen haben und dort irgendwie etwas instabil geworden sind. Und es versucht irgendwie, seinen Weg zurück zu etwas Besserem zu arbeiten. Und wieder, weißt du, die Sache mit GANs ist, dass sie sehr instabil sind. Es braucht also wirklich genau den richtigen Satz von Hyperparametern, damit dies in einem Glücksfall funktioniert. Glück, ehrlich gesagt, weil es einige zufällige Komponenten für das Training gibt , die hier stattfinden. Aber irgendwann scheint es wieder dorthin zu kommen, wo es hier sein sollte. Ich denke, es kommt aus dem heraus und fängt an, wieder dorthin zu kommen, wo es sein will. Wir haben eine Art von dieser seltsamen Halbmondform, die dem Diskriminator vorgeht , die offensichtlich nicht korrekt ist. Die kreisförmigen Formen sind notorisch schwer zu erlernen. Und diese erzeugten Samples fallen wirklich irgendwie in eine Linie. Sie sind nicht wirklich ein Kreis, der früher früher besser war. Warte, warte, ich glaube, wir kommen hier wieder in einen besseren Zustand. In Ordnung, jetzt fangen wir an, uns zu etwas zu konvergieren, das ein bisschen besser aussieht. Ja, Sie können sehen, dass sich das stabilisiert. Und wir können hier im Gras sehen, dass die Generatorverlustfunktion abnimmt. Die Diskriminatoren Verlustfunktion beginnt sich zu stabilisieren. Das sind alles ziemlich gute Zeichen. Aber nochmal, weißt du, nicht genial. Wir können hier den gesamten Verteiler des Generators sehen. Es ist nicht wirklich diese Kreisform, aber zumindest kommt es näher. Das fällt hier irgendwie vom Rand mit dieser Verteilung. Und es scheint in diesem Fall nicht wirklich aus dem herauszukommen. Also stecken wir irgendwie hier fest. Es scheint, wenn wir es wieder anfangen würden, würden wir wahrscheinlich andere Ergebnisse erzielen. Versuchen wir es noch einmal. Jetzt haben wir ein besseres Gefühl für das, was vor sich geht. Okay, also wieder, wir sind, der Generator hat ein bisschen Glück, diesmal kommen wir tatsächlich in mehr von dieser Kreisform ein bisschen früher auf es scheint. Und wir können sehen, dass die Verlustfunktionen hier mehr oder weniger stabil sind. Denn wieder, wir haben irgendwie richtig von Anfang an erraten, haben immer noch einige dieser gefälschten Proben in der Mitte dort, wo sie nicht sein sollten. Wir werden sehen, ob sich das im Laufe der Zeit verbessert. Das fing an, besser aussehen zu lassen. Dieser Generator sind vielfältig, es gibt Silizium kreisförmig. Der Diskriminator konzentriert sich immer noch auf den oberen rechten Quadranten. Aber insgesamt sind die Ergebnisse nicht so schlecht. Und jetzt fangen wir an, gut auszusehen. Also, jetzt ist der Diskriminator wirklich irgendwie, diese Kreisform zu bekommen und lernen, dass alles außerhalb dieses Kreises, es weiß, dass es gefälscht ist. Und gleichzeitig beginnt der Generator wieder etwas wackelig zu werden. Also wieder, es ist instabil, oder? Also lernen wir hier, dass GANs schwer zu trainieren sind. Sie können instabil werden, erhalten diese Hyperparameter und die Anzahl der Epochen, die nur die Chargengröße auffallen. Schreiben Sie einfach alles kritisch für eine gute Leistung. Während wir etwas versuchen, ein wenig einfacher, Lassen Sie uns versuchen, diese Datenverteilung, die nur eine gerade Linie ist. Das sollte hier ein einfacher Fall sein. Und wir können sehen, dass der Generator ziemlich schnell auf dieser Linie konvergiert. Und wir sollten sehen, wie der Diskriminator beginnt, sich das auch anzunehmen. Aber schon ist der Generator ziemlich nah an den realen Daten. Also ja, das ist viel einfacher, oder? Kreise sind also immer hart, aber in diesem Fall konvergieren wir auf etwas viel Besseres, viel schneller. Und man sieht hier, dass die KL-Divergenz dort wirklich schnell geschrumpft ist. Der Diskriminatorverlust im Generatorverlust oder grundsätzlich stabil an dieser Stelle. Also denke ich, das ist ungefähr so gut, wie es wird. Und wenn Sie also selbst damit spielen wollen, gehen Sie zum Polo Club dot github dot io slash GAN Labor, und Sie können damit selbst herumgeigen . Es gibt andere Modelle pro Jahr können Sie versuchen und spielen mit verschiedenen Szenarien hier und sehen, was passiert. Alles klar, weitermachen. Wenn wir das auf eine andere Ebene bringen, schauen wir uns den GAN Spielplatz hier an. Gehen Sie zu Ryan auf Kano.com. bin mir nicht sicher, wie ich das sagen soll. Spielplatz. Dies verwendet tatsächlich das alte m-nest Dataset anstelle der synthetischeren Datenverteilung. Also in diesem Fall, gehen wir weiter und fahren hier Zug. Also werden wir das trainieren, um Zahlen, Bilder und Zahlen zu generieren. Und erinnern Sie sich noch einmal mit einem GAN, wir trainieren es nicht, um bestimmte Zahlen zu generieren, also erwarte ich nicht, dass eine Neun hier mit den neun oder sechs mit den sechs verbunden ist, nur Zahlen im Allgemeinen generiert. Also wieder, es gibt diesen Modus kollabieren degenerierten Zustand, wo es nur lernt, eine Nummer zuverlässig zu machen. Aber hoffentlich sehen wir etwas Interessanteres ist das Training hier weiter. Also, was wir hier visuell sehen, ist, wie gut der Diskriminator macht eine aussagekräftige und gefälschte auseinander. Das sind also die echten Bilder, die hereinkommen und auch die erzeugten Bilder. Und wie wird der Diskriminator tun, um die beiden auseinander zu sagen? So können wir jetzt sehen, dass wir 60% oder so bekommen. Erfolgsrate bei der Identifizierung von realen Bildern ist real. Eigentlich ist es plötzlich viel besser geworden. Und wir identifizieren das gefälschte Bild ist öfter als nicht so gut gefälscht, aber immer noch nicht toll. Offensichtlich sind die visuellen Ergebnisse hier nicht genial, aber sie verbessern sich visuell im Laufe der Zeit. Eine Nummer zu machen, ist eine viel kompliziertere Aufgabe und nur einen Kreis zu machen , wie wir es mit dem GAN-Labor vorher versucht haben. Sie würden also erwarten, dass dies etwas teurer ist. Und wir können auch visualisieren, die Verlustfunktion ist auf den Diskriminator und den Generator hier als auch. Wir können sehen, dass es schon, weißt du , irgendwie kämpft, um etwas besser zu werden, aber wenn man genug Zeit gegeben hat, wird es , wenn man will, das nach ungefähr zehn Zentimeter selbst laufen lassen. Also finde ich, dass die Ergebnisse ziemlich interessant werden und schon anfangen, wie Zahlen aussehen, sieht irgendwie wie eine Fünf aus. Es gibt noch etwas Raum für Verbesserungen, oder? Das sieht aus wie eine Acht. Es kommt dorthin, aber gib ihm mehr Zeit. Und diese werden mehr und mehr wie Zahlen aussehen. Und ich denke schon, dass sie sich irgendwie verbessern, oder? Also, Carlos, wie eine blühende Art von Ding da. Aber wenn wir genug Ausbildung haben, können wir nicht sehen, dass langsam, aber sicher, dass die Kosten für die Diskriminierung sinken. Generator, aber wirklich kämpfen, um zu verbessern. Jetzt können Sie mit der verschiedenen Topologie des Netzwerks hier spielen, wenn Sie möchten, und die verschiedenen Hyperparameter sehen, ob Sie eine bessere Arbeit leisten können. Aber, weißt du, es muss hoch sein. Es wird hart werden. Aber wenn Sie interaktiv damit spielen wollen, ist das eine Möglichkeit, es zu tun. Lassen Sie uns aufhören, dies und gehen Sie zu mehr Spaß Beispiel. Das ist also eine Nvidia GAN Demo namens Gauguin. Wurden sie absichtlich geschrieben, dass mit GAN Am Ende Gauguin, nach dem berühmten Maler. Und es verwendet eine GAN, um gefälschte Bilder von verschiedenen Arten von Landschaften zu erzeugen, richtig? Also, wenn ich einfach den Knopf hier drücken, wird es automatisch diese Segmentierungskarte hier nehmen, die ich gezeichnet habe , die besagt, dass ich Wasser hier unten und Himmel hier oben will. Und es wird einen synthetischen Ozean erzeugen. Und es ist ein synthetischer Himmel, der mit den Segmenten übereinstimmt, die ich definiert habe. Daher muss ich den Allgemeinen Geschäftsbedingungen zunächst zustimmen. Und jetzt sollten wir ein Bild wie das sehen. Sie haben also eine GAN, die darauf trainiert ist, wie man Wasser herstellt und was es versucht, wie man einen Himmel macht und sie dort zusammenbringt. Es wird jedoch interessanter. Lassen Sie uns hier eigentlich Landschaft auswählen und einige Berge am Horizont setzen. Fühlen Sie sich wie Bob Ross hier. Und Sie können jede Art von Landschaft, die Sie wollen, so machen. Also jetzt wirklich gegangen, beginnend bei jeder mathematischen oder neuronalen Netzwerktopologie hier. Es ist also ein lustiges Beispiel dafür, was man mit GANs machen kann. Und wir haben dort ein paar Berge, eine seltsame Grenze zwischen Bergen und Wasser. Geben wir ihm etwas, etwas Boden, etwas Dreck. Und ich werde diesen Ozean irgendwie zu einem See machen. Ich will nicht zu viel Zeit damit verschwenden. Das ist kein Malkurs. Aber nur um Ihnen eine Vorstellung davon zu geben, was das tun kann. Und während wir dabei sind, lassen Sie uns ein paar glückliche kleine Wolken da oben setzen, eine hier und eine da drüben. Und da haben wir unsere kleine falsche Landschaft. Also ein kleines, kleines Wasserloch. Sie sind von einigen Dreckhügeln im Hintergrund umgeben und einige Wolken am Himmel, die alle durch GANs erzeugt wurden, die darin trainiert wurden, diese verschiedenen Arten von Features in einem Gemälde nach dem Zufallsprinzip algorithmisch zu machen . Also irgendwie ein lustiges Beispiel gibt es von GANs. In Ordnung, also haben Sie GANs in Aktion gesehen. Gehen wir in ein aktuelles Notizbuch und tauchen Sie ein, wie diese tatsächlich unter der Haube funktionieren. 23. GANs Hands mit Hands-On: Alles klar, wir hatten unseren Spaß. Lassen Sie uns also voran und implementieren Sie ein generatives gegnerisches Netzwerk mit einem Notebook hier und sehen, wie sie hier unter der Haube laufen und wie man tatsächlich eins codiert. Überraschenderweise kleine Menge Code hier. Und so nicht eine ganze Menge, um wirklich dort durchzugehen. Täuschend einfach, obwohl sie sehr komplex zu trainieren sind. Auch hier sind dies sehr rechenintensive Dinge, die man trainieren muss. Wenn Sie also keine GPU haben, möchten Sie dies wahrscheinlich nicht selbst tun. Lassen Sie uns voran und überprüfen, ob wir einen mit diesem ersten Codeblock haben. Und das wird losgehen und TensorFlow laden, was wir ein wenig nehmen werden. Aber wir können sehen, dass ich eine GPU für das Training zur Verfügung habe. Wenn Sie sagt 0 und Sie haben eine NVIDIA GPU, wieder über zu diesem Link und es wird mit Ihnen darüber sprechen, wie Tensorflow GPU unter Anaconda zu installieren, einfach pip installieren TensorFlow dash GPU. Aber zuerst müssen Sie wahrscheinlich einige Abhängigkeiten wie die CU DNN Library installieren , die erfordert, dass Sie auf die NVIDIA-Entwicklerwebsites gehen dort für ein Konto anmelden und all das Zeug, aber es lohnt sich , um dieses Training zu beschleunigen. In Ordnung, wie zuvor mit dem VAE-Beispiel, werden wir das Mode-m-Nest-Dataset laden. Und wir werden eine GAN erstellen, die zufällige Kleidungsstücke generieren kann. Also lassen Sie uns voran und laden Sie das aus Keras dot datasets Paket. Und nach wie vor werden wir die Trainings- und Testdatensätze zusammenführen , nur um mehr Trainingsdaten zu erhalten. Auch hier ist unser Ziel nicht, Daten zu klassifizieren, ist es, gefälschte Daten zu generieren. Also gibt es hier wirklich keinen Nutzen für den Testdatensatz. Wir werden alles nur zusammen vertuschen. Und während wir dabei sind, wird es diese Bilddaten von Zeichenwerten von 0 bis 255 auf Gleitkommawerte zwischen 01 normalisieren , denn das ist, was Sigmoid-Funktionen erwarten. Und wir werden die Daten neu gestalten und diese zusätzliche Dimension hinzufügen, die wir für die CNN-Layer benötigen, denn die Faltschichten werden sie auch mischen und aufstapeln, während wir dabei sind. In einer Batch-Größe von 64 nach oben, Es gibt unseren ersten Hyper-Parameter, den wir vielleicht optimieren möchten. ist nicht viel los. In Ordnung, also lasst uns damit beginnen, unser Generatormodell einzurichten. Auch hier ist dies die Sache, die versucht, gefälschte Bilder zu erzeugen, die gerade eine zufällige Eingabe gegeben wurden. So macht es zufällige Bilder von, na ja, Kleidungsstücken in unserem Beispiel hier. Okay, lass uns durch das gehen, was hier passiert. Wir importieren das Zeug, das wir brauchen, aus TensorFlow und Keras, einem weiteren Hyper-Parameter hier. Wie viele Dimensionen des Lärms haben wir? Wie viele Eingaben gehen wir in dieses Ding? Also werden wir mit 150 zufälligen Rauschwerten hier beginnen. Und wir werden das als Input verwenden. Und wieder, Sie können das ändern und sehen, welche Auswirkungen es hat. Später. Lassen Sie uns ein sequentielles Modell einrichten und Keras beginnt mit diesem Rauschvektor dort, wenn ein 150 Rauschwerte. Und wir können mit welcher Art von Verteilung dieses Rauschen spielen. Wir füttern das in eine dichte Schicht von sieben mal sieben mal 256. Und wir werden eine Transponierungsfaltung darauf in drei Schichten durchführen und bis zu einem endgültigen Bild arbeiten, wenn wir fertig sind, das zu rekonstruieren. Also wieder, das ist sehr ähnlich wie der Decoder von einem VAE, richtig? So ziemlich das Gleiche. So können Sie sehen, wie diese Dinge sehr eng miteinander verwandt sind. Sprechen Sie eine Zusammenfassung des Modells aus, nur um sicherzustellen, dass es aussieht, bevor wir weitermachen. Ja, sieht vernünftig aus für mich. Als nächstes machen wir unser Diskriminator-Modell. Und wieder, das sieht sehr ähnlich wie der Encoder aus dem VAE, richtig? Also, was wir hier als Eingabe nehmen ist ein 28 mal 28 mal 1 Bild, 28 mal 28 Pixel, ein Kanal von Farbe Graustufen Feed, dass in eine 256-Element konvolutionale 2D-Ebene, die zu einem 128. Und wir werden das auf eine dichte Schicht von nur 64 Neuronen abflachen. Und wir werden ein Ausfallgesicht darauf anwenden, um Überanpassungen zu verhindern. Und schließlich geben Sie eine endgültige Zahl von Ja oder Nein aus. Glaubt dieses Ding, dass es echt oder gefälscht ist? Das ist also der Hauptunterschied von VAEs. Wir versuchen nicht wirklich, hier einen Vektor von latenten Features zu generieren , wo ich gerade eine Ausgabe von erzeugt habe , denke ich, das ist ein echtes Bild oder glaube ich, das ist ein gefälschtes Bild, aber ansonsten ziemlich ähnlich dem Encoder von einem VAE. Lass uns voran gehen und schlagen, dass das Modell für mich richtig aussieht. Eines der Dinge, die ich vergessen habe, darauf hinzuweisen, dass wir die RelU Aktivierungsfunktion hier auf dem Diskriminator und die undichte RelU Aktivierungsfunktion auf dem Generator verwenden . Und das ist nur etwas, das die Leute im Laufe der Zeit gelernt haben, dass funktioniert gut. gibt nur Standard-Best Practice. Okay, lassen Sie uns hier unsere Optimierer und Verlustfunktionen einrichten. Also yay, mehr Hyperparameter. Also wieder, wir haben einen Optimierer für den Generator und Diskriminator. Wir nennen diesen Optimierer G und Optimierer D. Beide werden den Adam-Optimierer verwenden, aber mit unterschiedlichen Lernraten. Und diese sind entscheidend, um es richtig zu machen, wenn Sie während des Trainings ein stabiles Modell haben wollen , wenn Sie die falsch verstehen, Es wird einfach so explodieren, wie wir während dieser früheren Demo gesehen haben zu versuchen, zu lernen, dass eine Ringform, Wenn Sie sich wieder auf dem GAN Spielplatz erinnern, ist unser Klassifikator für die Verlustfunktion ziemlich unkompliziert. Wir versuchen nur herauszufinden, ob die Dinge echt oder gefälscht sind. So passt binäre Cross-Entropie die Rechnung dafür. Ebenso wollen wir aus Gründen der Genauigkeit sehen, wie genau wir beim Erraten von Ja oder Nein sind. Ist das ein echtes Bild? So binäre, binäre Genauigkeit. Ist auch dafür völlig vernünftig. Umschalttaste Eingabetaste Das haben wir alles vorbereitet. Alles klar, lasst uns alles zusammenbinden. Also beginnen wir damit, unsere Ausbildung für den Diskriminator zu definieren. In Ordnung, also der Batch kommt, wo ich gerne die Form der Daten lesen möchte, um herauszufinden, was die Dimensionalität davon ist, was die Chargengröße ist. Und dann erstellen wir einen Vektor mit zufälligem Rauschen, der dieser Chargengröße für den Rauschvektor hier entspricht. Und wir verwenden einen zufälligen Punkt Normal hier für eine Normalverteilung muss nicht unbedingt eine Normalverteilung sein. Sie könnten hier eine einheitliche Verteilung ausprobieren, wenn Sie es auch wollten und sehen, was das tut, wenn Sie Zeit haben, damit zu spielen. Und als nächstes werden wir die echten und gefälschten Etiketten verketten. Wie wir sehen werden, werden wir tatsächlich die realen und die gefälschten Daten zusammenstecken , während wir sie in den Diskriminator einspeisen. Und so werden wir alle echten Daten mit einem Label von eins haben, gefolgt von allen gefälschten Daten mit einem Label von 0. Wie wir hineingehen und definieren unsere Etiketten hier für die Daten, die wir einspeisen. Das ist es, was da los ist. Wir haben hier unser Gradientband für das Training eingerichtet. Wir generieren zuerst unsere gefälschten Daten, indem wir den Generator mit diesem Rauschvektor aufrufen , um eine Reihe von gefälschten Bildern zu erhalten. Wir verketten das dann mit den realen Daten zusammen. Also haben wir die realen Daten gefolgt von den gefälschten Daten. Und wieder, das richtet sich mit diesen Etiketten von echten und gefälschten, die wir oben hier unter y Unterstrich true einrichten. Wir füttern das dann in den Diskriminator, um zu sehen, wie gut es ist, zu erraten, ob es sich um reale oder falsche Bilder handelt. Und dann berechnen Sie die Verlustfunktion, die wir oben definiert haben, ob es richtig ist oder nicht. In Ordnung, wir müssen hier auch den Rückwärtsweg für das Training definieren. Wir richten hier nur wieder ein Gradientband ein, Optimierer D, das wir vorher eingerichtet haben. Wenden Sie Verläufe an. Nichts wirklich Interessantes hier ist eine Art Boilerplate Code hier, aber wir übergeben in dieser Diskriminator-Verlustfunktion, die wir früher definiert haben. Okay, wir melden die Genauigkeit hier zurück und behalten den Überblick darüber, was im Laufe der Zeit ausgedruckt wurde. Und das ist alles, was es für das Diskriminator-Modell gibt. Lassen Sie uns die Umschalttaste eingeben, um das einzurichten. Und jetzt wenden wir unsere Aufmerksamkeit auf den Generator. Die Aufgabe des Generators ist es, nicht vom Diskriminator erwischt zu werden, oder? Wir werden also sagen, wir wollen testen, wie gut du vermuten kannst, dass es real war. Also, während wir in unseren Diskriminator gehen, messen wir unseren Erfolg, ob es erraten hat oder nicht , dass es ein echtes Bild war, obwohl es gefälscht ist. Das ist also das Herzstück dieses Trainings für den Generator, der hier vor sich geht. Auch hier extrahieren wir die Chargengröße aus der Form der Eingabedaten. Wir richten einen Rauschvektor ein, der dieser Stapelgröße entspricht. Und wir haben nur einen Vektor von Einsen eingerichtet, weil wir messen, wie gut wir es tun, als real eingestuft zu werden. Das ist es, was man repräsentiert. Also haben wir hier unser Gradientband aufgebaut, und das ist irgendwie das Herz von allem hier. Wir nehmen das Rauschen, das wir erzeugt haben, übergeben es in den Generator, um eine Reihe von gefälschten Bildern für die Stapelgröße zu erstellen . Wir nehmen diese falschen Bilder und geben sie dann an den Diskriminator weiter. Und wir kommen davon zurück. Ob der Diskriminator dachte, diese verschiedenen Bilder seien real oder gefälscht. Wir berechnen dann unseren Verlust basierend darauf, wie gut wir getan haben, um den Diskriminator denkt, dass gefälschte Bilder tatsächlich echte waren. Okay, das ist also, was hier passiert. Weißt du, nicht, nicht zu viel Code wirklich. Der Rest ist eine Art Boilerplate. Auch hier binden wir unsere Rückverbreitung zusammen und verfolgen den Verlust und die Genauigkeit im Laufe der Zeit. Also Shift Enter, um das einzurichten. In Ordnung, eine kleine praktische Dandy-Funktion hier, um die erzeugten Bilder zu visualisieren, während wir gehen. All dies wird also tun, ist ein Modell als Eingabe zu nehmen. Es wird hier 81 Zufallszahlen auswählen und das in das, was auch immer dieses Modell ist, eine Art Generator und visualisieren, was es in einem neun mal neun Raster herauskam. Also nur eine kleine Hilfsfunktion, um 81 zufällige Bilder mit einem Modell zu visualisieren. Und jetzt lasst uns das Training machen. Also werden wir hier nicht nur eine einzeilige Anpassungsmethode verwenden, um das zu tun. Der Grund dafür ist, dass das ursprüngliche GAN-Papier tatsächlich mehrere Diskriminator-Trainingssets für jeden Generatorschritt ausführen würde . Aber in unserem Fall hier werden wir es einfach halten und nur einen Diskriminator-Trainingsschritt durchführen , gefolgt von einem Generator-Trainingsschritt. Aber wenn Sie wollten, könnten Sie dieses Diskriminator-Training mehrfach duplizieren , um mehr mit dem Originalpapier übereinzustimmen. So gibt es Ihnen einige Flexibilität und Dinge, mit denen Sie experimentieren können. Noch einmal, grundsätzlich, obwohl alles, was wir tun werden, 30 Epochen durchlaufen werden. Wir werden den Diskriminator trainieren, den Gesamtverlust an Genauigkeit verfolgen. Trainieren Sie den Generator erneut, behalten Sie den Überblick über unseren Gesamtverlust an Genauigkeit und drucken Sie einfach die Leistung, wie wir gehen. Auch für jede andere Epoche werden wir diese Plot-Bilder Helfer-Funktion wieder aufrufen, um AT-zufällige Beispielbilder aus unserem Generatormodell zu visualisieren. Also nehmen wir in jeder zweiten Epoche unser aktuelles, derzeit Zuggeneratormodell und alle Gewichte, die es bisher gelernt hat. Und visuell, wie gut es ist, gefälschte Bilder von nah zu erzeugen. Also lasst uns weitermachen und das aufstellen. Und hier beginnt das Training. Das wird eine Weile dauern, Jungs, aber lass uns wenigstens sehen, ob es erfolgreich startet. Und mit der GPU, Dies wird eine unglaublich intensive Operation sein. Okay, los geht's. Also hier sind wir in Epoche 0, irgendwie bekommen hier an dieser Stelle zufällige Blobs, wie es erwartet würde. Aber warten wir wenigstens auf die nächste Visualisierung hier bei Epoche zu. Wieder, was hier los ist, ist unser Generator zu lernen, wie man den Diskriminator betrügt. Und der Diskriminator versucht zu lernen, wie man erkennt, um echte von gefälschten Bildern gleichzeitig zu diskriminieren. Es ist gegnerisch, weil diese beiden Dinge Absicht miteinander sind. Und dieses Gleichgewicht genau richtig zu bekommen, ist der Schlüssel, um einen Generator zu schaffen, der überzeugende Fälschungen erzeugen kann. Ok, Epoche kam endlich zurück und naja, es ist immer noch nicht wirklich erkennbar, aber Sie können sehen, dass wir schon etwas komplexere Formen daraus bekommen. Wir gehen weiter und lassen das 30 Epochen laufen und sehen, was wir am Ende haben. Es wird eine Weile dauern. Also werde ich das Video hier pausieren und zurückkommen wenn es fertig ist, während meine GPU mein Zimmer heizt. In Ordnung. Etwa eine halbe Stunde ist hier in meiner GPU vergangen hat Überstunden hier gearbeitet. Es ist wirklich heiß im Büro jetzt hier. Die andere Art von schmutzigem Geheimnis des Deep Learning ist also, wie viel Energie es verbraucht, definitiv etwas, das man sich bewusst und bewusst sein muss. Mal sehen, was passiert ist. So wie Sie sehen können, eine Epoche 0 nur bekommen einige zufällige Blobs, die Puck nicht so viel besser. Und durch Epoche vorwärts beginnen, einige kompliziertere Sachen hier zu machen. Und beginnend, sich zu etwas zu bilden, das in Epoche acht erkennbar ist, beginnen diese wie Hemden und Hosen aussehen, denke ich. Und wenn wir 10 sind, beginnen es definitiv erkennbar zu werden. Im Laufe der Zeit. Es wird einfach besser, besser und besser. Also, obwohl wir es in 30 Epochen gestoppt haben, weil ich den Planeten einfach nicht zerstören will, indem ich ihn weiter führe. Hier sehen Sie den Trend, dass es im Laufe der Zeit besser und besser wird. Und als wir 30 waren, haben wir aufgehört, es von 28 hier zu drucken, nur zu einer Scheide des Codes. Aber auch in der 29. Opcode-Epoche, die wirklich 30 ist, weil wir angefangen haben, bei 0 zu zählen. Und der Diskriminator war immer noch nur 80% wirksam bei der Diskriminierung real von gefälschten. Also gab es hier noch Raum für Verbesserungen. Wir könnten diesen Zug noch länger lassen, um noch bessere Ergebnisse zu erzielen , wenn wir sehr intensiv diese Dinge trainieren wollten. Und wieder, sie sind sehr empfindlich. Angesichts der Tatsache, dass Sie diese Dinge wirklich immer wieder ausführen müssen , um all diese Hyperparameter zu optimieren, können Sie sehen, wie das Training eines GAN ein sehr zeitraubendes und energieaufwändiges Angebot sein kann . Aber das sind vernünftige Ergebnisse. Weißt du, diese sahen definitiv aus wie Kleider und Hemden. Nun, es sind meistens Kleider. Versicherung, ist es nicht, dass wir in einem Moment darüber reden. Nehmen wir einfach das endgültige Zugmodell. Und wieder, nur um neun mal neun zufällige Bilder hier auszuspucken , um zu sehen, was unsere Endergebnisse sind. Und einige Punkte unten in den Kommentaren hier, das ist irgendwie bemerkenswert, wie schnell es diese Bilder erzeugen kann, sobald Sie das geschulte Modell haben. Also gibt es tatsächlich eine Demo auf der NVIDIA-Website, wo sie eine GAN erstellt, die ein Spiel von Pac-Man neu erstellt. Nur basierend auf der Analyse des Videos von Menschen, die es immer und immer wieder spielen. So können wir wirklich alles repräsentieren, was Sie wollen, ohne wirklich, jede echte Kenntnis von dem, was unbedingt vor sich geht. immer, Sie können hier sehen, diese sehen aus wie vernünftige Kleider und Pullover, denke ich, aber das war's. Also sehen wir, dass Modus kollabieren Problem, über das wir vor wo wir wirklich nur messen, seine Fähigkeit, Bilder von Kleidung zu erzeugen. Und wir messen nicht seine Fähigkeit, bestimmte Arten von Kleidung zu erzeugen. Nur ob dieser Generator ein Bild erzeugen kann, den Diskriminator dazu bringen kann, zu denken, dass es real ist. Also hat es irgendwie einen Weg gefunden, hier zu betrügen, weil, wissen Sie, verschiedene Arten der Auswahl werden komplizierter sein, als ein Bild von einer Hose oder einem Hemd zu erzeugen. Und angesichts der begrenzten Trainingszeit, die wir hatten, ist das irgendwie, worauf es konvergierte. Das ist also das Moduskollabierungsproblem, das wir bereits in den Folien besprochen haben. Aber insgesamt ziemlich befriedigende Ergebnisse gegeben nur 30 Epochen in einem ziemlich einfachen Trainingsdatensatz gibt es. Offensichtlich kann man sagen, dass es hier noch viel mehr zu erkunden gibt. Es gibt bisher eine ganze Lücke zwischen diesen Ergebnissen und all den Face-Swaping-Apps, die Sie auf sehen, auf Ihrem Handy, richtig? Also offensichtlich sind diese viel größeren GANs da draußen, die für einen viel längeren Zeitraum trainieren, die in der Lage sind, diese überzeugenden Fälschungen von echten Bildern menschlicher Gesichter zu erzeugen, was wirklich das Schwierigste ist, richtig zu bekommen. Aber es ist da draußen und das ist nur die Spitze des Eisbergs. Was die GAN-Forschung angeht, ist es heute wirklich die Schneide der Deep-Learning-Forschung. Wenn Sie nach oben gehen, nach GAN-Modellzoos suchen, werden Sie sehen, dass es eine große Auswahl an verschiedenen Modellen gibt, von denen Sie arbeiten und für sehr spezifische Probleme aufbauen können. Und Leute, die GANs in größere Systeme integrieren. Zum Beispiel gibt es etwas da draußen, das automatisch einen sprechenden Kopf erzeugt. Angesichts eines Bildes von jemandem, der sich umsehen kann , können sich seine Augen bewegen. Es kann vortäuschen, mit Ihnen und allem zu reden, indem man die Feature-Extraktion von jemandem Gesicht mit GANs zusammenfügt die Feature-Extraktion von jemandem Gesicht mit , die Patches dieses Gesichts erstellen können, die verschiedene Dinge tun. So viele spannende Innovationen, die gerade in diesem Raum stattfinden, wieder, ich werde Sie aus ethischer Sicht erinnern, bitte nutzen Sie diese Technologie für immer und seien Sie sich der Energie bewusst, die es für das Training benötigt. Also das sind GANs und Einführung zumindest genug für Sie , um zu gehen und mehr zu erfahren und ein bisschen gefährlich damit zu sein. 24. Deep Learning Projekt Einführung: Es ist also an der Zeit, das, was Sie bisher gelernt haben, in diesem Deep Learning Kurs anzuwenden. Ihr letztes Projekt besteht darin, einige reale Daten zu nehmen. Wir sprachen darüber in der Ethik-Vorlesung, tatsächlich von Massen erkannt und Mammogramme, und nur basierend auf den Messungen der in massiven sehen, ob Sie vorhersagen können, ob sie gutartig oder bösartig sind. Also haben wir einen Datensatz von Mammogrammmassen, die bei echten Menschen entdeckt wurden, und wir hatten Riel. Ärzte schauen sich diese an und bestimmen, ob sie gutartig und bösartig sind Mal sehen, ob du ein eigenes neuronales Netzwerk einrichten kannst, das erfolgreich klassifizieren kann . ob diese Massen gutartig oder bösartig sind. Lasst uns eintauchen. Also habe ich Ihnen einige Daten und eine Vorlage gegeben, von der Sie arbeiten können. Zumindest sind die Daten, mit denen wir arbeiten werden, in Ihrem Kursmaterial. Die Mammographien unterstreichen Massen dot datiert Eine Textdatei sind die Rohdaten, mit denen Sie Ihr Modell trainieren, und Sie können sehen, es sind nur und Sie können sehen, es sind nur sechs Spalten von Sachen oder diese Dinge repräsentieren. Wir zeigen es dir in einer Minute. Es gibt tatsächlich eine Beschreibung des Zustands ist in der Namen Punkt Textdatei hier gesetzt, die zusammen mit diesem Datensatz geht. Aber um Sie loszulegen, habe ich Ihnen ein bisschen eine Vorlage gegeben, mit der Sie arbeiten können, wenn Sie das Deep-Learning-Projekt auf I p Y N b Datei öffnen . Das kam also aus dem U.C I-Repository, und ich gab Ihnen einen kleinen Link, woher die ursprünglichen Daten kamen. Es ist tatsächlich eine großartige Ressource, um andere Daten zu finden, mit denen man spielen kann. Wenn Sie also immer noch maschinelles Lernen lernen, ist das ein großartiger Ort, um Dinge zu finden, mit denen Sie sich mit einem Experiment verwirren können. Aber für dieses Beispiel, das ist der Zeitpunkt, an dem wir uns verarschen werden. Hier ist die Beschreibung dieser sechs Spalten. Man nennt man den Käufer als Einschätzung, und das ist im Grunde eine Messung, wie zuversichtlich die Diagnose dieser besonderen Masse war . Nun, das verschenkt irgendwie die Antwort. Es ist nicht das, was wir eine prädiktive Attribute nennen, also werden wir das nicht wirklich für Training oder Modell verwenden. Als nächstes haben wir das Alter des Patienten. Wir haben eine Klassifizierung der Form der Masse. Wir haben eine Klassifizierung der Massenmarge, aber wie? Es sieht aus wie die Dichte der Masse. Und schließlich haben wir die Sache, die wir vorhersagen wollen. Das ist also das Etikett, der Schweregrad, ob es gutartig, null oder bösartig ist. Wir haben also, was hier ist, ein binäres Klassifizierungsproblem, das sehr ähnlich ist wie Dinge, die wir früher im Kurs gemacht haben , und Sie sollten nicht viel mehr brauchen, als Code-Snippets aus früheren Übungen in diesem Kurs zu verwenden und , die sie an diesen Datensatz angepasst werden. Okay, jetzt, ein kleiner Vorbehalt hier. In der Regel Sie beim maschinellen Lernen möchtenSie beim maschinellen Lernennicht mit den so genannten Nominaldaten umgehen, und sowohl Form als auch Marge sind technisch nominale Daten. Während wir sie in Zahlen umwandeln, sind diese Zahlen nicht notwendigerweise in Bezug auf ihre großen asiatischen Zahlen aussagekräftig. Wissen Sie, von 1 zu 4 zu gehen bedeutet nicht, dass wir zunehmend von eins zu Runde zwei unregelmäßig auf lineare Art und Weise gehen . Aber manchmal muss man mit dem, was man hat, auskommen. Es ist besser als nichts, und zumindest gibt es einige Logik für den Fortschritt der numerischen Partituren hier zu diesen Beschreibungen. So gehen sie in der Regel von, Sie wissen schon, mawr regelmäßige Grab oder unregelmäßig, wie diese Zahlen erhöht. Also werden wir sowieso weitermachen und die benutzen. Wie auch immer, das ist ein wichtiges Zeug. Weißt du, es gibt eine Menge unnötiger Angst und Operationen, die von falschen Positiven auf Art und Weise kommt , wo Mammogramme. Also, wenn Sie einen besseren Weg bauen können, ah, diese Dinge zu diagnostizieren umso besser. Aber noch einmal, denken Sie an meine Ethik-Vorlesung zurück. Du willst das nicht übermäßig verkaufen. Sie wollen sicher sein, dies ist nur ein Werkzeug, das für einen wirklich menschlichen Arzt verwendet werden könnte es sei denn, Sie sind sehr zuversichtlich, dass das System tatsächlich einen Menschen übertreffen kann. Und per definitionem kann es nicht, weil wir das auf Daten trainieren, die von Menschen erstellt wurden. Wie könnte es also besser sein als ein Mensch? Denk darüber nach. Alles klar, Ihre Aufgabe ist es, ein mehrschichtiges Perzeptron zu bauen, um diese Dinge zu klassifizieren, konnte ich über 80% Genauigkeit mit meiner bekommen. Mal sehen, wie du es jetzt tun kannst. Ein Großteil der Arbeit wird nur darin bestehen, die Daten zu säubern, und ich werde Sie durch die Dinge führen, die Sie hier tun müssen. Beginnen Sie also mit dem Importieren der Datendatei mit der Lese-Funktion Siehe SV. Sie können dann einen Blick darauf werfen, die fehlenden Daten in nicht Zahlen konvertieren und sicherstellen, dass Sie alle Spaltennamen importieren . Möglicherweise müssen Sie die Daten bereinigen. Versuchen Sie daher, eine Vorstellung von der Art der Daten zu erhalten, indem Sie in Ihrem resultierenden Pandas-Datenrahmen beschreiben verwenden . Als nächstes müssen Sie Rose fallen lassen. Es fehlen Daten und worum Sie sich gekümmert haben, dass Sie die Datenrahmen in taub pie konvertieren müssen . Heben Sie, dass Sie dann in die Psych es lernen oder in Liebkosung übergehen können. Okay, also müssen Sie auch die Daten normalisieren, bevor Sie sie mit Liebkosung analysieren. Also ein kleiner Hinweis gibt es, Pre-Processing Dot Standards Scaler aus SK gelernt zu verwenden, der die Dinge sehr einfach für Sie machen kann. Das ist die einzige Sache, die wir vorher noch nicht getan haben. Der Rest davon sollten Sie in der Lage sein, nur basierend auf vorherigen Beispielen herauszufinden. Sobald Sie die Daten im richtigen Format haben, war es ziemlich einfach, ein M LTP-Modell mit Liebkosung zu erstellen und Sie können mit verschiedenen erhaltenen Entschuldigungen, verschiedenen Hyperparametern experimentieren und sehen, wie gut Sie tun können, so bin ich Ich werde dich hier loslassen und das eine Chance geben. Mal sehen, wie du es machst, wenn du in der nächsten Vorlesung wiederkommst. Ich zeige dir meine Lösung und wie ich das selbst durchgehe. Also geh weiter und übe das, was du gelernt hast. 25. Deep Learning: Ich hoffe, dass Sie dort einige gute Erfahrungen gemacht haben und tatsächlich anwenden, was Sie gelernt haben, um ein neuronales Netzwerk zu schaffen, das Massen in Mammogrammen klassifizieren kann. Es ist gutartig oder bösartig. Wie ich schon sagte, ich habe selbst etwa 80% Genauigkeit. Frage dich, wie du es überhaupt gemacht hast? Ich fing an, indem ich nur blind in CSP-Datei mit pd dot reid CSP gelesen und einen Blick darauf nahm . Und ich sah an diesem Punkt, dass die Spaltennamen falsch waren. Es fehlten Spaltennameninformationen in der Datendatei, und es fehlten Werte darin. Sie wurden durch Frage Mark angezeigt, so müssen Sie das in ein wenig intelligenter lesen. Also bei meinem zweiten Versuch hier rief ich lesen an, siehe SV übergeben und explizit das Wissen, dass Fragezeichen fehlende Werte oder irgendwelche Werte bedeuten und ein Array von Spaltennamen wie zuvor übergeben und einen anderen Kopf auf der resultierenden Panis-Datenrahmen. Und die Dinge sehen jetzt viel besser aus. An diesem Punkt müssen wir die Daten jetzt reinigen, da es in einem richtigen Format und richtig organisiert ist, könnten wir eine Beschreibung darüber tun, um einen Blick auf die Dinge zu nehmen und die Idee zu bekommen, dass wir einige Daten fehlen und Dinge scheinen ziemlich gut zu sein vertrieben. Zumindest an diesem Punkt haben wir hier ein wenig gezählt, um zu sehen, was genau fehlt. Also meine Strategie hier war zu sehen, ob es irgendeine Art von Voreingenommenheit gibt, die ich einführen werde, indem tatsächlich fehlende Werte entferne. Und wenn ich sehen würde, dass die fehlenden Daten nur durch Augäpfel zufällig verteilt zu sein scheinen , ist das zumindest wahrscheinlich ein guter Hinweis darauf, dass es sicher ist, einfach voran zu gehen und die fehlenden Rose fallen zu lassen. Angesichts der Tatsache, dass ich festgestellt habe, dass das eine gute Sache ist, habe ich vorangegangen und Drop in a auf diesem Datenrahmen angerufen und beschrieben, und jetzt kann ich sehen, dass ich die gleiche Anzahl von Rose in jeder einzelnen Spalte habe . Also habe ich jetzt einen vollständigen Datensatz, in dem ich Zeilen weggeworfen habe, die Daten fehlen, und ich habe mich davon überzeugt, dass das statistisch in Ordnung ist. , jetzt Also, jetztmüssen wir die Features und Werte extrahieren, die wir in unser Modell, unser neuronales Netzwerk,aufnehmen wollen Modell, unser neuronales Netzwerk, . Also habe ich das Feature-Datum von Alter, Form, Form, Rand und Dichte aus diesem Datenrahmen extrahiert und in einen Dump extrahiert. Ich erinnere mich an alle Funktionen. Ich habe auch die Schweregradspalte extrahiert und das auch in allen Klassen Array konvertiert auch , das ich als meine Label-Daten übergeben kann. Und ich habe auch ein praktisches Dandy-Array von Spaltennamen erstellt, da ich das später brauche. Also nur um zu visualisieren, Ich habe in allen Funktionen geschlagen, nur um einen Blick auf, wie das aussieht. Und, sicher genug, sieht legitim aus wie Array von vier Funktionen. Ein Pete in jeder Reihe sieht vernünftig aus. An diesem Punkt. Ich muss meine Daten nach unten skalieren. Um dies zu tun, muss ich nur die Pre-Processing-Punktstandard-Scaler-Funktion dorthin importieren und diese auf meine Feature-Daten anwenden . Und wenn ich mir alle Features Skala anschaue, die aus dieser Transformation hervorgegangen sind, konnte ich sehen, dass alles normal verteilt jetzt um Null zentriert , wenn, mit einer Standardabweichung von eins, ist, wenn, mit einer Standardabweichung von eins, was wir wollen, denken Sie daran, wenn Sie Eingaben in ein neuronales Netzwerk einfügen, ist es wichtig, dass Ihre Daten normalisiert werden, bevor Sie sie einfügen. Jetzt kommen wir zum eigentlichen Fleisch der Sache richten unser MLP-Modell ein, und ich werde das so einwickeln, dass ich Psych verwenden kann. Es lernt Cross Val Partitur, um seine Leistung zu bewerten. Also in meinem Beispiel hier habe ich eine kleine Funktion namens create model erstellt, die ein sequentielles Modell erstellt, fügt in einer dichten Schicht mit sechs Einheiten oder sechs Neuronen mit der Rela Oh Aktivierungsfunktion. Ich habe eine andere Ebene mit einer, die meine endgültigen Sigmoid-Klassifizierungen durchführt, meine binäre Klassifizierung darüber hinaus, und ich habe das mit dem Adam Optimizer und der binären Cross Entropie verlorenen Funktion kompiliert . Damit haben wir eine einzige Schicht aus sechs Neuronen eingerichtet, die in eine letzte binäre Klassifizierungsschicht einspeist . Sehr einfach, und ich habe dann voran gegangen und verwendet die Liebkosung Klassifikator, um eine psychische lernen kompatible Version dieses neuronalen Netzwerks zu bauen , und ich habe das in Cross Val Punktzahl Toe tatsächlich K falten Kreuzvalidierung in diesem Etui mit 10 Falten und drucken Sie die Ergebnisse aus. Mit nur diesen sechs Neuronen konnte ich eine Genauigkeit von 80% erreichen und richtig vorhersagen, ob eine Masse gutartig oder bösartig war , nur basierend auf den Messungen dieser Masse. Jetzt in der realen Welt, Doktor, hat es viel mehr Informationen verwendet als nur diese Messungen. Sie wissen also, wo unser Algorithmus im Vergleich zu den menschlichen Ärzten zu Beginn etwas benachteiligt ist . Aber das ist nicht so schlimm, wenn Sie besser, wenn Sie mehr Schichten mehr Neuronen Efeu verwendet, neugierig zu sehen, ob Sie tatsächlich ein besseres Ergebnis bekommen. Es stellt sich heraus, dass Sie manchmal nicht viel brauchen, um tatsächlich das optimale Ergebnis aus den Daten zu erhalten , die Sie haben. Aber wenn Sie in der Lage waren, dieses Ergebnis wesentlich zu verbessern, herzlichen Glückwunsch. Also hoffe ich, dass Deep Learning für Sie vermystifiziert wurde. Und als nächstes werden wir darüber sprechen, wie Zehe weiter mawr auf dem Gebiet des Deep Learning lernen.