Daftar fungsi biaya yang digunakan dalam jaringan saraf, di samping aplikasi

133

Apa fungsi biaya umum yang digunakan dalam mengevaluasi kinerja jaringan saraf?

Detail

(jangan ragu untuk melewatkan sisa pertanyaan ini, maksud saya di sini adalah hanya untuk memberikan klarifikasi tentang notasi yang mungkin digunakan jawaban untuk membantu mereka lebih dimengerti oleh pembaca umum)

Saya pikir akan bermanfaat untuk memiliki daftar fungsi biaya umum, di samping beberapa cara yang telah mereka gunakan dalam praktik. Jadi, jika orang lain tertarik dengan ini, saya pikir komunitas wiki mungkin adalah pendekatan terbaik, atau kita bisa menghapusnya jika itu di luar topik.

Notasi

Jadi untuk memulai, saya ingin mendefinisikan notasi yang kita semua gunakan saat menjelaskan ini, jadi jawabannya cocok satu sama lain.

Notasi ini dari buku Neilsen .

Jaringan Neural Feedforward adalah banyak lapisan neuron yang terhubung bersama. Kemudian dibutuhkan input, input itu "menetes" melalui jaringan dan kemudian jaringan saraf mengembalikan vektor output.

Lebih formal lagi, sebut aktivasi (alias output) dari neuron di lapisan , di mana adalah elemen dalam vektor input.ajijthithaj1jth

Kemudian kita dapat menghubungkan input layer berikutnya dengan sebelumnya melalui relasi berikut:

aji=σ(k(wjkiaki1)+bji)

dimana

σ adalah fungsi aktivasi,

wjki adalah bobot dari neuron di lapisan ke neuron di lapisan ,kth(i1)thjthith

bji adalah bias dari neuron di lapisan , danjthith

aji mewakili nilai aktivasi neuron di lapisan - .jthith

Terkadang kita menulis untuk mewakili , dengan kata lain, nilai aktivasi neuron sebelum menerapkan fungsi aktivasi .zjik(wjkiaki1)+bji

masukkan deskripsi gambar di sini

Untuk notasi yang lebih ringkas kita bisa menulis

ai=σ(wi×ai1+bi)

Untuk menggunakan rumus ini untuk menghitung output dari jaringan feedforward untuk beberapa input , atur , lalu hitung , , ..., , di mana m adalah jumlah lapisan.IRna1=Ia2a3am

pengantar

Fungsi biaya adalah ukuran "seberapa baik" jaringan saraf lakukan sehubungan dengan itu diberikan sampel pelatihan dan output yang diharapkan. Ini juga mungkin tergantung pada variabel seperti bobot dan bias.

Fungsi biaya adalah nilai tunggal, bukan vektor, karena ini menilai seberapa baik jaringan saraf lakukan secara keseluruhan.

Secara khusus, fungsi biaya dalam bentuk

C(W,B,Sr,Er)

di mana adalah bobot jaringan saraf kita, adalah bias jaringan saraf kita, adalah input dari sampel pelatihan tunggal, dan adalah output yang diinginkan dari sampel pelatihan itu. Catatan fungsi ini juga bisa berpotensi menjadi tergantung pada dan untuk setiap neuron pada lapisan , karena nilai-nilai tersebut tergantung pada , , dan .WBSrEryjizjijiWBSr

Dalam backpropagation, fungsi biaya digunakan untuk menghitung kesalahan dari layer output kami, , melaluiδL

δjL=CajLσ(zji)
.

Yang juga dapat ditulis sebagai vektor via

δL=aCσ(zi)
.

Kami akan memberikan gradien fungsi biaya dalam hal persamaan kedua, tetapi jika seseorang ingin membuktikan hasil ini sendiri, disarankan menggunakan persamaan pertama karena lebih mudah digunakan.

Persyaratan fungsi biaya

Untuk digunakan dalam backpropagation, fungsi biaya harus memenuhi dua properti:

1: Fungsi biaya harus dapat ditulis sebagai rata-rataC

C=1nxCx

fungsi biaya untuk contoh pelatihan individual, .Cxx

Hal ini memungkinkan kita untuk menghitung gradien (sehubungan dengan bobot dan bias) untuk contoh pelatihan tunggal, dan menjalankan Gradient Descent.

2: Fungsi biaya tidak harus bergantung pada nilai-nilai aktivasi dari jaringan saraf selain output nilai .CaL

Secara teknis fungsi biaya dapat bergantung pada atau . Kami hanya membuat batasan ini sehingga kami dapat melakukan backpropagte, karena persamaan untuk menemukan gradien dari lapisan terakhir adalah satu-satunya yang bergantung pada fungsi biaya (sisanya tergantung pada lapisan berikutnya). Jika fungsi biaya tergantung pada lapisan aktivasi lain selain yang satu output, backpropagation akan tidak valid karena gagasan "menetes ke belakang" tidak lagi berfungsi.ajizji

Juga, fungsi aktivasi diperlukan untuk memiliki output untuk semua . Jadi fungsi biaya ini hanya perlu didefinisikan dalam rentang itu (misalnya, valid karena kami dijamin ).0ajL1jajLajL0

Phylliida
sumber
3
Ini adalah situs tanya jawab, dan format posting ini tidak terlalu sesuai. Anda mungkin harus memasukkan sebagian besar konten ke dalam jawaban, dan meninggalkan pertanyaan saja (mis. Apa daftar fungsi biaya yang digunakan dalam NN?).
Roger Fan
Oke, apakah itu lebih baik? Saya pikir definisi itu penting jika tidak, jawabannya menjadi kabur bagi mereka yang tidak akrab dengan terminologi yang digunakan penulis.
Phylliida
Tetapi bagaimana jika jawaban yang berbeda menggunakan notasi atau terminologi yang berbeda?
Roger Fan
3
Idenya adalah bahwa setiap orang menggunakan terminologi yang sama di sini, dan jika berbeda kita mengonversinya menjadi ini, sehingga jawaban "cocok" satu sama lain. Tapi saya kira saya bisa menghapus bagian itu jika Anda tidak berpikir itu membantu.
Phylliida
1
Saya hanya berpikir detail pertanyaannya tidak benar-benar diperlukan atau relevan. Sepertinya agak berlebihan dan membatasi, tapi itu hanya aku.
Roger Fan

Jawaban:

85

Inilah yang saya mengerti sejauh ini. Sebagian besar ini bekerja paling baik ketika diberi nilai antara 0 dan 1.

Biaya kuadratik

Juga dikenal sebagai mean squared error , kemungkinan maksimum , dan jumlah squared error , ini didefinisikan sebagai:

CMST(W,B,Sr,Er)=0.5j(ajLEjr)2

Gradien dari fungsi biaya ini sehubungan dengan output dari jaringan saraf dan beberapa sampel adalah:r

aCMST=(aLEr)

Biaya lintas-entropi

Juga dikenal sebagai Bernoulli negative log-likelihood dan Binary Cross-Entropy

CCE(W,B,Sr,Er)=j[Ejr ln ajL+(1Ejr) ln (1ajL)]

Gradien dari fungsi biaya ini sehubungan dengan output dari jaringan saraf dan beberapa sampel adalah:r

aCCE=(aLEr)(1aL)(aL)

Biaya eksponensial

Ini mengharuskan Anda memilih beberapa parameter yang menurut Anda akan memberi Anda perilaku yang Anda inginkan. Biasanya Anda hanya perlu bermain dengan ini sampai semuanya berjalan baik.τ

CEXP(W,B,Sr,Er)=τ exp(1τj(ajLEjr)2)

di mana hanya singkatan untuk .exp(x)ex

Gradien dari fungsi biaya ini sehubungan dengan output dari jaringan saraf dan beberapa sampel adalah:r

aC=2τ(aLEr)CEXP(W,B,Sr,Er)

Saya bisa menulis ulang , tapi itu sepertinya berlebihan. Titik adalah gradien yang menghitung vektor dan kemudian mengalikannya dengan .CEXPCEXP

Jarak Hellinger

CHD(W,B,Sr,Er)=12j(ajLEjr)2

Anda dapat menemukan lebih banyak tentang ini di sini . Ini perlu memiliki nilai positif, dan nilai idealnya antara dan . Hal yang sama berlaku untuk divergensi berikut.01

Gradien dari fungsi biaya ini sehubungan dengan output dari jaringan saraf dan beberapa sampel adalah:r

aC=aLEr2aL

Divergensi Kullback – Leibler

Juga dikenal sebagai Divergensi Informasi , Penguatan Informasi , Entropi Relatif , KLIC , atau KL Divergence (Lihat di sini ).

Kullback – Leibler divergence biasanya dilambangkan ,

DKL(PQ)=iP(i)lnP(i)Q(i)

di mana adalah ukuran dari informasi hilang ketika digunakan untuk mendekati . Jadi kami ingin mengatur dan , karena kami ingin mengukur berapa banyak informasi yang hilang ketika kami menggunakan untuk memperkirakan . Ini memberi kitaDKL(PQ)QPP=EiQ=aLajiEji

CKL(W,B,Sr,Er)=jEjrlogEjrajL

Divergensi lain di sini menggunakan ide ini sama menetapkan dan .P=EiQ=aL

Gradien dari fungsi biaya ini sehubungan dengan output dari jaringan saraf dan beberapa sampel adalah:r

aC=EraL

Divergensi umum Kullback – Leibler

Dari sini .

CGKL(W,B,Sr,Er)=jEjrlogEjrajLj(Ejr)+j(ajL)

Gradien dari fungsi biaya ini sehubungan dengan output dari jaringan saraf dan beberapa sampel adalah:r

aC=aLEraL

Itakura – jarak Saito

Juga dari sini .

CGKL(W,B,Sr,Er)=j(EjrajLlogEjrajL1)

Gradien dari fungsi biaya ini sehubungan dengan output dari jaringan saraf dan beberapa sampel adalah:r

aC=aLEr(aL)2

Di mana . Dengan kata lain, hanya sama dengan mengkuadratkan setiap elemen .((aL)2)j=ajLajL(aL)2aL

Phylliida
sumber
Terima kasih telah berbagi, Anda juga dapat mempertimbangkan ini: github.com/torch/nn/blob/master/doc/criterion.md
Yannis Assael
2
Anda memiliki kesalahan kecil dalam penyebut derivatif lintas-entropi, seharusnya a*(1-a)tidaka*(1+a)
Amro
1
Akan lebih keren jika menunjukkan fungsi pinball loss untuk meminimalkan kesalahan kuantil daripada kesalahan rata-rata. Sangat digunakan dalam sistem pendukung keputusan.
Ricardo Cruz
di mana saya bisa melihat grafik untuk ini?
coiso
1
Sehubungan dengan Fungsi Biaya Kuadratik, Anda harus mencatat bahwa "kesalahan kuadrat rata-rata" "kemungkinan maksimum" "jumlah kesalahan kuadrat". Penulis dapat menggunakan nama (salah) secara bergantian, tetapi mereka bukan hal yang sama.
Jon
20

Tidak memiliki reputasi untuk berkomentar, tetapi ada kesalahan tanda pada 3 gradien terakhir.

Dalam perbedaan KL, Ini kesalahan tanda yang sama muncul dalam divergensi KL Umum.

C=jEjlog(Ej/aj)=jEjlog(Ej)Ejlog(aj)dC=jEjdlog(aj)=j(Ej/aj)dajaC=Ea

Dalam jarak Itakura-Saito,

C=j(Ej/aj)log(Ej/aj)1=j(Ej/aj)log(Ej)+log(aj)1dC=j(Ej/aj2)daj+dlog(aj)=j(1/aj)daj(Ej/aj2)daj=j(ajEj)/aj2dajaC=aE(a)2
jujur
sumber