In dieser Übung trainieren wir unser erstes kleines neuronales Netz. neuronale Netze geben uns die Möglichkeit, nicht lineare Modelle ohne explizite Featureverknüpfungen zu lernen.
Aufgabe 1: Das angegebene Modell kombiniert unsere beiden Eingabefeatures zu einem einzigen Neuron. Erkennt dieses Modell auch Nichtlinearitäten? Führen Sie sie aus, um Ihre Vermutung zu bestätigen.
Aufgabe 2: Erhöhen Sie die Anzahl der Neuronen in der ausgeblendeten Ebene von 1 auf 2 und versuchen Sie, von einer linearen Aktivierung zu einer nicht linearen Aktivierung wie ReLU zu wechseln. Können Sie ein Modell erstellen, das Nicht-Linearität lernen kann? Kann er die Daten effektiv modellieren?
Aufgabe 3: Versuchen Sie, die Anzahl der Neuronen in der verborgenen Ebene von 2 auf 3 zu erhöhen. Verwenden Sie dazu eine nicht lineare Aktivierung wie ReLU. Können die Daten effektiv modelliert werden? Wie unterscheidet sich die Modellqualität von Lauf zu Lauf?
Aufgabe 4: Führen Sie weitere Tests durch, indem Sie verborgene Ebenen und Neuronen pro Ebene hinzufügen oder entfernen. Sie können auch die Lernraten, die Normalisierung und andere Lerneinstellungen ändern. Was ist die kleinste Anzahl von Neuronen und Schichten, die du verwenden kannst, um einen Testverlust von 0,177 oder weniger zu erreichen?
Verbessert die Größe des Modells die Passform oder wie schnell bricht sie zusammen?
Ändert sich dadurch die Häufigkeit, mit der ein gutes Modell erreicht wird? Probieren Sie beispielsweise die folgende Architektur aus:
Erste verborgene Schicht mit 3 Neuronen.
Zweite verborgene Ebene mit 3 Neuronen.
Dritte verborgene Ebene mit 2 Neuronen.
Die Antworten werden direkt unter der Übung angezeigt.
Klicken Sie auf das Pluszeichen, um eine Antwort für Aufgabe 1 zu erhalten.
Die Aktivierung ist auf Linear festgelegt, sodass dieses Modell keine Nichtlinearitäten lernen kann. Der Verlust ist sehr hoch und das Modell verstärkt die Daten.
Klicken Sie auf das Pluszeichen, um eine Antwort für Aufgabe 2 zu erhalten.
Die nicht lineare Aktivierungsfunktion kann nicht lineare Modelle lernen. Eine einzelne verborgene Ebene mit 2 Neuronen kann jedoch nicht alle Nichtlinearitäten in diesem Dataset widerspiegeln und hat auch ohne Rauschen einen hohen Verlust: Sie unterversäumen die Daten. Diese Übungen sind nicht deterministisch, sodass einige Läufe kein effektives Modell erlernen, während andere Läufe ziemlich gut funktionieren.
Das beste Modell hat möglicherweise nicht die Form, die Sie erwarten!
Klicken Sie auf das Pluszeichen, um eine Antwort auf Aufgabe 3 zu erhalten.
Bei dieser Übung strahlt der unentschlossene Spielplatz von Playground aus. Eine einzige verborgene Schicht mit 3 Neuronen reicht aus, um das Dataset zu modellieren (kein Rauschen), aber nicht alle Ausführungen werden zu einem guten Modell konvergieren.
3 Neuronen reichen aus, da die XOR-Funktion als Kombination aus 3 Halbebenen (ReLU-Aktivierung) ausgedrückt werden kann. Sie sehen dies anhand der Neuronenbilder, die die Ausgabe der einzelnen Neuronen zeigen. In einem guten Modell mit 3 Neuronen und ReLU-Aktivierung wird 1 Bild mit einer fast vertikalen Linie erkannt, wobei X1 positiv (oder negativ; das Vorzeichen ist möglicherweise verwechselt), 1 Bild mit einer fast horizontalen Linie erkennt, wobei das Vorzeichen von X2 erkannt wird, und 1 Bild mit einer diagonalen Linie, die ihre Interaktion erkennt.
Allerdings führen nicht alle Ausführungen zu einem guten Modell. Einige Ausführungen sind nicht besser als ein Modell mit zwei Neuronen, und Sie können in diesen Fällen doppelte Neuronen sehen.
Klicken Sie auf das Pluszeichen, um eine Antwort für Aufgabe 4 zu erhalten.
Eine einzelne verborgene Schicht mit 3 Neuronen kann die Daten modellieren, aber es gibt keine Redundanz, sodass bei vielen Ausführungen ein Neuron verloren geht und kein gutes Modell gelernt wird. Eine einzelne Schicht mit mehr als 3 Neuronen hat eine größere Redundanz und bringt daher eher ein gutes Modell mit sich.
Wie wir gesehen haben, kann eine einzelne verborgene Schicht mit nur 2 Neuronen die Daten nicht modellieren. Wenn Sie dies versuchen, können Sie sehen, dass alle Elemente in der Ausgabeebene nur Formen sein können, die aus den Linien dieser beiden Knoten bestehen. In diesem Fall kann ein tieferes Netzwerk das Dataset besser modellieren als die erste verborgene Ebene: Einzelne Neuronen in der zweiten Ebene können komplexere Formen modellieren, z. B. das Oben-Rechte-Quadrant, indem Neuronen in der ersten Ebene kombiniert werden. Durch das Hinzufügen dieser zweiten ausgeblendeten Ebene kann das Dataset trotzdem besser modelliert werden als die erste verborgene Ebene. Es kann sinnvoller sein, der ersten Ebene weitere Knoten hinzuzufügen, damit mehr Linien in das Kit eingefügt werden können, aus dem die zweite Ebene ihre Formen baut.
Ein Modell mit einem Neuron in der ersten verborgenen Ebene kann jedoch kein gutes Modell erlernen, wie tief es ist. Das liegt daran, dass die Ausgabe der ersten Ebene nur entlang einer Dimension (normalerweise einer Diagonale) variiert, die nicht ausreicht, um diesen Datensatz gut zu modellieren. Spätere Ebenen können dies nicht ausgleichen. Dabei spielt es keine Rolle, wie komplex die Informationen sind. Die Informationen in den Eingabedaten sind unwiederbringlich verloren gegangen.
Was wäre, wenn wir statt eines kleinen Netzwerks viele Schichten mit vielen Neuronen hätten, bei einem einfachen Problem wie diesem? Wie Sie sehen, wird es auf der ersten
Ebene möglich sein, viele verschiedene Linien zu testen. In der zweiten Ebene können sie in vielen verschiedenen Formen zusammengefasst werden, wobei sich durch die nachfolgenden Ebenen viele weitere Formen ableiten lassen.
Dadurch, dass das Modell so viele verschiedene Formen durch so viele verschiedene verborgene Neuronen berücksichtigt, haben Sie genügend Platz für das Modell geschaffen, um eine einfache Überanpassung des Rauschens im Trainings-Dataset vorzunehmen, sodass diese komplexen Formen mit den Fakultäten der Trainingsdaten und nicht mit der generalisierten Grundwahrheit übereinstimmen. In diesem Beispiel können größere Modelle komplizierte Grenzen haben, um die genauen Datenpunkte abzugleichen. In extremen Fällen könnte ein großes Modell eine Insel um einen einzelnen Rauschpunkt herum lernen, was als Datenspeicher bezeichnet wird. Wenn Sie das Modell so viel größer machen lassen, sehen Sie, dass es tatsächlich schlechter abschneidet als das einfachere Modell mit gerade genügend Neuronen, um das Problem zu lösen.
Neurale Netzinitialisierung
In dieser Übung werden die XOR-Daten noch einmal verwendet. Es werden jedoch die Wiederholbarkeit des Trainings neuronaler Netze und die Bedeutung der Initialisierung berücksichtigt.
Aufgabe 1:Führen Sie das Modell so aus, wie es vier- oder fünfmal angegeben wird. Klicken Sie vor jedem Test auf die Schaltfläche Netzwerk zurücksetzen, um eine neue zufällige Initialisierung zu erhalten.
Die Schaltfläche Netzwerk zurücksetzen befindet sich links neben der Wiedergabeschaltfläche. Lassen Sie jeden Test mindestens 500 Schritte laufen, um für eine Konvergenz zu sorgen. In welche Form wird die Modellausgabe konvergiert?
Was heißt das über die Rolle der Initialisierung bei der nicht Convex-Optimierung?
Aufgabe 2:Versuchen Sie, das Modell etwas komplexer zu machen, indem Sie eine Ebene und einige zusätzliche Knoten hinzufügen. Wiederholen Sie die Tests aus Aufgabe 1. Erhöht sich dadurch die Stabilität der Ergebnisse?
Die Antworten werden direkt unter der Übung angezeigt.
Klicken Sie auf das Pluszeichen, um eine Antwort für Aufgabe 1 zu erhalten.
Das gelernte Modell hat bei jeder Ausführung unterschiedliche Formen. Der konvergierte Testverlust schwankt fast doppelt so hoch wie unten.
Klicken Sie auf das Pluszeichen, um eine Antwort für Aufgabe 2 zu erhalten.
Wenn Sie die Ebene und zusätzliche Knoten hinzufügen, erhalten Sie wiederholbare Ergebnisse.
Bei jeder Ausführung sah das resultierende Modell ungefähr gleich aus. Außerdem zeigte der konvergente Testverlust eine geringere Abweichung zwischen Ausführungen.
Neurale Netz Spiral
Dieses Dataset ist eine laute Spirale. Ein lineares Modell schlägt hier natürlich fehl, aber selbst manuell festgelegte Merkmalsverknüpfungen können schwer zu erstellen sein.
Aufgabe 1: Trainieren Sie das bestmögliche Modell mit X1 und X2. Sie können Ebenen und Neuronen hinzufügen oder entfernen und Lerneinstellungen wie Lernrate, Normalisierungsrate und Batchgröße ändern. Was ist der beste Verlust bei einem Test? Wie glatt ist die Modellausgabeoberfläche?
Aufgabe 2: Selbst bei neuronalen Netzen ist häufig ein Teil des Feature Engineering erforderlich, um eine optimale Leistung zu erzielen. Versuchen Sie, zusätzliche produktübergreifende Funktionen oder andere Transformationen wie sin(X1) und sin(X2) hinzuzufügen. Haben Sie ein besseres Modell? Ist die Modellausgabeoberfläche flüssiger?
Die Antworten werden direkt unter der Übung angezeigt.
Klicken Sie auf das Pluszeichen, um mögliche Antworten zu sehen.
Im folgenden Video wird gezeigt, wie Sie Hyperparameter in Playground auswählen, um ein Modell für die Spiraldaten zu trainieren, das den Testverlust minimiert.