Maschinelles Lernen und neuronale Netze - Seite 51

 

Training großer Netzwerke mit wenig Daten: Transferlernen und Datenerweiterung (DL 14)



Training großer Netzwerke mit wenig Daten: Transferlernen und Datenerweiterung (DL 14)

Beim Deep Learning kommt es häufig zu Problemen, bei denen wir die Leistungsfähigkeit des Deep Learning nutzen wollen, aber nicht genügend Daten haben, um ein Deep-Modell effektiv zu trainieren. Dieses Problem tritt in verschiedenen Domänen und neuronalen Netzwerkarchitekturen auf. Konzentrieren wir uns auf das Szenario einer Bildverarbeitungsaufgabe unter Verwendung eines Faltungsnetzwerks mit einem kleinen Bilddatensatz. Die hier diskutierten Konzepte können jedoch auch auf andere Bereiche angewendet werden.

Tiefe Faltungsnetzwerke sind für ihre Wirksamkeit bei der Bildverarbeitung bekannt. Allerdings würde das Training eines tiefen Faltungsnetzwerks auf einem kleinen Bilddatensatz typischerweise zu einer extremen Überanpassung führen, bei der das Netzwerk lediglich die Eingabedaten speichert. In solchen Fällen müssen wir Wege finden, unsere Daten besser zu nutzen oder alternative Datenquellen zu erkunden.

Ein Ansatz zur Überwindung des Datenknappheitsproblems besteht in der Datenerweiterung und dem Transferlernen. Transferlernen ist ein grundlegendes Konzept des modernen Deep Learning und überraschend einfach zu erklären. Die Idee besteht darin, ein tiefes neuronales Netzwerk auf ein verwandtes, aber allgemeineres Problem zu trainieren und dieses vorab trainierte Netzwerk dann mit zusätzlichem Training für unseren spezifischen Datensatz wiederzuverwenden, um unser Problem zu lösen.

Für eine Bildverarbeitungsaufgabe können wir ein Netzwerk anhand großer Bilddatensätze trainieren, die im Internet oder bei Wettbewerben zum maschinellen Lernen gesammelt wurden. Das vorab trainierte Netzwerk verfügt über eine letzte Ebene, die der Klassifizierung von Bildern aus diesen Datensätzen gewidmet ist. Wenn wir an einer anderen Bildverarbeitungsaufgabe mit einer bestimmten Ausgabeschicht arbeiten, können wir die Ausgabeschicht des vorab trainierten Netzwerks verwerfen und unsere eigene Ausgabeschicht hinzufügen, die den Anforderungen unseres Problems entspricht. Dazu gehört das Hinzufügen neuer Gewichte, die die neue Ausgabeschicht mit der letzten Schicht des vorab trainierten Netzwerks verbinden, das mithilfe unseres kleinen Datensatzes trainiert werden kann.

Die Erwartung hinter der Wirksamkeit des Transferlernens liegt in der Annahme, dass, wenn das vorab trainierte Problem unserem spezifischen Problem ähnlich genug ist, die vom vorab trainierten Netzwerk gelernte Funktionalität übertragen wird, was unserem Problem zugute kommt. Wir können uns das vorab trainierte Netzwerk so vorstellen, dass es generische Bildverarbeitungsfunktionen gelernt hat, und wir können diese erlernte Transformation nutzen, wenn wir unser Netzwerk anhand des kleinen Datensatzes trainieren.

Bei der Anwendung von Transferlernen haben wir mehrere Möglichkeiten, das vorab trainierte Modell zu nutzen. Wir müssen die Ausgabeschicht verwerfen, um unserem Problem gerecht zu werden, aber wir können auch andere Schichten entfernen, wenn wir glauben, dass die nützliche Vorverarbeitung bereits durchgeführt wurde. Darüber hinaus können wir mehrere Ebenen hinzufügen, um eine anspruchsvollere Verarbeitung für unser spezifisches Problem durchzuführen. Um die nützliche Verarbeitung der frühen Schichten beizubehalten, können wir deren Gewichte während des Neutrainings einfrieren, insbesondere wenn das vorab trainierte Modell auf einem großen Datensatz trainiert wurde und unser Problem einen kleinen Datensatz hat.

Deep-Learning-Bibliotheken bieten häufig Modellzoos an, bei denen es sich um Sammlungen vorab trainierter Modelle für verschiedene Problemtypen handelt. Diese Modelle dienen als Ausgangspunkte für Transferlernen und machen Deep Learning für die Lösung einer Vielzahl von Problemen zugänglich.

Selbst mit Hilfe des Transferlernens ist unser Datensatz jedoch möglicherweise immer noch zu klein, um ein Netzwerk effektiv zu trainieren, selbst auf den letzten paar Ebenen. In solchen Fällen müssen wir so viele Informationen wie möglich aus unserem Datensatz extrahieren, was uns zum Gedanken der Datenerweiterung bringt.

Bei der Datenerweiterung werden Transformationen auf den Datensatz angewendet, die für das neuronale Netzwerk anders aussehen, für Menschen oder andere Systeme, die das erlernte Modell verwenden, jedoch dieselbe Bedeutung behalten. Bei der Bildverarbeitung können verschiedene Transformationen angewendet werden, ohne die menschliche Wahrnehmung des dargestellten Bildes zu verändern. Wenn Sie beispielsweise ein Bild drehen oder vergrößern, ändert sich der zugrunde liegende Inhalt nicht. Diese Transformationen führen zu erheblichen Unterschieden in den Eingabedaten, die das neuronale Netzwerk sieht, was es für das Netzwerk schwierig macht, sich bestimmte Beispiele zu merken oder sich auf feine Details der Eingabe zu verlassen.

Wir müssen jedoch sicherstellen, dass die Transformationen die Bedeutung der Daten nicht verändern und aus der Perspektive des Netzwerks anders erscheinen. Beispielsweise kann die Übersetzung eines Bildes aufgrund seiner inhärenten Übersetzungsinvarianz nur geringe Auswirkungen auf die Generalisierungsfähigkeit eines Faltungsnetzwerks haben.

Zu den Datenerweiterungstechniken gehören das Hinzufügen von zufälligem Rauschen, leichter Unschärfe und anderen Modifikationen, die die menschliche Wahrnehmung des Bildes nicht verzerren. Diese Transformationen können während des Trainings einfach berechnet und zufällig auf jeden Datenstapel angewendet werden. Indem wir das Netzwerk für mehrere Epochen auf dem erweiterten Datensatz trainieren, verhindern wir, dass es sich einfach die genauen Eingabebeispiele merkt, und ermutigen es, besser zu verallgemeinern.

Es ist wichtig zu beachten, dass Datenerweiterungstechniken nicht so effektiv sind wie die Bereitstellung von mehr Daten zum Trainieren, einschließlich verwandter Daten für das Vortraining. In Kombination mit Transferlernen ermöglicht uns die Datenerweiterung jedoch, ein breiteres Spektrum von Problemen mithilfe tiefer neuronaler Netze anzugehen.

Zusammenfassend lässt sich sagen, dass Transferlernen und Datenerweiterung wertvolle Strategien sind, wenn man mit einem Problem konfrontiert wird, das Deep Learning erfordert, aber nicht über ausreichende Daten verfügt. Beim Transferlernen wird ein Netzwerk auf ein verwandtes Problem trainiert und es mit zusätzlichem Training für unser spezifisches Problem wiederverwendet. Bei der Datenerweiterung werden Transformationen auf den Datensatz angewendet, die ihre Bedeutung behalten und gleichzeitig Variationen zur besseren Verallgemeinerung einführen. Obwohl diese Techniken kein Ersatz für mehr Daten sind, bieten sie praktische Lösungen für die Nutzung von Deep Learning in Szenarien mit begrenzter Datenverfügbarkeit.

Training large networks with little data: transfer learning and data augmentation (DL 14)
Training large networks with little data: transfer learning and data augmentation (DL 14)
  • 2022.10.21
  • www.youtube.com
Davidson CSC 381: Deep Learning, Fall 2022
 

Restnetze und Sprungverbindungen (DL 15)



Restnetze und Sprungverbindungen (DL 15)

Tiefe neuronale Netze sind leistungsstark, aber schwierig zu trainieren, da mit zunehmender Anzahl von Parametern mehr Daten benötigt werden. Das Training tiefer Netzwerke zeigt im Vergleich zu flachen Netzwerken oft nur langsame Fortschritte bei der Verlustreduzierung. Dies liegt daran, dass die Eingabedaten, die mehrere Schichten mit zufällig initialisierten Gewichtungen durchlaufen, in zufälliges Rauschen zerlegt werden, was die Ausbreitung sinnvoller Farbverläufe erschwert.

Um dieses Problem zu beheben, werden Skip-Verbindungen eingeführt. Bei Skip-Verbindungen werden Ebenen in Blöcke gruppiert und zwei Pfade für den Datenfluss innerhalb und um jeden Block bereitgestellt. Die Ausgabe eines Blocks wird durch Addition oder Verkettung mit seiner Eingabe kombiniert, wodurch die Eingabe durchgelassen wird und die Eingaben und Aktualisierungen aussagekräftiger werden.

Restblöcke mit Sprungverbindungen bieten mehrere Vorteile. Erstens vereinfachen sie die Lernaufgabe für jeden Block, indem sie sich auf die Erweiterung der vorhandenen Daten konzentrieren, anstatt alles über die Eingabe herauszufinden. Zweitens erleichtern sie den Fluss von Farbverläufen, indem sie kürzere Pfade für die Aktualisierung jeder Schicht im Netzwerk bereitstellen. Diese Vorteile führen zu einem schnelleren Trainingsfortschritt und einer besseren Leistung im Vergleich zu flachen Netzwerken.

Bei der Verwendung von Restblöcken ist es wichtig, die Formkompatibilität zwischen Eingabe- und Ausgabetensoren zu berücksichtigen, insbesondere bei der Verwendung von Faltungsschichten. Besonderes Augenmerk sollte darauf gelegt werden, die Formen anzupassen und eine Explosion der Parameteranzahl zu vermeiden, insbesondere bei Verwendung der Verkettung. Typischerweise wird bei den meisten Skip-Verbindungen in großen Restnetzwerken die Addition der Verkettung vorgezogen.

Einzelne Faltungen können verwendet werden, um Höhe, Breite und Kanalabmessungen in Faltungsblöcken beizubehalten. Sie ermöglichen es uns, die Tiefe der Ausgabeschicht anzupassen, indem wir die Anzahl der Filter in der Faltungsschicht angeben.

Obwohl es verschiedene Variationen und Architekturen von Restnetzen gibt, bleibt die Kernidee konsistent: die Verbesserung des Trainings tiefer neuronaler Netze durch die Nutzung von Sprungverbindungen und Restblöcken. Diese Techniken ermöglichen einen besseren Informationsfluss, schnelleres Training und eine höhere Modellleistung. Für ein besseres Verständnis und eine bessere Anwendung wird die Erkundung verschiedener Restarchitekturen und ihrer spezifischen Implementierungen empfohlen.

Darüber hinaus ist es wichtig, beim Aufbau eines Restnetzwerks einige praktische Aspekte zu berücksichtigen. Ein solches Problem besteht darin, die Formkompatibilität zwischen Eingabe- und Ausgabetensoren bei der Verwendung von Skip-Verbindungen zu verwalten. Dies wird komplexer, wenn Faltungsschichten beteiligt sind, da Höhe, Breite und Kanalabmessungen richtig ausgerichtet sein müssen.

Um Faltungsblöcke zu vereinfachen, können einzelne Schritte und geeignete Auffüllungen verwendet werden, um die Höhe und Breite des Eingabebilds beizubehalten. Dadurch wird sichergestellt, dass beim Addieren der Eingabe- und Ausgabetensoren eines Blocks zumindest die räumlichen Dimensionen übereinstimmen. Um die Kanaldimension zu berücksichtigen, können einzelne Faltungen verwendet werden. Obwohl diese Faltungen trivial erscheinen mögen, da sie Eingaben von einem einzelnen Pixel erhalten, ermöglichen sie uns effektiv, die Tiefe der Ausgabeebene anzupassen. Indem wir die Anzahl der Filter in der einzelnen Faltung angeben, können wir die Tiefe des Ausgabetensors erhöhen oder verringern und so die Formen kompatibel machen.

Bei der Arbeit mit großen Restnetzwerken ist es wichtig, ein Gleichgewicht zwischen der Anzahl der übersprungenen Verbindungen und der Explosion von Parametern zu finden. Eine übermäßige Verwendung der Verkettung kann zu einer erheblichen Vergrößerung des Aktivierungstensors und der Anzahl der Parameter führen. Daher ist es ratsam, die Anzahl verkettungsbasierter Skip-Verbindungen zu begrenzen und für die meisten von ihnen die Addition zu bevorzugen.

Modularität ist ein weiterer Vorteil, den Restnetzwerke bieten. Die einheitliche Struktur der Restblöcke und die Möglichkeit, problemlos weitere Blöcke hinzuzufügen, erleichtern den Aufbau tieferer und leistungsfähigerer Netzwerke. Durch schrittweises Erhöhen der Anzahl der Blöcke kann ein Netzwerk erstellt werden, das dem gewünschten Kompromiss zwischen Rechenressourcen und Modellkapazität entspricht.

Während sich Restnetzwerke als äußerst effektiv erwiesen haben, ist es erwähnenswert, dass es verschiedene andere Arten von Restarchitekturen mit unterschiedlichen Designoptionen gibt, wie z. B. die Integration von Normalisierungsschichten oder mehreren Pfaden innerhalb eines Blocks. Die Erforschung dieser Variationen kann weitere Erkenntnisse und Möglichkeiten zur Verbesserung des Trainings tiefer neuronaler Netze liefern.

Insgesamt stellen Residualnetzwerke einen wertvollen Ansatz zum Training tiefer neuronaler Netzwerke dar, indem sie Sprungverbindungen und Residualblöcke nutzen. Sie vereinfachen Lernaufgaben, beschleunigen die Gradientenausbreitung und bieten Modularität für den Aufbau leistungsstarker Netzwerkarchitekturen. Das Verständnis der Konzepte und Überlegungen hinter Restnetzwerken trägt zu Fortschritten in der Deep-Learning-Forschung und in praktischen Anwendungen bei.

Residual Networks and Skip Connections (DL 15)
Residual Networks and Skip Connections (DL 15)
  • 2022.10.23
  • www.youtube.com
Davidson CSC 381: Deep Learning, Fall 2022
 

Worteinbettungen (DL 16)



Worteinbettungen (DL 16)

Der Großteil der Daten, mit denen wir in neuronalen Netzen gearbeitet haben, waren Bilddaten. Wir können neuronale Netze jedoch auch für andere Arten von Problemen verwenden, beispielsweise für Textdaten. Die Darstellung von Textdaten als Eingabe in ein neuronales Netzwerk ist nicht so einfach wie bei Bildern.

In Bilddaten können wir standardmäßige digitale Speicherformate verwenden, die Bilder als Arrays aus roten, grünen und blauen Pixeln darstellen. Diese Darstellung ist praktisch, da sie räumliche Beziehungen zwischen Pixeln und relevanten Farbintensitäten erfasst.

Bei Textdaten ist die standardmäßige digitale Darstellung, bei der Zeichen in ASCII oder andere digitale Werte umgewandelt werden, für das Lernen neuronaler Netze nicht direkt relevant. Es können verschiedene Methoden in Betracht gezogen werden, um ASCII-Werte in gültige Eingaben für ein neuronales Netzwerk umzuwandeln, z. B. die Verwendung der binären Darstellung von ASCII-Werten oder die Normalisierung des Zeichenbereichs auf einen Wert zwischen 0 und 1. Diese Darstellungen erfassen jedoch nicht die Semantik der Wörter auf die gleiche Weise, wie ein Array ein Bild darstellt.

Ein Ansatz besteht darin, riesige Vektoren mithilfe von One-Hot-Codierungen des gesamten Vokabulars zu erstellen. Jedes Wort verfügt über eine einzigartige Vektordarstellung, wodurch das Problem gelöst wird, dass ähnliche Wörter unterschiedliche Bedeutungen haben. Dies führt jedoch zu einer massiven Erweiterung der Dimensionen und verliert das Gleichgewicht zwischen Wortähnlichkeit und Dimensionalität.

Um dieses Problem anzugehen, streben wir eine Darstellung von Textdaten an, die mehrere Ziele erreicht. Erstens wollen wir eine Darstellung pro Wort, die nicht übermäßig hochdimensional ist. Zweitens möchten wir, dass die Darstellung semantische Informationen enthält, wobei ähnliche Wörter ähnliche Vektordarstellungen haben. Dies war ein herausforderndes Problem bei der Verarbeitung natürlicher Sprache.

In den letzten Jahren wurden neuronale Netze erfolgreich zur Generierung geeigneter Eingabedarstellungen für Textdaten eingesetzt. Ein Ansatz besteht darin, n-Gramme, also Folgen von n Wörtern, aus den Textdaten zu extrahieren. Diese N-Gramme liefern Kontextinformationen für einen bestimmten Punkt in einem Satz oder Dokument.

Die Idee besteht darin, das Netzwerk mithilfe der One-Hot-Wörterbuchdarstellung als Eingabe zu trainieren und die One-Hot-Kodierung des umgebenden N-Gramms vorherzusagen. Beispielsweise können wir eine 5-Gramm-Eingabe verwenden und die anderen vier Wörter im N-Gramm vorhersagen. Indem wir das Netzwerk mithilfe von N-Grammen auf benachbarte Wörter trainieren, erwarten wir, dass semantisch ähnliche Wörter ähnliche Darstellungen haben und während des Trainings ein ähnliches Gradienten-Feedback erhalten.

Indem wir die Ausgabeschicht des Netzwerks verwerfen, können wir den Aktivierungsvektor in der letzten verborgenen Schicht als numerische Kodierung des Eingabeworts verwenden. Diese Darstellung wird als Worteinbettung bezeichnet und erfasst den Kontext des Wortes im tatsächlichen Text. Es gibt verschiedene Ansätze zur Herstellung von Worteinbettungen, beispielsweise Word2Vec.

Anstatt unsere eigenen Worteinbettungen zu trainieren, können wir vorab trainierte Einbettungen verwenden, die von anderen mit mehr Daten und Rechenressourcen generiert wurden. Wir können ganz einfach eine Nachschlagetabelle erstellen, um ein beliebiges Textdokument in die Worteinbettung zu übersetzen. Dieser Ansatz ermöglicht es uns, Worteinbettungen als Eingabe für unser neuronales Netzwerk für maschinelles Lernen von Textdaten zu verwenden.

Die Verwendung von Worteinbettungen als Eingabe für unser neuronales Netzwerk für maschinelles Lernen an Textdaten bietet mehrere Vorteile. Diese vorab trainierten Einbettungen wurden von Modellen mit umfangreichen Daten- und Rechenressourcen generiert, was zu reichhaltigen und aussagekräftigen Darstellungen von Wörtern führte.

Indem wir ein Dokument durch eine vorhandene Worteinbettung führen, können wir eine vektorisierte Darstellung des Textes erhalten. Diese Vektordarstellung erfasst die Kontextinformationen der Wörter und kann als Eingabe für unser neuronales Netzwerk verwendet werden.

Die Verwendung von Worteinbettungen ermöglicht Transferlernen, bei dem das bei einer Aufgabe (z. B. Training des Worteinbettungsmodells) gewonnene Wissen auf eine andere verwandte Aufgabe (z. B. unser spezifisches Problem des maschinellen Lernens mit Textdaten) angewendet werden kann. Anstatt unsere eigenen Einbettungen von Grund auf zu trainieren, können wir die vorhandenen Einbettungen nutzen und von ihren Generalisierungsfähigkeiten profitieren.

Sobald wir die Worteinbettungsdarstellung des Textes haben, können wir mit dem Training unseres neuronalen Netzwerks fortfahren. Das neuronale Netzwerk kann die Worteinbettungsvektoren als Eingabe verwenden und lernen, Vorhersagen auf der Grundlage der in den Einbettungen kodierten semantischen Informationen zu treffen.

Die spezifische Architektur des neuronalen Netzwerks hängt von der jeweiligen Aufgabe ab. Es könnte sich um ein rekurrentes neuronales Netzwerk (RNN) handeln, das die sequentielle Natur des Textes berücksichtigt, um ein Faltungsneuronales Netzwerk (CNN), das lokale Muster erfasst, oder um eine Kombination aus beidem. Das Netzwerk kann so konzipiert sein, dass es unter anderem Aufgaben wie Sentimentanalyse, Textklassifizierung, Sprachgenerierung oder maschinelle Übersetzung durchführt.

Während des Trainingsprozesses lernt das neuronale Netzwerk, Muster zu erkennen und basierend auf den Eingabeworteinbettungen Vorhersagen zu treffen. Die durch das Netzwerk verbreiteten Gradienten aktualisieren die Gewichte und optimieren so die Fähigkeit des Netzwerks, genaue Vorhersagen zu treffen.

Durch den Einsatz von Worteinbettungen gehen wir die Herausforderung an, Textdaten für neuronale Netze sinnvoll darzustellen. Diese Einbettungen erfassen semantische Beziehungen zwischen Wörtern und ermöglichen es dem Netzwerk, aus dem Kontext zu lernen und fundierte Vorhersagen zu treffen. Darüber hinaus spart die Nutzung vorab trainierter Einbettungen Rechenressourcen und verbessert die Effizienz unserer Pipeline für maschinelles Lernen.

Indem wir Worteinbettungen als Eingabe für unser neuronales Netzwerk verwenden, können wir die Leistungsfähigkeit des Transferlernens und der semantischen Darstellungen nutzen. Dieser Ansatz verbessert die Fähigkeit neuronaler Netze, Textdaten zu verarbeiten und zu verstehen, erheblich und öffnet die Tür für verschiedene Aufgaben und Anwendungen der Verarbeitung natürlicher Sprache.

Word Embeddings (DL 16)
Word Embeddings (DL 16)
  • 2020.10.20
  • www.youtube.com
Davidson CSC 381: Deep Learning, F'20, F'22
 

Rekurrente neuronale Netze (DL 17)



Rekurrente neuronale Netze (DL 17)

In unserer vorherigen Vorlesung haben wir die Verwendung von Worteinbettungen besprochen, bei denen es sich um trainierbare Darstellungen von Wörtern als Vektoren mit einer moderaten Anzahl von Dimensionen handelt. Diese Einbettungen können als Grundlage für den Aufbau maschineller Lernsysteme dienen, die mit Textdaten arbeiten. Für einfache Aufgaben wie die Stimmungsklassifizierung von Produktbewertungen kann es ausreichen, das Dokument in Wörter zu zerlegen, jedes Wort einzubetten und die Einbettungssequenz als Eingabe an ein neuronales Netzwerk zu übergeben. Für komplexere Aufgaben wie Konversationsantworten oder maschinelle Übersetzung ist jedoch ein ausgefeilterer Ansatz erforderlich.

Um dies zu veranschaulichen, haben wir das Beispiel der Vorhersage des nächsten Wortes in einem Satz verwendet. Diese Aufgabe ist anspruchsvoller als die Stimmungsklassifizierung, aber einfacher als die maschinelle Übersetzung. Beim Aufbau neuronaler Netze zur Verarbeitung von Textdaten stehen wir vor zwei großen Ansätzen. Ein Extrem besteht darin, das gesamte Dokument als Eingabe für das Netzwerk bereitzustellen, während das andere Extrem darin besteht, ein einzelnes Wort als Eingabe bereitzustellen. Allerdings haben beide Ansätze Nachteile: Die Bearbeitung des gesamten Dokuments schränkt die Trainingsbeispiele ein und behandelt unterschiedliche Dokumentgrößen, während die Bearbeitung jeweils eines Wortes den umgebenden Kontext ignoriert, der zum Verständnis der Wortbedeutung und zur Darstellung von Konzepten erforderlich ist, die nicht direkt auf Wörter abgebildet werden können .

Um einen Kompromiss zwischen diesen Extremen zu finden, haben wir eine Methode eingeführt, die jeweils ein Wort bearbeitet, aber die Erinnerung des Netzwerks an frühere Eingaben einbezieht, um wichtigen Kontext beizubehalten. Die Grundidee besteht darin, die Ausgabe des Netzwerks wieder in seine Eingabe einzuspeisen, sodass es seine vorherigen Aktivierungen als Zusammenfassung der bisher gesehenen Wörter verwenden kann. Dieser Ansatz führt zu wiederkehrenden neuronalen Netzen (Recurrent Neural Networks, RNNs), die visualisiert werden können, indem man sie im Laufe der Zeit abwickelt und das Netzwerk zu unterschiedlichen Zeitpunkten darstellt, während Wörter eingegeben werden und die Ausgabe des Netzwerks wieder eingespeist wird.

Für die nächste Wortvorhersageaufgabe dient die Ausgabe der verborgenen Schicht des RNN als Zusammenfassung der vorherigen Wörter im Satz. Das RNN lernt, basierend auf diesem Kontext das nächste Wort vorherzusagen. Die Eingaben in das RNN sind Einbettungsvektoren, während die Ausgaben in einer One-Hot-Dictionary-Kodierung vorliegen, um die Unsicherheit über verschiedene mögliche Ausgaben auszudrücken.

Beim Training von RNNs werden Gradienten berechnet, um die Gewichte des Netzwerks zu aktualisieren. Die Herausforderung ergibt sich aus der Tatsache, dass die Gewichte den Verlust nicht nur durch ihre Anwendung auf die aktuelle Eingabe beeinflussen, sondern auch durch ihre Auswirkung auf Eingaben aus früheren Zeitschritten. Um die Auswirkung der Gewichte auf den Verlust in einem bestimmten Zeitschritt zu berechnen, müssen wir sowohl ihre Auswirkung auf die aktuelle Eingabe als auch ihren Einfluss auf frühere Zeitschritte und ihren Beitrag zum Fehler im aktuellen Zeitschritt berücksichtigen.

Rekurrente neuronale Netze verwenden häufig Sigmoid- oder Tanh-Aktivierungsfunktionen, da sie anfällig für das Problem des verschwindenden Gradienten sind. Dieses Problem entsteht, wenn sich Gradienten im Netzwerk nicht weit nach hinten ausbreiten können, was die Fähigkeit zur Erfassung langfristiger Abhängigkeiten einschränkt. Folglich sind einfache RNNs bei Aufgaben, die einen umfangreichen Kontext und ein Langzeitgedächtnis erfordern, nicht effektiv, weshalb wir uns auf Sätze und nicht auf Dokumente konzentriert haben.

In der nächsten Vorlesung werden wir eine Variante wiederkehrender neuronaler Netze untersuchen, die speziell dafür entwickelt wurde, das Problem des Langzeitgedächtnisses anzugehen und eine bessere Leistung bei Text- und Sprachverarbeitungsaufgaben zu erzielen.

Recurrent Neural Networks (DL 17)
Recurrent Neural Networks (DL 17)
  • 2020.10.22
  • www.youtube.com
Davidson CSC 381: Deep Learning, F'20, F'22
 

LSTMs (DL 18)



LSTMs (DL 18)

Ziel dieser Vorlesung ist es, den praktischen Einsatz rekurrenter neuronaler Netze (RNNs) zur Sprachmodellierung zu demonstrieren. Zuvor haben wir die Verwendung von RNNs zur Vorhersage des nächsten Wortes in einem Satz besprochen, was als häufige Vortrainingsaufgabe für RNNs dient. Für komplexere Aufgaben wie die Beantwortung von Fragen oder maschinelle Übersetzung können wir einen Transfer-Learning-Ansatz anwenden. Zuerst trainieren wir das RNN vorab für die nächste Wortvorhersageaufgabe und optimieren es dann für die spezifische Aufgabe, an der wir interessiert sind.

Um aussagekräftigere Ergebnisse von einem RNN zu erhalten, konzentrieren wir uns auf die verborgenen Aktivierungen oder Zustände, die entweder in Vorwärts- oder Rückwärtsrichtung durch das Netzwerk weitergeleitet werden. Diese verborgenen Zustände repräsentieren die gesamte Texteingabe. Wenn beispielsweise ein Satz übersetzt wird, wird jedes Wort nacheinander in das RNN eingespeist, und der im letzten Zeitschritt erzeugte verborgene Zustand wird zu einer Darstellung des gesamten Textes. Diesen verborgenen Zustand können wir dann an weitere neuronale Netzwerkschichten weitergeben, um die gewünschte Aufgabe zu lösen, etwa die Klassifizierung oder Textgenerierung.

Dieser Prozess, bei dem Text in ein RNN eingespeist wird, um ihn in einen verborgenen Schichtzustand zu codieren, und dann ein anderes RNN als Decoder verwendet wird, ermöglicht es uns, Ausgabetext zu generieren. Indem wir dieses RNN-Paar auf Eingabe-Ausgabe-Paaren trainieren, können wir Sätze übersetzen oder Antworten generieren.

Allerdings haben reguläre RNNs mit 10-Stunden-Aktivierungen aufgrund verschwindender Gradienten Schwierigkeiten, längere Sequenzen zu verarbeiten. Um dieses Problem anzugehen, können wir eine Architektur namens Long Short-Term Memory (LSTM) einsetzen. LSTMs bieten mehrere Pfade für den Fluss von Aktivierungen, wodurch sich Gradienten effizienter durch das Netzwerk ausbreiten können.

Die LSTM-Schicht besteht aus einer Eingabe und einer Ausgabe. Wir können diese nutzen, um das Netzwerk auf Aufgaben wie die Vorhersage des nächsten Wortes zu trainieren. Die Eingabe wird mit dem vorherigen verborgenen Zustand verkettet, während bei jedem Zeitschritt ein zusätzlicher verborgener Zustand (c) vom Netzwerk an sich selbst übergeben wird. Dieser c-Zustand ermöglicht eine Gradientenausbreitung ohne die Einschränkungen, die durch 10-Stunden-Aktivierungen entstehen. Sigmoid-Aktivierungsfunktionen werden verwendet, um zu steuern, welche Informationen aus den vorherigen Zuständen beibehalten oder vergessen werden, und diese Tore werden während des Trainings gelernt.

LSTMs umfassen sowohl den h- als auch den c-Pfad, was komplexere Berechnungen innerhalb jedes Zeitschritts ermöglicht und eine schnelle Gradientenausbreitung durch mehrere Anwendungen des LSTM-Netzwerks erleichtert. Obwohl wir nicht über vollständige Kenntnisse der spezifischen Funktionen verfügen, die von jeder Komponente gelernt werden, hat sich die LSTM-Architektur im Vergleich zu anderen Arten von RNNs in der Praxis als effektiv erwiesen.

Die praktische Wirksamkeit von LSTM-Architekturen liegt in ihrer Fähigkeit, das Problem des verschwindenden Gradienten anzugehen und langfristige Abhängigkeiten in sequentiellen Daten zu erfassen. Durch die Integration von Gating-Mechanismen und mehreren Pfaden für den Informationsfluss haben LSTMs bei verschiedenen Aufgaben der Verarbeitung natürlicher Sprache erhebliche Verbesserungen gegenüber herkömmlichen RNNs gezeigt.

Die Gated-Natur von LSTMs ermöglicht es ihnen, sich Informationen aus früheren Zeitschritten selektiv zu merken und zu vergessen, wodurch sie sich gut für die Modellierung und Generierung von Sequenzen eignen. Die Sigmoid-Aktivierungen in den LSTM-Gattern steuern den Informationsfluss und bestimmen, was beibehalten und was verworfen werden soll. Diese Tore lernen aus den Trainingsdaten und entscheiden adaptiv, welche Teile des vorherigen verborgenen Zustands und der aktuellen Eingabe für den aktuellen Zeitschritt relevant sind.

Die Fähigkeit des LSTM, sich langfristige Abhängigkeiten zu merken, ist bei der Sprachmodellierung besonders wichtig. Bei der Sprachübersetzung beispielsweise erfordert das Verständnis des Kontexts eines Satzes die Berücksichtigung der gesamten Eingabesequenz. Der verborgene Zustand im letzten Zeitschritt des Codierungs-LSTM erfasst die Gesamtbedeutung des Satzes und ermöglicht so eine genaue Übersetzung oder andere nachgelagerte Aufgaben.

Darüber hinaus ermöglichen LSTMs eine effiziente Gradientenausbreitung sowohl beim Vorwärts- als auch beim Rückwärtsdurchlauf. Durch die Beibehaltung relevanter Informationen und die Abschwächung der Auswirkungen verschwindender Gradienten ermöglichen LSTMs das effektive Training tiefgreifender wiederkehrender Netzwerke auf langen Sequenzen. Dies wird durch die Verwendung paralleler Pfade erreicht, die einen ununterbrochenen Fluss der Gradienten ermöglichen und verhindern, dass sie beim Durchqueren des Netzwerks verschwinden oder explodieren.

Der Erfolg von LSTMs in der Sprachmodellierung hat sie zu einem grundlegenden Baustein in vielen modernen Modellen gemacht. Forscher und Praktiker haben LSTM-Architekturen um zusätzliche Funktionen wie Aufmerksamkeitsmechanismen, Mehrkopf-Aufmerksamkeit und transformatorbasierte Modelle erweitert. Diese Fortschritte verbessern die Modellierungsfähigkeiten von LSTMs weiter und ermöglichen es ihnen, noch komplexere Aufgaben zu bewältigen, einschließlich Dokumentzusammenfassung, Stimmungsanalyse und Dialoggenerierung.

Zusammenfassend lässt sich sagen, dass LSTMs die Sprachmodellierung revolutioniert haben, indem sie die Einschränkungen traditioneller RNNs angegangen sind. Ihre Fähigkeit, langfristige Abhängigkeiten zu erfassen, mit verschwindenden Gradienten umzugehen und relevante Informationen selektiv zu behalten, hat sie zu einem unverzichtbaren Werkzeug in der Verarbeitung natürlicher Sprache gemacht. Durch die Nutzung von LSTM-Architekturen haben Forscher und Entwickler erhebliche Fortschritte bei verschiedenen sprachbezogenen Aufgaben erzielt, was zu verbesserten maschinellen Übersetzungen, Frage-Antwort-Systemen und Textgenerierungsmodellen führte.

LSTMs (DL 18)
LSTMs (DL 18)
  • 2020.10.25
  • www.youtube.com
Davidson CSC 381: Deep Learning, F'20, F'22
 

Transformatoren und Selbstaufmerksamkeit (DL 19)



Transformatoren und Selbstaufmerksamkeit (DL 19)

Die auf neuronalen Netzen basierende Transformer-Architektur hat bei der Sprachmodellierung und verschiedenen anderen Aufgaben Spitzenleistungen erbracht. Lassen Sie uns die Kernideen hinter Transformers untersuchen, einschließlich ihrer Konstruktion aus Selbstaufmerksamkeitsblöcken und der Integration wiederkehrender und verbleibender Netzwerkfunktionen.

Rekurrente neuronale Netze (RNNs) zeichnen sich bei der Textverarbeitung dadurch aus, dass sie nach und nach einen verborgenen Zustand aufbauen, der den Informationsinhalt eines Dokuments darstellt. Sie erhalten Worteinbettungen als Eingabe und können für unbeaufsichtigte Aufgaben wie das Vorhersagen des nächsten Wortes in einem Satz trainiert werden. Allerdings haben RNNs, einschließlich LSTM-Varianten, Probleme mit langen Eingaben, da eine wiederholte Verarbeitung durch Schichten erforderlich ist.

Andererseits sind Restnetzwerke effektiv bei der Handhabung tiefer Modelle mit vielen Schichten, indem sie Restverbindungen nutzen. Diese Verbindungen vereinfachen das Training, indem sie es jedem Block ermöglichen, die Eingabe zu verbessern und eine effizientere Ausbreitung von Farbverläufen zu ermöglichen.

Restnetze bieten zusätzliche Vorteile bei der Bildverarbeitung, wie etwa die Nutzung der Faltung innerhalb von Restblöcken, die gut mit bildbezogenen Funktionen harmoniert. Um die Stärken rekurrenter Netzwerke für die Textverarbeitung und Residualnetzwerken für das Lernen tiefer Modelle zu kombinieren, wurde der Transformer eingeführt.

Ähnlich wie RNNs arbeitet ein Transformer mit Worteinbettungen. Anstatt jedoch Wörter einzeln zu empfangen, verarbeitet es alle Einbettungen für ein gesamtes Dokument, verkettet in einer Matrix. Transformatoren können auf unbeaufsichtigte Aufgaben trainiert werden, die fehlende Wörter vorhersagen, was zu einer Kodierung des Dokuments führt, die für verschiedene Aufgaben der Verarbeitung natürlicher Sprache verwendbar ist.

Von Restnetzwerken erben Transformer Skip-Verbindungen, die es jedem Block ermöglichen, seine Vorgänger zu erweitern, was das Training selbst in großen Netzwerken vereinfacht. Um die Textverarbeitung zu erleichtern, beinhaltet die Architektur innerhalb der Blöcke eine Schlüsselidee namens Selbstaufmerksamkeit.

Bei der Selbstaufmerksamkeit geht es um die Notwendigkeit, auf entfernte Wörter in einem Satz zu achten, um die Bedeutung eines bestimmten Wortes zu verstehen. Anstatt explizit eine Aufmerksamkeitsfunktion zu entwickeln, ist die Architektur des Transformers darauf ausgelegt, das Erlernen einer solchen Funktion zu erleichtern.

Innerhalb eines Selbstaufmerksamkeits-Encoderblocks durchläuft die Einbettung jedes Wortes drei dichte Schichten: Abfrage (q), Schlüssel (k) und Wert (v). Diese Ebenen haben bei allen Wörtern die gleiche Gewichtung, werden jedoch auf verschiedene Elemente des Eingabesatzes angewendet. Durch die Berechnung des Skalarprodukts zwischen Abfrage- und Schlüsselvektoren kann das Modell die Ähnlichkeit beurteilen.

Das Skalarprodukt zwischen den Abfrage- und Schlüsselvektoren desselben Wortes weist auf Selbstähnlichkeit hin. Darüber hinaus werden Skalarprodukte zwischen dem Abfragevektor eines bestimmten Worts und den Schlüsselvektoren aller anderen Wörter berechnet. Softmax wird angewendet, um die Ähnlichkeitswerte in Gewichtungen zwischen 0 und 1 umzuwandeln, wobei die ähnlichsten Vektoren hervorgehoben werden.

Durch Multiplizieren der Softmax-Gewichte mit den Wertevektoren jedes Wortes wird die Aufmerksamkeit auf verschiedene Teile des Dokuments gelenkt. Diese gewichtete Summe erzeugt einen Ausgabevektor, der aus dem gesamten Dokument berechnet wird. Dieser Prozess wird für alle Wörter parallel ausgeführt, wodurch eine Matrix entsteht, die das Dokument anhand der Aufmerksamkeit kodiert.

Die ursprünglichen Worteinbettungen werden mit den aus dem gesamten Dokument abgeleiteten Informationen, gewichtet nach Aufmerksamkeit, ergänzt. Anschließend wird eine gleichmäßige, dichte Schicht mit passender Form aufgetragen. Innerhalb eines Encoderblocks können mehrere Aufmerksamkeitsköpfe verwendet werden, um unterschiedliche Aufmerksamkeitsmuster zu erlernen. Die Ausgabe aller Aufmerksamkeitsköpfe wird summiert und mit der Sprungverbindung kombiniert, was zur Ausgabe des Blocks führt.

Der Selbstaufmerksamkeitsmechanismus ermöglicht es dem Netzwerk, in jedem Aufmerksamkeitskopf zu lernen, worauf es achten muss. Mehrere Aufmerksamkeitsköpfe ermöglichen es dem Modell, sich unter verschiedenen Umständen auf verschiedene Aspekte zu konzentrieren und so die Eingabedarstellung in eine nützliche Kodierung des Textdokuments zu verwandeln.

Diese Kodierung kann zur Klassifizierung weiterverarbeitet oder als Eingabe für ein anderes neuronales Netzwerk für Aufgaben wie maschinelle Übersetzung verwendet werden. Training Transformers konzentrierte sich zunächst auf die Sprachkodierung in einer Sprache und die Dekodierung in einer anderen Sprache. Unüberwachtes Training, ähnlich wie bei RNNs, kann auch durchgeführt werden, indem Dokumente mit zufällig ausgeblendeten Wörtern bereitgestellt werden und das Modell darauf trainiert wird, die fehlenden Wörter vorherzusagen.

Transformer haben verschiedene Aufgaben der Verarbeitung natürlicher Sprache revolutioniert und sind zur modernsten Architektur für die Sprachmodellierung und viele andere Anwendungen geworden. Lassen Sie uns tiefer in die Kernkonzepte von Transformers eintauchen und untersuchen, wie sie die besten Aspekte wiederkehrender und restlicher Netzwerke kombinieren.

Rekurrente neuronale Netze (RNNs) wie LSTM sind für die Textverarbeitung effektiv, da sie Worteinbettungen sequentiell verarbeiten und einen verborgenen Zustand aufbauen, der den Informationsinhalt eines Dokuments darstellt. RNNs können auf unbeaufsichtigte Aufgaben wie die Vorhersage des nächsten Wortes in einem Satz mithilfe leicht verfügbarer Daten trainiert werden. RNNs neigen jedoch dazu, mit langen Eingaben zu kämpfen, da Daten wiederholt durch mehrere Schichten geleitet werden müssen.

Andererseits zeichnen sich Residualnetzwerke durch die Verwendung von Residualverbindungen durch den Umgang mit tiefen Modellen aus, was das Training vereinfacht und eine effiziente Ausbreitung von Gradienten ermöglicht. Bei der Bildverarbeitung nutzen Restnetzwerke die Faltung innerhalb von Restblöcken und bieten so einen Vorteil für Funktionen, die für die Bildanalyse relevant sind. Ziel ist es, die Vorteile wiederkehrender Netzwerke bei der Textverarbeitung mit den Vorteilen des Lernens tiefer Modelle aus Restnetzwerken zu kombinieren.

Dies bringt uns zur Transformer-Architektur. Wie rekursive Netzwerke arbeiten Transformer mit Worteinbettungen. Im Gegensatz zu wiederkehrenden Netzwerken, die Wörter einzeln verarbeiten, empfangen Transformer die Einbettungen eines gesamten Dokuments in einer Matrix verkettet, wobei jede Zeile die Einbettung eines anderen Wortes darstellt. Transformatoren können auf unbeaufsichtigte Aufgaben trainiert werden, beispielsweise auf die Vorhersage fehlender Wörter, um Dokumentkodierungen für verschiedene Aufgaben der Verarbeitung natürlicher Sprache zu generieren.

Transformer erben von Restnetzwerken Skip-Verbindungen und stellen so sicher, dass jeder Block nur seine Vorgänger erweitern muss und dass sich Gradienten auch in großen Netzwerken effektiv ausbreiten können. Um die Textverarbeitung zu erleichtern, verwenden Transformers eine eigene Architektur innerhalb der Blöcke, die als Selbstaufmerksamkeit bezeichnet wird.

Unter Selbstaufmerksamkeit versteht man die Idee, dass wir, um ein Wort in einem Satz zu verstehen, auf andere Wörter achten müssen, die im Satz möglicherweise weiter entfernt sind. Die Architektur ist nicht explizit auf eine bestimmte Aufmerksamkeitsfunktion ausgelegt; Stattdessen soll es das Erlernen solcher Funktionen erleichtern.

In einem Selbstaufmerksamkeits-Encoderblock durchläuft die Einbettung jedes Wortes drei dichte Schichten, die als Abfrage, Schlüssel und Wert bezeichnet werden. Diese Ebenen gelten für alle Wörter, werden jedoch auf verschiedene Elemente des Eingabesatzes angewendet. Mithilfe des Skalarprodukts zwischen Abfrage- und Schlüsselvektoren können wir die Ähnlichkeit beurteilen. Größere Punktprodukte zeigen Vektoren an, die in ähnliche Richtungen zeigen, während kleinere Punktprodukte Vektoren anzeigen, die in unterschiedliche Richtungen zeigen.

Für ein gegebenes Wort berechnen wir das Skalarprodukt zwischen seinem Abfragevektor und den Schlüsselvektoren aller anderen Wörter. Dadurch wird ein Vektor mit Ähnlichkeitswerten erstellt, der angibt, wie ähnlich der Abfragevektor jedem Schlüsselvektor ist. Durch die Anwendung von Softmax auf diese Bewertungen werden sie in Werte zwischen 0 und 1 umgewandelt, wobei die ähnlichsten Vektoren hervorgehoben werden. Die resultierenden Softmax-Gewichte dienen als Multiplikatoren für die Wertevektoren für alle Wörter im Dokument.

Jeder Wertevektor wird elementweise mit seinem entsprechenden Softmax-Gewicht multipliziert, wodurch eine gewichtete Summe entsteht, die die Aufmerksamkeit des Wortes gegenüber anderen Wörtern darstellt. Dieser Prozess wird parallel für jedes Wort angewendet und erzeugt einen Ausgabevektor, der aus dem gesamten Dokument berechnet und entsprechend der Aufmerksamkeit gewichtet wird, die jedem Wort gewidmet wird. Diese Informationen werden dann zur ursprünglichen Worteinbettung hinzugefügt.

Um die Ausgabe eines Aufmerksamkeitskopfes zu erzeugen, wird eine gleichmäßige, dichte Schicht mit passender Form aufgetragen. Innerhalb eines Encoderblocks können mehrere Aufmerksamkeitsköpfe verwendet werden, wodurch das Netzwerk unterschiedliche Aufmerksamkeitsmuster in verschiedenen Kontexten lernen kann. Die Ausgabe aller Aufmerksamkeitsköpfe wird kombiniert und zur Sprungverbindung hinzugefügt, was zur Ausgabe des Blocks führt.

Ähnlich wie Faltungsschichten, die mehrere Kanäle verwenden, verwenden Transformer häufig mehrere Aufmerksamkeitsköpfe innerhalb eines Encoderblocks, um unterschiedliche Aufmerksamkeitsmuster zu erfassen. Dadurch kann das Netzwerk verschiedene Aufmerksamkeitsberechnungen erlernen und kombinieren und so die Eingabedarstellung zu einer nützlichen Kodierung des Textdokuments erweitern.

Sobald die Kodierung erstellt ist, kann sie für verschiedene Aufgaben verwendet werden. Beispielsweise können zusätzliche Schichten zur Klassifizierung angewendet werden oder die Kodierung kann als Eingabe für ein anderes neuronales Netzwerk für Aufgaben wie maschinelle Übersetzung dienen. Ursprünglich konzentrierte sich das Transformer-Training auf die Kodierung in einer Sprache und die Dekodierung in einer anderen. Ein unbeaufsichtigtes Training kann auch durchgeführt werden, indem Wörter in Dokumenten nach dem Zufallsprinzip ausgeblendet werden und das Modell darauf trainiert wird, die fehlenden Wörter vorherzusagen.

Um Wortreihenfolge und -nähe zu berücksichtigen, integrieren Transformer eine Positionskodierung. Diese zusätzlichen Informationen werden den Worteinbettungen hinzugefügt und ermöglichen es dem Modell, die relativen Positionen von Wörtern im Dokument zu verstehen.

Transformer sind eine leistungsstarke Architektur für Aufgaben zur Verarbeitung natürlicher Sprache. Durch die Kombination der Stärken rekurrenter und restlicher Netzwerke haben sie in verschiedenen Anwendungen modernste Ergebnisse erzielt. Der Selbstaufmerksamkeitsmechanismus ermöglicht es dem Modell zu lernen, auf welche Wörter es achten muss, und mehrere Aufmerksamkeitsköpfe erfassen unterschiedliche Aufmerksamkeitsmuster. Transformer haben das Gebiet der Sprachmodellierung erheblich vorangebracht und sind weiterhin ein aktiver Forschungs- und Entwicklungsbereich.

Transformers and Self-Attention (DL 19)
Transformers and Self-Attention (DL 19)
  • 2022.11.05
  • www.youtube.com
Davidson CSC 381: Deep Learning, Fall 2022
 

Andere Metriken und die ROC-Kurve (DL 20)



Andere Metriken und die ROC-Kurve (DL 20)

Dies ist ein kurzer Vortrag über alternative Metriken zur Erfolgsmessung bei binären Klassifizierungsaufgaben beim Einsatz neuronaler Netze.

Bei einer binären Klassifizierungsaufgabe haben wir normalerweise zwei Ausgabeknoten in unserem neuronalen Netzwerk und unsere Zielvektoren sind entweder [1, 0] oder [0, 1]. Bei der Dekodierung der Netzwerkausgabe in eine Kategoriebezeichnung gibt es vier mögliche Ergebnisse:

  1. Richtig positiv: Das Ziel ist [1, 0] und die dekodierte Ausgabe stimmt überein.
  2. Falsch negativ: Das Ziel ist [1, 0], aber die dekodierte Ausgabe beschriftet es fälschlicherweise als [0, 1].
  3. Richtig negativ: Das Ziel ist [0, 1] und die dekodierte Ausgabe stimmt überein.
  4. Falsch positiv: Das Ziel ist [0, 1], aber die dekodierte Ausgabe beschriftet es fälschlicherweise als [1, 0].

Diese Ergebnisse können zur Berechnung verschiedener Metriken zur Bewertung der Leistung des Modells bei der binären Klassifizierung verwendet werden. Hier sind einige alternative Metriken, die Sie berücksichtigen sollten:

  1. Präzision: Der Anteil der Datenpunkte, die das Modell korrekt als positiv markiert, von allen als positiv gekennzeichneten Datenpunkten.
  2. Sensitivität oder Rückruf: Der Anteil der Datenpunkte, die als erste Kategorie hätten gekennzeichnet werden sollen, die das Modell korrekt als solche identifiziert.
  3. Spezifität: Der Anteil der Datenpunkte, die als zweite oder negative Kategorie hätten gekennzeichnet werden sollen, die das Modell korrekt als solche identifiziert.

Die Genauigkeit, die den Gesamtanteil korrekter Etiketten misst, ist möglicherweise nicht immer die aussagekräftigste Kennzahl. Verschiedene Situationen, etwa die Bedeutung falsch-positiver oder falsch-negativer Ergebnisse, können eine Konzentration auf bestimmte Kennzahlen erfordern. Darüber hinaus kann die Verteilung positiver und negativer Labels im Datensatz die Genauigkeit stark beeinflussen.

Um die Kompromisse zwischen Metriken zu verstehen, werden sie häufig mithilfe von Techniken wie der ROC-Kurve (Receiver Operating Characteristic) visualisiert. Die ROC-Kurve stellt die Falsch-Positiv-Rate gegenüber der Echt-Positiv-Rate für verschiedene Klassifizierungsschwellenwerte dar.

Indem wir die Kompromisse zwischen falsch positiven und falsch negativen Ergebnissen berücksichtigen und die ROC-Kurve analysieren, können wir basierend auf den spezifischen Anforderungen unseres Problems das am besten geeignete Modell und die am besten geeignete Bewertungsmetrik auswählen.

Anstatt sich ausschließlich auf die Genauigkeit zu verlassen, ist es wichtig, die relative Bedeutung von falsch-positiven und falsch-negativen Ergebnissen sowie die diesbezügliche Leistung verschiedener Modelle zu berücksichtigen. Wenn Sie an Ihrem Projekt arbeiten, ist es daher ratsam, die Kompromisse zwischen Metriken zu bewerten und die Auswirkungen auf Ihr spezifisches Problem zu berücksichtigen, anstatt sich ausschließlich auf die Gesamtgenauigkeit zu verlassen.

Bei der Bewertung von Modellen für maschinelles Lernen ist es von entscheidender Bedeutung, die Kompromisse zwischen verschiedenen Metriken zu verstehen. In bestimmten Szenarien liefert die Genauigkeit möglicherweise kein umfassendes Bild der Leistung eines Modells, insbesondere wenn falsch-positive und falsch-negative Ergebnisse unterschiedlich wichtig sind. Sehen wir uns einige Fälle an, in denen alternative Metriken besser geeignet sind:

  1. Bedeutung falsch positiver und falsch negativer Ergebnisse: In Bereichen wie der medizinischen Diagnose können die Folgen falsch positiver und falsch negativer Ergebnisse erheblich variieren. Beispielsweise kann bei der Krebserkennung ein falsch negatives Ergebnis (das Übersehen eines positiven Falles) schwerwiegende Folgen haben, während ein falsch positives Ergebnis (falsche Diagnose eines negativen Falles) zu unnötigen Behandlungen führen kann. In solchen Fällen können Metriken wie Präzision und Erinnerung/Empfindlichkeit wertvolle Einblicke in die Leistung eines Modells liefern.

  2. Unausgeglichene Daten: Wenn die positiven und negativen Bezeichnungen im Datensatz ungleichmäßig verteilt sind, kann die Genauigkeit irreführend sein. Angenommen, 95 % der Datenpunkte gehören zur positiven Klasse. In diesem Fall würde ein Modell, das einfach alles als positiv vorhersagt, eine hohe Genauigkeit von 95 % erreichen, ohne die zugrunde liegenden Muster tatsächlich zu lernen. Metriken wie Präzision und Erinnerung können dabei helfen, die Verzerrung zu beseitigen und sich auf die Leistung des Modells in jeder Klasse zu konzentrieren.

  3. Kompromiss zwischen Präzision und Rückruf: Modelle für maschinelles Lernen weisen häufig einen Kompromiss zwischen Präzision und Rückruf auf. Präzision misst die Fähigkeit, positive Beispiele richtig zu identifizieren, während Recall die Fähigkeit misst, alle positiven Beispiele zu erfassen. Durch Anpassen des Schwellenwerts oder der Entscheidungsgrenze des Modells können wir Präzision oder Rückruf priorisieren. Allerdings geht die Änderung des Schwellenwerts zur Verbesserung einer Metrik oft zu Lasten der anderen. Bei der Auswahl der geeigneten Metrik für ein bestimmtes Problem ist es wichtig, diesen Kompromiss zu verstehen.

  4. Receiver Operating Characteristic (ROC)-Kurve: Die ROC-Kurve bietet eine grafische Darstellung der Leistung eines binären Klassifizierungsmodells, indem die Falsch-Positiv-Rate gegen die Echt-Positiv-Rate bei verschiedenen Klassifizierungsschwellenwerten aufgetragen wird. Ein Modell, das hohe Richtig-Positiv-Raten bei niedrigen Falsch-Positiv-Raten erreicht, weist eine Kurve näher an der oberen linken Ecke auf, was auf eine bessere Leistung hinweist. Die Fläche unter der ROC-Kurve (AUC-ROC) wird häufig als zusammenfassende Metrik verwendet, wobei Werte näher bei 1 auf eine bessere Leistung hinweisen.

Verschiedene Modelle des maschinellen Lernens können unterschiedliche Kompromisse zwischen Sensitivität und Spezifität oder Präzision und Erinnerung haben. Es ist wichtig, die spezifischen Anforderungen des Problems und die relative Bedeutung verschiedener Metriken zu berücksichtigen. Indem wir diese Kompromisse bewerten und verstehen, wie Modelle bei verschiedenen Metriken funktionieren, können wir fundiertere Entscheidungen treffen und das am besten geeignete Modell für unsere Anwendung auswählen.

Berücksichtigen Sie in Ihrem Projekt die Kompromisse zwischen falsch-positiven und falsch-negativen Ergebnissen und wählen Sie Metriken aus, die mit den Zielen des Problems übereinstimmen. Anstatt sich ausschließlich auf die Genauigkeit zu verlassen, berücksichtigen Sie die spezifischen Anforderungen und Auswirkungen Ihrer Aufgabe, um die Leistung verschiedener Modelle genau zu bewerten und zu vergleichen.

Other Metrics and the ROC Curve (DL 20)
Other Metrics and the ROC Curve (DL 20)
  • 2020.10.12
  • www.youtube.com
Davidson CSC 381: Deep Learning, F'20, F'22
 

Der Adam-Optimierer (DL 21)



Der Adam-Optimierer (DL 21)

Ziel dieser Vorlesung ist es, zu zeigen, wie wir die Schwächen des stochastischen Gradientenabstiegs (SGD) beheben können, und den Adam-Optimierer vorzustellen, der häufig zum Training neuronaler Netze verwendet wird.

In SGD aktualisieren wir jedes Gewicht im neuronalen Netzwerk, indem wir für jede Charge, mit der wir trainieren, das Produkt aus der Lernrate und der partiellen Ableitung des Verlusts in Bezug auf dieses Gewicht subtrahieren. Dieser Prozess führt Schritte in Richtung des negativen Gradienten des Verlusts durch und minimiert ihn schrittweise. Allerdings kann SGD auf verschiedene Fehlermodi stoßen, die seine Wirksamkeit beeinträchtigen.

Um diese Probleme zu veranschaulichen, beginnen wir mit einem eindimensionalen Beispiel, bei dem wir versuchen, den Verlust zu minimieren. In diesem Fall führt uns SGD bergab, indem es der Richtung des Gefälles folgt und sich allmählich dem Minimum nähert. Es gibt jedoch Szenarien, in denen SGD nicht hilfreich ist. Wenn wir ein lokales Minimum erreichen, bei dem der Gradient Null ist, werden wir uns von diesem Punkt nicht entfernen. Ebenso wird ein Fortschritt verhindert, wenn man sich auf einem Plateau der Verlustfunktion befindet, wo der Gradient ebenfalls Null ist. Obwohl die Stochastik durch das Training verschiedener Chargen manchmal dazu beitragen kann, lokale Minima oder Plateaus zu umgehen, löst sie diese Probleme nicht vollständig.

Bei höherdimensionalen Optimierungsproblemen, wie dem Training neuronaler Netze mit mehreren Gewichtsdimensionen, ergeben sich zusätzliche Herausforderungen. Sattelpunkte, an denen es lokale Minima und Maxima in unterschiedlichen Richtungen gibt, können dazu führen, dass der Gradient Null ist, was das Lernen verlangsamt. Darüber hinaus können Unterschiede in den Skalen partieller Ableitungen über verschiedene Dimensionen hinweg zu einem Zickzack-Verhalten während des Gradientenabstiegs führen, was zu Überschwingern und einer langsameren Konvergenz führt.

Der Adam-Optimierer geht diese Probleme mit zwei Schlüsselideen an. Die erste ist die Dynamik, die es begünstigt, in die gleiche Richtung weiterzumachen, wenn bereits mehrere Schritte in diese Richtung unternommen wurden. Momentum hilft bei der Überwindung von Plateaus und kann den Algorithmus von Sattelpunkten wegführen. Die zweite Idee besteht darin, einen gleitenden Durchschnitt der partiellen Ableitungen und der quadrierten partiellen Ableitungen aufrechtzuerhalten. Durch die Schätzung des zweiten Moments (Varianz) der partiellen Ableitungen können wir die Schritte in jeder Dimension normalisieren und so Zickzackbewegungen und Überschwinger reduzieren.

Die Adam-Aktualisierungsregel ersetzt den partiellen Ableitungsterm in der Gewichtsaktualisierung durch den gleitenden Durchschnitt der partiellen Ableitung (v), dividiert durch die Quadratwurzel des gleitenden Durchschnitts der quadrierten partiellen Ableitung (s), zusammen mit einer kleinen Konstante (Epsilon). um eine Division durch Null zu vermeiden. Diese Aktualisierungsregel gewährleistet ausgewogenere Schritte über die Dimensionen hinweg und hat sich beim Training neuronaler Netze als effektiver als Vanilla SGD erwiesen.

Der Adam-Optimierer geht auf die Einschränkungen des SGD ein, indem er Momentum einbezieht und gleitende Durchschnitte der partiellen Ableitungen beibehält. Diese Änderungen verbessern die Fähigkeit des Optimierers, lokale Minima, Plateaus und Sattelpunkte zu navigieren und gleichzeitig Zickzackverhalten und Überschwingen zu reduzieren. Infolgedessen ist Adam in der Praxis zu einer beliebten Wahl für das Training neuronaler Netze geworden.

The Adam Optimizer (DL 21)
The Adam Optimizer (DL 21)
  • 2020.11.05
  • www.youtube.com
Davidson CSC 381: Deep Learning, F'20, F'22
 

Auto-Encoder (DL 22)



Auto-Encoder (DL 22)

In vielen Deep-Learning-Szenarien stoßen wir häufig auf die Idee, ein neuronales Netzwerk anhand eines Datensatzes zu trainieren und eine verborgene Schicht dieses Netzwerks zu verwenden, um Daten zu kodieren, die auf andere Probleme oder Datensätze angewendet werden können. Dieses Konzept wird als Transferlernen bezeichnet. Bei Restnetzwerken umfasst das Vortraining beispielsweise das Erlernen nützlicher Bildverarbeitungstechniken, die später auf verschiedene Datensätze angewendet werden können. Indem wir die Ausgabeschichten des vorab trainierten Modells verwerfen und neue Ausgabeschichten für eine neue Aufgabe hinzufügen, erstellen wir im Wesentlichen ein neues Netzwerk, das die vom vorab trainierten Modell erzeugten codierten Daten verarbeitet.

Worteinbettungen dienen auch der Datenkodierung, wobei das Ziel darin besteht, eine Darstellung zu erlernen, die aussagekräftige Informationen in den verborgenen Schichten erfasst. Diese Idee erstreckt sich auch auf verschiedene andere Kontexte. Ein bemerkenswertes Modell, das dieses Konzept aufgreift, ist der Autoencoder. Ein Autoencoder wird auf unbeaufsichtigte Daten trainiert, wobei die Eingabedaten und die Ausgabedaten gleich sind. Während es trivial erscheinen mag, dieses Regressionsproblem mithilfe der linearen Regression zu lösen, besteht das Hauptziel eines Autoencoders darin, eine kompaktere Darstellung in seinen verborgenen Schichten zu lernen.

Durch die schrittweise Reduzierung der Größe der verborgenen Schichten zwingt der Autoencoder das Netzwerk dazu, komprimierte Darstellungen der Eingabedaten zu lernen. Wenn das Netzwerk die ursprüngliche Eingabe aus dieser komprimierten Darstellung konsistent reproduzieren kann, lernt es effektiv die Datenkomprimierung. Wenn wir beispielsweise ein 200 x 200 Pixel großes Bild als Eingabe haben und es auf eine verborgene Schicht von 1000 Neuronen reduzieren, die sich dann wieder ausdehnen können, um eine gute Annäherung an das Originalbild zu reproduzieren, erreichen wir ein Komprimierungsverhältnis von 20:1.

Die alleinige Verwendung eines neuronalen Netzwerks zur Datenkomprimierung ist jedoch nicht besonders sinnvoll, da effizientere, nicht lernbasierte Komprimierungsalgorithmen verfügbar sind. Stattdessen liegt der Wert eines Autoencoders darin, entweder die erste Hälfte des Netzwerks zum Generieren einer Darstellung für Transferlernen in anderen Deep-Learning-Aufgaben oder die zweite Hälfte als Decoder zum Generieren von Datenbeispielen aus dem Eingabesatz zu verwenden.

Die anfängliche Anwendung eines Autoencoders für Transferlernen war in den Anfängen des Deep Learning von herausragender Bedeutung. Mittlerweile wurden jedoch bessere Ansätze zum Transferlernen entwickelt. Andererseits wurde die Nutzung des Decoder-Teils des Netzwerks zur Generierung von Datenproben zur Grundlage für viele andere Deep-Learning-Algorithmen.

Der einfachste Ansatz besteht darin, die maximal mögliche Komprimierung durch Minimierung der Größe der verborgenen Schicht zu erreichen. In diesem Szenario sollte jeder sinnvolle Eingabevektor, der dem Decoder übergeben wird, Daten erzeugen, die der Verteilung der Eingabedaten ähneln. Allerdings ist die Bestimmung der optimalen Größe der verborgenen Schicht eine Herausforderung. Es kann entweder zu klein sein, sodass die Eingaben nicht genau wiedergegeben werden können, oder zu groß, was zur Erzeugung unrealistischer Daten führt, die nicht dem ursprünglichen Datensatz ähneln.

Um dieses Problem zu lösen, können wir die Architektur ändern, um den Autoencoder zum Erlernen von Darstellungen zu ermutigen, die zufällig abgetasteten Vektoren ähneln. Diese Modifikation führt uns zum Variations-Autoencoder. In einem Variations-Autoencoder wird der mittlere verborgene Vektor durch zwei Vektoren ersetzt, die den Mittelwert und die Varianz darstellen. Der Trainingsprozess umfasst die Generierung eines Zufallsvektors mithilfe einer Normalverteilung, der dann mit den versteckten Codierungsvektoren kombiniert wird, um die Eingabe für den Decoder zu erstellen. Darüber hinaus enthält der Verlust für das Encodernetzwerk einen Divergenzterm, der dafür sorgt, dass Mittelwert und Varianz nahe einer Normalverteilung bleiben. Dies trägt dazu bei, die Darstellungen um die Mitte des Raums herum zu gruppieren, was die Zuverlässigkeit für Zufallsstichproben erhöht. Somit ermöglicht uns der Variations-Autoencoder, Stichproben zu generieren, die der vom Netzwerk gelernten Datenverteilung sehr ähnlich sind.

Zusammenfassend lässt sich sagen, dass sich das Konzept, die verborgene Schicht eines neuronalen Netzwerks als Datenkodierung zu verwenden, zu der Möglichkeit entwickelt hat, Stichproben aus einer erlernten Wahrscheinlichkeitsverteilung zu ziehen. Dies öffnet die Türen für generative gegnerische Netzwerke und die Generierung vielfältiger und interessanter Daten.

Auto-Encoders (DL 22)
Auto-Encoders (DL 22)
  • 2022.11.12
  • www.youtube.com
Davidson CSC 381: Deep Learning, Fall 2022
 

Generative gegnerische Netzwerke (DL 23)



Generative gegnerische Netzwerke (DL 23)

In der letzten Vorlesung haben wir uns mit Variations-Autoencodern befasst, bei denen es sich um eine Art generativen Modellierungsansatz handelt. Das Hauptziel des Autoencoders besteht darin, latente Variablen zu lernen, die für die Stichprobenerhebung aus der generativen Verteilung verwendet werden können. Eine andere Möglichkeit, über die Generierung von Stichproben aus einer Verteilung nachzudenken, sind rechnerische Zufallszahlengeneratoren .

Bei der Verwendung einer Zufallsbibliothek in der Programmierung werden Stichproben aus Zufallsverteilungen basierend auf einer Folge von Zufalls- oder Pseudozufallsbits generiert. Der Zufallszahlengenerator führt Berechnungen durch, um diese Bitfolge in Stichproben aus einer anderen Verteilung umzuwandeln. Viele Verteilungen bauen in diesen Generatoren auf Gleichverteilungen auf.

Dieser alternative Ansatz zur generativen Modellierung beinhaltet das Training eines neuronalen Generatornetzwerks. Der Generator nimmt zufälliges Rauschen als Eingabe und wandelt es in eine Zufallsstichprobe aus einer Datenverteilung um. Wenn der Datensatz beispielsweise aus Bildern von Welpen besteht, besteht das Ziel darin, das neuronale Netzwerk so zu trainieren, dass es bei Eingaberauschen zufällige Bilder von Welpen generiert.

Um das Generatornetzwerk zu trainieren, wird ein zusätzliches neuronales Netzwerk namens Diskriminator verwendet. Der Diskriminator nimmt Eingaben entweder von echten Trainingsdaten oder der Ausgabe des Generatornetzwerks entgegen und bestimmt, ob die Eingabe echt oder gefälscht ist. Das Generatornetzwerk zielt darauf ab, Proben zu erzeugen, die den Diskriminator täuschen können, während der Diskriminator darauf abzielt, echte Daten von gefälschten Daten zu unterscheiden. Dadurch entsteht eine kontroverse Beziehung zwischen den beiden Netzwerken.

Der Trainingsprozess umfasst zunächst das Training des Diskriminators, damit dieser die Verteilung realer Daten erlernen kann. Anschließend wird der Generator darauf trainiert, Ausgaben zu erzeugen, die realen Daten ähneln und den Diskriminator täuschen können. Das Training wechselt zwischen dem Diskriminator und dem Generator, um ihre Leistung zu verbessern.

Die Verlustfunktion für das Generatornetzwerk kann das Gegenteil des Verlusts des Diskriminators oder eine völlig andere Verlustfunktion sein. Gradienten können durch den Diskriminator zurück in das Generatornetzwerk übertragen werden, um dessen Gewichte basierend auf der Verlustfunktion zu aktualisieren. Dadurch kann der Generator lernen, seine Zielfunktion zu verbessern.

Für die Generator- und Diskriminatornetzwerke können unterschiedliche Verlustfunktionen verwendet werden, insbesondere wenn das Ziel darin besteht, Stichproben für bestimmte Kategorien innerhalb der Datenverteilung zu generieren. Der Generator kann auf zusätzliche Informationen wie Etiketten konditioniert werden, um Proben zu erzeugen, die den Diskriminator dazu verleiten, bestimmte Kategorien auszugeben.

Beim Training der gegnerischen Netzwerke müssen potenzielle Fehlermodi berücksichtigt werden. Ein Fehlermodus besteht darin, dass das Generatornetzwerk lediglich Stichproben aus der realen Datenverteilung erzeugt, was seine objektive Funktion nicht minimieren würde. Überanpassung ist ein weiteres Problem, da der Generator die tatsächlichen Daten speichern könnte, anstatt verschiedene Stichproben zu generieren.

Um eine Überanpassung zu vermeiden, ist es wichtig, den Zugriff des Generators auf die realen Daten zu begrenzen und sicherzustellen, dass er nicht zu viele Möglichkeiten hat, sich diese zu merken. Der reale Datensatz wird nicht direkt in das Generatornetzwerk eingespeist. Der Generator lernt indirekt aus den realen Daten, wenn er die Gewichte im Diskriminatornetzwerk beeinflusst, was sich dann auf den an den Generator zurückgegebenen Verlust auswirkt.

Im Erfolgsfall kann ein trainiertes Generatornetzwerk Stichproben generieren, die den realen Daten ähneln, aber darüber hinausgehen. Dies kann zur Datenerweiterung beim Training anderer neuronaler Netze und für künstlerische Zwecke nützlich sein. In der Vorlesung wurden Beispiele für generative kontradiktorische Netzwerke diskutiert, die für Kunst und Datenerweiterung genutzt werden.

Darüber hinaus können trainierte Generatornetzwerke in verschiedenen Anwendungen über die Datenerweiterung und Kunst hinaus wertvoll sein. Eine dieser Anwendungen besteht darin, synthetische Daten zu generieren, um das Training neuronaler Netze zur Lösung anderer wichtiger Probleme zu verbessern.

Durch die Nutzung des Generatornetzwerks können wir Datenproben generieren, die speziell auf die Verbesserung des Trainings neuronaler Netze zugeschnitten sind. Wenn wir beispielsweise ein Klassifizierungsproblem haben, bei dem die Klassen unausgewogen sind, können wir den Generator verwenden, um zusätzliche Stichproben für die unterrepräsentierte Klasse zu generieren. Dies kann dazu beitragen, den Datensatz auszugleichen und die Fähigkeit des Modells, die Minderheitenklasse zu lernen, zu verbessern.

Darüber hinaus haben generative kontradiktorische Netzwerke das Potenzial, Stichproben zu generieren, die den Raum zwischen verschiedenen Kategorien oder Merkmalskombinationen erkunden. Wenn wir dem Generator beispielsweise eine Kombination von Merkmalen wie 0,5 Hund und 0,5 Katze bereitstellen, kann er eine Stichprobe erzeugen, die die Merkmale von Hunden und Katzen kombiniert. Diese Fähigkeit, zwischen verschiedenen Kategorien oder Funktionen zu interpolieren, eröffnet Möglichkeiten für kreative und neuartige Ergebnisse.

Generative gegnerische Netzwerke haben in verschiedenen Bereichen Anwendung gefunden. Im Bereich Computer Vision werden sie eingesetzt, um realistische Bilder zu erzeugen, die Bildqualität zu verbessern und sogar Deep Fakes zu erstellen. Bei der Verarbeitung natürlicher Sprache wurden sie eingesetzt, um realistische Texte zu generieren, zwischen Sprachen zu übersetzen und sogar Chatbots zu erstellen.

Es ist wichtig zu beachten, dass das Training generativer gegnerischer Netzwerke eine herausfordernde Aufgabe sein kann. Es erfordert eine sorgfältige Abstimmung der Hyperparameter, die Auswahl geeigneter Verlustfunktionen und die Bewältigung des Kompromisses zwischen Generator- und Diskriminatornetzwerken. Darüber hinaus sind die Gewährleistung der Stabilität des Trainings und die Vermeidung eines Moduskollapses, bei dem der Generator nur eine begrenzte Anzahl von Samples erzeugt, wichtige Überlegungen.

Trotz dieser Herausforderungen haben generative gegnerische Netzwerke beeindruckende Fähigkeiten bei der Generierung realistischer und vielfältiger Proben bewiesen. Die laufende Forschung treibt das Gebiet weiter voran und erforscht neue Architekturen, Verlustfunktionen und Trainingstechniken, um die Leistung und Zuverlässigkeit dieser Netzwerke weiter zu verbessern.

Zusammenfassend lässt sich sagen, dass generative gegnerische Netzwerke einen leistungsstarken Rahmen für die generative Modellierung bieten. Indem wir ein Generator- und Diskriminatornetzwerk auf kontradiktorische Weise trainieren, können wir lernen, Stichproben zu generieren, die der tatsächlichen Datenverteilung ähneln. Dies eröffnet spannende Möglichkeiten für die Datenerweiterung, kreative Anwendungen und die Verbesserung des Trainings für verschiedene maschinelle Lernaufgaben.

Generative Adversarial Networks (DL 23)
Generative Adversarial Networks (DL 23)
  • 2020.11.15
  • www.youtube.com
Davidson CSC 381: Deep Learning, F'20, F'22