Wie wird die Kostenfunktion aus der logistischen Regression abgeleitet?


29

Ich mache den Stanford-Kurs für maschinelles Lernen auf Coursera.

Im Kapitel zur logistischen Regression lautet die Kostenfunktion wie folgt: Bildbeschreibung hier eingeben

Dann wird es hier abgeleitet: Bildbeschreibung hier eingeben

Ich habe versucht, die Ableitung der Kostenfunktion zu erhalten, aber etwas völlig anderes.

Wie wird das Derivat erhalten?

Was sind die Zwischenschritte?


+1, überprüfe die Antwort von @ AdamO in meiner Frage hier. stats.stackexchange.com/questions/229014/…
Haitao Du

"Völlig anders" reicht nicht aus, um Ihre Frage zu beantworten, außer Ihnen zu sagen, was Sie bereits wissen (das richtige Gefälle). Es wäre viel nützlicher, wenn Sie uns mitteilen würden, was Ihre Berechnungen ergeben haben. Dann können wir Ihnen helfen, den Fehler zu beheben.
Matthew Drury

@MatthewDrury Entschuldigung, Matt, ich hatte die Antwort kurz vor Ihrem Kommentar arrangiert. Octavian, haben Sie alle Schritte befolgt? Ich werde es später bearbeiten, um ihm einen Mehrwert zu verleihen ...
Antoni Parellada

2
Wenn Sie "abgeleitet" sagen, meinen Sie "differenziert" oder "abgeleitet"?
Glen_b

Antworten:


41

Angepasst an die Notizen im Kurs, die ich nicht verfügbar sehe (einschließlich dieser Ableitung) außerhalb der Notizen, die von Studenten auf der Seite von Andrew Ngs Coursera Machine Learning-Kurs beigesteuert wurden .


Im Folgenden bezeichnet der hochgestellte Index einzelne Messungen oder Übungsbeispiele.(i)

J(θ)θj=θj1mi=1m[y(i)log(hθ(x(i)))+(1y(i))log(1hθ(x(i)))]=linearity1mi=1m[y(i)θjlog(hθ(x(i)))+(1y(i))θjlog(1hθ(x(i)))]=chain rule1mi=1m[y(i)θjhθ(x(i))hθ(x(i))+(1y(i))θj(1hθ(x(i)))1hθ(x(i))]=hθ(x)=σ(θx)1mi=1m[y(i)θjσ(θx(i))hθ(x(i))+(1y(i))θj(1σ(θx(i)))1hθ(x(i))]=σ1mi=1m[y(i)σ(θx(i))(1σ(θx(i)))θj(θx(i))hθ(x(i))(1y(i))σ(θx(i))(1σ(θx(i)))θj(θx(i))1hθ(x(i))]=σ(θx)=hθ(x)1mi=1m[y(i)hθ(x(i))(1hθ(x(i)))θj(θx(i))hθ(x(i))(1y(i))hθ(x(i))(1hθ(x(i)))θj(θx(i))1hθ(x(i))]=θj(θx(i))=xj(i)1mi=1m[y(i)(1hθ(x(i)))xj(i)(1yi)hθ(x(i))xj(i)]=distribute1mi=1m[yiyihθ(x(i))hθ(x(i))+y(i)hθ(x(i))]xj(i)=cancel1mi=1m[y(i)hθ(x(i))]xj(i)=1mi=1m[hθ(x(i))y(i)]xj(i)


Die Ableitung der Sigmoidfunktion ist

ddxσ(x)=ddx(11+ex)=(1+ex)(1+ex)2=ex(1+ex)2=(11+ex)(ex1+ex)=(11+ex)(1+ex1+ex11+ex)=σ(x)(1+ex1+exσ(x))=σ(x)(1σ(x))


1
+1 für alle Bemühungen !, kann die Verwendung der Matrixnotation einfacher sein?
Haitao Du

kann ich sagen, in der linearen Regression ist das Ziel und die Ableitung ist , wobei , in der logistischen Regression ist es ähnlich, die Ableitung ist wobei und ? Axb22ATee=AxbATee=pbp=sigmoid (Ax)
Haitao Du

2
Deshalb schätze ich Ihre Mühe. Du verbringst Zeit mit der Sprache von OP !!
Haitao Du

1
Mein Verständnis ist, dass es Konvexitätsprobleme gibt, die die Quadratfehlerminimierung für nichtlineare Aktivierungsfunktionen unerwünscht machen. In der Matrixnotation wäre es . J(θ)θ=1mX(σ(Xθ)y)
Antoni Parellada

1
@ MohammedNoureldin Ich habe gerade die partielle Ableitung in den Zählern in der vorherigen Zeile genommen und dabei die Kettenregel angewendet.
Antoni Parellada

8

Um den Eindruck einer übermäßigen Komplexität der Angelegenheit zu vermeiden, sehen wir uns nur die Struktur der Lösung an.

Mit Vereinfachung und einigem Missbrauch der Notation sei ein Term in der Summe von , und ist eine Funktion von : G(θ)J(θ)h=1/(1+ez)z(θ)=xθ

G=ylog(h)+(1y)log(1h)

Wir können die Kettenregel verwenden: und sie nacheinander lösen eins ( und sind Konstanten).dGdθ=dGdhdhdzdzdθxy

dGh=yh1y1h=yhh(1h)
For Sigmoid gilt, was nur ein Nenner der vorherigen Aussage ist.dhdz=h(1h)

Schließlich ist .dzdθ=x

Die Kombination aller Ergebnisse ergibt den gesuchten Ausdruck: Hoffnung, die hilft.

dGdθ=(yh)x

0

Die Anerkennung für diese Antwort geht an Antoni Parellada aus den Kommentaren, die meiner Meinung nach einen wichtigeren Platz auf dieser Seite verdienen (da es mir geholfen hat, als viele andere Antworten dies nicht taten). Dies ist auch keine vollständige Herleitung, sondern eher eine klare Aussage von . (Zur vollständigen Ableitung siehe die anderen Antworten).J(θ)θ

J(θ)θ=1mXT(σ(Xθ)y)

woher

XRm×n=Training example matrixσ(z)=11+ez=sigmoid function=logistic functionθRn=weight row vectory=class/category/label corresponding to rows in X

Auch eine Python-Implementierung für diejenigen, die den Gradienten von in Bezug auf ; berechnen möchten .Jθ

import numpy
def sig(z):
return 1/(1+np.e**-(z))


def compute_grad(X, y, w):
    """
    Compute gradient of cross entropy function with sigmoidal probabilities

    Args: 
        X (numpy.ndarray): examples. Individuals in rows, features in columns
        y (numpy.ndarray): labels. Vector corresponding to rows in X
        w (numpy.ndarray): weight vector

    Returns: 
        numpy.ndarray 

    """
    m = X.shape[0]
    Z = w.dot(X.T)
    A = sig(Z)
    return  (-1/ m) * (X.T * (A - y)).sum(axis=1) 

0

Für diejenigen von uns, die nicht so stark im Rechnen sind, aber mit der Anpassung der Kostenfunktion herumspielen möchten und einen Weg finden müssen, um Ableitungen zu berechnen ... Eine Abkürzung zum Wiedererlernen von Rechnen ist dieses Online-Tool, das automatisch bereitgestellt wird die Ableitung mit schrittweisen Erklärungen der Regel.

https://www.derivative-calculator.net

Beispiel für die Ableitung der Kostenfunktion der Sigma-Aktivierung in der logistischen Regression

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.