<!DOCTYPE article PUBLIC "-//NLM//DTD JATS (Z39.96) Journal Archiving and Interchange DTD v1.0 20120330//EN" "JATS-archivearticle1.dtd">
<article xmlns:xlink="http://www.w3.org/1999/xlink">
  <front>
    <journal-meta />
    <article-meta>
      <title-group>
        <article-title>Derin Öğrenme Algoritmalarında Model Testleri: Derin Testler</article-title>
      </title-group>
      <contrib-group>
        <contrib contrib-type="author">
          <string-name>Ferhat Şükrü Rende</string-name>
          <email>ferhat.rende@tubitak.gov.tr</email>
          <xref ref-type="aff" rid="aff0">0</xref>
          <xref ref-type="aff" rid="aff1">1</xref>
          <xref ref-type="aff" rid="aff2">2</xref>
        </contrib>
        <contrib contrib-type="author">
          <string-name>Gültekin Bütün</string-name>
          <xref ref-type="aff" rid="aff0">0</xref>
          <xref ref-type="aff" rid="aff1">1</xref>
          <xref ref-type="aff" rid="aff2">2</xref>
        </contrib>
        <contrib contrib-type="author">
          <string-name>Şamil Karahan</string-name>
          <email>samil.karahan@tubitak.gov.tr</email>
          <xref ref-type="aff" rid="aff0">0</xref>
          <xref ref-type="aff" rid="aff1">1</xref>
          <xref ref-type="aff" rid="aff2">2</xref>
        </contrib>
        <aff id="aff0">
          <label>0</label>
          <institution>Anahtar Kelimeler. Deep Learning</institution>
          ,
          <addr-line>Supervised Learning, Test Automation</addr-line>
        </aff>
        <aff id="aff1">
          <label>1</label>
          <institution>Anahtar Kelimeler. Derin Öğrenme</institution>
          ,
          <addr-line>Eğitmenli Öğrenme, Test Otomasyonu</addr-line>
        </aff>
        <aff id="aff2">
          <label>2</label>
          <institution>Bilişim Teknolojileri Enstitüsü, TÜBİTAK BİLGEM</institution>
          ,
          <addr-line>Gebze, Kocaeli</addr-line>
        </aff>
      </contrib-group>
      <fpage>54</fpage>
      <lpage>59</lpage>
      <abstract>
        <p>Deep learning, which is a new area of machine learning, has brought the success of recently developed artificial intelligence applications to very high levels. Most of the algorithms that are proposed in ImageNet contest as well as studies published at computer vision conferences, such as CVPR and ICLR, are based on deep learning. Developing deep learning algorithms depends on high amounts of labeled data and training. Algorithms are architecturally complex and the number of parameters trying to be learned during training is mostly in millions range. Training is performed using iterations and during the iterations a high number of models obtained. These obtained models need to be tested with several different test sets. In this study, the automatic testing of the work models obtained from the results of deep learning algorithm training using multiple datasets, work done for automatic determination of the model to be used as results of these tests and experiences gained will be explained.</p>
      </abstract>
    </article-meta>
  </front>
  <body>
    <sec id="sec-1">
      <title>Makine Öğrenmesi</title>
      <p>Makine öğrenmesi; çeşitli matematiksel yöntemler kullanarak mevcut verilerden
bilgi edinen ve edindiği bu bilgi ile tahminler yapabilen yöntemler bütünü olarak ele
alınabilir. Uygulama alanı çok geniş olmakla birlikte en yaygın olanları; optik karakter
tanıma, yüz tanıma, obje tanıma, konuşulan dili anlama, tıbbi teşhis tahmini, hava
tahmini, istenmeyen posta filtreleme gibi uygulamalardır.</p>
      <p>Makine öğrenmesi algoritmaları eldeki ham veriyi (Gözlem - Observation)
kullanmadan önce bu verileri temsil eden daha anlamlı veriler (Öznitelik - Feature) çıkartır.
Her bir gözlem belirli bir kategoriye (Etiket - Label) ait olarak tanımlı olabilmektedir.
Eğitim aşamasında; algoritmada kullanılan matematiksel metotlar mevcut öznitelikleri
(Eğitim verisi – Training Data) işler ve ortaya bir model çıkartır. Artık bu model
yardımı ile herhangi bir gözlem (Test Verisi – Test Data) hakkında tahminde bulunulabilir.
Eğer eğitim aşamasında etiketler kullanıldı ise (Gözetimli Eğitim – Supervised
Training) model, bir gözlemin kategorisini tahmin edebilmekte; eğer eğitim aşamasında
etiketler kullanılmadı ise (Gözetimsiz Eğitim – Unsupervised Training) model,
gözlemleri birbirlerine benzer olmalarına göre gruplayabilmektedir. Yüz tanıma problemi
üzerinden örnek vermek gerekirse; elimizde bulunan yüz görüntüleri gözlemlerimiz, yüz
görüntüsünün kime ait olduğu bilgisi etiketimiz, iki göz arası mesafenin piksel
cinsinden uzunluğu, saç rengi veya ten rengi gibi bilgiler veya bir öznitelik çıkarıcı algoritma
ile elde edilen bilgi de özniteliklerimiz olmaktadır.
1.2</p>
    </sec>
    <sec id="sec-2">
      <title>Derin Öğrenme</title>
      <p>
        Derin Öğrenme algoritmaları yapay sinir ağlarının (YSA) yapısal olarak daha
karmaşık hali olarak düşünülebilir. YSA algoritmaları insandaki öğrenme işleyişinden
hareketle geliştirilmiştir. Biyolojik sinir sisteminde bulunan nöronların birbirleri ile ilişki
kurması gibi YSA sistemlerinde de nöron şeklinde tanımlanan yapılar birbirleri ile
bağlantılı olacak şekilde modellenmişlerdir. Algoritmanın bu şekilde; öğrenme, hafızaya
alma ve veriler arasındaki ilişkiyi ortaya çıkarma kapasitesine sahip olacağı
düşünülmüştür [
        <xref ref-type="bibr" rid="ref1">1</xref>
        ]. Derin Öğrenme algoritmalarının makine öğrenmesindeki var olan
algoritmalardan ayrılan yönü; çok yüksek miktarda veriye ve karmaşık yapısı ile de bu yüksek
veriyi işleyebilecek çok yüksek hesaplama gücü olan donanımlara ihtiyaç duymasıdır.
Son yıllarda özellikle görüntü işleme alanında etiketli veri sayısı milyon mertebelerini
geçmiştir [2]. Ekran kartı temelli hesaplama gücü alanındaki büyük ilerlemelerin de
etkisiyle Derin Öğrenme algoritmaları çok popüler olmuştur [3]. Derin Öğrenme
yöntemleri ile birçok alanda bilinen en iyi başarı düzeyleri (State of the art) çok daha
yukarılara çıkmıştır [4]. Yüksek veri ve hesaplama gücü olanaklarına sahip büyük
teknoloji firmaları (Google, Facebook, Microsoft, Nvidia vb.) tarafından da kullanılıp
ürünlerine entegre edilmektedir. Aynı zamanda bu teknoloji firmaları kendi Derin Öğrenme
yazılım kütüphanelerini geliştirici topluluklara da açarak bu alandaki hızlı ilerlemeye
destek olmaktadırlar.
1.3
      </p>
    </sec>
    <sec id="sec-3">
      <title>Test Otomasyonu</title>
      <p>Test otomasyonunun amacı, hazır test otomasyon araçları veya ihtiyaca yönelik
geliştirilen test otomasyon araçları kullanılarak testlerin otomatik koşturulması ve kontrol
edilmesidir. Test otomasyonu sürekli teslimat ve sürekli test durumları için kritik
öneme sahiptir [5].</p>
      <p>Test otomasyon araçları aşağıdaki ihtiyaçları karşılamak için geliştirilip işletilmektedir:
 Genellikle tekrar ihtiva eden fonksiyonları/görevleri bir otomasyon süreci altına
almak veya testlerin planlanması, tasarlanması, raporlanması ve gözlemlenmesi
gibi manuel işlemlerin otomatize etmek,
 Manuel olarak işletildiğinde önemli ölçüde kaynak gereksinimi doğuran işlemleri
otomasyona geçirmek,
 Testlerin güvenilirliğini artırmak,
 Manuel olarak yürütülemeyecek durumları çözebilmek [6].
2</p>
      <p>Yapılan Çalışma</p>
      <p>Derin Öğrenme algoritmalarının eğitiminin zaman açısından maliyetli olması
dolayısı ile test otomasyon yöntemlerinin uygulanması kaçınılmazdır. Deneyim
çalışmamızın ana konusu bu test otomasyonu aracının geliştirilmesidir. Geliştirdiğimiz test
otomasyonu aracının tasarımı Şekil 1’de görülmektedir.</p>
      <p>Modeller</p>
      <p>Nihai
Model &amp;
Raporlar</p>
      <p>Test</p>
      <p>Kümeleri
Üretim Ortamı</p>
      <p>Ürün Ortamı
Şekil 1. Test Otomasyonu Aracı Tasarımı</p>
      <sec id="sec-3-1">
        <title>Bu aracı geliştirmemizin amacı:</title>
        <p> Derin Öğrenme algoritmalarının eğitimi sırasında ortaya çıkan çok sayıdaki
modelin başarı hesaplamalarını yapmak,
 Farklı test kümelerinde başarı kriterlerini hesaplamak ve koşulları sağlayan
birçok model arasından -belirlenmiş bir mantığa bağlı şekilde- otomatik olarak
model seçimlerini yapmak,</p>
      </sec>
      <sec id="sec-3-2">
        <title>Eğitim</title>
        <p>Test
Otomasyonu
 Eğitimlerin uzun sürmesi dolayısı ile donanım cihazlarının kullanımını
maksimize etmek, dolayısı ile algoritma eğitimi süresi boyunca ortaya çıkmış
modellerin testlerini yapmak (ayrı bir zaman dilimi ayırmadan),
 Eğitim sırasında algoritmanın test kümelerinde yeterli başarıyı
yakalamayacağının önceden tespitini yapıp zaman kaybetmeden tekrar eğitim aşamasına dönmek.</p>
        <p>Geliştirdiğimiz test otomasyon aracı sayesinde, eğitimlerimiz devam ederken o ana
kadar ortaya çıkan modellerin testleri otomatik olarak yapılıp raporlanırken, başarı
eğrileri anlık olarak çizdirilmektedir. Tüm modellerin tüm test kümeleri ile testleri biter
bitmez nihai model seçimi otomatik olarak yapılıp, gerekli olan öğeler üretim
ortamından (Development Environment) ürün ortamına (Production Environment) otomatik
olarak aktarılmaktadır. Böylece yoğun eğitim içeren algoritma geliştirme süreci, test
otomasyonu yaklaşımı ile yoğun ve derinlemesine testler yapılarak yönetilebilmektedir.
Eğitim Aşaması: Çalışmamızın konusu iki boyutlu görüntülerin Derin Öğrenme
algoritması ile sınıflandırılmasıdır. Son yıllarda büyük başarılar elde eden [7] [8] [9],
görüntüler ile çalışmak üzere özelleştirilmiş Derin Öğrenme algoritmalarından [10]
“Convolutional Neural Networks” (CNN) yöntemi kullanılmıştır. Eğitim verimiz yaklaşık
yarım milyon görüntüden oluşmaktadır, modelimizde yaklaşık 5 milyon parametre
hesaplanmakta ve dolayısı ile eğitim süremiz GPU kartlar kullanmamıza rağmen,
günlerhaftalar düzeyinde olmaktadır. Bir eğitim sonucunda yaklaşık 300 farklı model ortaya
çıkmaktadır. Ortaya çıkan modeller test sistemine gönderilmektedir.</p>
        <p>Test Aşaması: Her eğitim sonrası oluşan 300 farklı model, eğitim verisiyle örtüşmeyen
aynı probleme ait en az 3 farklı test kümesi ile test edilmekte ve modellerin her bir test
seti için belirlenen başarı eşiklerini geçip geçmediği test aracının grafik ara yüzünden
ilgili algoritmanın sorumlusu tarafından kontrol edilebilmektedir. 3 farklı test seti için
başarı eşiklerini geçebilen bir model elde edilemediği/edilemeyeceği anlaşıldığı
takdirde ilgili algoritma için testler durdurulup; tekrar eğitim aşamasına dönülerek
hiperparametre değişimi, farklı bir ön işleme uygulama, model yapısında değişiklik gibi
çalışmalar yapılır. 3 farklı test seti için başarı eşiklerini geçebilen modeller mevcut ise
ki bu durumda algoritmanın düzgün bir şekilde yakınsadığı düşünülmelidir- mevcut
modeller arasından en uygun olanının seçimi için model seçimi aşamasına geçilir.
Model Seçimi Aşaması: Bu aşamada elimizde 3 farklı test verisinde de başarı
kriterlerini sağlayan en az bir model bulunmaktadır. Bir model olduğu durumda herhangi bir
seçime gerek duymaksızın ilgili model nihai model olarak belirlenir ve ürün ortamına
tüm öğeleri ile birlikte aktarılır. Eğer birden fazla model başarı kriterlerini sağlıyorsa
hangi modelin seçileceğine karar verilmesi gerekir. Örnek vermek gerekirse, herhangi
bir model 3. test kümesinde en yüksek başarıyı sağlarken, 2. veya 1. test kümelerinde
en yüksek başarıyı veren model aynı model olmayabilmektedir. Bu durum Tablo 1’de
sayısal olarak ele alınmıştır. Buna göre; eğitim neticesinde K adet modelin ortaya
çıktığı düşünülecek olursa, ilk test kümesine göre karar verilirse 7. modeli, ikinci test
kümesine göre karar verilecek olursa 4. modeli, üçüncü test kümesine göre karar verilirse
2. modelin seçilmesi gerekir. Bu durumda hangi modelin seçileceğine aşağıdaki
yöntemler ile karar verilebilir:
1. Müşteri verisine en yakın olduğu düşünülen test kümesine göre karar verilir,
2. Her bir veri seti için tüm modellerin başarıdan verilen ödün miktarınca maliyetleri
çıkarılır ve en az maliyetli model seçilir.
3. Başarıdan verilen ödün miktarına göre maliyet hesaplanırken test kümelerine belirli
ağırlıklar verilerek ağırlıklandırılmış bir maliyet çıkarılır. Böylece ilk yöntem ile
ikinci yöntemin avantajları birleştirilmeye çalışılır.</p>
        <p>Maliyet hesabı yapmamızdaki amaç en genellenebilir modelin belirlenebilmesidir.</p>
        <p>Tablo 1. Modellerin Test Kümelerindeki Başarıları</p>
      </sec>
    </sec>
    <sec id="sec-4">
      <title>Model No</title>
    </sec>
    <sec id="sec-5">
      <title>Test Kümesi 1</title>
    </sec>
    <sec id="sec-6">
      <title>Test Kümesi 2</title>
    </sec>
    <sec id="sec-7">
      <title>Test Kümesi 3</title>
    </sec>
    <sec id="sec-8">
      <title>Test Kümesi N Başarısı Başarısı Başarısı</title>
      <p>Başarısı</p>
      <p>Maliyet Değeri: Test kümesi i için, j. modelin yüzdesel başarısı TKij olsun, j=1,…K
olmak üzere, TKi* i. test kümesinde elde edilen en yüksek başarıyı gösterirken, j.
modele ait maliyet değeri Denklem 1’deki gibi tasarlanmıştır.</p>
      <p />
      <p>( ) = ∑ =1| 
−⁡  ∗| .</p>
      <p>(1)</p>
      <p>Testler neticesinde maliyeti en düşük model nihai model olarak seçilir. Tablo 1 için
bu denklem uygulandığı takdirde 7. modelin maliyeti |95-95| + |90-92| + |97-99| = 4 ile
en düşük maliyet olacağından 7. model nihai olarak kabul edilir ve ürüne entegre edilir.
Dikkat edilecek olursa seçilecek nihai modelin herhangi bir test kümesi için en yüksek
değeri vermeme durumları oluşabilmektedir. Örneğin 6. modelin test kümesi 2’deki
başarısı %89 yerine %91 olsa idi; otomatik seçilecek model |94-95| + |91-92| + |98-99|
= 3 olacağından, -herhangi bir test kümesinde en yüksek değeri vermediği halde- model</p>
      <sec id="sec-8-1">
        <title>6 olacaktır.</title>
        <p>Derin Öğrenme için oluşturduğumuz “Derin Test Sistemi”, algoritmanın eğitimi
süreci ile başlamakta, üretilen her modeli tespit edip ilgili modeli anında test etmek
şeklinde çalışmaktadır. Böylece eğitim süresinin bitiminde tüm testlerimizi de bitirmiş
olabilmekteyiz. Dahası olumsuz bir eğitiminin sonuçları erkenden tespit edilebildiğinden,
gerekli olduğunda eğitim durdurulmakta ve zaman kayıplarının önü alınmaktadır.
%75
%80
%81
%92
%91
%89
%90
…
Elde ettiğimiz deneyimlerden hareketle yapılabilecek çıkarımlar aşağıdaki gibidir:
 Derin Öğrenme algoritmalarının geliştirilmesi için test aşamasının dikkatli ve
detaylı şekilde planlanması, bir test otomasyon ortamının kurulması, algoritmanın
daha kısa sürede geliştirilebilmesi için çok önemlidir.
 Her test kümesi için oluşan başarı eğrisi eğitim süresince ara ara incelenmeli, test
başarıları beklenmedik şekilde ilerliyorsa algoritma eğitimi durdurulmalı ve
gerekli değişiklikler yapılarak yeni model için eğitim aşamasına dönülmelidir.
 Derin Öğrenme algoritmalarının eğitiminde zor manuel iş yüklerinin çokluğu test
otomasyonun yapılmasını gerektirmektedir.</p>
        <p>Kaynakça</p>
      </sec>
    </sec>
  </body>
  <back>
    <ref-list>
      <ref id="ref1">
        <mixed-citation>
          [1] «Wikipedia,» [Çevrimiçi]. Available: https://tr.wikipedia.org/wiki/Yapay_
          <article-title>sinir_a%C4%9Flar%C4%B1</article-title>
          .
          <source>[Erişildi: 16 Haziran</source>
          <year>2016</year>
          ].
        </mixed-citation>
      </ref>
      <ref id="ref2">
        <mixed-citation>
          <string-name>
            <surname>«</surname>
          </string-name>
          image-net,» [Çevrimiçi]. Available: http://www.image-net.org/about-stats.
          <source>[Erişildi: 16 Haziran</source>
          <year>2016</year>
          ].
        </mixed-citation>
      </ref>
      <ref id="ref3">
        <mixed-citation>
          «Nvidia,» [Çevrimiçi]. Available: http://www.nvidia.com/content/events/geoInt2015/LBrown_DL.pdf.
          <source>[Erişildi: 16 Haziran</source>
          <year>2016</year>
          ].
        </mixed-citation>
      </ref>
      <ref id="ref4">
        <mixed-citation>
          <article-title>«devblogs</article-title>
          .nvidia,» [Çevrimiçi]. Available: https://devblogs.nvidia.com/parallelforall/mocha-jl
          <article-title>-deep-learning-julia/</article-title>
          .
          <source>[Erişildi: 16 Haziran</source>
          <year>2016</year>
          ].
        </mixed-citation>
      </ref>
      <ref id="ref5">
        <mixed-citation>
          «Wikipedia,» [Çevrimiçi]. Available: https://en.wikipedia.org/wiki/Test_automation.
          <source>[Erişildi: 16 Haziran</source>
          <year>2016</year>
          ].
        </mixed-citation>
      </ref>
      <ref id="ref6">
        <mixed-citation>
          <string-name>
            <surname>«Sertifikalı Test Uzmanı Temel Seviye Ders Programı</surname>
          </string-name>
          ,»
          <source>International Software Testing Qualifications Board</source>
          ,
          <year>2011</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref7">
        <mixed-citation>
          <string-name>
            <given-names>A.</given-names>
            <surname>Krizhevsky</surname>
          </string-name>
          ,
          <string-name>
            <given-names>I. Sutskever ve G. E.</given-names>
            <surname>Hinton</surname>
          </string-name>
          , «
          <article-title>Imagenet classification with deep convolutional neural networks</article-title>
          ,
          <source>» %1 içinde Advances in neural information processing systems</source>
          ,
          <year>2012</year>
          , pp.
          <fpage>1097</fpage>
          -
          <lpage>1105</lpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref8">
        <mixed-citation>
          <string-name>
            <given-names>C.</given-names>
            <surname>Szegedy</surname>
          </string-name>
          , W. Liu,
          <string-name>
            <given-names>Y.</given-names>
            <surname>Jia</surname>
          </string-name>
          ,
          <string-name>
            <given-names>P.</given-names>
            <surname>Sermanet</surname>
          </string-name>
          ,
          <string-name>
            <given-names>S.</given-names>
            <surname>Reed</surname>
          </string-name>
          ,
          <string-name>
            <given-names>D.</given-names>
            <surname>Anguelov</surname>
          </string-name>
          ,
          <string-name>
            <given-names>D.</given-names>
            <surname>Erhan</surname>
          </string-name>
          ,
          <string-name>
            <surname>V.</surname>
          </string-name>
          <article-title>Vanhoucke ve A. Rabinovich, «Going deeper with convolutions</article-title>
          ,
          <source>» %1 içinde Proceedings of the IEEE Conference on Computer Vision and Pattern Recognition</source>
          ,
          <year>2015</year>
          , pp.
          <fpage>1</fpage>
          -
          <lpage>9</lpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref9">
        <mixed-citation>
          <string-name>
            <given-names>H.</given-names>
            <surname>Kaiming</surname>
          </string-name>
          ,
          <string-name>
            <given-names>Z.</given-names>
            <surname>Xiangyu</surname>
          </string-name>
          ,
          <string-name>
            <surname>R.</surname>
          </string-name>
          <article-title>Shaoqing ve S. Jian, «Deep Residual Learning for Image Recognition,» CoRR</article-title>
          , cilt abs/1512.03385,
          <year>2015</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref10">
        <mixed-citation>
          <string-name>
            <surname>B. B. Le Cun</surname>
            ,
            <given-names>J. S.</given-names>
          </string-name>
          <string-name>
            <surname>Denker</surname>
            ,
            <given-names>D.</given-names>
          </string-name>
          <string-name>
            <surname>Henderson</surname>
            ,
            <given-names>R. E.</given-names>
          </string-name>
          <string-name>
            <surname>Howard</surname>
          </string-name>
          , W. Hubbard ve L. D. Jackel, «
          <article-title>Handwritten digit recognition with a back-propagation network</article-title>
          ,
          <source>» %1 içinde Advances in neural information processing systems</source>
          ,
          <year>1990</year>
          .
        </mixed-citation>
      </ref>
    </ref-list>
  </back>
</article>