Derin sinir ağı kavramları
Derin sinir ağı (DNN) makine öğrenmesi modelini eğitmeyi keşfetmeden önce neyi başarmaya çalıştığımızı düşünelim. Makine öğrenmesi, belirli bir gözlemin bazı özelliklerine göre bir etiketi tahmin etmeyle ilgilidir. Basit bir ifadeyle, makine öğrenmesi modeli x'ten y (etiket) hesaplayan bir işlevdir (özellikler): f(x)=y.
Basit bir sınıflandırma örneği
Örneğin, gözleminizin bir penguenin bazı ölçümlerinden oluştuğu nu varsayalım.
Özellikle, ölçümler şunlardır:
- Penguenin faturasının uzunluğu.
- Penguenin fatura derinliği.
- Penguenin paletinin uzunluğu.
- Penguenin ağırlığı.
Bu durumda, özellikler (x) dört değerin vektörleridir veya matematiksel olarak x=[x1,x 2,x 3,x 4].
Tahmin etmeye çalıştığımız etiketin (y) penguenin türü olduğunu ve bunun üç olası türü olabileceğini varsayalım:
- Adelie
- Gentoo
- Chinstrap
Bu, makine öğrenmesi modelinin gözlemin ait olduğu en olası sınıfı tahmin etmesi gereken bir sınıflandırma sorunu örneğidir. Sınıflandırma modeli, her sınıf için olasılıklardan oluşan bir etiketi tahmin ederek bunu gerçekleştirir. Başka bir deyişle, y üç olasılık değerinin vektördür; olası sınıfların her biri için bir tane olur: y=[P(0),P(1),P(2)].
Makine öğrenmesi modelini, gerçek etiketi zaten bildiğiniz gözlemleri kullanarak eğitebilirsiniz. Örneğin, bir Adelie örneği için aşağıdaki özellik ölçümlerine sahip olabilirsiniz:
x=[37.3, 16.8, 19.2, 30.0]
Bunun bir Adelie (sınıf 0) örneği olduğunu zaten biliyorsunuz, bu nedenle mükemmel bir sınıflandırma işlevi sınıf 0 için %100 olasılık ve sınıf 1 ve 2 için %0 olasılık gösteren bir etiketle sonuçlanmalıdır:
y=[1, 0, 0]
Derin sinir ağı modeli
Peki penguen sınıflandırma modeli için bir sınıflandırma modeli oluşturmak için derin öğrenmeyi nasıl kullanırız? Bir örneğe bakalım:
Sınıflandırıcı için derin sinir ağı modeli, birden çok yapay nöron katmanından oluşur. Bu durumda dört katman vardır:
- Beklenen her giriş (x) değeri için nöron içeren bir giriş katmanı.
- Her biri beş nöron içeren iki gizli katman.
- Model tarafından tahmin edilecek her sınıf olasılığı (y) değeri için bir tane olmak üzere üç nöron içeren bir çıkış katmanı.
Ağın katmanlı mimarisi nedeniyle, bu tür bir model bazen çok katmanlı algı olarak adlandırılır. Ayrıca, giriş ve gizli katmanlardaki tüm nöronların sonraki katmanlardaki tüm nöronlara bağlı olduğuna dikkat edin - bu tam olarak bağlı bir ağa örnektir.
Bunun gibi bir model oluşturduğunuzda, modelinizin işleyeceği özellik sayısını destekleyen bir giriş katmanı ve üretmesini beklediğiniz çıkış sayısını yansıtan bir çıkış katmanı tanımlamanız gerekir. Kaç tane gizli katman eklemek istediğinize ve bunların her birinde kaç nöron olduğunu seçebilirsiniz; ancak bu katmanlar için giriş ve çıkış değerleri üzerinde denetiminiz yoktur; bunlar model eğitim süreci tarafından belirlenir.
Derin sinir ağını eğitma
Derin bir sinir ağı için eğitim süreci, dönemler olarak adlandırılan birden çok yinelemeden oluşur. İlk dönem için, ağırlık (w) ve sapma b değerleri için rastgele başlatma değerleri atayarak başlarsınız. Ardından işlem aşağıdaki gibidir:
- Bilinen etiket değerlerine sahip veri gözlemlerinin özellikleri giriş katmanına gönderilir. Genel olarak, bu gözlemler toplu olarak gruplandırılır (genellikle mini toplu işler olarak adlandırılır).
- Nöronlar daha sonra işlevlerini uygular ve etkinleştirilirse çıkış katmanı bir tahmin oluşturana kadar sonucu bir sonraki katmana geçirir.
- Tahmin, bilinen gerçek değerle karşılaştırılır ve tahmin edilen ve doğru değerler arasındaki varyans miktarı (kayıp olarak adlandırdığımız) hesaplanır.
- Sonuçlara bağlı olarak, kaybı azaltmak için ağırlıklar ve sapma değerleri için düzeltilmiş değerler hesaplanır ve bu ayarlamalar ağ katmanlarındaki nöronlara geri özelleştirilir .
- Sonraki dönem, toplu eğitim ileri geçişini düzeltilmiş ağırlık ve sapma değerleriyle tekrarlar ve modelin doğruluğunu (kaybı azaltarak) geliştirmeyi umuyoruz.
Not
Eğitim özelliklerinin toplu olarak işlenmesi, birden çok gözlemi aynı anda ağırlık ve sapma vektörleri içeren bir özellik matrisi olarak işleyerek eğitim sürecinin verimliliğini artırır. Matrisler ve vektörlerle çalışan doğrusal cebirsel işlevler de 3B grafik işleme özelliğine sahiptir. Bu nedenle grafik işleme birimlerine (GPU) sahip bilgisayarlar, derin öğrenme modeli eğitimi için yalnızca merkezi işlem birimi (CPU) bilgisayarlara göre önemli ölçüde daha iyi performans sağlar.
Kayıp işlevlerine ve geriözelleştirmeye daha yakından bakış
Derin öğrenme eğitim sürecinin önceki açıklamasında modeldeki kaybın hesaplandığından ve ağırlık ve sapma değerlerini ayarlamak için kullanıldığından bahsedildi. Bu tam olarak nasıl çalışır?
Kaybı hesaplama
Eğitim sürecinden geçirilen örneklerden birinin Adelie örneğinin özelliklerini içerdiğini varsayalım (sınıf 0). Ağdan doğru çıkış [1, 0, 0] olacaktır. Şimdi ağ tarafından üretilen çıkışın [0.4, 0.3, 0.3] olduğunu varsayalım. Bunları karşılaştırarak, her öğe için mutlak bir varyansı (başka bir deyişle, tahmin edilen değerlerin olması gerekenden ne kadar uzakta olduğunu) [0,6, 0,3, 0,3] olarak hesaplayabiliriz.
Gerçekte, aslında birden çok gözlemle ilgilendiğimiz için, varyansı genellikle tek tek varyans değerlerini hesaplayarak ve ortalamayı hesaplayarak toplar, böylece 0,18 gibi tek bir ortalama kayıp değeri elde ederiz.
İyileştiriciler
İşte akıllı parça. Kayıp, aynı zamanda bir işlev olan ağın son katmanından elde edilen sonuçlar üzerinde çalışan bir işlev kullanılarak hesaplanır. Ağın son katmanı, aynı zamanda işlev olan önceki katmanlardan gelen çıkışlar üzerinde çalışır. Bu nedenle, giriş katmanından kayıp hesaplamasına kadar olan modelin tamamı yalnızca büyük bir iç içe geçmiş işlevdir. İşlevler, aşağıdakiler de dahil olmak üzere birkaç yararlı özelliğe sahiptir:
- Bir işlevi, çıkışını değişkenlerinin her biriyle karşılaştıran çizilmiş bir çizgi olarak kavramsallaştırabilirsiniz.
- İşlevin türevini değişkenlerine göre herhangi bir noktada hesaplamak için diferansiyel hesaplamayı kullanabilirsiniz.
Şimdi bu özelliklerden ilkini alalım. Tek bir ağırlık değerinin kayıpla karşılaştırmasını göstermek için işlevin çizgisini çizebilir ve bu çizgide geçerli ağırlık değerinin geçerli kayıp değeriyle eşleştiği noktayı işaretleyebiliriz.
Şimdi bir işlevin ikinci özelliğini uygulayalım. Belirli bir noktaya ait bir işlevin türevi, işlev çıkışının eğiminin (veya gradyanının) bir işlev değişkenine göre (bu durumda, ağırlık değeri) arttığını veya azaldığını gösterir. Pozitif türev işlevin arttığını, negatif türev ise azaldığını gösterir. Bu durumda, geçerli ağırlık değerinin çizilmiş noktasında, işlevin aşağı doğru gradyanı vardır. Başka bir deyişle, ağırlığın artırılması, kaybı azaltmanın etkisine sahip olacaktır.
Modeldeki tüm ağırlık ve sapma değişkenleri için aynı hileyi uygulamak ve modeldeki genel kayıp miktarını azaltmak için bunları (yukarı veya aşağı) hangi yönde ayarlamamız gerektiğini belirlemek için bir iyileştirici kullanırız. Stokastik gradyan azalma (SGD), Uyarlamalı Öğrenme Oranı (ADADELTA), Uyarlamalı Momentum Tahmini (Adam) ve diğerleri dahil olmak üzere yaygın olarak kullanılan birden çok iyileştirme algoritması vardır; bunların tümü, kaybı en aza indirmek için ağırlıkları ve sapmaları nasıl ayarlayabileceğinizi belirlemek için tasarlanmıştır.
Öğrenme oranı
Şimdi, bir sonraki soru, iyileştiricinin ağırlıkları ve sapma değerlerini ne kadar ayarlaması gerektiğidir. Ağırlık değerimizin çizimine bakarsanız, ağırlığı küçük bir miktar artırmanın işlev çizgisini aşağı doğru ilerleteceğini (kaybı azaltacağını) görebilirsiniz, ancak çok fazla artırırsak işlev çizgisi yeniden yukarı gitmeye başlar, bu nedenle kaybı gerçekten artırabiliriz; ve bir sonraki dönem sonrasında ağırlığı azaltmamız gerektiğini fark edebiliriz.
Ayarlamanın boyutu, eğitim için ayarladığınız öğrenme oranı adlı bir parametreyle denetlenir. Düşük öğrenme oranı küçük ayarlamalarla sonuçlanır (böylece kaybı en aza indirmek için daha fazla dönem alabilir), yüksek öğrenme oranı ise büyük ayarlamalarla sonuçlanır (böylece minimum değeri tamamen kaçırabilirsiniz).