"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 -
- Deep neural networks
- Deep belief networks
- Convolutional neural networks
- Deep Boltzmann Machines
- Recurrent Neural Network
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
1 yorum:
Hocam bu kiymetli paylaşımlarınız için teşekkür ediyorum.Elinize yüreğinize sağlık.
Yorum Gönder