Derin Öğrenme Nasıl Çalışır?


Çoğu derin öğrenme yöntemi sinir ağı mimarilerini kullanır, bu yüzden derin öğrenme modelleri genellikle derin sinir ağları olarak adlandırılır.

“Derin” terimi genellikle sinir ağındaki gizli katmanların sayısını ifade eder. Geleneksel sinir ağları sadece 2-3 gizli katman içerirken, derin ağlar 150'ye kadar olabilir.

Derin öğrenme modelleri, manuel özellik çıkarmaya gerek kalmadan özellikleri doğrudan verilerden öğrenen büyük etiketli veri setleri ve sinir ağı mimarileri kullanılarak eğitilir.

En popüler derin sinir ağlarından biri, evrişimli sinir ağları (CNN veya ConvNet) olarak bilinir. Bir CNN, öğrenilen özellikleri giriş verileriyle birleştirir ve 2D evrişimsel katmanları kullanır ve bu mimariyi görüntüler gibi 2D verileri işlemek için çok uygun hale getirir. 

CNN'ler manuel özellik çıkarma ihtiyacını ortadan kaldırır, bu nedenle görüntüleri sınıflandırmak için kullanılan özellikleri tanımlamanız gerekmez. CNN, özellikleri doğrudan görüntülerden çıkararak çalışır. İlgili özellikler önceden eğitilmez; ağ bir görüntü koleksiyonu üzerinde çalışırken öğrenilir. Bu otomatik özellik çıkarma, derin öğrenme modellerini nesne sınıflandırma gibi bilgisayar görme görevleri için son derece hassas hale getirir.

CNN'ler, onlarca veya yüzlerce gizli katman kullanarak görüntünün farklı özelliklerini algılamayı öğrenir. Her gizli katman, öğrenilen görüntü özelliklerinin karmaşıklığını artırır. Örneğin, ilk gizli katman kenarların nasıl tespit edileceğini öğrenebilir ve sonuncusu, özellikle tanımaya çalıştığımız nesnenin şekline uygun daha karmaşık şekillerin nasıl tespit edileceğini öğrenir.

Makine Öğrenmesi ile Derin Öğrenme Arasındaki Fark Nedir?

Derin öğrenme, makine öğreniminin özel bir şeklidir. Makine öğrenimi iş akışı, ilgili özelliklerin görüntülerden elle çıkarılmasıyla başlar. Özellikler daha sonra görüntüdeki nesneleri kategorilere ayıran bir model oluşturmak için kullanılır. Derin bir öğrenme iş akışı ile, ilgili özellikler görüntülerden otomatik olarak çıkarılır. Buna ek olarak, derin öğrenme, bir ağa ham veri ve sınıflandırma gibi gerçekleştirilecek bir görev verildiği “uçtan uca öğrenme” gerçekleştirir ve bunun otomatik olarak nasıl yapılacağını öğrenir.

Bir diğer önemli fark derin öğrenme algoritmaları verilerle ölçeklendirilirken, sığ öğrenme yakınsamaktadır. Sığ öğrenme, ağa daha fazla örnek ve eğitim verisi eklediğinizde belirli bir performans düzeyinde yayılan makine öğrenme yöntemlerini ifade eder.

Derin öğrenme ağlarının önemli bir avantajı, verilerinizin boyutu arttıkça genellikle gelişmeye devam etmeleridir.

Makine Öğrenmesi ve Derin Öğrenme Arasında Seçim Yapma

Makine öğrenimi, uygulamanıza, işlediğiniz verilerin boyutuna ve çözmek istediğiniz sorunun türüne göre seçebileceğiniz çeşitli teknikler ve modeller sunar. Başarılı bir derin öğrenme uygulaması, verilerinizi hızlı bir şekilde işlemek için modelin yanı sıra GPU'ları veya grafik işleme birimlerini eğitmek için çok büyük miktarda veri (binlerce görüntü) gerektirir.

Makine öğrenimi ile derin öğrenme arasında seçim yaparken, yüksek performanslı bir GPU'nuz ve çok sayıda etiketli veriye sahip olup olmadığınızı düşünün. Bunlardan hiçbirine sahip değilseniz, derin öğrenme yerine makine öğrenimini kullanmak daha mantıklı olabilir. Derin öğrenme genellikle daha karmaşıktır, bu nedenle güvenilir sonuçlar elde etmek için en az birkaç bin görüntüye ihtiyacınız olacaktır. Yüksek performanslı bir GPU'ya sahip olmak, modelin tüm bu görüntüleri analiz etmek için daha az zaman alacağı anlamına gelir.

İnsanların nesne sınıflandırmasını gerçekleştirmek için derin öğrenmeyi kullanmalarının en yaygın üç yolu şunlardır:

Sıfırdan Eğitim

Derin bir ağı sıfırdan eğitmek için çok büyük bir etiketli veri kümesi toplarsınız ve özellikleri ve modeli öğrenecek bir ağ mimarisi tasarlarsınız. Bu, yeni uygulamalar veya çok sayıda çıktı kategorisine sahip uygulamalar için iyidir. Bu daha az yaygın bir yaklaşımdır, çünkü büyük miktarda veri ve öğrenme oranı ile bu ağların eğitilmesi günler veya haftalar alır.

Transfer Öğrenimi

Çoğu derin öğrenme uygulaması, önceden eğitilmiş bir modelin ince ayarını içeren bir süreç olan transfer öğrenme yaklaşımını kullanır. AlexNet veya GoogLeNet gibi mevcut bir ağla başlarsınız ve daha önce bilinmeyen sınıflar içeren yeni verileri beslersiniz. Ağda bazı değişiklikler yaptıktan sonra, artık 1000 farklı nesne yerine sadece köpekleri veya kedileri kategorize etmek gibi yeni bir görev gerçekleştirebilirsiniz. Bu aynı zamanda çok daha az veriye ihtiyaç duyma avantajına sahiptir (milyonlarca yerine binlerce görüntüyü işleme), bu nedenle hesaplama süresi dakikalara veya saatlere düşer.

Transfer öğrenimi, önceden var olan ağın içlerine bir arayüz gerektirir, böylece yeni görev için cerrahi olarak değiştirilebilir ve geliştirilebilir. MATLAB®, transfer öğrenimi yapmanıza yardımcı olmak için tasarlanmış araçlara ve işlevlere sahiptir.

Özellik çıkarma

Derin öğrenmeye biraz daha az yaygın, daha özel bir yaklaşım ağı bir özellik çıkarıcı olarak kullanmaktır. Tüm katmanlar görüntülerden belirli özellikleri öğrenmekle görevlendirildiğinden, eğitim sırasında bu özellikleri istediğiniz zaman ağdan çıkarabiliriz. Bu özellikler daha sonra destek vektör makineleri (SVM) gibi bir makine öğrenme modeline girdi olarak kullanılabilir.

GPU'larla Derin Öğrenme Modellerini Hızlandırma

Derin bir öğrenme modelinin eğitimi günlerden haftalara kadar uzun sürebilir. GPU hızlandırmayı kullanmak süreci önemli ölçüde hızlandırabilir. Bir GPU ile MATLAB kullanmak, bir ağı eğitmek için gereken süreyi azaltır ve görüntü sınıflandırma sorunu için eğitim süresini günlerden saatlere indirebilir. Derin öğrenme modellerini eğitirken, MATLAB, GPU'ları nasıl açıkça programlamanızı bilmenize gerek kalmadan GPU'ları (varsa) kullanır.