Lojistik Regresyondan maliyet fonksiyonu nasıl türetilir?


29

Coursera'da Machine Learning Stanford kursunu yapıyorum.

Lojistik Regresyon bölümünde, maliyet fonksiyonu şudur: görüntü tanımını buraya girin

Sonra burada türetilir: görüntü tanımını buraya girin

Maliyet fonksiyonunun türevini almaya çalıştım ama tamamen farklı bir şey aldım.

Türev nasıl elde edilir?

Aracı adımlar nelerdir?


+1, buradaki sorumu @ AdamO'nun cevabına bakın stats.stackexchange.com/questions/229014/…
Haitao Du

"Tamamen farklı" aslında ne bildiğinizi (doğru degrade) söylemenin yanı sıra sorunuzu yanıtlamak için yeterli değildir. Hesaplamaların neyle sonuçlandığını bize bildirirseniz, çok daha faydalı olur, o zaman hata yaptığınız yerde yukarı çıkmanıza yardımcı olabiliriz.
Matthew Drury

@MatthewDrury Üzgünüm Matt, yorumunuz gelmeden hemen önce cevabı ayarlamıştım. Octavian, tüm adımları takip ettiniz mi? Sonradan bir katma değer verecek şekilde düzenleyeceğim ...
Antoni Parellada

2
"türetilmiş" derken "farklılaştırılmış" veya "türetilmiş" anlamına mı geliyorsunuz?
Glen_b -Reinstate Monica

Yanıtlar:


41

Andrew Ng's Coursera Machine Learning kursu sayfasındaki öğrencilerin kattığı notların dışında (bu türev dahil) mevcut görmediğim ders notlarından uyarlanmıştır .


Aşağıda, üst simge bireysel ölçümleri veya "örnekleri" eğitimi gösterir.(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)


Sigmoid fonksiyonunun türevi

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
Tüm çabalar için +1 !, matris gösterimi kullanıyor olabilir mi daha kolay olabilir?
Haitao Du

Doğrusal regresyonda, objektif ve türevinin olduğunu söyleyebilirim , burada , lojistik regresyonda benzer, türev burada ve ? Axb22ATee=AxbATee=pbp=sigmoid (Ax)
Haitao Du

2
bu yüzden çaban için minnettarım. OP'nin diline zaman ayırın !!
Haitao Du

1
Anladığım kadarıyla kare hata minimizasyonu doğrusal olmayan aktivasyon fonksiyonları için istenmeyen hale getiren dışbükeylik sorunları var. Matris notasyonunda . J(θ)θ=1mX(σ(Xθ)y)
Antoni Parellada

1
@MohammedNoureldin Az önce kısmi türevini, önceki satırdaki sayıcılarda zincir kuralını uygulayarak aldım.
Antoni Parellada

8

Maddenin aşırı karmaşıklığı izlenimini önlemek için, çözümün yapısını görelim.

Sadeleştirme ve bazı gösterimlerin kötüye kullanılması ile ifadesi cinsinden bir terim olsun ve işlevidir. : G(θ)J(θ)h=1/(1+ez)z(θ)=xθ

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

Bu zincir kuralı kullanabilir: ve tek çözmek bir ( ve sabittir).dGdθ=dGdhdhdzdzdθxy

dGh=yh1y1h=yhh(1h)
için sigmoid tutan, önceki ifadenin sadece bir göstergesidir.dhdz=h(1h)

Son olarak, .dzdθ=x

Sonuçların bir araya getirilmesi aranan ifadeyi verir: olur.

dGdθ=(yh)x

0

Bu cevabın kredisi, bu sayfada daha belirgin bir yeri hak ettiğini düşündüğüm yorumlardan Antoni Parellada'ya gidiyor (diğer pek çok cevap vermediğinde bana yardımcı olduğu gibi). Ayrıca, bu tam bir türetme değil, ifadesinin açık bir ifadesidir . (Tam türetme için diğer cevaplara bakınız).J(θ)θ

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

nerede

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

Aynı zamanda, gradyanı hesaplamak isteyenler için bir Python uygulama göre .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

Analizde çok güçlü olmayan, ancak maliyet fonksiyonunu ayarlamakla uğraşmak ve türev hesaplamak için bir yol bulmak isteyen bizler için ... hesaplamayı yeniden öğrenmek için kısa bir yol otomatik olarak hesaplamak için bu çevrimiçi araçtır türetme, kuralın adım adım açıklamalarıyla birlikte.

https://www.derivative-calculator.net

Lojistik regresyonda sigmoid aktivasyonunun türetme maliyet fonksiyonu örneği

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.