Derin Öğrenme Eğitim Serisi — Binary Classification

Ozan Yurtsever
IKU Deep Learning
Published in
4 min readNov 27, 2018

Merhaba. Son zamanlarda, Coursera üzerinden Andrew NG’nin, “Deep Learning Specialization” serisini almaktayım. Bu seriyi almaya devam ettiğim dönem boyunca, hem kendim için tekrar amaçlı, hem de ingilizcesi yeterli olmayan arkadaşlara Türkçe kaynak oluşturabilmek amacıyla, öğrenimlerimi buradan yazıyor olacağım. Öncelikle şunu belirtmeliyim, ben de bu konuda oldukça yeniyim. Burada verdiğim bilgiler, tamamen aldığım kurstan öğrendiklerimden oluşacak, okuduğun bilgileri bolca sorgulamanızı şimdiden tavsiye ediyorum. Hadi başlayalım !

Derin öğrenme nedir, yapay sinir ağları ne işe yarar gibi soruların cevaplarını bu yazımda ele almayacağım. Bu soruların cevapları halihazırda bolca internette bulunmakta, o yüzden direk konuya dalmak istiyorum. İlk anlatacağım şey “Binary Classification” yani “İkili Sınıflandırma”.

Binary Classification

İkili sınıflandırma, bir sınıflandırma problemini iki ayrı sonuç ile böler. Bunlar “1” ve “0”dır. Mesela elimizde 100 bin adet kişiye ait banka hesaplarının tutulduğu bir veri seti olduğunu düşünelim. Bu veri seti üzerinde “Hacklenmiş” ve “Güvenli” olarak, iki ayrı sınıflandırma uygulayabiliriz. Bu sınıflandırma, verimizi iki ayrı bölümde sınıflandıracak ve etiketlendirecektir. Bir diğer örnek ise, bu alanda en çok kullanılan kedi örneğidir. Bilgisayara bir resim verilir, ve bu resimde kedi olup olmadığının bulunması istenir. Bilgisayarın ikili sınıflandırma yaparak verebileceği iki adet dönüt vardır, “1” ve “0”. Bizde derin öğrenmeye giriş yaparken, adım adım kendi yapay sinir ağımızı oluşturup, bilgisayarımıza bir resimde kedi olup olmadığını başarılı bir şekilde nasıl tahmin ettirebileceğimizi göreceğiz.

Bir dijital resimin, en basit tabirle pixellerden oluştuğunu bilmeyeniniz yoktur. Renkli bir resim, bilgisayarımızda Red(Kırmızı), Green(Yeşil), Blue(Mavi) olmak üzere üç ayrı matriste tutulurlar. Bu matrislerin hepsinin boyutu birbirine ve resmin kendisinin boyutuna eşittir. Yani, 64×64 pixellik bir resim için her bir RGB matrisi, 64×64 boyutundadır.

Resimde pixelleri gösteren matris hücreleri, renk yoğunluğunu belirtir. 0–255 arasında renk yoğunlukları alabilen her bir hücre, topluca bir resmi oluştururlar. Ancak resmin bilgisayarımızda matris şeklinde depolanış biçimi, bizim derin öğrenme modelleri oluşturma amacımıza tam olarak hizmet etmemektedir. Bizim elimizdeki bu resim matrisini, derin öğrenme metodlarına uygun bir biçime sokmamız gerekmekte. Bu biçimin adı, “Feature Vector” yani “Öznitelik Vektörü”. Bu formun amacı, “feature” yani bir objenin özniteliklerini numerik ya da sembolik olarak ifade eden değerleri bir vektör altında, işlenmeye uygun bir biçimde depolamak. Yukarıda ki kedi resmi örneğinin feature vector formunu görelim;

Gördüğünüz gibi, resim matrislerimizde ki renk yoğunluğu(intensity) değerleri, bir vektör ya da diğer bir isimle sütun matrisi olarak alt alta depolandı. Feature vector’u, x ile belirteceğiz. Bu vektörün boyutu, “nx” ile ifade edilir. nx ise 64x64x3 yani 12288 boyutundadır. Yani tam tamına 12288 tane yoğunluk değerini, tek sütunlu bir vektörde alt alta depoladık. Bu seri boyunca işimize yarayacak diğer notasyonlara da göz atarsak, “m” veri setimizde ki toplam “train” yani “eğitim” örneklerimizin sayısını belirtir. Eğitim örneklerinden bahsetmişken, tek bir eğitim örneği şuna benzer: (x,y). Burada x, nx boyutlu girdi verilerinden oluşan bir matrise üye eleman iken, y ise 0 ya da 1 olabilme seçeneğine sahip bir çıktı sonucudur. “m” adet eğitim örneğini göstermek için notasyonumuz şu şekilde olacaktır;

Şu ana kadar gördüğümüz notasyonlar, parça parça sizin için anlamlandırması zor gelebilir. Ancak en sonunda, bu notasyonlardan öğrendiklerimizi birleştirirsek, elimizde derin öğrenmeye uygun bir X matrisi olacak. Öğrenme verilerini topluca koyacağımız bu matriste, verilerin sütunlar şeklinde sıralanması en verimli teknik olarak öne çıkmakta. Notasyonunu gösterdikten sonra, içeriğine bakalım;

Büyük X ile ifade ettiğimiz bu matris, bütün eğitim örneklerini bir arada tutuyor. Burada ki eğitim örnekleri, küçük x ile daha önce oluşturduğumuz, her biri farklı resimlere ait olan girdi feature vectorleri. Feature vector’lerin sütun vektörü olarak tutulduğunu hatırlayın, bu sebeple X matrisimiz, nx tane satırdan, ve m tane sütundan oluşmakta. Bunun yanında, her bir “x input feature vector”u için, bir ikili sınıflandırma sonucumuzun olması lazım. Unutmayın, bu sonuç bir tahmin değil, makinenin tahmin edebilmesini sağlayacak gerçek sonuçlardır. Bu sonuçları da Y vektöründe tutuyoruz;

Böylece binary classification’ın ne olduğuna dair özet bir bilgi edinmiş olduk. İleri konularda işimize yarayacak notasyonları öğrendik. Yazının başında da söylediğim gibi, bu yazının kaynağı direkt olarak Andrew Ng’nin derin öğrenme kursudur ve tamamen kişisel öğrenimlerimi pekiştirirken, Türkçe bir kaynak oluşturulmasına da fayda sağlamak amacını gütmekteyim. Bir sonra ki yazımda, Logistic Regression konusuna başlayacağız. Görüşmek üzere….

Kaynaklar:

Neural Networks and Deep Learning — Coursera

https://brilliant.org/wiki/feature-vector/

--

--

Ozan Yurtsever
IKU Deep Learning

Software Engineer and Entrepreneur primarily working on web technologies.