Classification probleminde "tanımsız" nasıl denir?


#1

Merhaba, detaylı anlatmak gerekirse CNN ile 5 farklı olayı sınıflandıracağım, daha sonra eğiteceğim modele video görüntüleri vererek bu olayları tanımaya çalışacağım. Eğittiğim olayları gördüğünde tanımasını bekliyorum fakat benim eğittiğim bu 5 olayın dışında herhangi bir olay gerçekleşirse input olarak verilen videoda, model bu olaya nasıl “tanımsız” diyebilir? Bunu yapabilmek için 6. bir sınıf yapacağım ve ne bulursam abuk subuk dolduracak mıyım?


#2

3 degisik yol ile yapilabilir, hangisinin daha iyi calisacagini deneyle gormek lazim:

  1. Altinci sinif olarak “Digerleri” sinifi yapmak tipik bir cozum sekli. Bunun icin 5 sinifa dahil olmayan verilere ihtiyac var.

  2. 5 sinifli classifier yapmak ve bir esik degeri belirlemek. Esik degerinin altinda kalinirsa 5 sinifa da dahil olmadigini kabul etmek. Esik degerinin belirlenmesinde yine “diger” gurubuna ait veri gerekebilir veya 5 sinifa ait olan verilerden cikan en dusuk maximum (minimax) deger ile emprik olarak belirlenebilir.

  3. Ilk asamada 5 sinifin hepsinin icinde oldugu bir one-class classifier yapilir. Ancak bu asamadan gecenler 5li classifier’a sokulur. https://en.wikipedia.org/wiki/One-class_classification.

Ayrica siniflari bilinen veri setine rastgele gurultu (girdilere) eklemek suretiyle modelin uzayi daha iyi kapsamasini saglayabilirsin. Boylelikle neyin “digerleri” oldugu daha netlesmis olur.


#3

Öncelikle çok teşekkür ederim, birkaç sorum olacak cevabınız üzerinden,

Bahsettiğiniz 2. yöntemde, CNN in outputunun 5 classifier in herbiri içinde bir thelta değerinden küçükse, ‘diger’ diyoruz, öyle değil mi? Eğer öyleyse thetayi 0.3 vb seçmek mantıklı ve yeterli olmayacak mıdır? Ve ‘Esik degerinin belirlenmesinde yine “diger” gurubuna ait veri gerekebilir’ dediniz, diğer classifier i yapacaksak bahsettiginiz 1. yöntemden ne farkı kalir ki?

Son verdiğiniz tüyo da ise, rasgele gürültüler olusturarak data augmentation dan bahsediyorsunuz değil mi yanlış anlamadım, bu gürültülerin ortalamasinin sıfır falan mi olmasi gerekiyor? Nasıl bir yontem izlenmeli?

Çok soru sordum, kusura bakmayın.


#4

@aif 0.3’u nereden buldun anlamadim. Eger diger datasi varsa bu esik degerini belli bir hata kriterine gore belirleyebilirsin. Yok eger diger datasi kullanmayacaksan mevcut veri seti icerisinden yanlislikla diger gurubuna dusmeyecek en yuksek degeri secebilirsin. Daha yuksek secersen mevcut veri setinden bazilari diger gurubuna duser. Cok dusuk secersen diger gurubundakiler iceri sizar.

Gurultu uretmiyoruz. Veri setine gurultu ekliyoruz (bazi pixellerin degerlerini bozuyoruz ama tum goruntuyu katletmiyoruz) ve bunlarin siniflarinin degismedigini kabul ediyoruz. Boylelikle diger gurubu ile ayristirirken classification boundary’i detaylandirmis oluyoruz. Yani mevcut 5 sinifin uzaydaki hacmini buyutmus oluyoruz.


#7

Bunun en iyi yöntemi accuracy yani doğruluk değerini eşik olarak belirlemektir. Bu eşik değerini test veri setinin doğruluk değeri ile orantılı olarak belirleyebilirsiniz. İsterseniz dinamik eşik değeri de belirleyebilirsiniz bunun için girdinin kalitesini hesaplayan bir preprocessor geliştirmeniz gerekebilir. Şöyle bir örnek verebilirim; Benzer bir probleme sahiptim. Girdi olarak verilen görüntünüyü 3 sınıfa ayırıyordum doğruluk değeri 0.7 altında ise “other” sınıfına dahil ederek tanımsız olarak işaretliyordum. Fakat bazı görüntülerde doğruluk oranı 0.5 den yukarı çıkamıyordu çünkü görüntüler lensten dolayı bozunuma uğramış ve buda başarı oranını düşürmüştü. Çözüm olarak gürültüleri tespit eden bir ön işleyici koydum ve benim eşik değerimi bu ön işleyici belirler duruma geldi. Bu benim özel problemime yönelik bir çözüm senin farklı ön işleyiciler geliştirmen gerekebilir, belkide hiç gerekmeyecektir.


#6

5 sınıf var, son katmanda 5 sınıfın dağılım oranlarının toplamı 1 olacak, hangi sınıfın oranı büyüksede o sınıfa ait diyeceğiz değil mi. 1/5 = 0.2, her birine 0.2 direk oran düşüyor, 0.3 e de erişen yoksa buna rağmen, diğer sınıfındadır dedim. Hatta 0.3 az gelir 0.4 olabilir, bu sadece benim yüzeysel düşüncem, bir dayanağım yok bilmiyorum ne kadar doğru yada yanlış böyle düşünmem.

Verisetine gürültü eklerken, mevcut resimleri random bir matris le toplayıp oluşan gürültülü görüntüyü yeni bir sample olarak kullanıyoruz değil mi eskisinin yerine değil…