Pazar, Kasım 01, 2015

Derin Öğrenme 2

İlk yazımızda temel bazı gerçeklerden bahsetmiştim. Bu kurallardan "Derin öğrenme" için yapabileceğimiz çıkarımlar şunlar. "Derin öğrenmeyi" öğrenip kullanabilmeliyizki  geri kalmayalım. Hayranı olup kalmayalım ki derin öğrenmenin eksikliklerini ve diğer gelişmeleri görebilelim. Uygulamanın gerekliliklerine göre en uygun olan metodun seçiminde nesnel - objektif - olabilelim.


"Derin öğrenme" muğlak bir terim çünkü  rivayetler muhtelif ; Benim anladığım kadarıyla
 çok sayıda katmandan oluşan hiyerarşik  dönüşümlerle verilerin anlamdırıldığı -öğrenildiği- metodlar topluluğu. 
diyebiliriz. Yapay öğrenmenin bir dalı diyede bahsedilir. Günümüzde  başarılı olmuş bu  metodların ortak noktası çok katmanlı olmalarıdır. Anlayabildiğim kadarıyla bir birinden farklı pek çok metodu içerdiğinden,   bu  genel isim  tercih ediliyor.  Bu metodlardan  bazılarının isimleri verelim ; - kusura bakmayın mecburen  ingilizce vereceğiz -

Bütün bunları detaylıca anlatmam pek mümkün - haddimde - değil. Gereklide değil zaten.  Olabildiğince pratik anlatmaya çalışalım. Klasik metodlarda Veriden bilgiye geçişte aşamalar aşağıdaki gibidir.



Ham veri genellikle bir öznitelik çıkarma 1 - feature extraction -  aşamasından geçer. Öznitelik çıkarma aşamasınında genel bir metodu yoktu. Vakti zamanında Anderw Ng nin bir konuşmasından bir parça yayınlamıştık. - İzlemediyseniz tavsiye ederim izleyin - Derin öğrenme algoritmalarında hiyerarşik dönüşümlerle  bu işlevide yerine getiriliyor. Biraz daha somutlaştıralım.

Derin öğrenme algoritmalarının içinde en bilineni belkide 'Convolutional neural networks' - CNN - dur.  Mesela derin öğrenme dendiğinde ilk akla gelen örneklerden olan görüntü sınıflandırma  problemlerinde CNN kullanıldığını görürüz. CNN aslında gelişmiş bir Yapay sinir Ağıdır. Normal ileri beslemeli sinir ağı öncesi  bir anlamda  öznitelik çoğaltma ve özetleme katmalarıda içererek , Öznitelik çıkarma işlevini içine almışdır.



Bu metodun  iç yapısında   Convolutional  katmanları ile  ile öznitelikler çıkarılır ve çoğaltılır.  Bu katman aslında görüntü işleme pek çok işlem için  de kullandığımız basit filtreleme işlemidir.


Pool katmanları ile çoğalan öznitelikler basit işlemle küçültülür.

üzerinde işlem yapılan kısımın,  max  pooling  ile en büyüğü , min pooling ile en küçüğü  ve  median pooling ile ortalaması  alınarak özetlenmiş olur.

Bu katmanlar değişik kombinasyonlarlar ve değişik parametrelerle sıralanarak , 



bir öznitelik çıkarma işlevi yapılmış oluyor.  Öznitelik çıkarma işlevi de bir anlamda öğreniliyor.



YSA ksımında ise girdi sayısının ve katman sayısının büyüklüğü sebebiyle klasik metodlarla eğitimi  pek kolay değildir. Bu yüzden gerek öğrenememe -under fitting - gerekse ezberleme - over fitting - problemleri 2 için modern çözümler ve kullanılmaktadır.

Mesela ; Dropout diye tabir edilen bir yöntem var.  Ağ içindeki bazı bağlantıların kaldırılmasıyla  eğitim performansı artırıyor.



Mesela ; aktivasyon klasik fonksiyonları yerine - ReLu - Rectified Linear Unit  kullanımı gibi.



Ezeberleme problemi için tek başına metodlar işe yaramaz.  Bahsedilen büyüklükteki bir ağ yapısı normal bir veri setini kolaylıkla ezberler. Bu yüzden devasa büyüklükte ve genişlikte veri setleri oluşturulur.

Derin denecek kadar çok katmanlı bir yapıda ve devasa büyüklükteki bir veri seti için yine devasa bir işlem gücü gerekiyor olması süpriz olmaz sanırım. İşlem gücü için genel çözüm GPU  kullanımıdır. Günümüzde NVDIA bu işte en öndedir. Çünkü CUDA 3 ile yıllardır bu iş üzerine emek vermişti. 


İnşallah kafanızda derin öğrenme ile ilgili kabacada olsa somut bir şeyler oluşturabilmişizdir.


DeepNN from bluekid on Vimeo.


Üstteki video da Derin öğrenme ile eğitilmiş bir sınıflandırıcının kullanıldığı basit bir örnek hazırladık diyerek  bu yazıyı sonlandıralım.

Devam edecek İnşallah....
Görüş ve önerilerinizi bekleriz....

 Notlar;
1) Bir parça bu yazımızda bahsetmiştik  bakabilirsiniz.
2) YSA lar ve eğitim konusunda  bu yazımızda birşeyler anlatmıştık
3) 2008 de bahsetmişiz.  bakınız 

Hiç yorum yok: