paint-brush
İkinci Dereceden Maliyet Fonksiyonları Sinir Ağı Eğitiminde Neden Etkisizdir?ile@varunnakra1
2,637 okumalar
2,637 okumalar

İkinci Dereceden Maliyet Fonksiyonları Sinir Ağı Eğitiminde Neden Etkisizdir?

ile Varun Nakra6m2024/06/03
Read on Terminal Reader

Çok uzun; Okumak

Derin öğrenme bilgisi görüşmeleri sırasında sorulan en yaygın sorulardan biri şudur: "Neden bir Sinir Ağı'nı eğitmek için ikinci dereceden bir maliyet fonksiyonunu kullanamıyoruz?**" Bunun cevabını derinlemesine inceleyeceğiz. Çok fazla Matematik olacak ama çılgınca bir şey olmayacak! ve işleri basit ama kesin tutacağım.
featured image - İkinci Dereceden Maliyet Fonksiyonları Sinir Ağı Eğitiminde Neden Etkisizdir?
Varun Nakra HackerNoon profile picture
0-item

Derin öğrenme bilgisi görüşmeleri sırasında sorulan en yaygın sorulardan biri şudur: “ Bir Sinir Ağını eğitmek için neden ikinci dereceden bir maliyet fonksiyonunu kullanamıyoruz? ”. Bu yazımızda bu sorunun cevabını tartışacağız. Çok fazla Matematik olacak ama çılgınca bir şey olmayacak! İşleri basit ve kesin tutacağım.


Bir Sinir ağının genel mimarisini düşünerek başlayalım


Bir Sinir Ağının Genel Mimarisi

İkili sınıflandırma için sinir ağı mimarisi


İkili sınıflandırma problemi için bir "girdi katmanı" oluşturan bir dizi girdimiz, "gizli katman"da bir dizi nöronumuz ve bir "çıkış katmanı" oluşturan bir nöronumuz var. Bu soru için ikili bir sınıflandırıcıyla uğraştığımızı varsayacağız, dolayısıyla ağ dışında yalnızca bir çıkış değerimiz var.


Şimdi, giriş katmanını yeşil, çıkış nöronunu kırmızı ve gizli katmanın bir nöronunu turuncu renkle vurguladığımız aşağıdaki şekle bakın. Yeşilden turuncuya kadar tüm girişlerin turuncu nörona bağlı olduğunu görüyoruz. Başka bir deyişle, turuncu nöronun "aktivasyonu", giriş katmanındaki tüm yeşil nöronların "toplanması" kullanılarak gerçekleşir. Bu süreç, son kırmızı çıkış nöronuna ulaşana kadar tüm katmanlardaki tüm nöronlar üzerinde kopyalanır.



Turuncu nöronu kırmızı nöronla değiştirirsek, yani gizli katmanı kaldırıp kırmızı nöronu doğrudan yeşil nöronlara bağlarsak ne olur?



Aşağıdakileri alacağız:

Bu soru için yukarıda bahsedilen 'basit mimariyi' varsayacağız ve sonuç tüm mimariye de genellenebilir.


Şimdi biraz Matematiği adım adım tanıtalım.


Yukarıda gördüğümüz şey bir Sinir ağı için temel “ağırlık güncelleme” denklemidir. Öğrenme faktörü ve alt örnekleme (min-toplu) vb. gibi ekstra hiperparametreleri kaldırdım. w_k ağırlıkların vektörüdür ve ağırlıklar Sinir ağı modelimizin 'parametreleridir'. w_k, bir sütun vektöründe toplanan bireysel ağırlıkları içerir. Bu ağırlıklar modelin girdileriyle (yani mimarimizdeki yeşil nöronlarla) ilişkilidir. Bir C_i maliyet fonksiyonumuz var; burada i = 1 ila n, örneğimizdeki veri örneklerinin sayısıdır. Maliyet fonksiyonu C, gerçek çıktı y ile sinir ağının çıktısı (kırmızı nöron) arasındaki “hatadır”. Her veri örneği, gerçek çıktıya karşılık tahmin edilen bir çıktı üretecektir, dolayısıyla her veri örneği için bir maliyet veya hata olacaktır. Modelin amacı, bu maliyet fonksiyonunu tüm veri seti üzerinden ortalama olarak en aza indirmektir. Ve bildiğimiz gibi minimizasyon adımı, model parametrelerine (ağırlıklara) göre bir türev almayı içerir. Bunu w_k vektörünün kısmi türevini kullanarak yapıyoruz. Tüm bunların anlamı, C maliyetinin w_1'den w_q'ya kadar olan ağırlıkların bir ifadesi/toplaması olacağı ve her w ağırlığının farklılığını alıp bunu bir vektörde toplayacağımız anlamına gelir. Buna negatif “gradyan vektörü” denir. Ağırlık vektörünü k'inci yinelemeden (k+1)'inci yinelemeye güncellemek için kullanılır. Metodoloji Stokastik Gradyan inişidir ancak bunu bu makalenin dışında bırakacağız.


Özetle, sinir ağı, tüm örneklerin ortalaması alınan ve w_k için hesaplanan negatif gradyan vektörü aracılığıyla ağırlıkların güncellenmesiyle öğrenir. Bu, maliyet fonksiyonunu en aza indirmemize yardımcı olur ve ağın öğrenmesine ve doğruluğunu geliştirmesine yardımcı olur. Negatif eğim sıfıra doğru ilerlediği için ağırlıklarda güncellemeler yapılmıyorsa öğrenmenin duracağı açıktır. Bu mutlaka minimum seviyeye ulaştığımız anlamına gelmez! Çünkü maliyet fonksiyonumuz oldukça karmaşık ve çok boyutlu uzayda minimumu bulmamız gerekiyor. Bu nedenle eğimin sıfır olduğu ve ağın öğrenmeyi durdurduğu birçok yerel minimum olabilir. Neyse, bu sorun için endişelenmemize gerek yok.


Aşağıdaki ifadeye bakalım:


Bu ifade z_i'yi x_ji girişlerinin ağırlıklı toplamı olarak tanımlar. Bu girdilerin mimarimizdeki yeşil nöronlar olduğuna dikkat edin. Gizli katmanımız olmadığından, x_ji girişlerini ve w_j ağırlıklarını birleştiriyoruz ve mimarimizdeki yeşil nöronlardan kırmızı nörona bağlantı oklarıyla temsil edilen z_i'yi elde etmek için bir önyargı terimi ekliyoruz. q girdimiz olduğundan, x_j ve w_j'ye sahibiz; burada j = 1'den q'ya kadar

Ancak z_i'yi kırmızı nörona aktarmıyoruz. Ona bir “aktivasyon fonksiyonu” uyguluyoruz. Bu aktivasyon fonksiyonu farklı sinir ağları için farklı olabilir. Bu problemin amaçları doğrultusunda aktivasyon fonksiyonunun “Sigmoid” veya “lojistik” olduğunu varsayıyoruz. Burada okuyucunun bu fonksiyonun farkında olduğunu varsayarak devam edeceğim.


Daha sonra ana sorun açıklamamız geliyor - Maliyet fonksiyonunu (C) nasıl tanımlarız? İkili sınıflandırma için maliyet fonksiyonunun “Çapraz entropi” olduğu iyi bilinmektedir ancak buradaki soru neden “İkinci Dereceden” olamayacağıdır.


Her iki maliyet fonksiyonunun ifadelerini tanımlayalım:


İkinci dereceden maliyet fonksiyonu – Çapraz Entropi maliyet fonksiyonu –


İkinci dereceden maliyet fonksiyonu basit olsa da (gerçek çıktı y_i ile tahmin edilen çıktı a_i arasındaki en küçük kareler minimizasyonunu düşünün), çapraz entropi maliyet fonksiyonu için bazı açıklamalar sunabiliriz. Bu, regresyon modellerimizdeki negatif log olasılığına benzer. Parantezlerin dışında maliyeti pozitif tutmak için kullanılan negatif bir işaret olduğuna dikkat edin (çünkü a_i 0 ile 1 arasında olacaktır - sigmoid çıktısı, dolayısıyla parantez içindeki terim her zaman negatif olacaktır). Ayrıca a_i, y_i'ye gerçekten yaklaştığında maliyetin gerçekten sıfıra yaklaştığını unutmayın. Bunun nedeni, y_i = 1 ve a_i ~ 1 olduğunda ln(a_i)'nin yaklaşık 0 olmasıdır. Benzer şekilde, y_i= 0 ve a_i ~ 0 olduğunda ln(1-a_i)'nin yaklaşık 0 olmasıdır. Böylece bu fonksiyon, Model iyi tahminde bulunduğunda maliyet pozitif ve minimum düzeydedir. Ancak aynı şey ikinci dereceden maliyet fonksiyonu için de söylenebilir. Ancak biz kullanmıyoruz. Neden? İşte açıklama geliyor


Daha önce gördüğümüz temel ağırlık güncelleme denklemine geri dönüyoruz ve ona ikinci dereceden maliyet fonksiyonunu giriyoruz. Aşağıdakileri alıyoruz

Şimdi işleri basit tutmak için yalnızca tek bir veri noktasını ele alacağız, yani i=1 ve n=1. Ve her w_j ağırlığı için kısmen farklılaştırıyoruz. Aşağıdakileri alıyoruz:

i = 1 olduğundan şunu hatırlayın:

Z'nin değerini değiştirerek şunu elde ederiz:

Bu, ağın ağırlıklarının güncellenmesinden sorumlu olan gradyan vektörümüz, ikinci dereceden bir maliyet fonksiyonu kullandığımızda sigmoid fonksiyonunun bir türevine sahip olacaktır.


Şimdi sigmoid fonksiyonunun türevinin davranışına bakalım:


Yukarıdaki grafikten, sigmoid fonksiyonunun eğimini temsil eden türevin, z girişi büyüdüğünde 0'a yaklaştığı açıktır! Bu ne anlama gelir? Bu, aktivasyon girişi z büyük olduğunda gradyan vektörünün sıfır olacağı anlamına gelir. Bu nedenle ağırlıklar güncellenmeyeceği için ağ öğrenmeyi durduracaktır. Bunun minimum seviyeye ulaştığımız anlamına gelmediğini unutmayın. Bu, istenmeyen bir noktada ve minimum değerden uzak olabilecek fonksiyon uzayında sıkışıp kaldığımız anlamına gelir. Buna “öğrenmenin yavaşlaması” denir. Ancak bu, çapraz entropi maliyet fonksiyonuyla OLMAZ.


Çapraz entropi maliyet fonksiyonunu kullanarak aynı ikameyi gerçekleştiririz ve aşağıdakileri elde ederiz:

Terimin şunu not etmesi ilginçtir:

ikinci dereceden maliyet gradyanında da ortaya çıkar. Ancak bunu basitleştirmek için kullanacağımız bir püf noktası var. Sigmoid fonksiyonunun gradyanı aşağıdaki gibi ifade edilebilir

Bunu orijinal ifademizde yerine koyarsak aşağıdakini elde ederiz:

Yani, ağın ağırlıklarının güncellenmesinden sorumlu olan gradyan vektörümüz, çapraz entropi maliyet fonksiyonu kullandığımızda sigmoid fonksiyonunun bir türevine sahip değildir . Dolayısıyla bu maliyet fonksiyonuyla öğrenmede herhangi bir yavaşlama olmaz.


Daha iyi bir görünüm için degradeleri tekrar yan yana getiriyoruz:

Bu asıl sorumuza cevap veriyor; ikinci dereceden maliyet fonksiyonunu kullanmıyoruz çünkü öğrenmenin yavaşlamasına yol açıyor.


Yukarıdaki analizin yalnızca çıktı katmanında (bir nöronun) yapıldığını, ancak genel bir sinir ağı için de genelleştirilebileceğini unutmayın!