Lei Feng Net Not: Bu makale, Lei Feng'in altyazı grubu tarafından derlenen teknik bir blogdur, orijinal başlık Derin öğrenme dengesiz eğitim verileri mi? Bu şekilde çözün ve yazar Shubrashankh Chatterjee.
Tercüme | Ye Qing Bitti | MY
Herhangi bir makine öğrenimi problemini çözdüğümüzde, karşılaştığımız en büyük sorunlardan biri eğitim verilerindeki dengesizliktir. Dengesiz verilerle ilgili sorun, akademik topluluğun aynı tanım, anlam ve olası çözümlere göre bölünmesidir. Eğitim verilerindeki dengesiz kategorilerin gizemini görüntü sınıflandırma problemlerini kullanarak çözmeye çalışacağız.
Dengesiz sınıfların sorunu nedir?
Bir sınıflandırma probleminde, tahmin etmek istediğiniz tüm kategorilerdeki bir veya daha fazla kategorinin örneklem boyutu çok küçükse, verileriniz dengesiz kategoriler sorunuyla karşı karşıya kalabilir.
Örneğin
1. Dolandırıcılık tahmini (dolandırıcılık sayısı gerçek işlem sayısından çok daha azdır)
2. Doğal afet tahmini (kötü şeyler, iyi şeylerden çok daha azdır)
3. Görüntü sınıflandırmasında kötü huylu tümörleri tanımlayın (eğitim örneği, tümör içermeyen görüntülere göre çok daha az tümörlü görüntü içerir)
Bu neden bir problem?
Dengesiz kategoriler iki ana nedenden dolayı sorunlara neden olabilir:
1. Dengesiz kategoriler için, gerçek zamanlı optimal sonuçlar elde edemeyiz çünkü model / algoritma örtülü kategoriyi hiçbir zaman tam olarak incelememektedir.
2. Bazı sınıflarda çok az gözlem varken sınıfta temsilci olmak zor olduğundan, doğrulama ve test örneklerinin elde edilmesi için bir sorun teşkil etmektedir.
Bu sorunu çözmenin farklı yolları nelerdir?
Her birinin artıları ve eksileri olan üç ana önerilen yöntem vardır:
1. Az Örnekleme -İki sınıf arasındaki göreli oranın önemli olması için yeterli sayıda gözlem içeren sınıfları rastgele silin. Bu yöntemin kullanımı çok basit olsa da, sildiğimiz verilerin tahmin için önemli bilgiler içermesi çok muhtemeldir.
2. Yüksek hızda örnekleme -Dengesiz kategoriler için, gözlem sayısını rastgele artırmak için mevcut örnekleri kopyalama yöntemini kullanıyoruz. İdeal olarak, bu yöntem bize yeterli örnek verir, ancak yüksek hızda örnekleme, eğitim verilerine aşırı uymaya neden olabilir.
3. Sentetik örnekleme (SMOTE) -Bu teknik, mevcut en yakın komşu sınıflandırma yöntemine çok benzeyen, dengesiz kategorilerin gözlemlerini elde etmek için sentetik bir yöntem kullanmamızı gerektirir. Soru, bir kategori için gözlem sayısı çok az olduğunda ne yapılacağıdır. Örneğin, nadir bir türü tanımlamak için bir resim sınıflandırma problemi kullanmak istiyoruz, ancak bu nadir türün yalnızca bir resmine sahip olabiliriz.
Her yöntemin kendine özgü avantajları olsa da, hangi yöntemi ne zaman kullanacağımızı bize söyleyen belirli bir buluşsal yöntem yoktur. Şimdi kullanacağız Derin öğrenmeye özgü görüntü sınıflandırma problemi Bu konuyu ayrıntılı olarak inceleyin.
Görüntü sınıflandırmada dengesiz sınıf
Bu bölümde, dengesizlik problemi olan bir görüntü sınıflandırma problemini seçeceğiz ve sonra çözmek için basit ve etkili bir teknik kullanacağız.
sorun -Kaggle web sitesinde seçiyoruz "Kambur Balina Tanımlama Mücadelesi" , Dengesiz kategorilerin zorluğunu çözmeyi umuyoruz (ideal olarak, sınıflandırılmış balinaların sayısı sınıflandırılmamış deniz memelilerinden daha azdır ve daha az resme sahip olduğumuz birkaç nadir deniz memelisi vardır.)
Kaggle'dan: " Bu oyunda, görüntüdeki balina türlerini belirlemek için bir algoritma oluşturma zorluğuyla karşı karşıyasınız. Araştırma kurumlarından ve katkıda bulunanlardan gelen Happy Whale veritabanında 25.000'den fazla resmi analiz edeceksiniz. Katkılarınız aracılığıyla, küresel deniz memelisi popülasyonlarının dinamikleri hakkında zengin bir anlayış alanı açmaya yardımcı olacaksınız. "
Verilere bakalım
Bu çok etiketli bir görüntü sınıflandırma problemi olduğu için, öncelikle verilerin çeşitli kategoriler arasındaki dağılımını kontrol etmek istiyorum.
Yukarıdaki grafik gösteriyor ki 4251 eğitim resminde, 2000'den fazla kategoride yalnızca bir resim var. Ayrıca bazı kategorilerde 2-5 resim var. Şimdi, bu ciddi bir dengesizlik sorunu. Derin öğrenme modelini eğitmek için her kategorinin bir resmini kullanmayı bekleyemeyiz (bunu yapmak için tek adımlı sınıflandırma problemi gibi bazı algoritmalar kullanılsa da, şimdilik bunu görmezden geleceğiz). Bu aynı zamanda bir sorun yaratır, yani eğitim örnekleri ve doğrulama örneklemlerinin nasıl bölüneceği. İdeal olarak, her sınıfın eğitim ve doğrulama örneklerine yansıtılmasını istersiniz.
Şimdi ne yapmalıyız?
Özellikle iki seçeneği değerlendirdik:
seçenek 1 -Eğitim örneklerinde sıkı veri geliştirme (bunu yapabiliriz, ancak yalnızca belirli bir sınıf için veri geliştirmeye ihtiyacımız olduğundan, bu hedefimize tam olarak ulaşamayabilir). Bu nedenle, çok basit görünen 2. seçeneği seçtim.
seçenek 2 -Yukarıda bahsettiğim aşırı örnekleme seçeneğine benzer. Eğitim verilerinde dengesiz görüntüleri 15 kez çoğaltmak için farklı görüntü geliştirme teknikleri kullandım. Bu, Jeremy Howard'dan (Jeremy Howard) esinlenmiştir, sanırım bundan bir derin öğrenme dersinde (fast.ai kursunun 1. bölümü) bahsetmiştir.
2. seçeneğe başlamadan önce, eğitim örneğindeki bazı resimlere bir göz atalım.
Özellikle bu görüntüler balinaların kuyruklarıdır. Bu nedenle, tanımanın belirli bir resim yönelimi ile ilgili olması muhtemeldir.
Ayrıca verilerdeki birçok görüntünün siyah beyaz resimler veya yalnızca R / B / G kanalları olduğunu fark ettim.
Bu gözlemlere dayanarak, eğitim örneğindeki dengesiz görüntülerde küçük değişiklikler yapmak ve bunları kaydetmek için aşağıdaki kodu yazmaya karar verdim:
Yukarıdaki kod bloğu, dengesiz sınıftaki her görüntü üzerinde aşağıdaki işlemi gerçekleştirir (sayı 10'dan azdır):
1. Her resmin R, G ve B kanallarını gelişmiş bir kopya olarak kaydedin
2. Her resmin keskinleştirilmemiş, geliştirilmiş bir kopyasını kaydedin
3. Her resmin keskinleştirilmemiş, geliştirilmiş bir kopyasını kaydedin
Yukarıdaki kodda görebileceğiniz gibi, bu alıştırmada kesinlikle yastık (bir python görüntü kitaplığı) kullanıyoruz.
Şimdi her dengesiz sınıfta en az 10 örnek var. Eğitmeye devam ediyoruz.
Görüntü geliştirme Bu konuyu kısaca ele alalım. Sadece modelimizin balina kuyruğunun ayrıntılı bir görüntüsünü elde edebilmesini istiyoruz. Bu amaçla, yakınlaştırma haritasını görüntü geliştirmeye dahil ediyoruz.
Öğrenme hızı detektörü Öğrenme hızı detektörünün gösterdiği gibi öğrenme oranını 0.01 olarak ayarlamaya karar verdik.
Resnet50 modelini birkaç yineleme için kullandık (önce modeli dondurduktan sonra çözdükten sonra). Dondurulmuş modelin de bu sorun için çok faydalı olduğunu buldum çünkü imagenet'te balina kuyruğu görüntüleri var.
Test verileri üzerinde nasıl performans gösterir?
Sonunda gerçekleri kaggle liderlik tablosunda gördük. Önerdiğimiz çözüm bu yarışmada 34. sırada yer aldı ve ilk beşin ortalama doğruluğu 0.41928 oldu :)
sonuç olarak
Bazen, en basit yöntem en mantıklı olanıdır (daha fazla veriye sahip değilseniz, mevcut verileri küçük değişikliklerle kopyalayın, bu kategorideki çoğu gözlemin temelde model için onlara benziyormuş gibi yapın). En etkili olanlardır ve işi daha kolay ve sezgisel olarak yapabilirler.
Orijinal bağlantı: https://medium.com/@shub777_56374/deep-learning-unbalanced-training-data-solve-it-like-this-6c528e9efea6
Lei Feng Ağı Lei Feng Ağı