Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Lernen Verlustfunktion | Neural Network von Grund Auf
Einführung in Neuronale Netze

bookVerlustfunktion

Beim Training eines neuronalen Netzes benötigen wir eine Methode, um die Leistungsfähigkeit unseres Modells zu messen. Dies geschieht mithilfe einer Verlustfunktion, die den Unterschied zwischen den vorhergesagten Ausgaben und den tatsächlichen Zielwerten quantifiziert. Das Ziel des Trainings besteht darin, diesen Verlust zu minimieren, sodass unsere Vorhersagen den tatsächlichen Werten möglichst nahekommen.

Eine der am häufigsten verwendeten Verlustfunktionen für die binäre Klassifikation ist der Kreuzentropie-Verlust, der besonders gut mit Modellen funktioniert, die Wahrscheinlichkeiten ausgeben.

Herleitung des Kreuzentropie-Verlusts

Um den Kreuzentropie-Verlust zu verstehen, beginnen wir mit dem Maximum-Likelihood-Prinzip. Bei einem binären Klassifikationsproblem besteht das Ziel darin, ein Modell zu trainieren, das die Wahrscheinlichkeit y^\hat{y} schätzt, dass ein gegebener Input zur Klasse 1 gehört. Das tatsächliche Label yy kann entweder 0 oder 1 sein.

Ein gutes Modell sollte die Wahrscheinlichkeit maximieren, alle Trainingsbeispiele korrekt vorherzusagen. Das bedeutet, wir möchten die Likelihood-Funktion maximieren, die die Wahrscheinlichkeit beschreibt, die beobachteten Daten unter den Vorhersagen des Modells zu sehen.

Für ein einzelnes Trainingsbeispiel, unter der Annahme der Unabhängigkeit, kann die Likelihood wie folgt geschrieben werden:

P(yx)=y^y(1y^)1yP(y|x) = \hat{y}^y(1 - \hat{y})^{1-y}

Dieser Ausdruck bedeutet einfach:

  • Wenn y=1y = 1, dann P(yx)=y^P(y|x) = \hat{y}, das heißt, wir möchten y^\hat{y} (die Wahrscheinlichkeit für Klasse 1) maximieren;
  • Wenn y=0y = 0, dann P(yx)=1y^P(y|x) = 1 - \hat{y}, das heißt, wir möchten 1y^1 - \hat{y} (die Wahrscheinlichkeit für Klasse 0) maximieren.
Note
Hinweis

P(yx)P(y|x) bezeichnet die Wahrscheinlichkeit, das tatsächliche Klassenlabel yy unter den Eingaben xx zu beobachten.

Um die Optimierung zu erleichtern, verwenden wir die Log-Likelihood anstelle der Likelihood selbst (da Logarithmen Produkte in Summen umwandeln und so die Ableitung vereinfachen):

logP(yx)=ylog(y^)+(1y)log(1y^)\log P(y|x) = y\log(\hat{y}) + (1-y)\log(1-\hat{y})

Da das Ziel die Maximierung ist, definieren wir die Verlustfunktion als die negative Log-Likelihood, die wir minimieren möchten:

L=(ylog(y^)+(1y)log(1y^))L = -(y\log(\hat{y}) + (1-y)\log(1-\hat{y}))

Dies ist die binäre Kreuzentropie-Verlustfunktion, die häufig bei Klassifikationsproblemen verwendet wird.

Angenommen, die Variable output repräsentiert y^\hat{y} für ein bestimmtes Trainingsbeispiel und die Variable target repräsentiert yy für dieses Trainingsbeispiel, kann diese Verlustfunktion wie folgt implementiert werden:

import numpy as np

loss = -(target * np.log(output) + (1 - target) * np.log(1 - output))

Warum diese Formel?

Die Kreuzentropie-Verlustfunktion hat eine klare intuitive Interpretation:

  • Wenn y=1y = 1, vereinfacht sich der Verlust zu log(y^)-\log(\hat{y}), was bedeutet, dass der Verlust gering ist, wenn y^\hat{y} nahe bei 1 liegt, und sehr hoch, wenn y^\hat{y} nahe bei 0 liegt;
  • Wenn y=0y = 0, vereinfacht sich der Verlust zu log(1y^)-\log(1 - \hat{y}), was bedeutet, dass der Verlust gering ist, wenn y^\hat{y} nahe bei 0 liegt, und sehr hoch, wenn er nahe bei 1 liegt.

Da Logarithmen negativ groß werden, wenn ihr Argument gegen Null geht, werden falsche Vorhersagen stark bestraft, was das Modell dazu anregt, selbstbewusste und korrekte Vorhersagen zu treffen.

Werden mehrere Beispiele während der Vorwärtspropagation übergeben, wird der Gesamtverlust als durchschnittlicher Verlust über alle Beispiele berechnet:

L=1Ni=1N(yilog(y^i)+(1yi)log(1y^i))L = -\frac1N \sum_{i=1}^N (y_i\log(\hat{y}_i) + (1-y_i)\log(1-\hat{y}_i))

wobei NN die Anzahl der Trainingsbeispiele ist.

question mark

Welche der folgenden Aussagen beschreibt am besten den Zweck der Kreuzentropie-Verlustfunktion bei der binären Klassifikation?

Select the correct answer

War alles klar?

Wie können wir es verbessern?

Danke für Ihr Feedback!

Abschnitt 2. Kapitel 6

Fragen Sie AI

expand

Fragen Sie AI

ChatGPT

Fragen Sie alles oder probieren Sie eine der vorgeschlagenen Fragen, um unser Gespräch zu beginnen

Awesome!

Completion rate improved to 4

bookVerlustfunktion

Swipe um das Menü anzuzeigen

Beim Training eines neuronalen Netzes benötigen wir eine Methode, um die Leistungsfähigkeit unseres Modells zu messen. Dies geschieht mithilfe einer Verlustfunktion, die den Unterschied zwischen den vorhergesagten Ausgaben und den tatsächlichen Zielwerten quantifiziert. Das Ziel des Trainings besteht darin, diesen Verlust zu minimieren, sodass unsere Vorhersagen den tatsächlichen Werten möglichst nahekommen.

Eine der am häufigsten verwendeten Verlustfunktionen für die binäre Klassifikation ist der Kreuzentropie-Verlust, der besonders gut mit Modellen funktioniert, die Wahrscheinlichkeiten ausgeben.

Herleitung des Kreuzentropie-Verlusts

Um den Kreuzentropie-Verlust zu verstehen, beginnen wir mit dem Maximum-Likelihood-Prinzip. Bei einem binären Klassifikationsproblem besteht das Ziel darin, ein Modell zu trainieren, das die Wahrscheinlichkeit y^\hat{y} schätzt, dass ein gegebener Input zur Klasse 1 gehört. Das tatsächliche Label yy kann entweder 0 oder 1 sein.

Ein gutes Modell sollte die Wahrscheinlichkeit maximieren, alle Trainingsbeispiele korrekt vorherzusagen. Das bedeutet, wir möchten die Likelihood-Funktion maximieren, die die Wahrscheinlichkeit beschreibt, die beobachteten Daten unter den Vorhersagen des Modells zu sehen.

Für ein einzelnes Trainingsbeispiel, unter der Annahme der Unabhängigkeit, kann die Likelihood wie folgt geschrieben werden:

P(yx)=y^y(1y^)1yP(y|x) = \hat{y}^y(1 - \hat{y})^{1-y}

Dieser Ausdruck bedeutet einfach:

  • Wenn y=1y = 1, dann P(yx)=y^P(y|x) = \hat{y}, das heißt, wir möchten y^\hat{y} (die Wahrscheinlichkeit für Klasse 1) maximieren;
  • Wenn y=0y = 0, dann P(yx)=1y^P(y|x) = 1 - \hat{y}, das heißt, wir möchten 1y^1 - \hat{y} (die Wahrscheinlichkeit für Klasse 0) maximieren.
Note
Hinweis

P(yx)P(y|x) bezeichnet die Wahrscheinlichkeit, das tatsächliche Klassenlabel yy unter den Eingaben xx zu beobachten.

Um die Optimierung zu erleichtern, verwenden wir die Log-Likelihood anstelle der Likelihood selbst (da Logarithmen Produkte in Summen umwandeln und so die Ableitung vereinfachen):

logP(yx)=ylog(y^)+(1y)log(1y^)\log P(y|x) = y\log(\hat{y}) + (1-y)\log(1-\hat{y})

Da das Ziel die Maximierung ist, definieren wir die Verlustfunktion als die negative Log-Likelihood, die wir minimieren möchten:

L=(ylog(y^)+(1y)log(1y^))L = -(y\log(\hat{y}) + (1-y)\log(1-\hat{y}))

Dies ist die binäre Kreuzentropie-Verlustfunktion, die häufig bei Klassifikationsproblemen verwendet wird.

Angenommen, die Variable output repräsentiert y^\hat{y} für ein bestimmtes Trainingsbeispiel und die Variable target repräsentiert yy für dieses Trainingsbeispiel, kann diese Verlustfunktion wie folgt implementiert werden:

import numpy as np

loss = -(target * np.log(output) + (1 - target) * np.log(1 - output))

Warum diese Formel?

Die Kreuzentropie-Verlustfunktion hat eine klare intuitive Interpretation:

  • Wenn y=1y = 1, vereinfacht sich der Verlust zu log(y^)-\log(\hat{y}), was bedeutet, dass der Verlust gering ist, wenn y^\hat{y} nahe bei 1 liegt, und sehr hoch, wenn y^\hat{y} nahe bei 0 liegt;
  • Wenn y=0y = 0, vereinfacht sich der Verlust zu log(1y^)-\log(1 - \hat{y}), was bedeutet, dass der Verlust gering ist, wenn y^\hat{y} nahe bei 0 liegt, und sehr hoch, wenn er nahe bei 1 liegt.

Da Logarithmen negativ groß werden, wenn ihr Argument gegen Null geht, werden falsche Vorhersagen stark bestraft, was das Modell dazu anregt, selbstbewusste und korrekte Vorhersagen zu treffen.

Werden mehrere Beispiele während der Vorwärtspropagation übergeben, wird der Gesamtverlust als durchschnittlicher Verlust über alle Beispiele berechnet:

L=1Ni=1N(yilog(y^i)+(1yi)log(1y^i))L = -\frac1N \sum_{i=1}^N (y_i\log(\hat{y}_i) + (1-y_i)\log(1-\hat{y}_i))

wobei NN die Anzahl der Trainingsbeispiele ist.

question mark

Welche der folgenden Aussagen beschreibt am besten den Zweck der Kreuzentropie-Verlustfunktion bei der binären Klassifikation?

Select the correct answer

War alles klar?

Wie können wir es verbessern?

Danke für Ihr Feedback!

Abschnitt 2. Kapitel 6
some-alt