Veri Artırımı / Data Augmentation Part 2

Yusuf ANI
novaresearchlab
Published in
9 min readFeb 7, 2020

Bu yazı Yusuf Anı ve Zeynep Daniş tarafından yazılmıştır.

Yazımızın ilk kısmında “ Veri Artırımı Nedir? ” ve “ Niçin Yapılmalıdır? ” sorularını cevapladık .Halen ilk kısmı okumadıysanız buradan ulaşabilirsiniz. İkinci kısımda ise görüntüler, sesler, metinler için geliştirilmiş “Veri Artırımı Stratejileri ” hakkında daha detaylı bilgiler edineceksiniz. Keyifli okumalar dileriz.

Yazımızın diğer bölümünde veri artırımı uygulaması konusunda derin bir yolculuğa çıkarak resimler, sesler ve metinler için 2019 ‘da kullanılan veri artırımı stratejilerini tanıyalım. Veri analisti Derric Mwit’nin “Data Augmentation for Deep Learning ” adlı yazısından yararlanarak sırasıyla aşağıdaki konuları inceleyeceğiz .

1. AutoAugment : Learning Augmentation Strategies from Data (CVPR 2019)

2. Fast AutoAugment (2019)

3. Learning Data Augmentation Strategies for Object Detection (2019)

4. SpecAugment: A Simple Data Augmentation Method for Automatic Speech Recognition (Interspeech 2019)

5. EDA: Easy Data Augmentation Techniques for Boosting Performance on Text Classification Tasks (EMNLP-IJCNLP 2019)

6. UDA: Unsupervised Data Augmentation for Consistency Training (2019)

1.AutoAugment : Learning Augmentation Strategies from Data (CVPR 2019)

AutoAugment, modelde en iyi sonuçları verecek veri artırımı yöntemini bulmak için geliştirilmiş bir veri artırımı stratejisidir. Arama algoritması(search algorithm) kullanır. Yöntemlerin eğitim veri setine uygulanmasının ardından model çalıştırılır ve test veri seti sınıflandırma doğruluğunu(accuracy) en çok artıran yöntem, uygulanacak yöntem olarak seçilir.

Uygulama sırasında, arama algoritması için pekiştirme öğrenimi(reinforcement learning) kullanılır.Makaleye göre başka yöntemlerin daha başarılı sonuçlar verebileceği düşünülüyor. Bu sayede öğrenilen yöntemler, yeni veri kümelerine kolayca aktarılabilir. Bu veri artırımı stratejisi; CIFAR-10, CIFAR-10, CIFAR-100, SVHN, reduced SVHN ve ImageNet veri setleri üzerinde test edildi. Bu uygulamanın iki bileşeni vardır: arama algoritması ve arama alanı(search space).

Figür 1 — Arama metodunda kullanılan framework ‘ün diyagramı.

Arama algoritması, RNN kontrolcüsü olarak uygulamaya dahil edilir. Görüntü işleme bilgileri, batchlerin kullanımı olasılığı, operasyonun büyüklüğü gibi bilgilere sahiptir. Her bir veri artırımı yöntemini örnekler. Bu RNN kontrolcüsü, gradyan metotlarla güncellenir. Her veri artırımı yönteminin oluşturduğu test veri seti sınıflandırma doğruluğu kontrolcüye geri yollanır. Sonuçta seçilen yöntem daha sonra sabit mimariye sahip bir sinir ağını eğitmek için kullanılacaktır.

Arama alanında her yöntem, 5 alt yöntemden oluşur. Her bir alt yöntem bir modele denk gelmektedir. Bu da çok fazla GPU ve zaman gerektirir .Her alt yöntem sırayla çalışan iki görüntü işleme fonksyionundan oluşur.Örnek olarak rotasyon(rotation) , kayma(shear) veya çeviri (translation ). Her fonksiyon iki adet hiper parametre (hyperparameter) ile bağlantılıdır. Bu hiper parametreler, operasyonun büyüklüğü ve uygulanma olasılığıdır.

Figür 2 — AutoAugmentation Uygunlanmış Resim

Yukardaki görselde, yatay eksende farklı alt yöntemler mevcutken dikey eksende de farklı batchler bulunuyor. Alt yöntem 1' i ele alırsak burada 0.9 olasılıkla ve 7 büyüklükle kayma(shear), 0.2 olasılıkla ve 3 büyüklükle çevirme(invert) tekniği uygulanmıştır.

Uygulanan teknikler, uygulanma olasılıkları ve büyüklük değerleri değiştirilerek farklı alt yöntemler elde edilir ve her yöntem sonucu test veri seti sınıflandırma doğruluğu (R), üstteki yönteme dönüt olarak gönderilir. Ana yöntem, doğruluğun(accuracy) en fazla elde edilmesini sağlayan alt yönteme karar verene dek çalışır. Shear-Solarize, Shear-AutoContrast vb. çeşitli kombinasyonlarla elde edilmiş yöntemler mevcuttur.

Figür 3 — AutoAugment’in bazı popüler veri kümelerindeki sonuçları

Yukardaki görselde farklı veri setleri çeşitli modellerle birlikte çalıştırılmıştır. Başlangıç durumunda(baseline), Cutout yönteminin (Kısaca resmin rastgele bir yerini kesmek diyebiliriz. Detaylı bilgiye buradan ulaşabilirsiniz )uygulanmış durumunda, otomatik olarak en uygun veri artırımı yönteminin seçildiği durumda(AutoAugment) meydana gelen test veri seti sınıflandırma hatası(error) değerleri tabloda görülmektedir. Hatanın(error) en az olduğu durumlar daha iyidir. Görüldüğü üzere AutoAugment yöntemi bu konuda oldukça başarılıdır. Orijinal AutoAugment makalesine buradan ulaşabilirsiniz. Daha detaylı bilgi edinmek için burayı da ziyaret ediniz.

2.Fast AutoAugment(2019)

Fast AutoAugment algoritması, yoğunluk eşleşmesine dayalı bir arama stratejisi kullanarak etkili büyütme politikaları bulur. AutoAugment, çocuk modellerinin tekrar tekrar eğitilmesini gerektirmez; bunun yerine, artırılmış bölünmenin dağılımı ile tek bir model aracılığıyla başka bir artırılmamış bölünmenin dağılımı arasındaki eşleşmeyi en üst düzeye çıkaran büyütme politikaları arar.

Figür 4- Fast Augment Mimarisi

Biliyorum ki bu cümle çok karmaşık geldi . Bunun için AutoAugment ile karşılaştırıp neyi yapıp yapmadığı üzerinden gidelim . AutoAugment RF(Reinforcement Learning) kullanarak otomatik olarak en iyi yöntemleri buluyordu. Bunu yaparken arttırım yöntemini örneklere dağıtıp , RNN kontrolcüsüyle her birinin validasyon sonuçlarına göre değerlendiriyordu . Tabi bu da çok fazla GPU gücü ve zaman demekti . Fast AutoAugment ise işin zaman alan search algoritmasında yeni ortaya çıkan Population Based Augmentation (PBA) kullanır. Bu teknikte tekrarlanan çocuk modellere gerek kalmadan tek modelde maksimun sonuç veren teknikleri bulur . Bu yöntem kullanılarak elde edilen sonuçlardan bazıları şunlardır:

Figür 5 — AutoAugment , FastAugment saat cinsinden maliyet karşılaştırması

Yukardaki görselde 3 farklı veri seti(data set) AutoAugment ve Fast AutoAugmen yöntemleri ile çalıştırılmıştır. Tablodaki sayısal değerler hesaplama maliyetlerinin kaç GPU saatinde yapıldığını göstermektedir. Görülüyor ki Fast AutoAugment algoritması, standart AutoAugment algoritmasına nispeten hızlı çalışmaktadır. Orijinal Fast AutoAugmentation makalesine buradan ulaşabilirsiniz. Daha detaylı bilgi için burayı da ziyaret ediniz.

3.Learning Data Augmentation Strategies for Object Detection (2019)

Nesne tespiti için veri artırımı stratejileri adlı bu başlık direkt bir model mimarisini ifade etmiyor olsa da nesne algılama aşamasında yapılması gereken dönüşüm stratejilerini içermektedir. Önerilecek dönüşümler genellikle eğitim sürecinde(training time) uygulanır.

Figür 6 —

Yukardaki görselde COCO adlı veri setinden alınan bir kesim bulunmaktadır. Uygulanan veri artırımı yöntemi, eğitim sürecinde(training time) rastgele seçilen n adet alt yöntem içermektedir. Bu veri setine uygulanan bazı işlemler; renk kanallarını bozma, resmi geometrik olarak bozma, pixel değerlerini bozma olarak söylenebilir. Veri artırımı yönteminin uygulanmasının ardından ortalama hassasiyet değeri(average precision) +2.3' ten daha fazla artmıştır. Ve bu sayede bir çıkarım modeli(inference model) % 50.7 hassasiyete(precision) ulaşabilir.

Nesne algılama için veri artırımı stratejileri hakkında ayrıntılı bilgiye buradan ulaşabilirsiniz.

4.SpecAugment: A Simple Data Augmentation Method for Automatic Speech Recognition (Interspeech 2019)

Şimdiye kadar hep resimlerden bahsettik . Bu stratejide ise ses ile ilgili bir örnek vereceğiz. SpecAugment, otomatik konuşma tanıma için basit veri artırımı yöntemidir. Direkt olarak sinir ağının(neural network) girdi-özellik katmanına (input-feauture layer) uygulanır. Özelliklerin(features), zaman adımlarını(time steps) ve frekans kanallarını maskeleme bloklarını bozarak çalışır. Uçtan uca konuşma tanıma görevlerinde kullanılır. LibriSpeech veri setinde(sesli kitaplardan elde edilmiş toplam 1000 saatlik 16 kHz‘lik ingilizce konuşmalar) bu yöntem % 6.8 WER (Word Error Rate ) elde eder.Bu değer diğer modeller için %7.5 idi.

Figür 7- SpecAugment Testi

SpecAugment, giriş sesinin log mel ( İnsan kulağının ses ölçüleri, 1 kHz e kadar doğrusal, daha yüksek değerlerde ise logaritmiktir. İnsan kulağının frekans yanıtını karakterize eden bu ölçüye Mel-Ölçüsü (Melodi Ölçüsü) denir.) spektrogramında çalışır. Yöntemin hesaplanması kolaydır, çünkü spektrograma doğrudan bir imajmış gibi etki eder. Ek veri gerektirmez. SpecAugment spektrogramın üç deformasyonundan(bozulma) oluşur. Bu deformasyonlar zaman sıçraması(time warping)- seste bir noktadan bir noktaya atlama, zaman ve frekans maskeleme(time and frequency masking)- bazı zamanları veya frekansları maskeleme ,ardışık zaman adımları bloğu(a block of consecutive time steps)-belirli periyotta atlama — ya da mel frekans kanalları(mel frequency channels) maskeleme olarak söylenebilir. Bu yöntem, Lissen Attend and Spell(LAS) olarak bilinen ASR ağlarının uçtan uca eğitimini sağlar.

Orijinal SpecAugment makalesine buradan ulaşabilirsiniz. Ayrıntılı bilgi için burayı da ziyaret ediniz.

5.EDA: Easy Data Augmentation Techniques for Boosting Performance on Text Classification Tasks (EMNLP-IJCNLP 2019)

Metin Sınıflandırma Görevlerinde Performansı Artırmak için Kolay Veri Büyütme Teknikleri(EDA) şunlardır: eş anlamlı değiştirme, rastgele ekleme, rastgele değiştirme ve rastgele silme.

Figür 8 — EDA Operasyonlarının uygulandığı bir örnek

Yukardaki görselde EDA’da yer alan teknikler görülüyor :

None : Başlangıçta veri artırımı yok.

SR : Eş anlamlıyla değiştirme(synonym replacement) tekniğinden oluşan veri artırımı yöntemi.Etkisiz -Türkçe dili için bir ,bu, şu vb. sözcükler etkisiz kelimelerdir- olmayan sözcüklerden(stop-words) rastgele seçerek bunları eş anlamlılarıyla değiştirmek suretiyle yapılır.

RI : Rastgele ekleme(random insertion) tekniğinden oluşan veri artırımı yöntemi. Rastegele bir kelime seçip onun rastgele bir eş anlamlısını alıp cümlede rastgele bir noktaya yerleştirmek.

RS : Rastgele yer değiştirme(random swap) tekniğinden oluşan veri artırımı yöntemi. Rastgele olarak iki kelime seçip onların yerini değiştirmek.

RD : Rastgele silme(random deletion) tekniğinden oluşan veri artırımı yöntemi.Cümleden rastgele seçilen n adet kelimenin kaldırılması biçiminde gerçekleştirilir.

Deneyler için LSTM-RNNs ve evrişimli sinir ağları(CNN) kullanıldı. Veri artrımı stratejisi EDA, text dosyalarına uygulandı ve alınan sonuçlar aşağıdaki gibi gözlendi :

Figür 9 — EDA Stratejisinin Testi

Yukardaki görselde yatay eksende farklı eğitim veri seti büyüklükleri mevcutken dikey eksende ise sinir ağı modelleri bulunmaktadır. ilk satırda RNN model ve hemen onun altında EDA uygulanarak tekrarlanan versiyonu, ikinci satırda CNN model ve altında EDA uygulanarak tekrarlanan versiyonu yer almaktadır. Veri artırımı uygulandıktan sonra performans artışı olduğu açık bir şekilde görülmektedir. Bu artış, veri seti büyüklüğüne ve uygulanan sinir ağı modeline göre değişiklik göstermektedir. Sinir ağının doğru çalışma performansı ortalama % 87.8 oranından % 88.6 oranına yükselmiştir.

Orijinal EDA makalesine buradan ulaşabilirsiniz. Detaylı bilgi için burayı ziyaret ediniz.

6.UDA: Unsupervised Data Augmentation for Consistency Training (2019)

Denetimsiz Veri Artırımı için genel yöntem etiketlenmemiş input resmine gürültü(noise) eklemekten geçer . Gürültünün kalitesi miktarı da ayarlanması gereken bir paremetredir.

Figür 10- Gürültü Eklenmiş Çiçek Örneği

Örneğin yukardaki görsele bakılırsa üst kısımda bir çiçeğin orijinal görüntüsü, altta ise Gaussian noise eklenmiş versiyonu görülmektedir. Gaussian bozulması ekleme işlemi resmin piksel değerlerinde oynama yapılarak gerçekleştirilir.

Figür 11- UDA Mimarisi

Yarı denetimli öğrenmede de(semi-supervised learning) bozulmanın(noise) kalitesi çok önemlidir. Yapılan çalışma, tutarlılık eğitiminde(consistency training) noise etkisini araştırıyor ve klasik veri artırımı yöntemleri yerine gelişmiş veri artırımı yöntemlerinin yarı denetimli öğrenmede de iyi performans gösterdiğini tespit ediyor. Bu yöntemler :

  • Resim sınıflandırma için RandAugment
  • Metin sınıflandırma için Back-translation ve TF-IDF ile Word Replacing
Figür 12- RandAugment Örneği

RandAugment yönteminde,önceki yötemlerdeki gibi yöntemler için ayrı arama alanları(search space) yoktur . Arama alanını(search space)azaltarak verimlilik kazandırır ve dolayısıyla bu özelliği için AutoAugment yerine tercih edilebilmektedir. RandAugment hakkında detaylı bilgiye buradan ulaşabilirsiniz.

Figür 13 — Back-translation Örneği

Metin sınıflandırma(text classification) için Back-translation tekniğinde, cümle başka bir dile çevrilir ardından tekrar kaynak dile çevrilir. Böylece cümleye eş değerde olan başka bir cümle elde edilmek suretiyle veri artırımı gerçekleştirilir. Back-translation tekniği hakkında detaylı bilgiye buradan ulaşabilirsiniz.

Figür 14 — RandAugment ve Back-translation Örneği
Figür 15 — RandAugment ve Back-translation Test Sonuçları

Yukardaki görselde görüldüğü üzere RandAugment ve Back-translation tekniklerinin her ikisi de uygulandıkları veri setinden üretilen modelin yaptığı tahmin sonuçlarındaki hatayı(error) azaltmışlardır.

Orijinal tutarlılık eğitimi(Consistency training) makalesine buradan ulaşabilirsiniz. Bu konu hakkında detaylı bilgi için burayı da ziyaret ediniz.

Sonuç

Yazımızın ikinci kısmının da sonuna geldik. Umuyoruz ki yararlı bilgiler verebilmişizdir. Veri artırımı; ses, görüntü, metin hangi türde olursa olsun veri bilimi ve makine öğrenimi ile uğraşan herkesin projelerinde uygulaması gereken modellerin başarımlarını dikkat değer miktarda arttırmıştır.

Bol doğruluk oranlı modeller sizinle olsun! Bir sonraki yazımızda görüşene dek hoşça kalınn :)

Kaynaklar

  1. Data Augmentation when you have Limited Data https://www.kdnuggets.com/2018/05/data-augmentation-deep-learning-limited-data.html
  2. Data Augmentation Types for Image Classification https://www.researchgate.net/figure/Data-Augmentation-Types_fig4_312303822
  3. Research Guide: Data Augmentation for Deep Learning https://heartbeat.fritz.ai/research-guide-data-augmentation-for-deep-learning-7f141fcc191c
  4. AutoAugment: Learning Augmentation Strategies from Data (CVPR 2019) https://arxiv.org/pdf/1805.09501v3.pdf https://arxiv.org/abs/1805.09501
  5. Fast AutoAugment Algorithm(2019) https://arxiv.org/pdf/1905.00397v2.pdf https://arxiv.org/abs/1905.00397v2
  6. Learning Data Augmentation Strategies for Object Detection(2019) https://arxiv.org/abs/1906.11172v1
  7. SpecAugment: A Simple Data Augmentation Method for Automatic Speech Recognition (Interspeech 2019) https://arxiv.org/pdf/1904.08779v2.pdf https://arxiv.org/abs/1904.08779v2
  8. EDA: Easy Data Augmentation Techniques for Boosting Performance on Text Classification Tasks (EMNLP-IJCNLP 2019) https://arxiv.org/pdf/1901.11196v2.pdf https://arxiv.org/abs/1901.11196v2
  9. UDA: Unsupervised Data Augmentation for Consistency Training (2019) https://arxiv.org/pdf/1904.12848v4.pdf https://arxiv.org/abs/1904.12848v4
  10. RandAugment Algorithm for Image Classification https://arxiv.org/abs/1909.13719
  11. Back Translation Algorithm for Text Classification https://arxiv.org/abs/1908.05204
  12. Improved Regularization of Convolutional Neural Networks with Cutout https://arxiv.org/abs/1908.05204

--

--

Yusuf ANI
novaresearchlab

Bilgiye sahip olarak doğmuş birisi değilim. Öğretmeyi seviyorum ve öğrenmeye çalışıyorum — Konfüçyüs