Veri Artırımı / Data Augmentation

Psikologçum
novaresearchlab
Published in
5 min readFeb 6, 2020

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

Yazının ilk kısmında “ Veri Artırımı Nedir? ” ve “ Niçin Yapılmalıdır? ” sorularına yanıt bulacaksınız. İ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.

Napoleon Bonaparte

Rivayete göre Napoleon’a sormuşlar :

“Bir savaşı kazanmak için ne gerekir ?”

“Para , para ve daha çok para”

Eğer aynı soruyu modelin başarını artırmak için ne gerekir diye sorsak , bir çoğumuzun aklına gelen ilk cevap data(veri), data ve daha çok data olacaktır. Verinin bu kadar değerli olduğu ortamda yeni nitelikli verileri elde etmek her zaman en uygun seçenek olmayabilir. Bu duruma çözüm olarak elimizdeki verileri kullanarak yeni veriler üretmek yani veri artırımı yapmak çoğu zaman istediğimiz sonuçları elde etmemize katkıda bulunacaktır.

1.1 — Veri Artırımı Nedir ?

“ Veri artırımı orijinal verileri değiştirerek yeni veri noktaları üretme işlemidir.”

Veri artırımı, ön işlem sürecinde mevcutta bulunan eğitim verisi örneklerinin resimler için döndürme, öteleme, kırpma, soldurma, ölçeklendirme; sesler için frekans maskeleme, ölçeklendirme; metinler için eş anlamlısıyla değiştirme, rastgele kelime silme vb. çeşitli teknikler ile işlenmiş sentetik(artificial) kopyalarını oluşturuyor ve bu kopyaları mevcut eğitim verisine ekleyerek büyük bir eğitim verisi setini kullanıma hazır hale getiriyor.

TrainSet_1 = Orijinal Veri Seti

TrainSet_1 den veri artırımıyla sentetik örnekler üretilir.

TrainSet_2 = TrainSet_1 + Sentetik(yapay) Örnekler

1.2 — Veri Artırımı Neden Yapılmalıdır ?

Veri artırımı yapılmasının temel amacı modeli yeterince veri ile destekleyerek daha isabetli tahminler yapmasını sağlamaktır .

Sinir ağları yapıları itibariyle verilen bir veri kümesinin özelliklerini çıkarmak için tasarlanmıştır. Fakat küçük veri kümeleri modellerin veriyi ezberlemesine (over-fit) neden olarak gerçek hayat problemlerinde düşük doğruluk(accuracy) değeri almamıza neden olabilir.

Ne demek istediğimizi örneklerle açıklayalım .

Figür 1- 6 rakamı için veri artırımı
Figür 1– 6 Rakamı İçin Veri Artırımı

Yukarıdaki görselde el yazısıyla yazılmış bir 6 rakamını görüyoruz. Biliyoruz ki rakamları tanımaya çalışan başarılı bir yapay zeka modeli , rakamlar ne kadar düzensiz ( sağa veya sola yatmış , ters , ötelenmiş ) olsa bile tanıyabilmelidir. Fakat elimizde sınırlı sayıda 6 rakamı var ve her zaman internette bunla ilgili bir veri kümesi aramak kolay olmayabilir. Elimizdeki 6 rakamlarımızı işleyerek modelimize yeni veriler üretip daha güzel sonuçlar elde edebiliriz.

Figür 2 — Veri Artırımı Yapılmış Bir Sincap Fotoğrafı
Figür 3 -Veri Artırımı Yapılmış Köpek Resmi

“ Veri artırımı modelin ezberleme(overfitting) problemini ortadan kaldırır ! ”

Açıkçası yapay sinir ağlarının başlangıçta pek zeki olduğunu söyleyemeyiz. Bizim vereceğimiz verilerin niteliği ve niceliğine göre öğrenimi sonunda zeki sayılabilirler. Örneğin Figür-3'te bulunan köpek resmine göz atalım . Bir sınıflandırma algoritmasında yapay sinir ağının temel olarak yaptığı iş resimdeki piksel değerine bakarak bir köpeğin piksellerinin dizilişinin neye benzediğini kendi hücrelerinde tutmak . Eğer veri artırımı yapmadan sadece orijinal halleriyle köpek resimlerini modele verirsek ve bir şekilde genel olarak veri kümemizdeki köpekler sol tarafa bakıyorsa, model köpeklerin sadece sol tarafa bakan nesneler olduğunu düşünmesi çok normaldir. Veri artırımı uygulandıktan sonra yeni eğitim veri setinde benzer(relevant) örneklerin sayısı artmış oldu ve sonuç olarak veri artırımı, modelin ezberleme(overfit) probleminin de önüne geçmiş oldu.

“ Test setinizin % 82 sınıflandırma doğruluğunu(accuracy) , % 91.1 değerine çıkarmak ister misiniz ?”

Yukarıda farklı yöntemlerle veri artırımı uygulanan bir resim görüyorsunuz. Bu örnek üzerinden veri artırımı yöntemlerini inceleyelim.

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

H + RC : Rastgele uygulanan yatay çevirme ve rastgele seçilen sabit boyutlu kırpma tekniklerinden oluşan veri artırımı yöntemi

R360 : Rastgele seçilen dönme açısı tekniğinden oluşan veri artırımı yöntemi

RCS : Rastgele ölçeklendirme ve rastgele bölgesel kırpma tekniklerinden oluşan veri artırımı yöntemi

RCSIO : Rastgele ölçeklendirme ve rastgele bölgesel kırpma tekniklerinden oluşan veri artırımı yöntemi (kırpma boyutu orijinal resmin boyutunu aşabilir, kenarlıklar ortalama eğitim görüntüsünün renk tonu ile doldurulur)

RO : Rastgele gri gölge ekleme tekniğinden oluşan veri artırımı yöntemi

Yukarıdaki tabloda görüldüğü üzere veri artırımı yöntemleri uygulandıktan sonra, test veri seti sınıflandırma doğruluğu(accuracy) artmış ve sınıflandırma hatası(error) azalmıştır.

Başlangıçta % 82 olan doğruluk oranımız, ön işleme aşamasındaki eğitim veri setine RO + RCS yöntemi uygulandıktan sonra % 91.1 oranına yükselmiştir.

Bu doğruluk artışını kendi uygulamalarımızda da görmek istiyorsak veri artırımını gerçek anlamıyla benimseyerek ön işlem aşamalarımıza dahil etmeliyiz.

Buraya kadar veri artırımının ne olduğunu ve neden kullanıldığını açıklamaya çalıştık.

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 geliştirilmiş veri artırımı stratejilerini tanıyacağız. Yazımızın ikinci kısmına buradan ulaşabilirsiniz :)

Kaynaklar

  1. A survey on Image Data Augmentation for Deep Learning-Data Augmentation as Overfitting Solution https://link.springer.com/article/10.1186/s40537-019-0197-0
  2. Data Augmentation when you have Limited Data https://www.kdnuggets.com/2018/05/data-augmentation-deep-learning-limited-data.html
  3. Data Augmentation Types for Image Classification https://www.researchgate.net/figure/Data-Augmentation-Types_fig4_312303822
  4. Research Guide: Data Augmentation for Deep Learning https://heartbeat.fritz.ai/research-guide-data-augmentation-for-deep-learning-7f141fcc191c
  5. AutoAugment: Learning Augmentation Strategies from Data (CVPR 2019) https://arxiv.org/pdf/1805.09501v3.pdf https://arxiv.org/abs/1805.09501
  6. Fast AutoAugment Algorithm(2019) https://arxiv.org/pdf/1905.00397v2.pdf https://arxiv.org/abs/1905.00397v2
  7. Learning Data Augmentation Strategies for Object Detection(2019) https://arxiv.org/abs/1906.11172v1
  8. 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
  9. 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
  10. UDA: Unsupervised Data Augmentation for Consistency Training (2019) https://arxiv.org/pdf/1904.12848v4.pdf https://arxiv.org/abs/1904.12848v4
  11. RandAugment Algorithm for Image Classification https://arxiv.org/abs/1909.13719
  12. Back Translation Algorithm for Text Classification https://arxiv.org/abs/1908.05204

--

--