Bagaimana fungsi biaya dari Regresi Logistik diturunkan


29

Saya sedang melakukan kursus Machine Learning Stanford di Coursera.

Dalam bab tentang Regresi Logistik, fungsi biaya adalah sebagai berikut: masukkan deskripsi gambar di sini

Kemudian, diturunkan di sini: masukkan deskripsi gambar di sini

Saya mencoba mendapatkan turunan dari fungsi biaya tetapi saya mendapatkan sesuatu yang sama sekali berbeda.

Bagaimana derivatif diperoleh?

Apa langkah perantara?


+1, periksa jawaban @ AdamO dalam pertanyaan saya di sini. stats.stackexchange.com/questions/229014/…
Haitao Du

"Sangat berbeda" tidak cukup memadai untuk menjawab pertanyaan Anda, selain memberi tahu Anda apa yang sudah Anda ketahui (gradien yang benar). Akan jauh lebih berguna jika Anda memberi kami hasil perhitungan Anda, maka kami dapat membantu Anda meningkatkan kesalahan Anda.
Matthew Drury

@MatthewDrury Maaf, Matt, saya sudah mengatur jawabannya tepat sebelum komentar Anda masuk. Oktavianus, apakah Anda mengikuti semua langkah ini? Saya akan mengedit untuk memberikan beberapa nilai tambah nanti ...
Antoni Parellada

2
ketika Anda mengatakan "diturunkan", maksud Anda "dibedakan" atau "diturunkan"?
Glen_b -Reinstate Monica

Jawaban:


41

Diadaptasi dari catatan dalam kursus, yang saya tidak melihat tersedia (termasuk derivasi ini) di luar catatan yang dikontribusikan oleh siswa dalam halaman kursus Pembelajaran Mesin Coursera Andrew Ng .


Dalam apa yang berikut, superscript menunjukkan pengukuran individu atau "contoh" pelatihan.(i)

J(θ)θj=θj-1msaya=1m[y(saya)log(hθ(x(saya)))+(1-y(saya))log(1-hθ(x(saya)))]=linearitas-1msaya=1m[y(saya)θjlog(hθ(x(saya)))+(1-y(saya))θjlog(1-hθ(x(saya)))]=aturan rantai-1msaya=1m[y(saya)θjhθ(x(saya))hθ(x(saya))+(1-y(saya))θj(1-hθ(x(saya)))1-hθ(x(saya))]=hθ(x)=σ(θx)-1msaya=1m[y(saya)θjσ(θx(saya))hθ(x(saya))+(1-y(saya))θj(1-σ(θx(saya)))1-hθ(x(saya))]=σ-1msaya=1m[y(saya)σ(θx(saya))(1-σ(θx(saya)))θj(θx(saya))hθ(x(saya))-(1-y(saya))σ(θx(saya))(1-σ(θx(saya)))θj(θx(saya))1-hθ(x(saya))]=σ(θx)=hθ(x)-1msaya=1m[y(saya)hθ(x(saya))(1-hθ(x(saya)))θj(θx(saya))hθ(x(saya))-(1-y(saya))hθ(x(saya))(1-hθ(x(saya)))θj(θx(saya))1-hθ(x(saya))]=θj(θx(saya))=xj(saya)-1msaya=1m[y(saya)(1-hθ(x(saya)))xj(saya)-(1-ysaya)hθ(x(saya))xj(saya)]=mendistribusikan-1msaya=1m[ysaya-ysayahθ(x(saya))-hθ(x(saya))+y(saya)hθ(x(saya))]xj(saya)=membatalkan-1msaya=1m[y(saya)-hθ(x(saya))]xj(saya)=1msaya=1m[hθ(x(saya))-y(saya)]xj(saya)


Turunan dari fungsi sigmoid adalah

ddxσ(x)=ddx(11+e-x)=-(1+e-x)(1+e-x)2=e-x(1+e-x)2=(11+e-x)(e-x1+e-x)=(11+e-x)(1+e-x1+e-x-11+e-x)=σ(x)(1+e-x1+e-x-σ(x))=σ(x)(1-σ(x))


1
+1 untuk semua upaya !, mungkin menggunakan notasi matriks bisa lebih mudah?
Haitao Du

bisa saya katakan dalam regresi linier, tujuannya adalah dan turunannya adalah , di mana , dalam regresi logistik, sama, turunannya adalah mana , dan ? 2 A T e e = A x - b A T e e = p - bSEBUAHx-b22SEBUAHTee=SEBUAHx-bSEBUAHTee=hal-bhal=sigmoid (SEBUAHx)
Haitao Du

2
itu sebabnya saya menghargai usaha Anda. Anda menghabiskan waktu untuk kami bahasa OP !!
Haitao Du

1
Pemahaman saya adalah bahwa ada masalah konveksitas yang membuat minimasi kesalahan kuadrat tidak diinginkan untuk fungsi aktivasi non-linear. Dalam notasi matriks, itu akan menjadi . J(θ)θ=1mX(σ(Xθ)-y)
Antoni Parellada

1
@MohammedNoureldin Saya baru saja mengambil turunan parsial dalam pembilang pada baris sebelumnya, menerapkan aturan rantai.
Antoni Parellada

8

Untuk menghindari kesan kompleksitas yang berlebihan dari masalah ini, mari kita lihat struktur solusinya.

Dengan penyederhanaan dan beberapa penyalahgunaan notasi, misalkan menjadi istilah dalam jumlah , dan adalah fungsi dari : J ( θ ) h = 1 / ( 1 + e - z )G(θ)J(θ)h=1/(1+e-z)z(θ)=xθ

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

Kita dapat menggunakan aturan rantai: dan menyelesaikannya dengan satu ( dan adalah konstanta).dGdθ=dGdhdhdzdzdθxy

dGh=yh-1-y1-h=y-hh(1-h)
Untuk sigmoid berlaku, yang hanya merupakan penyebut dari pernyataan sebelumnya.dhdz=h(1-h)

Akhirnya, .dzdθ=x

Menggabungkan hasil bersama-sama memberikan ekspresi yang dicari: Harapan yang membantu.

dGdθ=(y-h)x

0

Penghargaan untuk jawaban ini diberikan kepada Antoni Parellada dari komentar, yang menurut saya layak mendapat tempat yang lebih menonjol di halaman ini (karena itu membantu saya ketika banyak jawaban lain tidak). Juga, ini bukan derivasi penuh tetapi lebih merupakan pernyataan yang jelas dari . (Untuk derivasi penuh, lihat jawaban lain).J(θ)θ

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

dimana

XRm×n=Matriks contoh pelatihanσ(z)=11+e-z=fungsi sigmoid=fungsi logistikθRn=vektor baris boboty=kelas / kategori / label yang sesuai dengan baris dalam X

Juga, implementasi Python bagi mereka yang ingin menghitung gradien sehubungan dengan .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

Bagi kita yang tidak begitu kuat dalam kalkulus, tetapi ingin bermain-main dengan menyesuaikan fungsi biaya dan perlu menemukan cara untuk menghitung derivatif ... jalan pintas untuk mempelajari kembali kalkulus adalah alat online ini untuk secara otomatis menyediakan derivasi, dengan penjelasan langkah demi langkah dari aturan.

https://www.derivative-calculator.net

Contoh menurunkan fungsi biaya aktivasi sigmoid dalam regresi logistik

Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.