[PYTHON] Zusammenfassender Hinweis zu Deep Learning -4.2 Verlustfunktion-

Zusammenfassung der Erklärung

Der Zweck hier ist, zu interpretieren, was ich nicht verstehen konnte, indem ich ein Buch las, während ich Deep Learning studierte, und mich reibungslos daran zu erinnern, wenn ich später darauf zurückblicke. Ich werde den Inhalt des Codes so sorgfältig wie möglich erklären und hoffe, dass er hilfreich ist.

4.2 Verlustfunktion

Um die Leistung beim Lernen eines neuronalen Netzwerks zu verbessern, ist es notwendig, sich dem optimalen Gewichtsparameter zu nähern. Verwenden Sie diese Verlustfunktion als Hinweis auf Ihre Suche. Zunächst einmal, was von der Verlustfunktion ausgegeben wird       0.6094374124342252       0.4750000000000001  Es ist ein numerischer Wert wie. Dieser Wert ist klein, wenn die Leistung gut ist, und groß, wenn die Leistung schlecht ist. In diesem Beispiel ist der folgende Wert kleiner, sodass gesagt werden kann, dass die Leistung höher ist. Der Wert der Ausgabe der Verlustfunktion wird als Hinweis verwendet, um auf die Richtung und Größe der Aktualisierung des Gewichtsparameters Bezug zu nehmen.

Art der Verlustfunktion

Es gibt verschiedene Verlustfunktionen, aber hier erklären wir die Summe aus Quadratfehler und Kreuzentropiefehler.

1. Mittlerer quadratischer Fehler

Die Summe der Fehlerquadrate wird nach der folgenden Formel berechnet.

E = \frac{1}{N}\sum_{i=1}^{N}(y_i -t_i)^2

Kann vertreten werden durch. Um die Formel zu erklären, wird die Differenz zwischen den Ausgabewertdaten (y i) und den korrekten Wertdaten (t i) quadriert und durch N Stücke gemittelt. Das Quadrat soll den Fehler zu einem positiven Wert machen. Wenn Sie einen positiven Wert wünschen, nehmen Sie den absoluten Wert

E = \frac{1}{N}\sum_{i=1}^{N}|y_i -t_i|

Ist es okay das zu tun? Ich dachte, aber anscheinend ist es einfacher, bei der Berechnung des Differentials zu quadrieren. Ich verstehe! Es gibt Fälle, in denen der absolute Wert differenziert ist ...   Wenn differenziert, kommt außerdem 2 vorne heraus, also addiere 1/2

E = \frac{1}{2}*\frac{1}{N}\sum_{i=1}^{N}(y_i -t_i)^2

Es scheint, dass es sein kann.

Beispiel mit Quadratsummenfehler

Dieses Mal definieren wir die Funktion mit N in der obigen Formel als 1 und sehen das Ergebnis. y ist das Ausgabeergebnis der Softmax-Funktion.

import numpy as np

#Richtige Antwortdaten(one-hot-label)
t = [0,0,1,0,0]

#Definieren Sie eine Funktion der Summe der Fehlerquadrate
def mean_squared_error(y,t):
    return 0.5 * np.sum((y-t)**2)

#Muster 1(Nahe an korrekten Antwortdaten)
y1 = [0.01,0.02,0.9,0.05,0.02]
#Muster 2(Weit entfernt von korrekten Daten)
y2 = [0.5,0.1,0.2,0.2,0.1]

out1 = mean_squared_error(np.array(y1),np.array(t))
out2 = mean_squared_error(np.array(y2),np.array(t))

Jedes Ergebnis ist print(out1) >>> 0.006699999999999998 print(out2) >>> 0.4750000000000001 Der Fehler war klein, wenn er nahe an den richtigen Antwortdaten lag, und groß, wenn er weit davon entfernt war. Daher zeigt in diesem Fall die Summe der Fehlerquadrate an, dass das Ausgabeergebnis von Muster 1 für die Lehrerdaten besser geeignet ist.

2. Cross Entropy Error

Der Kreuzentropiefehler wird nach der folgenden Formel berechnet.

E = -\sum_{k}t_klog_e{y_k}

Kann vertreten werden durch.

Der Unterschied zur Summe der Fehlerquadrate besteht darin, dass die Ausgabedaten und die richtigen Antwortdaten multipliziert werden. Um zu erklären, was die Vorteile davon sind Die richtigen Antwortdaten sind ein One-Hot-Ausdruck, und nur das richtige Antwortetikett ist 1 und die anderen sind 0. Wenn also auf die obige Formel angewendet, ist der Wert von E.

** Nur die korrekte Bezeichnung -log y k </ sub> </ sub> ** Sonst 0

Weißt du, dass Infolgedessen wird der Kreuzentropiefehler durch das Ausgabeergebnis der korrekten Bezeichnung bestimmt. Wenn das Ausgabeetikett, das dem richtigen Antwortetikett entspricht, ** klein ** ist, ist der Wert von E groß, was darauf hinweist, dass der Fehler groß ist.

Beispiel mit Kreuzentropiefehler

Wir werden die Funktion auf die gleiche Weise definieren wie für die Summe der Fehlerquadrate. Vorher werde ich das im Code definierte Delta erläutern.

Wie Sie aus dem Diagramm von y = logx sehen können, wird lim y ** negativ ∞ **, wenn x-> 0 ist. Wenn das Ausgabeetikett, das dem richtigen Antwortetikett entspricht, ** 0 ** ist, kann der Schnittpunktentropiefehler nicht numerisch ausgedrückt werden und die Berechnung kann nicht fortgesetzt werden.

Um dies zu vermeiden, wird ein Minutenwertdelta (10 -7 </ sup> im Code) eingefügt, um zu verhindern, dass der Protokollinhalt 0 wird.

import numpy as np

#Richtige Antwortdaten(one-hot-label)
t = [0,0,1,0,0]

#Definieren Sie eine Funktion des Kreuzentropiefehlers
def cross_entropy_error(y,t):
    #Delta definieren(Achten Sie darauf, den Raum nicht zu öffnen!)
    delta = 1e-7
    return -np.sum(t * np.log(y + delta))

#Muster 1(Nahe an korrekten Antwortdaten)
y1 = [0.01,0.02,0.9,0.05,0.02]
#Muster 2(Weit entfernt von korrekten Daten)
y2 = [0.5,0.1,0.2,0.2,0.1]

out1 = cross_entropy_error(np.array(y1),np.array(t))
out2 = cross_entropy_error(np.array(y2),np.array(t))

Jedes Ergebnis ist print(out1) >>> 0.1053604045467214 print(out2) >>> 1.6094374124342252 Wussten Sie, dass der Wert umso kleiner ist, je näher an den richtigen Antwortdaten liegt, wie im Fall der Summe der Fehlerquadrate?

Zusammenfassung


Nachschlagewerk

[Deep Learning von Grund auf neu und Theorie des mit Python (Japanisch) erlernten Deep Learning](https://www.amazon.co.jp/%E3%82%BC%E3%83%AD%E3%81] % 8B% E3% 82% 89% E4% BD% 9C% E3% 82% 8BTiefenlernen-% E2% 80% 95Python% E3% 81% A7% E5% AD% A6% E3% 81% B6% E3% 83% 87% E3% 82% A3% E3% 83% BC% E3% 83% 97% E3% 83% A9% E3% 83% BC% E3% 83% 8B% E3% 83% B3% E3% 82% B0% E3% 81% AE% E7% 90% 86% E8% AB% 96% E3% 81% A8% E5% AE% 9F% E8% A3% 85-% E6% 96% 8E% E8% 97% A4 -% E5% BA% B7% E6% AF% 85 / dp / 4873117585 / ref = sr_1_1? __Mk_ja_JP =% E3% 82% AB% E3% 82% BF% E3% 82% AB% E3% 83% 8A & crid = W6DVSLVW0BUS & dchild = 1 & keywords =% E3% 82% BC% E3% 83% AD% E3% 81% 8B% E3% 82% 89% E4% BD% 9C% E3% 82% 8Bdeep + learning & qid = 1597943190 & sprefix =% E3% 82% BC % E3% 83% AD% E3% 81% 8B% E3% 82% 89% 2Caps% 2C285 & sr = 8-1)]

Recommended Posts

Zusammenfassender Hinweis zu Deep Learning -4.2 Verlustfunktion-
Zusammenfassende Anmerkung zu Deep Learning -4.3 Gradientenmethode-
Deep Learning / Softmax-Funktion
Einführung in Deep Learning ~ Lokalisierungs- und Verlustfunktion ~
Einführung in das tiefe Lernen ~ Funktionsnäherung ~
Tiefes Lernen
"Python Machine Learning Programming" - Zusammenfassung (Jupyter)
Beschleunigen Sie Deep Learning mit der Rasperry Pi 4-CPU
Python vs Ruby "Deep Learning von Grund auf neu" Kapitel 4 Implementierung der Verlustfunktion
[Python] Lernnotiz 1
Chainer und Deep Learning durch Funktionsnäherung gelernt
GitHub des guten Buches "Deep Learning von Grund auf neu"
Deep Learning / Fehler-Backpropagation der Sigmoid-Funktion
Deep Learning Memorandum
Starten Sie Deep Learning
[Hinweis] Python beim Starten von maschinellem Lernen / Deep Learning [Links]
Python Deep Learning
Deep Learning × Python
Python vs Ruby "Deep Learning von Grund auf neu" Zusammenfassung
Warum Deep Metric Learning basierend auf der Softmax-Funktion funktioniert
Deep Learning 2 von Grund auf 1.3 Verarbeitung natürlicher Sprache 1.3 Zusammenfassung
Lassen Sie uns tief lernen! Unter Windows (VS2013 + caffe + CUDA7.5 + cudnn5.1)
Deep Learning Kurs, der vor Ort zerquetscht werden kann
Zusammenfassung des Lernprogramms für maschinelles Lernen
Erstes tiefes Lernen ~ Kampf ~
Python: Deep Learning-Praxis
Deep Learning / Aktivierungsfunktionen
Deep Learning von Grund auf neu
Maschinelles Lernen ⑤ AdaBoost-Zusammenfassung
Deep Learning 1 Übung des Deep Learning
Deep Learning / Cross Entropy
Erstes tiefes Lernen ~ Vorbereitung ~
Zusammenfassung der Python-Funktionsargumente
Erstes tiefes Lernen ~ Lösung ~
[AI] Deep Metric Learning
Ich habe versucht, tief zu lernen
Python: Deep Learning Tuning
Deep Learning Großtechnologie
Zusammenfassung zum Lernen von RAPIDS
Ein Amateur stolperte in Deep Learning von Grund auf neu Hinweis: Kapitel 1
"Lernen Sie, während Sie machen! Entwicklung tiefes Lernen von PyTorch" auf Colaboratory.
Ein Amateur stolperte über Deep Learning ❷ von Grund auf neu Hinweis: Kapitel 5
Ein Amateur stolperte über Deep Learning ❷ von Grund auf neu Hinweis: Kapitel 2
Ein Amateur stolperte in Deep Learning von Grund auf neu Hinweis: Kapitel 3
Ein Amateur stolperte in Deep Learning von Grund auf neu. Hinweis: Kapitel 7
Ein Amateur stolperte in Deep Learning von Grund auf neu Hinweis: Kapitel 5
Ein Amateur stolperte über Deep Learning ❷ von Grund auf neu Hinweis: Kapitel 1
Ein Amateur stolperte über Deep Learning ❷ von Grund auf neu Hinweis: Kapitel 4
Ein Amateur stolperte in Deep Learning von Grund auf neu Hinweis: Kapitel 4
Deep Learning mit Shogi AI auf Mac und Google Colab
Ein Amateur stolperte in Deep Learning von Grund auf neu Hinweis: Kapitel 2