Yapay sinir ağlarında kullanılan maliyet fonksiyonlarının uygulamalarla birlikte listesi


133

Yapay sinir ağlarının performansını değerlendirmede kullanılan yaygın maliyet fonksiyonları nelerdir?

ayrıntılar

(bu sorunun geri kalanını atlamaktan çekinmeyin, burada niyetim, cevapların genel okuyucu için daha anlaşılır olmalarına yardımcı olmak için kullanabilecekleri gösterime açıklık getirmektir.)

Uygulamada kullanıldıkları birkaç yolun yanı sıra, ortak maliyet fonksiyonlarının bir listesine sahip olmanın faydalı olacağını düşünüyorum. Bu yüzden eğer diğerleri buna ilgi duyuyorsa bence bir topluluk wiki muhtemelen en iyi yaklaşımdır, ya da konu dışıysa onu kaldırabiliriz.

Gösterim

Bu yüzden başlamak için, bunları tarif ederken hepimizin kullandığı bir gösterimi tanımlamak istiyorum, bu yüzden cevaplar birbirleriyle iyi uyuşuyor.

Bu gösterim Neilsen'in kitabından .

Feedforward Sinir Ağı, birbirine bağlı birçok nöron tabakasıdır. Sonra bir girdi alır, bu girdi ağ üzerinden "kandırır" ve sonra sinir ağı bir çıkış vektörü döndürür.

Daha teorik çağrı ait (çıkış olarak da bilinir) aktive nöron tabaka, olan giriş vektörü öğesi.ajijthithaj1jth

Sonra bir sonraki katmanın girişini önceki ilişkiyle aşağıdaki ilişki yoluyla ilişkilendirebiliriz:

aji=σ(k(wjkiaki1)+bji)

nerede

σ aktivasyon işlevidir,

wjki gelen ağırlıktır nöron için katman nöron tabaka,kth(i1)thjthith

bji , katmanındaki nöronunun önyargısıdır vejthith

aji , katmanındaki aktivasyon değerini temsil eder .jthith

Bazen geç temsil etmek diğer bir deyişle, bir nöronun aktivasyon değeri aktivasyon fonksiyonunu uygulamadan önce .zjik(wjkiaki1)+bji

görüntü tanımını buraya girin

Kısa özlü gösterim için yazabiliriz

ai=σ(wi×ai1+bi)

Bu formülü, girişindeki bazı girdiler için feedforward ağının çıkışını hesaplamak için , , ardından , , ..., hesaplayın. m burada katman sayısıdır.IRna1=Ia2a3am

Giriş

Bir maliyet işlevi, bir sinir ağının, verilen eğitim numunesi ve beklenen çıktıya göre ne kadar iyi yaptığının bir ölçüsüdür. Ayrıca ağırlık ve önyargı gibi değişkenlere de bağlı olabilir.

Bir maliyet fonksiyonu, bir vektör değil tek bir değerdir, çünkü sinir ağının bir bütün olarak ne kadar iyi yaptığını değerlendirir.

Özellikle, bir maliyet işlevi biçimindedir

C(W,B,Sr,Er)

burada bizim YSAnın ağırlıkları olan, , bizim YSAnın bias olan , tek bir eğitim numune giriş ve bu eğitim numunenin istenen çıkışıdır. Bu fonksiyonun potansiyel olarak , katmanındaki herhangi bir nöron için ve de bağlı olabileceğini unutmayın , çünkü bu değerler , ve .WBSrEryjizjijiWBSr

Geriye yayılımda, maliyet fonksiyonu çıkış katmanımızın ( ,δL

δjL=CajLσ(zji)
.

Ayrıca bir vektör olarak da yazılabilir.

δL=aCσ(zi)
.

Maliyet fonksiyonlarının gradyanını ikinci denklem açısından sağlayacağız, ancak bu sonuçları kendileri kanıtlamak istiyorsa, çalışılması daha kolay olduğu için ilk denklemin kullanılması önerilir.

Maliyet fonksiyonu gereksinimleri

Geri yayılımda kullanılmak için, bir maliyet işlevi iki özelliği sağlamalıdır:

1: Maliyet fonksiyonu ortalama olarak yazılabilmelidirC

C=1nxCx

Bireysel eğitim örnekleri için aşırı maliyet fonksiyonları , .Cxx

Bu, tek bir eğitim örneği için gradyanı (ağırlıklar ve önyargılara göre) hesaplamamızı ve Gradient İniş'i çalıştırmamızı sağlar.

2: Maliyet fonksiyonu , sinir ağının aktivasyon değerlerine, çıkış değerlerine bağlı olmamalıdır .CaL

Teknik olarak bir maliyet işlevi herhangi veya . Sadece bu kısıtlamayı yapıyoruz, böylece geri yaylayabiliyoruz, çünkü son katmanın gradyanını bulma denklemi, maliyet işlevine bağlı olan tek şeydir (gerisi bir sonraki katmana bağlıdır). Maliyet işlevi, çıktının yanı sıra diğer aktivasyon katmanlarına bağlıysa, geri yayılma fikri artık çalışmadığı için geri yayılma geçersiz olacaktır.ajizji

Ayrıca, aktivasyon fonksiyonları tüm için çıkışına sahip olmalıdır . Bu nedenle, bu maliyet işlevlerinin yalnızca bu aralıkta tanımlanması gerekir (örneğin, geçerlidir çünkü garanti edilir ).0ajL1jajLajL0


3
Bu bir soru-cevap sitesidir ve bu yazının biçimi tam olarak buna uymuyor. Muhtemelen içeriğin çoğunluğunu bir cevaba koymalı ve sadece bir soru bırakmalısınız (örn. NN'lerde kullanılan maliyet fonksiyonlarının listesi nedir?).
Roger Fan

Tamam, bu daha iyi mi? Tanımların önemli olduğunu düşünüyorum aksi takdirde yazarın kullandığı terminolojiye aşina olmayanlar için cevaplar belirsizleşir.
Phylliida

Ancak, farklı bir cevap farklı gösterim veya terminoloji kullanıyorsa ne olur?
Roger Fan

3
Buradaki düşünce, burada herkesin aynı terminolojiyi kullanması ve farklı olması durumunda buna dönüştürmemiz, bu yüzden cevapların birbiriyle "uyması". Ama sanırım yardımcı olmadığını düşünürseniz bu parçayı çıkarabilirim.
Phylliida

1
Sadece sorunun girdiği detayın gerçekten gerekli veya konuyla alakalı olmadığını düşünüyorum. Biraz aşırı ve sınırlayıcı görünüyor, ama bu sadece benim.
Roger Fan

Yanıtlar:


85

İşte şimdiye kadar anladığımlar. Bunların çoğu, 0 ile 1 arasında değerler verildiğinde en iyi sonucu verir.

Kuadratik maliyet

Ortalama kare hata , maksimum olabilirlik ve toplam kare hatası olarak da bilinir , bu şöyle tanımlanır:

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

Bir sinir ağının çıkışı ve bir örnek ile ilgili olarak, bu amaç fonksiyonunun gradyan olduğu:r

aCMST=(aLEr)

Çapraz entropi maliyeti

Bernoulli negatif log-olabilirliği ve İkili Çapraz Entropi olarak da bilinir

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

Bir sinir ağının çıkışı ve bir örnek ile ilgili olarak, bu amaç fonksiyonunun gradyan olduğu:r

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

Üstel maliyet

Bu, bazı parametre seçimi gerektirir size istediğiniz davranışı verecektir düşünüyorum. Genelde, işler iyi çalışana kadar bununla oynamanız gerekir.τ

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

buradaki , için kısaca .exp(x)ex

Bir sinir ağının çıkışı ve bir örnek ile ilgili olarak, bu amaç fonksiyonunun gradyan olduğu:r

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

yeniden yazabilirim ama bu gereksiz görünüyor. Nokta, gradyan bir vektörü hesaplar ve sonra onu çarpar .CEXPCEXP

Hellinger mesafesi

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

Bununla ilgili daha fazla bilgiyi burada bulabilirsiniz . Bunun pozitif değerlere ve ideal olarak ile arasındaki değerlere sahip olması gerekir . Aynısı aşağıdaki sapmalar için de geçerlidir.01

Bir sinir ağının çıkışı ve bir örnek ile ilgili olarak, bu amaç fonksiyonunun gradyan olduğu:r

aC=aLEr2aL

Kullback – Leibler ayrışması

Bilgi Farklılığı , Bilgi Kazancı , Bağıl entropi , KLIC veya KL Farklılığı olarak da bilinir ( Buraya bakın ).

Kullback – Leibler sapması tipik olarak ,

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

buradaki , yaklaşık kullanıldığında kaybedilen bilgilerin bir ölçüsüdür . Böylece ve yi ayarlamak istiyoruz , çünkü yaklaşık olarak için kullandığımızda ne kadar bilginin kaybedildiğini ölçmek istiyoruz . Bu bize verirDKL(PQ)QPP=EiQ=aLajiEji

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

Buradaki diğer sapmalar aynı ve ayarlarının aynısını kullanır .P=EiQ=aL

Bir sinir ağının çıkışı ve bir örnek ile ilgili olarak, bu amaç fonksiyonunun gradyan olduğu:r

aC=EraL

Genelleştirilmiş Kullback – Leibler ayrışması

Gönderen burada .

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

Bir sinir ağının çıkışı ve bir örnek ile ilgili olarak, bu amaç fonksiyonunun gradyan olduğu:r

aC=aLEraL

Itakura – Saito mesafesi

Ayrıca buradan .

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

Bir sinir ağının çıkışı ve bir örnek ile ilgili olarak, bu amaç fonksiyonunun gradyan olduğu:r

aC=aLEr(aL)2

Burada . Başka bir deyişle, , yalnızca öğesinin karesini almakla eşittir .((aL)2)j=ajLajL(aL)2aL


: Paylaşım için teşekkürler, ayrıca bu düşünebiliriz github.com/torch/nn/blob/master/doc/criterion.md
Yannis Assael

2
Çapraz entropi türevi paydasındaki ufak bir hata var olması gerektiği a*(1-a)değila*(1+a)
Amro

1
Ortalama hata yerine hata miktarını en aza indirgemek için langırt kaybı işlevini göstermek havalı olacaktır. Karar destek sistemlerinde çok kullanılır.
Ricardo Cruz

Bunlar için grafikleri nerede görebilirim?
coiso

1
Kuadratik Maliyet Fonksiyonu ile ilgili olarak, "ortalama kare hatası" "maksimum olabilirlik" "toplam kare hatası" olduğunu not etmelisiniz . Yazarlar (yanlış) ismini birbirlerinin yerine kullanabilirler, fakat aynı şeyler değillerdir .
Jon

20

Yorum yapacak bir şöhrete sahip değilsiniz, ancak son 3 degradede işaret hataları var.

KL ayrışmasında, Bu Genelleştirilmiş KL ayrışmasında da aynı işaret hatası görünüyor.

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

Itakura-Saito mesafesinde,

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
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.