Diese Antwort bezieht sich auf die allgemeinen Kostenfunktionen, die nicht mit TensorFlow zusammenhängen, und befasst sich hauptsächlich mit dem Teil Ihrer Frage, der "einige Erklärungen zu diesem Thema" enthält.
In den meisten Beispielen / Tutorials, denen ich folgte, war die verwendete Kostenfunktion etwas willkürlich. Es ging mehr darum, den Leser mit einer bestimmten Methode vertraut zu machen, nicht mit der Kostenfunktion. Es sollte Sie nicht davon abhalten, dem Tutorial zu folgen, um mit den Tools vertraut zu sein, aber meine Antwort sollte Ihnen helfen, die Kostenfunktion für Ihre eigenen Probleme zu wählen.
Wenn Sie Antworten zu Entropie-, Logit-, L2-Normen oder anderen spezifischen Themen wünschen, empfehle ich Ihnen, mehrere spezifischere Fragen zu stellen. Dies erhöht die Wahrscheinlichkeit, dass jemand mit spezifischen Kenntnissen Ihre Frage sieht.
Die Wahl der richtigen Kostenfunktion zur Erzielung des gewünschten Ergebnisses ist ein kritischer Punkt für Probleme beim maschinellen Lernen. Der grundlegende Ansatz, wenn Sie nicht genau wissen, was Sie von Ihrer Methode erwarten, besteht darin, Mean Square Error (Wikipedia) für Regressionsprobleme und Prozentualer Fehler für Klassifizierungsprobleme zu verwenden. Wenn Sie jedoch gute Ergebnisse mit Ihrer Methode erzielen möchten , müssen Sie good und damit die angemessene Kostenfunktion definieren. Dies beruht sowohl auf Domain-Kenntnissen (was sind Ihre Daten, was möchten Sie erreichen) als auch auf Kenntnissen der Tools, die Ihnen zur Verfügung stehen.
Ich glaube nicht, dass ich Sie durch die bereits in TensorFlow implementierten Kostenfunktionen führen kann, da ich nur sehr wenige Kenntnisse über das Tool habe, aber ich kann Ihnen ein Beispiel geben, wie Sie verschiedene Kostenfunktionen schreiben und bewerten.
Um die verschiedenen Unterschiede zwischen den Kostenfunktionen zu veranschaulichen, verwenden wir das Beispiel des Binärklassifizierungsproblems, bei dem für jede Stichprobe die Klasse .xnf(xn)∈{0,1}
Beginnend mit rechnerischen Eigenschaften ; Wie zwei Funktionen, die dasselbe messen, zu unterschiedlichen Ergebnissen führen können. Nehmen Sie die folgende einfache Kostenfunktion; der Prozentsatz der Fehler. Wenn Sie Stichproben haben, ist die vorhergesagte Klasse und die wahre Klasse, die Sie minimieren möchtenNf(yn)yn
- 1N∑n{10 if f(xn)≠yn otherwise=∑nyn[1−f(xn)]+[1−yn]f(xn) .
Diese Kostenfunktion hat den Vorteil, dass sie leicht interpretierbar ist. Es ist jedoch nicht glatt; Wenn Sie nur zwei Samples haben, "springt" die Funktion von 0 auf 0,5 auf 1. Dies führt zu Inkonsistenzen, wenn Sie versuchen, den Gradientenabstieg für diese Funktion zu verwenden. Eine Möglichkeit, dies zu vermeiden, besteht darin, die Kostenfunktion so zu ändern, dass Zuweisungswahrscheinlichkeiten verwendet werden. . Die Funktion wirdp(yn=1|xn)
- 1N∑nynp(yn=0|xn)+(1−yn)p(yn=1|xn) .
Diese Funktion ist flüssiger und funktioniert besser bei einem Gefälle-Abstieg. Sie erhalten ein "feineres" Modell. Es hat jedoch ein anderes Problem; Wenn Sie eine Stichprobe haben, die mehrdeutig ist, sagen wir, Sie haben nicht genug Informationen, um etwas Besseres als zu sagen . Die Verwendung eines Gradientenabfalls für diese Kostenfunktion führt dann zu einem Modell, das diese Wahrscheinlichkeit so weit wie möglich erhöht und somit möglicherweise überanpassung.p(yn=1|xn)=0.5
Ein weiteres Problem dieser Funktion ist, dass wenn während , Sie sicher sind, dass Sie Recht haben, aber Sie liegen falsch. Um dieses Problem zu vermeiden, können Sie das Protokoll der Wahrscheinlichkeit . Da und , hat die folgende Funktion nicht das im vorherigen Absatz beschriebene Problem:p(yn=1|xn)=1yn=0logp(yn|xn)log(0)=∞log(1)=0
- 1N∑nynlogp(yn=0|xn)+(1−yn)logp(yn=1|xn) .
Dies sollte veranschaulichen, dass unterschiedliche Definitionen zur Optimierung derselben Sache , des Fehlerprozentsatzes, möglicherweise unterschiedliche Ergebnisse liefern, wenn sie rechnerisch leichter zu verstehen sind.
Es ist möglich , Kostenfunktionen und , die zu messen gleiche Konzept , aber könnte Ihre Methode , um bessere Ergebnisse als führe .ABAB
Lassen Sie uns nun sehen, wie unterschiedliche Kosten unterschiedliche Konzepte messen können. Im Kontext des Informationsabrufs möchten wir, wie bei der Google-Suche (wenn wir das Ranking ignorieren), dass die zurückgegebenen Ergebnisse wie folgt aussehen
- hohe Präzision haben , keine irrelevanten Informationen zurückgeben
- Haben Sie einen hohen Erinnerungswert , geben Sie so viele relevante Ergebnisse wie möglich zurück
- Präzision und Rückruf (Wikipedia)
Beachten Sie, dass Ihr Algorithmus, wenn er alles zurückgibt , jedes mögliche relevante Ergebnis zurückgibt und daher einen hohen Rückruf aufweist, jedoch eine sehr geringe Genauigkeit aufweist. Wenn es jedoch nur ein Element zurückgibt , dasjenige, von dem es am sichersten ist, dass es relevant ist, hat es eine hohe Genauigkeit, aber einen geringen Rückruf.
Um solche Algorithmen beurteilen zu können, ist die übliche Kostenfunktion der Score (Wikipedia) . Der häufigste Fall ist der -score, der Präzision und Rückruf gleichermaßen bewertet, der allgemeine Fall jedoch der -score, und Sie können optimieren , um ihn zu erhaltenFF1Fββ
- Höherer Rückruf, wenn Sieβ>1
- Höhere Präzision, wenn Sie .β<1
In einem solchen Szenario entscheidet die Auswahl der Kostenfunktion darüber, welchen Kompromiss Ihr Algorithmus eingehen soll .
Ein anderes Beispiel, das oft angesprochen wird, ist der Fall der medizinischen Diagnose. Sie können eine Kostenfunktion auswählen, die mehr falsch negative oder falsch positive Ergebnisse bestraft, je nachdem, was vorzuziehen ist:
- Gesündere Menschen werden als krank eingestuft (Dann können wir gesunde Menschen behandeln, was teuer ist und sie verletzen kann, wenn sie tatsächlich nicht krank sind.)
- Mehr kranke Menschen werden als gesund eingestuft (aber dann könnten sie ohne Behandlung sterben)
Zusammenfassend definiert die Definition der Kostenfunktion das Ziel Ihres Algorithmus. Der Algorithmus definiert, wie Sie dorthin gelangen.
Randnotiz: Einige Kostenfunktionen verfügen über nützliche Algorithmen, um ihre Ziele zu erreichen. Zum Beispiel gibt es einen guten Weg zum Minimum des Scharnierverlustes (Wikipedia) , indem das doppelte Problem in SVM (Wikipedia) gelöst wird.