[PYTHON] Visualisieren Sie die Auswirkungen von Deep Learning / Regularisierung

1. Zuallererst

Ich fing an, tiefes Lernen zu studieren. Dieses Mal werde ich die Regularisierung kurz zusammenfassen.

2. Datenerstellung

Basierend auf der Gleichung $ y = -x ^ 3 + x ^ 2 + x $ ist x der Wert, der durch Teilen von -10 bis 10 durch 50 erhalten wird, und y ist das Ergebnis des Einsetzens des x in die Gleichung und des Hinzufügens einer Zufallszahl von 0 bis 0,05. Erstellen Sie die Daten als Wert.

from sklearn.preprocessing import PolynomialFeatures
from sklearn import linear_model
import numpy as np
import matplotlib.pyplot as plt

#Datengenerierung
np.random.seed(0)
X = np.linspace(-10, 10, 50)
Y_truth = 0.001 * (-X **3 + X**2 + X)
Y = Y_truth + np.random.normal(0, 0.05, len(X))

plt.figure(figsize=(5, 5))
plt.plot(X, Y_truth, color='gray')
plt.plot(X, Y, '.', color='k')
plt.show()

スクリーンショット 2019-12-26 15.31.05.png Dies sind die erstellten Daten. Es wird angenommen, dass die durchgezogene Linie der wahre Wert (Wert der Gleichung) ist und der Punkt der tatsächlich beobachtete Wert ist (y plus Rauschen).

3. Einführung der Polypoly-Regression

Overlearning tritt mit zunehmendem Freiheitsgrad eher auf, daher wagen wir die Einführung einer 30-dimensionalen Polynomregression.

#Grafikanzeige
def graph(Y_lr, name):
    plt.figure(figsize=(6, 6))
    plt.plot(X, Y_truth, color='gray', label='truth')
    plt.plot(xs, Y_lr, color='r', markersize=2, label=name)
    plt.plot(X, Y, '.', color='k')
    plt.legend()
    plt.ylim(-1, 1)
    plt.show()

#Bildschirmeinstellungen
xs = np.linspace(-10, 10, 200)  

#Einführung der Polypoly-Regression
poly = PolynomialFeatures(degree=30, include_bias=False)  
X_poly = poly.fit_transform(X[:, np.newaxis])   

Nach dem Einstellen der Diagrammanzeige und -anzeige werden PolynomialFeatures instanziiert und angepasst. Die Abmessung beträgt 30 Abmessungen (Grad = 30).

4. Keine Regularisierung

Führen Sie zunächst eine polymorphe Regression ohne Regularisierung durch.

#Keine Regularisierung
lr0 = linear_model.LinearRegression(normalize=True)
lr0.fit(X_poly, Y)
Y_lr0 = lr0.predict(poly.fit_transform(xs[:, np.newaxis]))
graph(Y_lr0, 'No Regularization')

スクリーンショット 2019-12-26 15.32.47.png

Aufgrund seines hohen Freiheitsgrades mit einem 30-dimensionalen Polynom ist es möglich, viele Punkte geschickt zu durchlaufen, was zu einem typischen Überlernen führt. Es ist weit vom wahren Wert entfernt, und eine Generalisierungsleistung ist damit nicht zu erwarten.

5. L2-Regularisierung

Die L2-Regularisierung ist eine für die Ridge-Regression bekannte Technik, die den Koeffizienten begrenzt, damit er nicht zu groß wird, und die L2-Norm des Parameters zum Verlust hinzufügt (C ist eine Konstante). L(W)+c|w|^2

#L2-Regularisierung
lr2 = linear_model.Ridge(normalize=True, alpha=0.5)
lr2.fit(X_poly, Y)
Y_lr2 = lr2.predict(poly.fit_transform(xs[:, np.newaxis]))
graph(Y_lr2, 'L2')

スクリーンショット 2019-12-26 15.33.51.png Nun, ich habe das Gefühl, dass ich gut zurückkehren konnte.

6. L1-Regularisierung

Die L1-Regularisierung ist eine für die Lasso-Regression bekannte Technik, die auch den Koeffizienten begrenzt, damit er nicht zu groß wird, indem die L1-Norm des Parameters zum Verlust addiert wird (C ist eine Konstante). L(W)+c|w|

#L1-Regularisierung
lr1 = linear_model.LassoLars(normalize=True, alpha=0.001)
lr1.fit(X_poly, Y)
Y_lr1 = lr1.predict(poly.fit_transform(xs[:, np.newaxis]))
graph(Y_lr1, 'L1')

スクリーンショット 2019-12-26 15.34.43.png Die Form kommt einer perfekten Passform sehr nahe. Im Vergleich zur L1-Regularisierung scheint die L2-Regularisierung besser zurückkehren zu können.

7. Vergleich der Dimensionskoeffizienten

Vergleichen Sie 30 dimensionale Koeffizienten für keine Regularisierung, L2-Regularisierung und L1-Regularisierung (angeordnet von der niedrigsten Dimension).

import pandas as pd
result = []
for i in range(len(lr0.coef_)):
      tmp = lr0.coef_[i], lr2.coef_[i], lr1.coef_[i]
      result.append(tmp)
df = pd.DataFrame(result)
df.columns = ['No Regularization', 'L2', 'L1']
print(df)

スクリーンショット 2019-12-26 15.43.05.png Sie können sehen, dass L2 einen kleineren Koeffizienten als No Regularization hat. L1 ist auch ein Ausdruck (spärlicher Ausdruck) mit vielen vollständig 0 Punkten.

Ich bin froh, dass die L1-Regularisierung Überlernen unterdrücken und Dimensionen reduzieren kann.

Recommended Posts

Visualisieren Sie die Auswirkungen von Deep Learning / Regularisierung
Othello-Aus der dritten Zeile von "Implementation Deep Learning" (3)
Othello-Aus der dritten Zeile von "Implementation Deep Learning" (2)
Deep Learning 1 Übung des Deep Learning
Die Geschichte des tiefen Lernens mit TPU
Zählen Sie die Anzahl der Parameter im Deep-Learning-Modell
Techniken zum Verständnis der Grundlagen von Deep-Learning-Entscheidungen
Othello ~ Aus der dritten Zeile von "Implementation Deep Learning" (4) [Ende]
Visualisieren Sie die Flugbahn von Hayabusa 2
Tiefes Lernen der Verstärkung 2 Implementierung des Lernens der Verstärkung
Visualisieren Sie den Antwortstatus der Volkszählung 2020
Tiefes Lernen
[Erkennung von Anomalien] Versuchen Sie es mit der neuesten Methode des Fernunterrichts
Zusammenfassung der Seiten, die zum Studium des Deep Learning Framework Chainer nützlich sind
Notizen vom Anfang von Python 1 lernen
Bedeutung von Deep-Learning-Modellen und -Parametern
Emotionale Analyse von Tweets mit Deep Learning
Lernbericht über das Lesen von "Deep Learning von Grund auf neu"
Visualisieren Sie die Exportdaten des Piyo-Protokolls
Notizen vom Anfang von Python 2 lernen
Diagramm der Geschichte der Anzahl der Ebenen des tiefen Lernens und der Änderung der Genauigkeit
Ich habe die übliche Geschichte ausprobiert, Deep Learning zu verwenden, um den Nikkei-Durchschnitt vorherzusagen
Ich habe die gängige Geschichte der Vorhersage des Nikkei-Durchschnitts mithilfe von Deep Learning (Backtest) ausprobiert.
Die Geschichte, dass die Lernkosten von Python niedrig sind
Deep Learning / Fehler-Backpropagation der Sigmoid-Funktion
Ein Memorandum zum Studieren und Implementieren von Deep Learning
[Lernnotiz] Deep Learning von Grund auf ~ Implementierung von Dropout ~
Starten Sie Deep Learning
Grundlegendes Verständnis der Stereo-Tiefenschätzung (Deep Learning)
Deep Learning von Grund auf neu Die Theorie und Implementierung des mit Python erlernten Deep Learning Kapitel 3
Erstellen Sie eine Python-Umgebung, um die Theorie und Implementierung von Deep Learning zu erlernen
Python Deep Learning
Paralleles Lernen von Deep Learning durch Keras und Kubernetes
Über die Entwicklungsinhalte des maschinellen Lernens (Beispiel)
Deep Learning × Python
Visualisieren Sie das Verhalten des Sortieralgorithmus mit matplotlib
Implementierung eines Deep Learning-Modells zur Bilderkennung
Tiefes Lernen durch Implementierung (Segmentierung) ~ Implementierung von SegNet ~
Deep Learning macht es dramatisch einfacher, den Zeitraffer körperlicher Veränderungen zu erkennen
So installieren Sie das Deep Learning Framework Tensorflow 1.0 in der Windows Anaconda-Umgebung
[Deep Learning von Grund auf neu] Ich habe die Affine-Ebene implementiert
Ich habe den Deep Learning Library Chainer installiert und verwendet
Visualisieren Sie den Bereich der internen und externen Einfügungen mit Python
Über das Testen bei der Implementierung von Modellen für maschinelles Lernen
Anwendung von Deep Learning 2 von Grund auf neu Spam-Filter
Prognostizieren Sie das Geschlecht von Twitter-Nutzern durch maschinelles Lernen
Visualisieren Sie das charakteristische Vokabular eines Dokuments mit D3.js.
Deep Learning aus den mathematischen Grundlagen Teil 2 (während der Teilnahme)
Ich habe versucht, die Spacha-Informationen von VTuber zu visualisieren
DNN (Deep Learning) Library: Vergleich von Chainer und TensorFlow (1)
Zusammenfassung des grundlegenden Ablaufs des maschinellen Lernens mit Python
Aufzeichnung der ersten Herausforderung des maschinellen Lernens mit Keras
Visualisieren Sie mit OpenCV den Wertschätzungsstatus von Kunstwerken
Katzen haben es schon satt, locker und locker zu lernen
Ich untersuchte den stärkenden Lernalgorithmus des Algorithmushandels
Sammlung und Automatisierung erotischer Bilder durch Deep Learning
DEEP PROBABILISTIC PROGRAMMING --- Bibliothek "Deep Learning + Bayes" --- Einführung von Edward
Visualisieren Sie die Anzahl der Beschwerden von Lebensversicherungsunternehmen
Die Kopiermethode von pandas.DataFrame ist standardmäßig Deep Copy