Bu cevap, TensorFlow ile ilgili olmayan maliyet fonksiyonlarının genel tarafındadır ve çoğunlukla sorunuzun "bu konu hakkında bazı açıklamalarını" ele alacaktır.
İzlediğim çoğu örnek / öğreticide, kullanılan maliyet işlevi biraz isteğe bağlıydı. Mesele okuyucuyu belirli bir maliyet yöntemine değil belirli bir yönteme tanıtmaktı. Araçları tanımak için öğreticiyi izlemenizi durdurmamalı, ancak cevabım kendi sorunlarınız için maliyet işlevini nasıl seçeceğiniz konusunda size yardımcı olacaktır.
Çapraz Entropi, Logit, L2 normları veya özel bir şeyle ilgili cevaplar istiyorsanız, size birden fazla, daha spesifik sorular göndermenizi öneririm. Bu, belirli bilgiye sahip birisinin sorunuzu görme olasılığını artıracaktır.
İstenilen sonucu elde etmek için doğru maliyet fonksiyonunu seçmek, makine öğrenmesi problemlerinin kritik bir noktasıdır. Temel yaklaşım, yönteminizden tam olarak ne istediğinizi bilmiyorsanız, regresyon sorunları için Ortalama Kare Hatası (Wikipedia) ve sınıflandırma sorunları için hata yüzdesi kullanmaktır. Ancak, yönteminizden iyi sonuçlar almak istiyorsanız, iyi tanımlamanız ve böylece uygun maliyet işlevini tanımlamanız gerekir. Bu, hem alan bilgisinden (verileriniz nedir, ne elde etmeye çalışıyorsunuzdur) hem de emrinizdeki araçların bilgisinden gelir.
TensorFlow'da halihazırda uygulanan maliyet fonksiyonları hakkında size rehberlik edebileceğime inanmıyorum, çünkü araç hakkında çok az bilgim var, ancak size farklı maliyet fonksiyonlarının nasıl yazılacağı ve değerlendirileceği hakkında bir örnek verebilirim.
Maliyet fonksiyonları arasındaki çeşitli farklılıkları göstermek için, her bir örneği için sınıfındaki sınıfındaki istediğimiz ikili sınıflandırma probleminin örneğini .xnf(xn)∈{0,1}
Hesaplamalı özelliklerle başlayarak ; "aynı şeyi" ölçen iki fonksiyonun nasıl farklı sonuçlara yol açabileceği. Aşağıdaki basit maliyet fonksiyonunu alın; hatanın yüzdesi. Eğer varsa örnekleri, öngörülen sınıftır ve gerçek sınıf, en aza indirmek istiyorumNf(yn)yn
- 1N∑n{10 if f(xn)≠yn otherwise=∑nyn[1−f(xn)]+[1−yn]f(xn) .
Bu maliyet fonksiyonu kolayca yorumlanabilme avantajına sahiptir. Ancak pürüzsüz değildir; sadece iki numuneniz varsa, "0" dan 0,5'e, 1'e "atlar" fonksiyonu, bu fonksiyon üzerinde degrade iniş kullanmaya çalışırsanız, bu tutarsızlıklara yol açacaktır. Bunu engellemenin bir yolu, atama olasılıklarını kullanmak için maliyet işlevini değiştirmektir; . İşlevp(yn=1|xn)
- 1N∑nynp(yn=0|xn)+(1−yn)p(yn=1|xn) .
Bu işlev daha yumuşak ve degrade iniş yaklaşımlarıyla daha iyi çalışacaktır. Daha iyi bir model elde edeceksiniz. Ancak, başka bir sorunu var; Belirsiz olan bir örneğiniz varsa, daha iyi bir şey söylemek için yeterli bilgiye sahip olmadığınızı . Ardından, bu maliyet işlevinde gradyan inişini kullanmak, bu olasılığı olabildiğince artıran ve dolayısıyla belki de uygun olan bir modele yol açacaktır.p(yn=1|xn)=0.5
Bu işlevin diğer bir problemi, eğer ise ise, olduğunuzdan emin olabilirsiniz, ama yanılıyorsunuz. Bu sorunu önlemek için, olasılığın günlüğünü alabilirsiniz, . Şöyle ve sorunu yoktur İzleyen fonksiyon, bir önceki paragrafta tarif edilen:p(yn=1|xn)=1yn=0logp(yn|xn)log(0)=∞log(1)=0
- 1N∑nynlogp(yn=0|xn)+(1−yn)logp(yn=1|xn) .
Bu, aynı şeyi optimize etmek için , hata yüzdesini, farklı tanımların hesaplama açısından anlamlı hale getirmeleri kolaysa farklı sonuçlar verebileceğini göstermelidir.
Maliyet fonksiyonlarının ve aynı kavramı ölçmesi mümkündür , ancak , yönteminizi daha iyi sonuçlara götürebilir .ABAB
Şimdi farklı maliyet fonksiyonlarının farklı kavramları nasıl ölçebileceğini görelim. Bilgi alımı bağlamında, google aramasında olduğu gibi (sıralamayı yoksayarsak), döndürülen sonuçların
Algoritmanız her şeyi döndürürse , mümkün olan her sonucu döndürür ve bu nedenle yüksek geri çağırma özelliğine sahiptir, ancak çok düşük hassasiyete sahiptir. Öte yandan, eğer sadece bir elementi döndürürse , en kesin olanı alakalı, yüksek hassasiyetli fakat düşük hatırlama olacaktır.
Bu tür algoritmaları değerlendirmek için, ortak maliyet işlevi puanlarıdır (Wikipedia) . Yaygın durumdur hassasiyet ve hatırlama eşit ağırlık verir -score, fakat genel durum o -score ve ince ayar yapabilirsiniz olsun içinFF1Fββ
- Daha yüksek geri çağırma, eğerβ>1
- kullanıyorsanız, daha yüksek hassasiyet .β<1
Bu senaryoda, maliyet işlevini seçmek, algoritmanızın ne yapabileceğini seçmektir .
Sıklıkla ortaya çıkan bir başka örnek, tıbbi teşhis durumunda, tercih edilebilir olana bağlı olarak daha yanlış negatifleri veya yanlış pozitifleri cezalandıran bir maliyet işlevi seçebilirsiniz:
- Daha sağlıklı insanlar hasta olarak sınıflandırılıyor (Fakat o zaman, sağlıklı insanlara davranabiliriz, bu da masraflı ve aslında hasta değillerse onlara zarar verebilir)
- Daha çok hasta insan sağlıklı olarak sınıflandırılıyor (Fakat daha sonra, tedavi olmadan ölebilirler)
Sonuç olarak, maliyet fonksiyonunu tanımlamak algoritmanızın amacını tanımlamaktır. Algoritma oraya nasıl gidileceğini tanımlar.
Not: Bazı maliyet fonksiyonlarının amaçlarına ulaşmak için iyi algoritma yöntemleri vardır. Örneğin, SVM'deki (Wikipedia) ikili problemi çözerek, Menteşe kaybının (Wikipedia) minimumuna güzel bir yolu var.