TensorFlow'da Dört Çapraz Entropi Algoritmasının Uygulanması ve Uygulanması

Orijinal: TensorFlow'un dört Çapraz Entropi algoritmasının uygulanması ve uygulanması, yazar CSDN'yi yeniden yazdırma yetkisi verdi.

Çapraz entropiye giriş

Çapraz Entropi (Çapraz Entropi), modelin öngörülen değeri ile gerçek değer arasındaki farkı tanımlamak için kullanılan bir Kayıp fonksiyonudur (kayıp fonksiyonu veya maliyet fonksiyonu olarak da adlandırılır). Yaygın Kayıp fonksiyonu, Ortalama Kare Hata'dır (Ortalama Kare Hata) Aşağıdaki gibi tanımlanmıştır.

Farkın karesinin anlaşılması kolaydır. Tahmin edilen değer, doğrudan doğru değerden çıkarılır. Negatif bir sayı elde etmekten kaçınmak için, mutlak değeri veya kareyi alın ve ardından farkın karesini ortalayın. Burada tahmin edilen değerin 0 ile 1 arasında değişen tahmin edilen değeri elde etmek için sigmoid aktivasyon fonksiyonundan geçmesi gerektiğini unutmayın.

Kare fark, tahmin edilen değer ile gerçek değer arasındaki farkı ifade edebilir, ancak etki, sınıflandırma problemlerindeki çapraz entropi kadar iyi değildir. Nedenler için lütfen bu blog gönderisine bakın. Çapraz entropinin tanımı aşağıdaki gibidir ve ekran görüntüsü https://hit-scir.gitbooks.io/neural-networks-and-deep-learning-zh_cn/content/chap3/c3s1.html'den alınmıştır.

Yukarıdaki makale ayrıca, çapraz entropinin Kayıp fonksiyonu olarak kullanılmasının nedenini de açıklamaktadır. İlk olarak, çapraz entropi ile elde edilen değer pozitif bir sayı olmalıdır ve ikinci olarak, tahmin sonucu ne kadar doğru olursa değer o kadar küçük olmalıdır. Burada hesaplama için kullanılan "a" nın da sigmoid tarafından etkinleştirildiğini unutmayın. Değer 0 ile 1 arasındadır. Etiket 1 ise ve tahmin edilen değer de 1 ise, önceki öğe y * ln (a) 1 * ln (1) 0'a eşittir ve son öğe (1-y) * ln (1-a) 0 * ln (0) 0'a eşittir, Kayıp işlevi 0'dır, aksi takdirde Kayıp işlevi sonsuzdur ve bu Kayıp işlevi tanımımızla çok tutarlıdır.

Sigmoid aktivasyon işlevi burada birçok kez vurgulanmaktadır çünkü bazı işlevler çok amaçlı veya çok sınıflandırmalı problemler altında kullanılamaz ve TensorFlow'un kendisi de çeşitli çapraz entropi algoritmaları sağlar.

TensorFlow'un çapraz entropi işlevi

TensorFlow, sınıflandırma problemleri için dört çapraz entropi işlevi uygular.

tf.nn.sigmoid_cross_entropy_with_logits, tf.nn.softmax_cross_entropy_with_logits, tf.nn.sparse_softmax_cross_entropy_with_logits ve tf.nn.weighted_cross_entropy_with_logits için https://www.wocs.org adresine bakın. #sparse_softmax_cross_entropy_with_logits

Sigmoid_cross_entropy_with_logits'in ayrıntılı açıklaması

Önce sigmoid_cross_entropy_with_logits'e bakalım, neden, çünkü uygulaması önceki çapraz entropi algoritması tanımıyla aynı ve aynı zamanda TensorFlow tarafından uygulanan ilk çapraz entropi algoritmasıdır. Bu işlevin girdisi, günlükler ve hedeflerdir. Logitler, sinir ağı modelindeki W * X matrisidir. Sigmoid'den geçmeye gerek olmadığını ve hedeflerin şeklinin, doğru etiket değeri olan logitlerle aynı olduğunu unutmayın. Örneğin, bu modelin bir seferde 100 görüntüyü yargılaması gerekir 10 çeşit hayvan içerse de, iki giriş şekli her ikisidir. Yorumda ayrıca bu 10 kategorinin bağımsız olduğu ve karşılıklı dışlama gerektirmediği belirtiliyor.Bu tür bir sorunun çok amaçlı bir amacı haline geldik.Örneğin, resimde 10 hayvan olup olmadığını belirlemek için, etiket değeri birden fazla 1 veya 0 içerebilir. Başka bir sorun da çoklu sınıflandırmadır.Örneğin yaş özelliğini 5 parçaya böleriz ve sadece 5 değere izin veririz ve sadece 1 değer 1'dir. Bu fonksiyon bu tür problemler için doğrudan kullanılabilir mi? Cevap hayır, önce sigmoid_cross_entropy_with_logits'in kod uygulamasına bir göz atalım.

Bunun standart Çapraz Entropi algoritmasının uygulaması olduğu görülebilmektedir.W * X ile elde edilen değer sigmoid ile aktif hale getirilerek değerin 0 ile 1 arasında olmasını sağlamakta ve ardından Kaybı hesaplamak için çapraz entropi fonksiyonuna yerleştirilmektedir. Bu, iki sınıflı sınıflandırma problemi için sorun değildir, ancak yukarıda bahsedilen çok sınıflı sınıflandırma için, örneğin, genç değer aralığı 0 ~ 4 ve hedef değer de 0 ~ 4'tür Burada, eğer tahmin edilen değer sigmoidden sonra 0 ila 1 ile sınırlandırılırsa. Ayrıca formüldeki 1-z negatif görünecektir, 0 ile 4 arasında doğrusal bir ilişki olmadığını dikkatlice düşünün. Etiket değerini doğrudan hesaplamaya getirirseniz kesinlikle çok büyük bir hata olacaktır. Bu nedenle çoklu sınıflandırma problemi doğrudan ikame edilemez.Aslında esnek olabilir ve 5 yaş grubunun tahminini 5 boyutlu bir etikete dönüştürmek için tek kodlamayı kullanabiliriz.Eğitim sırasında 5 farklı hedef olarak eğitilebilir, ancak Yalnızca birinin 1 olmasını sağlamak için TensorFlow, bu tür sorunlar için Softmax'a dayalı bir çapraz entropi işlevi sağlar.

Softmax_cross_entropy_with_logits'in ayrıntılı açıklaması

Softmax'ın algoritması çok basittir, e'nin n'inci kuvveti ile tüm değerleri hesaplamak ve toplamın 1 olmasını sağlamak için toplamadan sonra her bir değerin oranını hesaplamaktır. Genel olarak, Softmax'ı olasılık olan güven olarak düşünebiliriz. Uygulama aşağıdaki gibidir.

softmax_cross_entropy_with_logits, sigmoid_cross_entropy_with_logits'ten çok farklıdır. Girdi, logitlerin ve etiketlerin şekline benzer, ancak yalnızca bir alanın bir değere sahip olduğundan emin olmak için sınıflandırma sonuçlarının birbirini dışlaması gerekir. Örneğin, CIFAR-10'daki resimler benzer yerine yalnızca bir kategoride sınıflandırılabilir. Önceki yargı, birden çok hayvan türünü içerir. Bir düşünün ve neden böyle bir kısıtlama olduğunu sorun? Fonksiyon başlığının yorumunda, bu fonksiyon tarafından aktarılan logitlerin ölçeklenmemiş olduğunu görüyoruz, ne sigmoid ne de softmax, çünkü fonksiyon uygulaması softmax'ı dahili olarak daha verimli kullanacak ve herhangi bir girdi softmax'a dönüşecektir. Toplam 1'in olasılık tahmin değeri ise, bu değer deforme olmuş Çapraz Girişim algoritması-y * ln (a) - (1-y) * ln (1-a) algoritmasına değiştirilerek anlamlı bir Kayıp değeri elde edilebilir. Çok amaçlı bir problem ise, softmax'tan sonra 1'in çoklu toplamlarının olasılığı elde edilmeyecektir ve etiket birden fazla 1'e sahipse çapraz entropi hesaplanamayacaktır, bu nedenle bu fonksiyon yalnızca tek nesneli ikili sınıflandırma veya çoklu sınıflandırma problemleri için uygundur, TensorFlow fonksiyon tanımı aşağıdaki gibi.

Bir şey daha, örneğin çoklu sınıflandırma problemleri için yaşımız 5 kategoriye ayrılmıştır ve manuel olarak 0, 1, 2, 3, 4 olarak kodlanmıştır, çünkü çıktı değeri 5 boyutlu bir özelliktir, bu yüzden ayrı ayrı kodlamak için manuel olarak tek bir kodlama yapmamız gerekir. 00001, 00010, 00100, 01000, 10000 ise bu fonksiyonun girişi olarak kullanılabilir. Teoride, tek bir kodlama yapmamıza gerek yoktur ve toplamı 1 olan bir olasılık dağılımı da yapabiliriz, ancak toplamın 1 olduğundan ve 1 olmamanın gerçek anlamının açık olmadığından emin olmalıyız. TensorFlow'un C ++ kod uygulaması bu parametreleri kontrol etmeyi planlıyor. Kötüye kullanımı önlemek için kullanıcılara önceden hatırlatın.

Sparse_softmax_cross_entropy_with_logits'in ayrıntılı açıklaması

sparse_softmax_cross_entropy_with_logits, softmax_cross_entropy_with_logits'in kullanımı kolay bir versiyonudur, ancak farklı girdi parametreleri, fonksiyon ve algoritma uygulaması aynıdır. Daha önce bahsedildiği gibi, softmax_cross_entropy_with_logits girdisi, tek kodlamaya benzer çok boyutlu bir özellik olmalıdır, ancak CIFAR-10, ImageNet ve çoğu sınıflandırma senaryosunda yalnızca bir sınıflandırma hedefi vardır ve etiket değeri, 0'dan kodlanmış bir tamsayıdır. Her seferinde onehot kodlamaya dönüştürmek zordur. , Daha iyi bir yol var mı? Cevap, sparse_softmax_cross_entropy_with_logits kullanmaktır, ilk parametre günlükleri öncekiyle aynıdır, şekildir ve ikinci parametre etiketleri öncesinde olmalıdır, aksi takdirde Çapraz Entropi olamaz, bu işlev daha kısıtlayıcı olarak değiştirilir ve değer 0'dan olmalıdır İnt32 veya int64'ü kodlamaya başlayın ve değer aralığı

BMW 3 Serisi plug-in hibrit versiyonu önümüzdeki yıl satışa çıkacak, yakıt versiyonu tasarımının devamı, performans 530Le'yi aşıyor
önceki
CBA Ligi | Shougang Erkek Basketbol Takımı, evinde "Beijing Derbisi" ni 100-94 kazandı
Sonraki
İş yerinde müzik dinlemeyi sever misin? İşte müziğin iş verimliliği üzerindeki 7 etkisi
"Teknoloji Evi" nin kapsamlı gelişimi Test sürüşü deneyimi yeni nesil Subaru Forester
Bilgisayar sistemi dolaşım önbelleği önemlidir
BMW X1'in mükemmel yaşam zevki, modacıları ve gücü ve güzelliği
Uygun bir aşk partneri bulmak ister misiniz, "uygun" kriterler nelerdir?
BDTC2016 Büyük Veri Güvenliği ve Gizlilik Koruma Forumu'nun 6 konuşmacısı açıkladı, en çok kimin konuşmasını bekliyorsunuz?
Nubia X'in ilk resim ödülü: ön ve arka çift ekranlar, tam önden özgürlük
Kitlesel sise eğilimli 9 yol bölümü ve yokuş aşağı 3 tehlikeli yol bölümü - Pekin'de kış kazasına meyilli yol bölümü 12 açıklandı
Dünya karmaşık, aidiyet duygunuz gittikçe daha spesifik hale geldi mi? | Hayatta 100 büyük sorun
Zaobao: Milli futbol takımı harika!
% 93,6 ekran doluluğu! Çift ekranlı Nubia X piyasaya sürüldü: her iki tarafta parmak izleri, ön ve arka kamera bir arada
Aynı sınıfta eşsiz konfor 2019 Nissan Sylphy bisiklet testi
To Top