Sinir ağlarında türev kullanımı backpropagation adı verilen eğitim süreci içindir . Bu teknik, bir kayıp fonksiyonunu en aza indirgemek için en uygun model parametreleri kümesini bulmak için gradyan inişini kullanır . Örneğinizde, bir sigmoid türevini kullanmalısınız çünkü bu, bireysel nöronlarınızın kullandığı aktivasyondur.
Kayıp fonksiyonu
Makine öğrenmesinin özü, bir maliyet işlevini, bazı hedef işlevleri en aza indirgeyebileceğimiz veya en üst düzeye çıkarabileceğimiz şekilde optimize etmektir. Buna tipik olarak kayıp veya maliyet fonksiyonu denir. Genellikle bu işlevi en aza indirmek istiyoruz. Maliyet fonksiyonu, C , modeli model parametrelerinin bir fonksiyonu olarak modelinizden veri aktarırken ortaya çıkan hatalara dayalı olarak bir miktar ceza ilişkilendirir.
Bir görüntünün kedi mi yoksa köpek mi içerdiğini etiketlemeye çalıştığımız örneğe bakalım. Mükemmel bir modelimiz varsa, modele bir resim verebiliriz ve bize bir kedi mi yoksa köpek mi olduğunu söyleyecektir. Ancak, hiçbir model mükemmel değildir ve hatalar yapacaktır.
Modelimizi girdi verilerinden anlam çıkarabilmek için eğittiğimizde yaptığı hata miktarını en aza indirmek istiyoruz. Bu yüzden bir eğitim seti kullanıyoruz, bu veriler birçok köpek ve kedi resmi içeriyor ve bu görüntü ile ilişkili temel doğruluk etiketine sahibiz. Modelin eğitim yinelemesini her çalıştırdığımızda, modelin maliyetini (hata miktarını) hesaplıyoruz. Bu maliyeti en aza indirmek isteyeceğiz.
Her biri kendi amacına hizmet eden birçok maliyet fonksiyonu mevcuttur. Kullanılan ortak maliyet fonksiyonu, ikinci dereceden maliyet olarak tanımlanır.
C=1N∑Ni=0(y^−y)2 .
Bu, N için öngörülen etiket ile temel doğruluk etiketi arasındaki farkın karesidirN üzerinde eğitim aldığımız görüntüleri . Bunu bir şekilde en aza indirmek isteyeceğiz.
Kayıp fonksiyonunu en aza indirme
Gerçekten de makine öğreniminin çoğu, bazı maliyet fonksiyonlarını en aza indirerek bir dağılımı belirleyebilen bir çerçeve ailesidir. Sorabileceğimiz soru "bir işlevi nasıl en aza indirebiliriz?"
Aşağıdaki işlevi en aza indirelim
y=x2−4x+6 .
Bunu çizersek, bir minimum olduğunu görebiliriz . Bunu analitik olarak yapmak için, bu fonksiyonun türevini şu şekilde alabiliriz:x=2
dydx=2x−4=0
.x=2
Bununla birlikte, çoğu kez analitik olarak küresel bir minimum bulmak bazen mümkün değildir. Bunun yerine bazı optimizasyon teknikleri kullanıyoruz. Burada pek çok farklı yol vardır: Newton-Raphson, grid arama, vb. Bunların arasında gradyan kökenli . Sinir ağları tarafından kullanılan teknik budur.
Dereceli alçalma
Bunu anlamak için ünlü kullanılan bir benzetme kullanalım. 2D minimizasyon problemi düşünün. Bu, vahşi doğada dağlık bir yürüyüşe çıkmaya eşdeğerdir. En alt noktada olduğunu bildiğiniz köye geri dönmek istiyorsunuz. Köyün ana yönlerini bilmeseniz bile. Yapmanız gereken tek şey sürekli en dik yolu aşağı çekmek ve sonunda köye gideceksiniz. Böylece eğimin dikliğine dayanarak yüzeye ineceğiz.
Hadi fonksiyonumuzu alalım
y=x2−4x+6
Biz belirleyecektir olan y en aza indirilir. Degrade iniş algoritması önce x için rastgele bir değer seçeceğimizi söylüyorxyx . başlayalım . Ardından algoritma, yakınsamaya ulaşıncaya kadar aşağıdakileri yinelemeli olarak yapacaktır.x=8
xnew=xold−νdydx
nerede öğrenme hızı, biz istediğimiz ne olursa olsun değer için bu ayarlayabilirsiniz. Ancak bunu seçmenin akıllı bir yolu var. Çok büyük ve minimum değere asla ulaşamayacağız ve çok büyük, oraya varmadan önce soooo'yu çok zaman harcayacağız. Dik yokuştan aşağı çekmek istediğiniz adımların boyutuna benzer. Küçük adımlar ve dağda öleceksin, asla inmeyeceksin. Çok büyük bir adım ve köy vurmak ve dağın diğer tarafında sona erme riski. Türev, bu eğimden en aza indirdiğimiz araçlardır.ν
dydx=2x−4
ν=0.1
Yineleme 1:
x n e w = 6.8 - 0.1 ( 2 ∗ 6.8 - 4 ) = 5.84 x n e w = 5.84 - 0.1 ( 2 ∗ 5.84 - 4 ) = 5,07 x n e wxnew=8−0.1(2∗8−4)=6.8
xnew=6.8−0.1(2∗6.8−4)=5.84
xnew=5.84−0.1(2∗5.84−4)=5.07
x n e w = 4.45 - 0.1 ( 2 ∗ 4.45 - 4 ) = 3.96 x n e w = 3.96 - 0.1 ( 2 ∗ 3.96 - 4 ) = 3.57 x n e w = 3.57 - 0.1 ( 2 ∗ 3.57 - 4 )xnew=5.07−0.1(2∗5.07−4)=4.45
xnew=4.45−0.1(2∗4.45−4)=3.96
xnew=3.96−0.1(2∗3.96−4)=3.57
=xnew=3.57−0.1(2∗3.57−4)=3.25
x n e w = 3.00 - 0.1 ( 2 ∗ 3.00 - 4 ) = 2.80 x n e w = 2.80 - 0.1 ( 2 ∗ 2.80 - 4 ) = 2,64 x n e wxnew=3.25−0.1(2∗3.25−4)=3.00
xnew=3.00−0.1(2∗3.00−4)=2.80
xnew=2.80−0.1(2∗2.80−4)=2.64
x n e w = 2,51 - 0,1 ( 2 ∗ 2,51 - 4 ) = 2,41 x n e w = 2,41 - 0,1 ( 2 ∗ 2,41 - 4 ) = 2,32 x n e w = 2,32 - 0,1 ( 2 ∗ 2,32xnew=2.64−0.1(2∗2.64−4)=2.51
xnew=2.51−0.1(2∗2.51−4)=2.41
xnew=2.41−0.1(2∗2.41−4)=2.32
x n e w = 2.26 - 0.1 ( 2 ∗ 2.26 - 4 ) = 2.21 x n e w = 2.21 - 0.1 ( 2 ∗ 2.21 - 4 ) = 2.16 x n e w = 2.16 - 0.1 ( 2 ∗ olduğu 2.16 - 4 ) = 2.13 x nxnew=2.32−0.1(2∗2.32−4)=2.26
xnew=2.26−0.1(2∗2.26−4)=2.21
xnew=2.21−0.1(2∗2.21−4)=2.16
xnew=2.16−0.1(2∗2.16−4)=2.13
x n e w = 2.10 - 0.1 ( 2 ∗ 2.10 - 4 ) = 2.08 x n e w = 2.08 - 0.1 ( 2 ∗ 2.08 - 4 ) = 2.06 x n e w = 2.06 - 0.1xnew=2.13−0.1(2∗2.13−4)=2.10
xnew=2.10−0.1(2∗2.10−4)=2.08
xnew=2.08−0.1(2∗2.08−4)=2.06
x n e w = 2.05 - 0.1 ( 2 ∗ 2.05 - 4 ) = 2.04 x n e w = 2.04 - 0.1 ( 2 ∗ 2.04 - 4 ) = 2.03 x n e w = 2.03 - 0.1 ( 2 ∗ 2,03 - 4 ) =xnew=2.06−0.1(2∗2.06−4)=2.05
xnew=2.05−0.1(2∗2.05−4)=2.04
xnew=2.04−0.1(2∗2.04−4)=2.03
x n e w = 2,02 - 0,1 ( 2 ∗ 2,02 - 4 ) = 2,02 x n e w = 2,02 - 0,1 ( 2 ∗ 2,02 - 4 ) = 2,01 x n e w = 2,01 - 0,1 ( 2 ∗ 2,01 - 4 ) = 2,01 x n e w = 2,01xnew=2.03−0.1(2∗2.03−4)=2.02
xnew=2.02−0.1(2∗2.02−4)=2.02
xnew=2.02−0.1(2∗2.02−4)=2.01
xnew=2.01−0.1(2∗2.01−4)=2.01
x n e w = 2.01 - 0.1 ( 2 ∗ 2.01 - 4 ) = 2.00 x n e w = 2.00 - 0.1 ( 2 ∗ 2.00 - 4 ) = 2,00 x n exnew=2.01−0.1(2∗2.01−4)=2.01
xnew=2.01−0.1(2∗2.01−4)=2.00
xnew=2.00−0.1(2∗2.00−4)=2.00
x n e 2.00-0.1(2∗2.00-4)=2.00 x n e w =2.00-0.1(2∗2.00-4)=2.00xnew=2.00−0.1(2∗2.00−4)=2.00
xnew=2.00−0.1(2∗2.00−4)=2.00
xnew=2.00−0.1(2∗2.00−4)=2.00
Ve algoritmanın x = 2'de yakınsadığını görüyoruzx=2 ! Minimum değeri bulduk.
Sinir ağlarına uygulanır
İlk sinir ağları, sadece bazı girdilerin aldı tek nöron vardı ve daha sonra bir çıkış temin yxy^ . Kullanılan ortak bir işlev sigmoid işlevidir
σ(z)=11+exp(z)
y^(wTx)=11+exp(wTx+b)
burada , her bir x girişi için ilişkili ağırlıktır ve bir bwxb . Daha sonra maliyet fonksiyonumuzu en aza indirmek istiyoruz
C=12N∑Ni=0(y^−y)2 .
Sinir ağı nasıl eğitilir?
CN
C=12N∑Ni(y^−y)2
y^yw
∂C∂w=∂C∂y^∂y^∂w
∂C∂y^=y^−y
y^=σ(wTx)∂σ(z)∂z=σ(z)(1−σ(z))
∂y^∂w=11+exp(wTx+b)(1−11+exp(wTx+b))
Böylece ağırlıkları degrade iniş ile güncelleyebiliriz.
wnew=wold−η∂C∂w
η