Tiefe neuronale Netze
Ein Deep Neural Network (DNN) ist ein ANN mit mehreren versteckten Schichten zwischen der Eingangs- und Ausgangsschicht. Ähnlich wie flache ANNs können DNNs komplexe nichtlineare Beziehungen modellieren.
Der Hauptzweck eines neuronalen Netzwerks besteht darin, eine Reihe von Eingaben zu empfangen, zunehmend komplexe Berechnungen an ihnen durchzuführen und Ausgaben zu liefern, um Probleme der realen Welt wie die Klassifizierung zu lösen. Wir beschränken uns darauf, neuronale Netze weiterzuleiten.
Wir haben eine Eingabe, eine Ausgabe und einen Fluss von sequentiellen Daten in einem tiefen Netzwerk.
Neuronale Netze werden häufig bei überwachten Lern- und Verstärkungslernproblemen eingesetzt. Diese Netzwerke basieren auf einer Reihe von Schichten, die miteinander verbunden sind.
Beim tiefen Lernen kann die Anzahl der verborgenen Schichten, die meist nicht linear sind, groß sein. sagen wir über 1000 Schichten.
DL-Modelle liefern viel bessere Ergebnisse als normale ML-Netzwerke.
Wir verwenden meistens die Gradientenabstiegsmethode, um das Netzwerk zu optimieren und die Verlustfunktion zu minimieren.
Wir können die verwenden Imagenet, ein Repository mit Millionen digitaler Bilder, um einen Datensatz in Kategorien wie Katzen und Hunde zu klassifizieren. DL-Netze werden zunehmend für dynamische Bilder neben statischen sowie für Zeitreihen und Textanalysen verwendet.
Das Training der Datensätze ist ein wichtiger Bestandteil von Deep Learning-Modellen. Darüber hinaus ist Backpropagation der Hauptalgorithmus beim Trainieren von DL-Modellen.
DL befasst sich mit dem Training großer neuronaler Netze mit komplexen Input-Output-Transformationen.
Ein Beispiel für DL ist die Zuordnung eines Fotos zum Namen der Person (en) auf dem Foto, wie sie es in sozialen Netzwerken tut, und die Beschreibung eines Bildes mit einer Phrase ist eine weitere neuere Anwendung von DL.
Neuronale Netze sind Funktionen mit Eingängen wie x1, x2, x3…, die in zwei (flache Netze) oder mehrere Zwischenoperationen, auch Schichten genannt (tiefe Netze), in Ausgänge wie z1, z2, z3 usw. umgewandelt werden.
Die Gewichte und Vorspannungen ändern sich von Schicht zu Schicht. 'w' und 'v' sind die Gewichte oder Synapsen von Schichten der neuronalen Netze.
Der beste Anwendungsfall für Deep Learning ist das überwachte Lernproblem. Hier haben wir eine große Anzahl von Dateneingaben mit einer gewünschten Anzahl von Ausgaben.
Hier wenden wir einen Back-Propagation-Algorithmus an, um eine korrekte Ausgabevorhersage zu erhalten.
Der grundlegendste Datensatz für Deep Learning ist der MNIST, ein Datensatz handgeschriebener Ziffern.
Mit Keras können wir ein Faltungs-Neuronales Netzwerk tief trainieren, um Bilder handgeschriebener Ziffern aus diesem Datensatz zu klassifizieren.
Das Auslösen oder Aktivieren eines neuronalen Netzklassifikators erzeugt eine Punktzahl. Um beispielsweise Patienten als krank und gesund einzustufen, berücksichtigen wir Parameter wie Größe, Gewicht und Körpertemperatur, Blutdruck usw.
Eine hohe Punktzahl bedeutet, dass der Patient krank ist, und eine niedrige Punktzahl bedeutet, dass er gesund ist.
Jeder Knoten in Ausgabe- und ausgeblendeten Ebenen verfügt über eigene Klassifizierer. Die Eingabeebene nimmt Eingaben entgegen und gibt ihre Ergebnisse zur weiteren Aktivierung an die nächste verborgene Ebene weiter. Dies wird fortgesetzt, bis die Ausgabe erreicht ist.
Dieser Fortschritt von Eingabe zu Ausgabe von links nach rechts in Vorwärtsrichtung wird aufgerufen forward propagation.
Der Kreditzuweisungspfad (CAP) in einem neuronalen Netzwerk ist die Reihe von Transformationen, die von der Eingabe zur Ausgabe beginnen. CAPs erarbeiten wahrscheinliche kausale Zusammenhänge zwischen Input und Output.
Die CAP-Tiefe für ein bestimmtes neuronales Feed-Forward-Netzwerk oder die CAP-Tiefe ist die Anzahl der verborgenen Schichten plus eins, wenn die Ausgabeschicht enthalten ist. Bei wiederkehrenden neuronalen Netzen, bei denen sich ein Signal mehrmals durch eine Schicht ausbreiten kann, kann die CAP-Tiefe möglicherweise unbegrenzt sein.
Tiefe Netze und flache Netze
Es gibt keine klare Tiefenschwelle, die flaches Lernen von tiefem Lernen trennt. Es besteht jedoch größtenteils Einigkeit darüber, dass für tiefes Lernen mit mehreren nichtlinearen Schichten die GAP größer als zwei sein muss.
Der Grundknoten in einem neuronalen Netz ist eine Wahrnehmung, die ein Neuron in einem biologischen neuronalen Netzwerk nachahmt. Dann haben wir mehrschichtige Wahrnehmung oder MLP. Jeder Satz von Eingaben wird durch einen Satz von Gewichten und Verzerrungen modifiziert. Jede Kante hat ein eindeutiges Gewicht und jeder Knoten hat eine eindeutige Vorspannung.
Die Vorhersage accuracy eines neuronalen Netzes hängt von seiner weights and biases.
Der Prozess der Verbesserung der Genauigkeit des neuronalen Netzwerks wird aufgerufen training. Die Ausgabe eines Vorwärtsstützennetzes wird mit dem Wert verglichen, von dem bekannt ist, dass er korrekt ist.
Das cost function or the loss function ist die Differenz zwischen der generierten Ausgabe und der tatsächlichen Ausgabe.
Der Zweck des Trainings besteht darin, die Trainingskosten für Millionen von Trainingsbeispielen so gering wie möglich zu halten. Dazu optimiert das Netzwerk die Gewichte und Verzerrungen, bis die Vorhersage mit der richtigen Ausgabe übereinstimmt.
Einmal gut trainiert, kann ein neuronales Netz jedes Mal eine genaue Vorhersage treffen.
Wenn das Muster komplex wird und Sie möchten, dass Ihr Computer es erkennt, müssen Sie sich für neuronale Netzwerke entscheiden. In solchen komplexen Musterszenarien übertrifft das neuronale Netzwerk alle anderen konkurrierenden Algorithmen.
Es gibt jetzt GPUs, die sie schneller als je zuvor trainieren können. Tiefe neuronale Netze revolutionieren bereits das Gebiet der KI
Computer haben sich als gut darin erwiesen, sich wiederholende Berechnungen durchzuführen und detaillierte Anweisungen zu befolgen, waren jedoch nicht so gut darin, komplexe Muster zu erkennen.
Wenn es das Problem der Erkennung einfacher Muster gibt, kann eine Support Vector Machine (svm) oder ein logistischer Regressionsklassifikator die Aufgabe gut erledigen, aber mit zunehmender Komplexität von Mustern gibt es keine andere Möglichkeit, als sich für tiefe neuronale Netze zu entscheiden.
Daher versagen bei komplexen Mustern wie einem menschlichen Gesicht flache neuronale Netze und haben keine andere Wahl, als sich für tiefe neuronale Netze mit mehr Schichten zu entscheiden. Die tiefen Netze können ihre Arbeit erledigen, indem sie die komplexen Muster in einfachere zerlegen. Zum Beispiel menschliches Gesicht; Adeep Net würde Kanten verwenden, um Teile wie Lippen, Nase, Augen, Ohren usw. zu erkennen und diese dann wieder zu einem menschlichen Gesicht zu kombinieren
Die Genauigkeit der korrekten Vorhersage ist so genau geworden, dass kürzlich bei einer Google Pattern Recognition Challenge ein tiefes Netz einen Menschen schlug.
Diese Idee eines Netzes geschichteter Perzeptrone gibt es schon seit einiger Zeit; In diesem Bereich ahmen tiefe Netze das menschliche Gehirn nach. Ein Nachteil dabei ist jedoch, dass das Trainieren lange dauert, was eine Hardwarebeschränkung darstellt
In jüngster Zeit konnten Hochleistungs-GPUs jedoch so tiefe Netze in weniger als einer Woche trainieren. während schneller cpus Wochen oder vielleicht Monate gebraucht haben könnte, um dasselbe zu tun.
Ein tiefes Netz wählen
Wie wählt man ein tiefes Netz? Wir müssen uns entscheiden, ob wir einen Klassifikator erstellen oder ob wir versuchen, Muster in den Daten zu finden, und ob wir unbeaufsichtigtes Lernen verwenden werden. Um Muster aus einem Satz unbeschrifteter Daten zu extrahieren, verwenden wir eine Restricted Boltzman-Maschine oder einen Auto-Encoder.
Berücksichtigen Sie bei der Auswahl eines tiefen Netzes die folgenden Punkte:
Für die Textverarbeitung, Stimmungsanalyse, Analyse und Erkennung von Namensentitäten verwenden wir ein wiederkehrendes Netz oder ein rekursives neuronales Tensornetzwerk oder RNTN.
Für jedes Sprachmodell, das auf Zeichenebene arbeitet, verwenden wir das wiederkehrende Netz.
Für die Bilderkennung verwenden wir DBN oder Faltungsnetzwerk.
Zur Objekterkennung verwenden wir ein RNTN oder ein Faltungsnetzwerk.
Für die Spracherkennung verwenden wir wiederkehrende Netze.
Im Allgemeinen sind Deep-Believe-Netzwerke und mehrschichtige Perzeptrone mit gleichgerichteten linearen Einheiten oder RELU beide eine gute Wahl für die Klassifizierung.
Für die Zeitreihenanalyse wird immer empfohlen, ein wiederkehrendes Netz zu verwenden.
Neuronale Netze gibt es seit mehr als 50 Jahren; aber erst jetzt haben sie an Bedeutung gewonnen. Der Grund ist, dass sie schwer zu trainieren sind; Wenn wir versuchen, sie mit einer Methode zu trainieren, die als Rückausbreitung bezeichnet wird, stoßen wir auf ein Problem, das als verschwindende oder explodierende Gradienten bezeichnet wird. In diesem Fall dauert das Training länger und die Genauigkeit tritt in den Hintergrund. Beim Trainieren eines Datensatzes berechnen wir ständig die Kostenfunktion, die die Differenz zwischen der vorhergesagten Ausgabe und der tatsächlichen Ausgabe aus einem Satz beschrifteter Trainingsdaten darstellt. Die Kostenfunktion wird dann minimiert, indem die Gewichte und Vorspannungswerte bis zum niedrigsten Wert angepasst werden erhalten wird. Der Trainingsprozess verwendet einen Gradienten, bei dem es sich um die Rate handelt, mit der sich die Kosten in Bezug auf Gewichtsänderungen oder Abweichungswerte ändern.
Eingeschränkte Boltzman-Netzwerke oder Autoencoder - RBNs
Im Jahr 2006 wurde ein Durchbruch bei der Bewältigung des Problems der verschwindenden Gradienten erzielt. Geoff Hinton entwickelte eine neuartige Strategie, die zur Entwicklung von führteRestricted Boltzman Machine - RBM, ein flaches zweischichtiges Netz.
Die erste Schicht ist die visible Schicht und die zweite Schicht ist die hiddenSchicht. Jeder Knoten in der sichtbaren Ebene ist mit jedem Knoten in der verborgenen Ebene verbunden. Das Netzwerk wird als eingeschränkt bezeichnet, da keine zwei Schichten innerhalb derselben Schicht eine Verbindung gemeinsam nutzen dürfen.
Autoencoder sind Netzwerke, die Eingabedaten als Vektoren codieren. Sie erstellen eine versteckte oder komprimierte Darstellung der Rohdaten. Die Vektoren sind nützlich bei der Dimensionsreduktion; Der Vektor komprimiert die Rohdaten in eine kleinere Anzahl wesentlicher Dimensionen. Autoencoder werden mit Decodern gepaart, was die Rekonstruktion von Eingabedaten basierend auf ihrer verborgenen Darstellung ermöglicht.
RBM ist das mathematische Äquivalent eines Zwei-Wege-Übersetzers. Ein Vorwärtsdurchlauf nimmt Eingaben entgegen und übersetzt sie in eine Reihe von Zahlen, die die Eingaben codieren. Ein Rückwärtsdurchlauf nimmt währenddessen diesen Satz von Zahlen und übersetzt sie zurück in rekonstruierte Eingaben. Ein gut ausgebildetes Netz führt die Rückenstütze mit einem hohen Maß an Genauigkeit aus.
In beiden Schritten spielen die Gewichte und die Vorspannungen eine entscheidende Rolle. Sie helfen dem RBM bei der Dekodierung der Wechselbeziehungen zwischen den Eingaben und bei der Entscheidung, welche Eingaben für die Erkennung von Mustern wesentlich sind. Durch Vorwärts- und Rückwärtsdurchläufe wird das RBM darauf trainiert, die Eingabe mit unterschiedlichen Gewichten und Vorspannungen zu rekonstruieren, bis die Eingabe und die Konstruktion so nah wie möglich sind. Ein interessanter Aspekt von RBM ist, dass Daten nicht gekennzeichnet werden müssen. Dies erweist sich als sehr wichtig für reale Datensätze wie Fotos, Videos, Stimmen und Sensordaten, die in der Regel unbeschriftet sind. Anstatt Daten manuell von Menschen zu kennzeichnen, sortiert RBM die Daten automatisch. Durch die richtige Anpassung der Gewichte und Vorspannungen kann ein RBM wichtige Merkmale extrahieren und die Eingabe rekonstruieren. RBM gehört zur Familie der neuronalen Netze mit Merkmalsextraktor, mit denen inhärente Muster in Daten erkannt werden. Diese werden auch als Auto-Encoder bezeichnet, da sie ihre eigene Struktur codieren müssen.
Deep Belief Networks - DBNs
Deep Believe Networks (DBNs) werden durch die Kombination von RBMs und die Einführung einer cleveren Trainingsmethode gebildet. Wir haben ein neues Modell, das endlich das Problem des verschwindenden Gradienten löst. Geoff Hinton erfand die RBMs und auch Deep Belief Nets als Alternative zur Rückausbreitung.
Ein DBN hat eine ähnliche Struktur wie ein MLP (Multi-Layer Perceptron), unterscheidet sich jedoch beim Training erheblich. Es ist das Training, das es DBNs ermöglicht, ihre flachen Kollegen zu übertreffen
Ein DBN kann als Stapel von RBMs dargestellt werden, wobei die verborgene Schicht eines RBM die sichtbare Schicht des darüber liegenden RBM ist. Das erste RBM wird trainiert, um seine Eingabe so genau wie möglich zu rekonstruieren.
Die verborgene Schicht des ersten RBM wird als sichtbare Schicht des zweiten RBM genommen, und das zweite RBM wird unter Verwendung der Ausgänge des ersten RBM trainiert. Dieser Prozess wird wiederholt, bis jede Schicht im Netzwerk trainiert ist.
In einem DBN lernt jeder RBM die gesamte Eingabe. Ein DBN arbeitet global, indem die gesamte Eingabe nacheinander fein abgestimmt wird, da sich das Modell langsam verbessert wie ein Kameraobjektiv, das ein Bild langsam fokussiert. Ein Stapel von RBMs übertrifft ein einzelnes RBM, da ein mehrschichtiges Perzeptron MLP ein einzelnes Perzeptron übertrifft.
Zu diesem Zeitpunkt haben die RBMs inhärente Muster in den Daten erkannt, jedoch ohne Namen oder Bezeichnung. Um das Training des DBN zu beenden, müssen wir Beschriftungen in die Muster einführen und das Netz mit überwachtem Lernen fein abstimmen.
Wir benötigen einen sehr kleinen Satz beschrifteter Beispiele, damit die Merkmale und Muster einem Namen zugeordnet werden können. Dieser kleine Datensatz wird für das Training verwendet. Dieser Satz beschrifteter Daten kann im Vergleich zum Originaldatensatz sehr klein sein.
Die Gewichte und Vorspannungen werden geringfügig geändert, was zu einer geringfügigen Änderung der Wahrnehmung der Muster durch das Netz und häufig zu einer geringfügigen Erhöhung der Gesamtgenauigkeit führt.
Das Training kann auch in angemessener Zeit abgeschlossen werden, indem GPUs verwendet werden, die im Vergleich zu flachen Netzen sehr genaue Ergebnisse liefern, und wir sehen auch eine Lösung für das Problem des verschwindenden Gradienten.
Generative Adversarial Networks - GANs
Generative kontradiktorische Netzwerke sind tiefe neuronale Netze, die zwei gegeneinander angeordnete Netze umfassen, daher der Name „kontrovers“.
GANs wurden in einem Artikel vorgestellt, der 2014 von Forschern der Universität von Montreal veröffentlicht wurde. Der Facebook-KI-Experte Yann LeCun, der sich auf GANs bezog, bezeichnete das kontroverse Training als „die interessanteste Idee in den letzten 10 Jahren in ML“.
Das Potenzial von GANs ist enorm, da der Netzwerk-Scan lernt, jede Datenverteilung nachzuahmen. GANs können gelehrt werden, Parallelwelten zu erschaffen, die unseren in jedem Bereich auffallend ähnlich sind: Bilder, Musik, Sprache, Prosa. Sie sind in gewisser Weise Roboterkünstler und ihre Leistung ist ziemlich beeindruckend.
In einem GAN generiert ein neuronales Netzwerk, das als Generator bezeichnet wird, neue Dateninstanzen, während das andere, der Diskriminator, diese auf Authentizität auswertet.
Nehmen wir an, wir versuchen, handgeschriebene Ziffern zu generieren, wie sie im MNIST-Datensatz enthalten sind, der aus der realen Welt stammt. Die Arbeit des Diskriminators besteht darin, eine Instanz aus dem wahren MNIST-Datensatz als authentisch zu erkennen, wenn sie angezeigt wird.
Betrachten Sie nun die folgenden Schritte der GAN -
Das Generator-Netzwerk nimmt Eingaben in Form von Zufallszahlen entgegen und gibt ein Bild zurück.
Dieses erzeugte Bild wird zusammen mit einem Strom von Bildern, die aus dem tatsächlichen Datensatz stammen, als Eingabe in das Diskriminatornetzwerk gegeben.
Der Diskriminator nimmt sowohl echte als auch gefälschte Bilder auf und gibt Wahrscheinlichkeiten zurück, eine Zahl zwischen 0 und 1, wobei 1 eine Vorhersage der Authentizität darstellt und 0 eine Fälschung darstellt.
Sie haben also eine doppelte Rückkopplungsschleife -
Der Diskriminator befindet sich in einer Rückkopplungsschleife mit der Grundwahrheit der Bilder, die wir kennen.
Der Generator befindet sich in einer Rückkopplungsschleife mit dem Diskriminator.
Wiederkehrende neuronale Netze - RNNs
RNNSare neuronale Netze, in denen Daten in jede Richtung fließen können. Diese Netzwerke werden für Anwendungen wie Sprachmodellierung oder Natural Language Processing (NLP) verwendet.
Das Grundkonzept, das RNNs zugrunde liegt, besteht darin, sequentielle Informationen zu verwenden. In einem normalen neuronalen Netzwerk wird angenommen, dass alle Ein- und Ausgänge unabhängig voneinander sind. Wenn wir das nächste Wort in einem Satz vorhersagen wollen, müssen wir wissen, welche Wörter davor standen.
RNNs werden als wiederkehrend bezeichnet, da sie für jedes Element einer Sequenz dieselbe Aufgabe wiederholen, wobei die Ausgabe auf den vorherigen Berechnungen basiert. Man kann also sagen, dass RNNs einen "Speicher" haben, der Informationen über das erfasst, was zuvor berechnet wurde. Theoretisch können RNNs Informationen in sehr langen Sequenzen verwenden, in der Realität können sie jedoch nur wenige Schritte zurückblicken.
Long Short Term Memory Networks (LSTMs) sind die am häufigsten verwendeten RNNs.
Zusammen mit Faltungs-Neuronalen Netzen wurden RNNs als Teil eines Modells verwendet, um Beschreibungen für unbeschriftete Bilder zu generieren. Es ist ziemlich erstaunlich, wie gut dies zu funktionieren scheint.
Convolutional Deep Neural Networks - CNNs
Wenn wir die Anzahl der Schichten in einem neuronalen Netzwerk erhöhen, um es tiefer zu machen, erhöht dies die Komplexität des Netzwerks und ermöglicht es uns, kompliziertere Funktionen zu modellieren. Die Anzahl der Gewichte und Vorspannungen wird jedoch exponentiell zunehmen. Tatsächlich kann das Lernen derart schwieriger Probleme für normale neuronale Netze unmöglich werden. Dies führt zu einer Lösung, den Faltungs-Neuronalen Netzen.
CNNs werden häufig in der Bildverarbeitung verwendet. wurden auch in der akustischen Modellierung zur automatischen Spracherkennung angewendet.
Die Idee hinter Faltungs-Neuronalen Netzen ist die Idee eines „sich bewegenden Filters“, der durch das Bild geht. Dieser sich bewegende Filter oder diese Faltung gilt für eine bestimmte Nachbarschaft von Knoten, die beispielsweise Pixel sein können, wobei der angewendete Filter das 0,5-fache des Knotenwerts beträgt.
Der bekannte Forscher Yann LeCun war Pionier der Faltungs-Neuronalen Netze. Facebook als Gesichtserkennungssoftware verwendet diese Netze. CNN war die Lösung für Bildverarbeitungsprojekte. Ein Faltungsnetzwerk hat viele Schichten. Bei der Imagenet-Herausforderung konnte eine Maschine 2015 einen Menschen bei der Objekterkennung schlagen.
Kurz gesagt, Convolutional Neural Networks (CNNs) sind mehrschichtige neuronale Netze. Die Ebenen sind manchmal bis zu 17 oder mehr und nehmen an, dass die Eingabedaten Bilder sind.
CNNs reduzieren die Anzahl der Parameter, die eingestellt werden müssen, drastisch. CNNs bewältigen also effizient die hohe Dimensionalität von Rohbildern.