Subscribe Now

* You will receive the latest news and updates on your favorite celebrities!

Trending News

Blog

Beyond MNIST Example: Practical Convolutional NNs
Beyond MNIST Example: Practical Convolutional NNs
BT ve Yazılım

Beyond MNIST Example: Practical Convolutional NNs 

Merhabalar bu yazımda Bilkent Üniversitesi Endüstri Mühendisliği üçüncü sınıf lisans öğrencisi ve son iki yıldır Makine Öğrenimi ve Derin Öğrenim üzerine çalışmakta olan Mehmet Burak Sarıcı’nınBeyond MNIST Example: Practical Convolutional NNs” kursunu incelemeye çalıştım. Mehmet Burak aynı zamanda ML / DL’de Türkçe kaynakların bulunmadığını fark ederek bir Youtube / makineogrenmesi  kanalı açarak ML / DL algoritmalarını ve uygulamalarını öğrenmeye ve öğretmeye çalışmaktadır.

Kursun içeriğine geçmeden önce Deep Learning kavramı hakkında bilgisi olmayan kişiler için kısa bir giriş yazısı yazacağım ki bu alana girmek isteyen ve kursun inceleme yazısını okuyan kişilerin fikir sahibi olabilmelerini sağlayabilelim. Türkçe’ye Derin Öğrenme olarak çevirdiğimiz Deep Learning kavramı 2000’lerin başından beri yapay zekâ alanında çığır açtı ve yaygınlaşmaya başladı. Makine öğrenmesinden farkı ne diyecek olursanız makine öğrenimi tek katmanda işlem yaparken derin öğrenme birçok katmanda aynı anda işlem yapmaktadır. Örneğin, bir kedi resmi ile köpek resmini ayırmanız gerekmekte.

Makine öğrenmesinde tanımlamanız gereken parametreler vardır ama derin öğrenme bunları kendisi keşfeder. Sadece kedi ve köpek resimlerini sisteme eklediğinizde kendi kurallarını oluşturacaktır. Şimdilik bu kadar bilginin yeterli olacağını düşünüyorum. İlerleyen kısımlarda daha detaylı anlatmaya çalışacağım.





1) Kursta Neler Var?

Yapay sinir ağı (YSA), insan beyninin çalışma mekanizmasını taklit ederek beynin öğrenme, hatırlama, genelleme yapma yoluyla yeni bilgiler türetilme gibi temel işlevleri gerçekleştiren mantıksal yazılımlardır. Yapay sinir ağları görüntü ve ses tanıma, tahmin ve kestirim, tıp, üretim yönetimi gibi birbirinden farklı pek çok alanda kullanılmaktadır. Derin öğrenmenin kilit noktası bir nesnenin gösterimindeki farklı katmanlardır. Her katman ayrı ayrı önceden eğitilir. Bu derin öğrenme ağlarını diğer sinir ağlarından ayıran en önemli özelliktir. Örneğin bir resmi sınıflandırmak istiyorsak resmin alt katmanlarından işe başlamalıyız, yani piksellerden.

Eğitim dili İngilizce olmakla birlikte ele alınan sinir ağı Convolutional Neural Network (ConvNet ya da CNN) olarak adlandırılıyor. Türkçe’ye Evrişimsel Sinir Ağları olarak çevriliyor. Resim tanıma için kullanılan CNN, oldukça etkili bir mekanizmadır.

Bunlar da İlginizi Çekebilir  Startup Fikrinizi Test Edin & Hayata Geçirin - Girişimcilik

Eğitim içerisinde bir veri setine ihtiyacımız olacak. Bunun için Derin Öğrenme dünyasının “hello world”ü MNIST el yazısı ile rakam tanıma veri seti kullanılmıştır.

Bu set, çeklerin üzerindeki rakamları tanımak için oluşturulmuş ve Yapay Sinirsel Ağların ilk başarılarından olmuş. Keras’ta bu ve benzeri birkaç seti indiren kodlar hazır olarak gelmektedir. Import ederek bunları kullanabiliriz.

load_data() komutu veri setini internetten indirip kullanıma hazır hale getirecek. Burada oluşan veri yapıları Machine Learning uygulamaları için standart ama tekrar etmekte yarar var: Burada X_train ve X_test sırasıyla training ve test için ayrılmış veri matrisleri. Bunların her bir satırı bir rakam örneğinin resmini içeriyor. Resimdeki rakamın kaç olduğu ise y_train veya y_testin ilgili satırında yazıyor. Machine Learning algoritmamızın yapacağı şey bu resimler ile cevabı olan rakamları (yani etiketleri/hedef değerleri) ilişkilendiren matematiksel bir model oluşturmak. Böylece bu modele hiç görmediği bir resim gösterdiğimizde resimde hangi rakam olduğunu tanıyabilecek. Genel olarak hangi işlemlerin yapılacağından bahsetmeye çalıştım, şimdi kursun içeriğine bir göz atalım.

Bölüm 1: Introduction to the Convolutional Neural Network and its Practical Problems (Konvolüsyonel Sinir Ağına Giriş ve Pratik Sorunları):

Bu bölümde convolutıonal neural network, resim sınıflandırma (image classification), en ünlü evrimsel sinir ağları ve karşılaştırmalarından, Python’a resimlerimizi nasıl yükleyeceğimizden, hangi kütüphanelerin kullanıldığı ve kursta kullanılacak kütüphaneden, MNIST veri setinin ne olduğundan detaylı olarak bahsedilip uygulaması gerçekleştirilmektedir.

Bölüm 2: Features of Appropriate Dataset, How to load image datasets to the Python? (Uygun Veri Kümesinin Özellikleri, Resim veri kümeleri Python’a nasıl yüklenir?):

Bu bölümde resimlerin boyutu önemli mi, önemli ise ne olmalı, veri boyutu ne olmalı, veriler nasıl düzenlenir, görüntüler Python’a nasıl yüklenir, karşılaşılan hatalar nasıl çözülür ,kediler ve köpekler veri seti üzerinden örnek vererek akabinde sırasıyla OpenCV, SciPy, PIL, Keras ile görüntü yükleme nasıl yapılır bunlardan bahsedilmektedir.

Bölüm 3: Choosing CNN Architecture for Best Results, Transfer Learning, Fine Tuning (En İyi Sonuçlar İçin CNN Mimarisini Seçmek, Transfer Öğrenimi, İnce Ayar):

Projelerimiz için en iyi mimariyi seçmek zorundayız. Bu bölümde en iyi mimari nasıl seçilir bundan bahsedilmektedir. Bunun yanında Türkçe’ye ince ayar olarak çevirdiğimiz Fine Tuning ve Transfer Learning nedir bunlardan bahsedilmiştir. Eğer projelerinizde transfer learning ve fine tuning uygularsanız iyi bir accuracy elde etme ihtimaliniz daha yüksektir. Garanti bir yöntem olmamakla beraber denemeye değer. Keraslarda bu iki kavram uygulanarak 3.bölüm bitirilmiştir.

Bunlar da İlginizi Çekebilir  Programlama Dilleri 101

Bölüm 4: Imbalanced Dataset Problem (Dengesiz Veri Kümesi Sorunu):

Bu bölümde kimi zaman tespit etmesi oldukça zor olan dengesiz veri kümesi problemlerine değinilmiştir. Bu yaygın bir makine öğrenmesi ve derin öğrenme problemidir.

Bölüm 5: Image Augmentation (Görüntü Büyütme):

Bu bölümde ise veri setlerimiz için neden ve ne zaman görüntü büyütme yaparız bunun detayları belirtilmektedir. Bazı akademik makaleler incelenmektedir.


2) Hedef Kitlesi Kimlerdir?

  • MNIST örneğinden sonra bir adım daha gitmekte zorluk çeken Derin Öğrenme Meraklıları ve Tensorflow, PyTorch, Keras gibi Deep Learning Kütüphaneleri ile doğrudan / dolaylı olarak ilişkili olan Python kütüphanelerini kullanma konusunda pratik yapan programcılar,
  • Derin Öğrenme ve Makine Öğrenmesi için Python üzerinde çalışanlar,
  • Deep Learning alanında kendini geliştirmek isteyen ve çalışmalarına bu yönde devam edip ilerlemek isteyen,
  • En azından başlangıç seviyesinde derin öğrenme konusunda bilgisi olan herkes kursu satın alabilir.

3) Bu Kursu Almak İçin Gereklilikler Nelerdir?

  • Python
  • Evrişimli Sinir Ağları Bilgi Giriş Düzeyi
  • Giriş düzeyinde Keras bilgisi
  • Ve en önemlisi eğitim İngilizce olduğu için İngilizcenizin olması da ön koşullardan biridir.

4) Bu Kurs Size Neler Katacak?

  • Evrişimsel sinir ağının tüm alt işlemlerini kolayca kodlayabilir,
  • Çalışmayan Konvolüsyonel Sinir Ağları problemini ayırt edebilir,
  • Python’a yükleme görüntüleri için birkaç çözüm uygulayabilir,
  • Transfer öğrenmeyi anlayabilir ve uygulayabilir,
  • Dengesiz veri kümesi problemini teşhis edebilir,
  • Dengesiz veri kümesi problemini farklı yöntemlerle çözebilir,
  • Görüntü büyütme için çeşitli çözümler uygulayabilir,
  • Keraslar için CustomDataGenerator İşlevlerini oluşturabilirsiniz.

5) Kurs Hakkındaki Düşüncelerimiz

Öncelikle Udemy üzerinde Deep Learning ile alakalı özenle hazırlanmış bir eğitim olduğunu söyleyebilirim. Eğer derin öğrenme ve makine öğrenmesi alanında hiçbir bilginiz yoksa bu alana giriş için eğitimi tavsiye etmem. En azından giriş seviyesinde olsa bile bir bilgi birikiminizin olması, kavramlara aşina olmanız eğitimden daha fazla verim alabilmenizi sağlayacaktır. Fakat makine öğrenmesi ve derin öğrenme alanlarında çalışanlar ve kendilerini bu alanda geliştirmek isteyenler için kesinlikle vakit kaybı olmayacak. Birçok yeni bilgi öğrenebileceğinizi garanti edebilirim. Ayrıca kodları yazarken veri setine bazı sorular yöneltmesi ve bu soruları kod satırının hemen yanında yoruma atarak yazması yapılan işlemleri daha anlaşılabilir kılmaktadır. Eğitimin dili İngilizce fakat eğitimi anlayabilmeniz için ileri seviyede İngilizcenizin olmasına gerek yok, anlatılanlar anlaşılabilir bir seviyede. Son olarak bu eğitimi hazırlamış olduğu için ve emeğinden ötürü Mehmet Burak Sayıcı’ya teşekkür ederim. Benim yorumlarım ve kurs incelemem bu şekilde. Siz de eğitimi izledikten sonra yorum kısmından görüşlerinizi belirtirseniz kursu satın almayı düşünen arkadaşlar için fikir vermiş olursunuz. Diğer kursların incelemelerinden haberdar olmak için sosyal medya hesaplarımızı takip edebilirsiniz 🙂

İlgili Gönderiler

Bir cevap yazın

Gerekli alanlar işaretlendi *