Model Ağırlıklarının Açıklama Uzunluğunu Minimize Ederek Sinir Ağlarını Basitleştirmek
1993'de yayımlanmış “Keeping Neural Networks Simple by Minimizing the Description Length of the Weights” makalesinin Türkçe çevirisidir.
Basit Açıklama
Sinir ağları, bilgisayar programlarının verileri görerek bir şeyler öğrenmesini sağlayan sistemlerdir. Bu sinir ağları, beyinlerimize benzer ve nöronlardan oluşur. Bu nöronlar, ağırlık adı verilen değerler taşır ve bu ağırlıklar, sinir ağının karar vermesine yardımcı olur.
1993 yılında yazılmış “Ağırlıkların Açıklama Uzunluğunu Minimize Ederek Sinir Ağlarını Basit Tutma” başlıklı makale, bu sinir ağlarını nasıl daha akıllıca inşa edebileceğimizden bahseder. Amaç, sinir ağını mümkün olduğunca basit tutmak ve en az sayıda ağırlık kullanarak hala iyi çalışmasını sağlamaktır.
Bu makale, “Minimum Açıklama Uzunluğu” (MDL) adı verilen bir prensibi kullanır. MDL prensibi, en iyi sinir ağının, ağırlıkları için en kısa talimatlara (veya açıklamaya) sahip olan ağ olduğunu söyler. Başka bir deyişle, bu prensip, tarifin çok kısa ve net olduğu bir yemek tarifine benzer. Bu prensibi takip ederek, ağ basit hale gelir, anlaşılması kolay olur ve genellikle daha iyi çalışır çünkü çok karmaşık değildir.
Bu makale, bilim insanlarının en basit ve en etkili sinir ağlarını inşa etmek için doğru ağırlıkları nasıl seçebileceklerini anlamalarına yardımcı olur.
Öz
Denetimli sinir ağları, ağırlıklarda bulunan bilgi miktarı, eğitim verilerinin çıktı vektörlerindekinden çok daha az olduğunda iyi genelleme yapar. Bu nedenle, öğrenme sırasında ağırlıkları basit tutmak ve içerdiği bilgi miktarını cezalandırmak önemlidir. Bir ağırlıktaki bilgi miktarı, Gauss gürültüsü eklenerek kontrol edilebilir ve gürültü seviyesi, ağın beklenen kare hatası (expected square error) ile ağırlıklardaki bilgi miktarı arasındaki dengeyi optimize etmek için öğrenme sırasında uyarlanabilir. Beklenen kare hatası türevlerini ve doğrusal olmayan gizli birimlerden oluşan bir katman içeren bir ağdaki gürültülü ağırlıklardaki bilgi miktarını hesaplamak için bir yöntem açıklıyoruz. Çıktı birimlerinin doğrusal olması koşuluyla, tam türevler, zaman alıcı Monte Carlo simülasyonlarına gerek kalmadan verimli bir şekilde hesaplanabilir. Bir sinir ağının ağırlıklarını iletmek için gereken bilgi miktarının en aza indirilmesi fikri, ağırlıkların kodlanması için bir dizi ilginç yöntemin ortaya çıkmasına yol açmaktadır.
1. Giriş
Pek çok pratik öğrenme görevinde çok az kullanılabilir eğitim verisi vardır, bu nedenle oldukça karmaşık olan herhangi bir model, verileri aşırı kullanma ve yeni verilere zayıf genelleme yapma eğiliminde olacaktır. Aşırı uyumdan (overfitting) kaçınmak için ağırlıklarda, eğitim vakalarının çıktı vektörlerinde olduğundan daha az bilgi olmasını sağlamamız gerekir. Araştırmacılar ağırlıklardaki bilgiyi sınırlamanın birçok olası yolunu değerlendirdiler, bunlar:
- Ağdaki bağlantı sayısını sınırlamak (ve her ağırlığın içinde çok fazla bilgi bulunmadığını umun).
- Bağlantıları alt kümelere bölün ve bir alt küme içindeki ağırlıkların aynı olmasını sağlayın. Eğer bu “ağırlık paylaşımı” görevin doğal simetrilerinin analizine dayanıyorsa, çok etkili olabilir.
- Ağdaki tüm ağırlıkları nicemlendirin, böylece her nicemlenmiş değere bir olasılık kütlesi “p” atanabilir. Nicemlemeyi tanımlamanın maliyetini göz ardı etmemiz koşuluyla, bir ağırlıktaki bitlerin sayısı log(p) olur. Ne yazık ki bu yöntem, ağırlığın maliyetinin düzgün bir türevi olmadığından zor bir arama alanına (search space)(olası çözümler kümesine) yol açar.
2. Minimum Açıklama Uzunluğu Prensibinin Uygulanması (Applying the Minimum Description Length Principle)
Modelleri verilere uydururken, daha karmaşık bir model kullanarak eğitim verilerini daha iyi uydurmak her zaman mümkündür, ancak bu, modelin yeni verileri öğrenme konusunda daha kötü olmasına neden olabilir. Bu yüzden, modeldeki ek karmaşıklığın, veri uyumundaki iyileşmeye değmediğine karar vermenin bir yoluna ihtiyacımız var. Minimum Tanım Uzunluğu İlkesi (Rissanen, 1986), bir veri kümesinin en iyi modelinin, hem modelin kendisinin tanımlanma maliyetini hem de modelin veriyle ne kadar iyi uyuşmadığını açıklama maliyetini en aza indiren model olduğunu belirtir. Önceden belirlenmiş bir mimariye sahip denetimli sinir ağları için model maliyeti, ağırlıkları tanımlamak için gereken bit sayısıdır ve veri-uyumsuzluk maliyeti, doğru çıktı ile sinir ağının her eğitim örneğindeki çıktısı arasındaki uyumsuzluğu tanımlamak için gereken bit sayısıdır. Girdi vektörünü ve doğru çıktıyı görebilen bir gönderici ile yalnızca girdi vektörünü görebilen bir alıcı düşünelim. Gönderici önce, önceden belirlenmiş mimariye sahip bir sinir ağını tüm eğitim örneklerine uydurur, ardından ağırlıkları alıcıya gönderir. Her eğitim örneği için gönderici ayrıca ağın çıktısı ile doğru çıktı arasındaki uyumsuzluğu gönderir. Bu uyumsuzluğu ağın çıktısına ekleyerek, alıcı tam olarak doğru çıktıyı oluşturabilir.
3. Veri uyumsuzluklarını kodlama (Coding the data misfits)
MDL (minimum description length) ilkesini uygulamak için olan veri uyumsuzlukları (ölçülen veriler ile model tarafından tahmin edilen veriler arasındaki fark) ve ağırlıklar için bir kodlama şemasına karar vermemiz gerekir. Açıkçası, eğer veri uyumsuzlukları gerçek sayılar ise, bunları iletmek için sonsuz miktarda bilgiye ihtiyaç vardır. Dolayısıyla bunların sabit genişlikteki t aralıkları kullanılarak çok ince bir şekilde nicemlendirildiğini varsayacağız. Ayrıca veri uyumsuzluklarının her bir çıktı birimi için ayrı ayrı kodlandığını da varsayacağız.
Kodlama teoremi bize, eğer bir gönderici ve bir alıcı, her olası nicemlenmiş veri uyumsuzluğu △y’ye bir p(△y) olasılık kütlesi atayan bir olasılık dağılımı üzerinde anlaşırlarsa, bu durumda uyumsuzluğu -log2p(△y) kullanarak kodlayabileceğimizi söyler.
Eğer beklenen bit sayısını en aza indirmek istiyorsak, kullanılacak en iyi olasılık dağılımı doğru olanıdır, ancak üzerinde anlaşılmış herhangi bir başka dağılım da kullanılabilir. Kolaylık sağlamak amacıyla, j çıktı birimi için veri uyumsuzluğunun, standart sapma σj ile ortalaması sıfır olan bir Gauss dağılımından alındıklarını varsayarak kodlandığını varsayacağız. σj’nin nicemleme genişliği t ile karşılaştırıldığında büyük olması koşuluyla, arzu edilen çıktı, c eğitim durumu üzerindeki dj^c ve gerçek çıktı yj^c arasındaki belirli bir veri yanlışlığının varsayılan olasılığı, daha sonra aşağıda gösterilen olasılık kütlesi ile iyi bir şekilde tahmin edilir:
Optimal bir kod kullanıldığında, veri uyumsuzluğunun (dj^c — yj^c) log2(e) bit birimleri cinsinden (nats olarak adlandırılır) açıklama uzunluğu şöyledir:
Tüm N eğitim durumu üzerinden toplanan bu açıklama uzunluğunu en aza indirmek için, σj’nin optimal değeri, uyumsuzlukların sıfırdan sapmasının ortalama kare ortalamasıdır. Bu σj değerini kullanarak ve tüm eğitim durumlarını topladığımızda denklem 2'nin son terimi bir sabit olur ve veri uyumsuzluğu maliyeti şu olur:
Burada k yalnızca t’ye bağlı bir sabittir. σj için optimal değeri mi yoksa önceden belirlenmiş bir değeri mi kullandığımızdan bağımsız olarak, açıklama uzunluğunun olağan karesel hata (MSE) fonksiyonunun en aza indirilmesiyle en aza indirildiği açıktır, böylece kodlama hakkında yaptığımız Gauss varsayımları, bu hatanın MDL gerekçesi olarak görülebilir.
4. Ağırlıkları kodlamanın basit bir yöntemi (A simple method of coding the weights)
Veri uyumsuzluklarını kodladığımız gibi ağırlıkları da kodlayabiliriz. Eğitilen ağın ağırlıklarının hassas bir şekilde nicemlendirildiğini ve sıfır ortalamalı Gauss dağılımından geldiğini varsayıyoruz. Bu dağılımın standart sapması (σw) önceden sabitlenirse, ağırlıkların açıklama uzunluğu basitçe bunların karelerinin toplamı ile orantılı olur. Dolayısıyla, çıktı hatalarını kodlamak için standart sapması σj olan bir Gaussian kullandığımızı varsayarsak, iki terimin toplamını en aza indirerek veri uyumsuzluklarının toplam açıklama uzunluğunu ve ağırlıkları en aza indirebiliriz:
Bu sadece standart “ağırlık azaltma” (weight-decay/ regularization) yöntemidir. Ağırlık azalmasının genellemeyi iyileştirmesi gerçeği (Hinton, 1987), veri uyumsuzluklarını kodlamak için kullanılan Gaussianların standart sapmalarının ve ağırlıkların her ikisinin de önceden sabitlendiği bu kaba MDL yaklaşımının bir kanıtı olarak görülebilir.
Standart ağırlık azalımının (weight-decay) daha gelişmiş bir hali, eğitilmiş ağdaki ağırlıkların dağılımının, ağın uyarlanması sırasında ortalamaları, varyansları ve karışım oranları ayarlanan birkaç Gauss dağılımının bir karışımı kullanılarak daha doğru bir şekilde modellenebileceğini varsaymaktır (Nowlan ve Hinton, 1992).
Bazı görevler için bu ağırlıkları kodlamanın daha ayrıntılı yolu, çok daha iyi bir genelleme sağlar. Bu, özellikle az sayıda farklı ağırlık değerlerinin gerekli olduğu durumlarda geçerlidir.
Bununla birlikte, bu daha ayrıntılı şema hala ciddi bir zayıflığa sahiptir: Tüm ağırlıkların aynı toleransla nicemlendirildiğini ve bu toleransın, ağırlık dağılımını modellemek için kullanılan Gaussian’ların standart sapmalarıyla karşılaştırıldığında küçük olduğunu varsayar. Dolayısıyla bir ağırlığın olasılık yoğunluğunu (Şekil 1'deki yüksekliği) hesaba katar ancak kesinliği (genişliği) göz ardı eder. Bu korkunç bir bit israfıdır. Bir ağın, bazı ağırlık değerlerinin, ağın tahminlerini önemli ölçüde etkilemeden çok kesin olmayan bir şekilde tanımlanabildiğini açıklamak açıkça çok daha ekonomiktir. MacKay (1992), ağ eğitildikten sonra ağırlıklardaki küçük değişikliklerin ağın çıktıları üzerindeki etkilerini değerlendirmiştir. Bir sonraki bölüm, bir ağırlığın kesinliğinin hem olasılık yoğunluğuna hem de ağırlıktaki belirsizliğin neden olduğu aşırı veri uyumsuzluğuna karşı değiş tokuş edilebilmesi için eğitim sırasında ağırlıkların kesinliğini hesaba katan bir yöntemi açıklamaktadır.
5. Gürültülü Ağırlıklar (Noisy weights)
Bir sayıdaki bilgi miktarını sınırlamanın standart bir yolu, sıfır ortalamalı (zero-mean) Gauss gürültüsü eklemektir. İlk bakışta, gürültülü bir ağırlığın iletilmesi kesin olandan daha pahalı gibi görünür çünkü bir ortalamanın yanı sıra bir varyans da göndermemiz gerekmektedir ve bunların her ikisi için de bir hassasiyete karar vermemiz gerekmektedir. Ancak ileride göreceğimiz gibi, MDL çerçevesi çok gürültülü ağırlıkların çok ucuza iletilmesine izin verecek şekilde uyarlanabilir.
İleri beslemeli bir sinir ağını eğitmek için geri yayılımı kullanırken, ağırlık uzayında belirli bir noktadan başlamak ve bu noktayı hata fonksiyonunu azaltacak yönde hareket ettirmek standart bir uygulamadır. Alternatif bir yaklaşım, ağırlık vektörleri üzerinde çok değişkenli bir Gauss dağılımıyla başlamak ve bu ağırlık vektörleri bulutunun hem ortalamasını hem de varyansını değiştirerek bazı maliyet fonksiyonlarını azaltmaktır. Kendimizi ağırlıkların bağımsız olduğu dağılımlarla sınırlayacağız, bu şekilde dağılım ağırlık başına bir ortalama ve bir varyans ile temsil edilebilir hale gelir. Maliyet fonksiyonu, ağırlıkların ve veri uyumsuzluklarının beklenen açıklama uzunluğudur. Yüksek varyanslı ağırlıkların iletilmesinin daha ucuz olduğu, ancak veri uyuşmazlıklarının fazladan varyansa neden oldukları, dolayısıyla bu veri uyumsuzluklarının iletişimini daha pahalı hale getirdiği ortaya çıkmıştır.
5.1 Ağırlıkların beklenen açıklama uzunluğu (The expected description length of the weights)
Verili bir ağırlık için göndericinin ve alıcının, üzerinde anlaşmaya varılmış bir P Gauss önsel dağılımına (Gaussian Prior Distribution’a) sahip olduklarını varsayıyoruz. Öğrendikten sonra gönderici, ağırlık için bir Q Gauss sonsal dağılımına (Gaussian Posterior Distribution’a) sahip olur. Hem ağırlıkları hem de veri uyumsuzluklarını iletmeye yönelik bir yöntem tanımlıyoruz ve bu yöntemi kullanarak bir ağırlığın sonsal dağılımını iletmek için gereken bit sayısının P’den Q’ya asimetrik diverjans’a (assymetric divergence) (Kullback-Liebler mesafesi) eşit olduğunu gösteriyoruz.
5.2 Bitler Geri Argümanı (The “bits back” argument)
Gürültülü ağırlıklar kümesini iletmek için, gönderen ilk olarak, ağırlık için kesin bir değer seçmek amacıyla (çok ince bir t toleransı dahilinde) bir rastgele bit kaynağı kullanarak her ağırlık için sonsal olasılık dağılımını daraltır. Her olası değerin seçilme olasılığı, ağırlığın sonsal olasılık dağılımı tarafından belirlenir. Gönderici daha sonra bu kesin ağırlıkları önceki Gauss dağılımı P’yi kullanarak kodlayarak iletir, böylece kesin bir ağırlığın (w) iletişim maliyeti şu şekilde olur:
C(w) büyük olduğundan t, P’nin varyansına göre küçük olmalıdır. Ancak göreceğimiz gibi, sonunda büyük bir iade almamız gerekiyor. Kesin ağırlıkları (precise weights) gönderdikten sonra gönderen, bu ağırlıklar kullanılarak elde edilen veri uyumsuzluklarını iletir. Ağırlıkları ve uyumsuzlukları aldıktan sonra alıcı doğru çıktıları üretebilir. Ama aynı zamanda başka bir şey de yapabilir. Doğru çıktılara sahip olduğunda, gönderen tarafından kullanılan öğrenme algoritmasını çalıştırabilir ve göndericinin kesin ağırlıkları elde etmek için çöktüğü aynı sonsal olasılık dağılımını (Q) kurtarabilir. Şimdi, alıcı göndericinin sonsalını bildiği için her ağırlık için dağılım ve iletilen kesin değeri biliyorsa, göndericinin bu dağılımı bu değere daraltmak için kullandığı tüm rastgele bitleri kurtarabilir. Dolayısıyla bu rastgele bitler başarılı bir şekilde iletilir ve modelin ve uyumsuzlukların iletişiminin gerçek maliyetini elde etmek için bunları genel iletişim maliyetinden çıkarmamız gerekir. Bir ağırlığın (Q) sonsal dağılımını belirli bir ince nicemlenmiş değere (w) daraltmak için gereken rastgele bitlerin sayısı şöyledir:
Dolayısıyla, gürültülü bir ağırlık için gerçek beklenen açıklama uzunluğu, aşağıdaki dağılıma göre bir beklenti alınarak belirlenir:
Farklı ortalamalara ve varyanslara sahip Gauss’lular için asimetrik diverjans şöyledir:
Veri uyumsuzluklarının beklenen açıklama uzunluğu (The expected description length of the data misfits)
Yukarıda verilen veri uyumsuzluğu maliyetini hesaplamak için (dj^c — yj^c)²’nin beklenen değerine ihtiyacımız var. Bu karesel hata kısmen ağın sistematik hatalarından, kısmen de ağırlıklardaki gürültüden kaynaklanmaktadır. Ne yazık ki gürültülü ağırlıklara sahip genel ileri beslemeli ağlar için beklenen karesel hataların hesaplanması kolay değildir. Ağırlıklardaki gürültü seviyesi, doğrusal olmayanların düzgünlüğüyle karşılaştırıldığında yeterince küçükse doğrusal yaklaşımlar mümkündür, ancak bu, çok gürültülü ağırlıklara izin verme fikrinin ana amaçlarından birini boşa çıkarır. Neyse ki, yalnızca bir gizli katman varsa ve çıktı birimleri doğrusalsa beklenen karesel hatanın tam olarak hesaplanması mümkündür.
Ağırlıkların bağımsız Gauss gürültüsüne sahip olduğu varsayılır, dolayısıyla herhangi bir girdi vektörü için gizli h birimi tarafından alınan Gauss dağıtılmış toplam girdinin (μxh) ortalamasını (Vxh) ve varyansını (Vxh) hesaplayabiliriz. Bir tablo kullanarak, gizli birimin çıktısının ortalamasını (μyh) ve varyansını (Vyh) hesaplayabiliriz, her ne kadar bu çıktı Gauss dağılımına sahip olmasa da. Bu iki boyutlu tabloyu oluşturmak için birçok farklı μxh ve Vxh çiftinin kullanılması gerektiğinden çok fazla hesaplama yapılması gerekir. Her çift için μyh ve Vyh’yi hesaplamak için Monte Carlo örneklemesini veya sayısal entegrasyonu kullanmalıyız. Ancak tablo bir kez oluşturulduktan sonra çalışma zamanında Monte Carlo örneklemesini kullanmaktan çok daha verimli olur.
Gizli birimlerin çıktılarındaki gürültü bağımsız olduğundan, her bir doğrusal çıktı birimine bağımsız olarak varyansa katkıda bulunurlar. Gürültülü ağırlıklar aynı zamanda çıktı birimlerindeki farklılığa da katkıda bulunur. Çıktı birimleri doğrusal olduğundan, çıktıları (yj), aldıkları toplam girişlere (xj) eşittir. Belirli bir eğitim durumunda, j çıktı biriminin çıktısı yj, aşağıdaki ortalama ve varyansa sahip rastgele bir değişkendir:
Çıkış birimi j’nin aktivitesinin ortalaması ve varyansı, beklenen karesel hata 〈Ej〉’ye bağımsız katkılarda bulunur. Belirli bir eğitim durumunda j’nin istenen çıktısı dj ise, 〈Ej〉 verilir:
Dolayısıyla, her giriş vektörü için, 〈Ej〉’nin tam değerini hesaplamak amacıyla yukarıdaki tabloyu ve denklemleri kullanabiliriz. Ayrıca E = Σj〈Ej〉’nin tam türevlerini de geri yayabiliriz, ancak ilk önce türevlerin gizli birimler aracılığıyla geriye yayılmasına izin verecek başka bir tablo oluşturmamız gerekir. Daha önce olduğu gibi, tablo μxh ve Vxh ile indekslenmiştir ancak geriye doğru geçiş için tablonun her hücresi, denklemleri kullanarak h’nin çıkış türevlerini giriş türevlerine dönüştürmek için gereken dört kısmi türevi içerir:
6. Verilerin prior’ı belirlemesine izin verme (Letting the data determine the prior)
Şu ana kadar ağırlıkları kodlamak için kullanılan “prior” dağılımın tek bir Gaussian olduğunu varsaydık. Ağırlıklar iletilmeden önce bu kodlamanın hem gönderici hem de alıcı tarafından bilinmesi gerekir. Eğer ortalamasını ve varyansını önceden düzeltirsek, gerçek ağırlıkların kodlanmasını çok pahalı hale getiren uygun olmayan değerleri seçebiliriz. Bu nedenle, optimizasyon işlemi sırasında kodlama prior’ının ortalamasının ve varyansının belirlenmesine izin veriyoruz, böylece kodlama-prior’ı verilere bağlı hale gelir. Bu komik bir prior’dır! Kodlamanın ortalaması ve varyansı için olasılık dağılımlarını belirten bir hiper-prior başladığımızı ve ardından en iyi önsel kodlamayı bulmak için hiper-prior ve verileri kullandığımızı varsayarak bunu Bayes terimleriyle anlamlandırmaya çalışabiliriz. Bu, yalnızca hiper-prior’ı bilen bir alıcıdan önce kodlamanın iletilmesinin maliyetini otomatik olarak hesaba katacaktır. Uygulamada, kodlamanın iki parametresini önceden iletmenin maliyetini göz ardı ediyoruz, böylece hiper-pior’lar icat etmemize gerek kalmıyor.
6.1 Ağırlıklar için daha esnek bir prior dağılımı
Gürültülü ağırlıkların iletilmesi için tek bir Gauss prior kullanırsak, her gürültülü ağırlığın posterior dağılımı için nispeten basit bir ceza terimi olan asimetrik diverjans elde ederiz. Ne yazık ki, bu kodlama şeması ağırlıklardaki bazı ortak yapı türlerini yakalayacak kadar esnek değildir. Örneğin, ağırlıklardan birkaçının 1'e yakın değerlere sahip olmasını ve geri kalanların da 0'a çok yakın değerlere sahip olmasını istediğimizi varsayalım. Her bir ağırlığın posterior dağılımının varyansı düşükse (gürültüden kaynaklanan ekstra kare hatasını önlemek amacıyla) kaçınılmaz olarak ağırlıklar için yüksek bir kod maliyeti öderiz çünkü hiçbir Gaussian prior, 0 ve 1 civarında ani bir yükseliş için iyi bir model sağlayamaz.
Ağırlıkların farklı alt kümelerinin farklı dağılımlara sahip olabileceğini önceden biliyorsak, farklı alt kümeler için farklı kodlama prior’ları kullanabiliriz. MacKay’in (1992) gösterdiği gibi, girdi ve çıktı değerleri oldukça farklı ölçeklere sahip olabileceğinden, girdiden gizli ağırlıklar ve gizliden çıktıya ağırlıklar için farklı kodlama ön değerleri kullanmak mantıklıdır. Hangi ağırlıkların benzer olması gerektiğini önceden bilmiyorsak, ağırlık dağılımını Nowlan ve Hinton (1992) tarafından önerildiği gibi Gaussianların uyarlanabilir bir karışımıyla modelleyebiliriz. Optimizasyon sırasında karışımdaki ortalamalar, varyanslar ve karışım oranları, ağırlık değerlerindeki kümeleri modellemek için uyarlanır. Eş zamanlı olarak ağırlıklar mevcut karışım modeline uyum sağlar ve böylece ağırlıklar yakındaki kümelerin merkezlerine doğru çekilir. Örneğin karışımda 2 Gauss’un bulunduğunu varsayalım. Eğer bir Gaussian ortalama 1 ve düşük varyansa sahipse ve diğer Gaussian ortalama 0 ve düşük varyansa sahipse, düşük varyans ağırlıklarını 1 veya 0'a yakın değerlerle kodlamak çok ucuzdur.
Nowlan ve Hinton (1992) dolaylı olarak her bir ağırlık için sonsal dağılımın sabit ve ihmal edilebilir bir varyansa sahip olduğunu varsayarak, kodlama-önceki karışım dağılımı altında ağırlığın ortalamasının olasılık yoğunluğunu maksimuma çıkarmaya odaklandılar. Şimdi, son dağılımların hala tek Gauss olarak sınırlandırıldığı varsayılarak, ağırlıkların son dağılımlarının varyansını hesaba katacak şekilde tekniklerinin nasıl genişletilebileceğini göstereceğiz. Daha önce olduğu gibi, ağırlıkların kodlanması için kullanılacak karışım dağılımının iletilmesinin maliyetini göz ardı ediyoruz.
Karışım prior şu forma sahiptir:
Burada i Gauss Pi’nin karışım oranıdır. Gürültülü bir ağırlık için ön karışım ile tek Gauss sonuncusu Q arasındaki asimetrik farklılık şöyledir:
Günlüğün içindeki toplam, bunun analitik olarak entegre edilmesini zorlaştırır. Bu talihsiz bir durumdur çünkü optimizasyon süreci hem G(P, Q) hem de türevlerini P ve Q parametrelerine göre tekrar tekrar değerlendirmemizi gerektirir. Neyse ki, G’nin bir üst sınırı olan ve bu nedenle onun yerine kullanılabilir. Bu ifade, Gi(Pi, Q) cinsinden, önceki karışımdaki son dağılım Q ve Gaussian’ların her biri olan Pi arasındaki asimetrik farklılıklardır.
G’nin denklemdeki Gi’ye bağlı olma şekli, bir sistemin serbest enerjisinin sistemin çeşitli alternatif konfigürasyonlarının enerjilerine bağlı olma şekline tam olarak benzerdir. Aslında,yukarıdaki denklemi türetmenin bir yolu, kod maliyetinin serbest enerjiye benzediği bir kodlama şeması tanımlamak ve daha sonra istatistiksel mekanikten bir lemma kullanmaktır.
7. Gaussianların bir karışımını kullanan bir Kodlama şeması (A Coding scheme that uses a mixture of Gaussians)
Bir gönderici ve bir alıcının Gauss dağılımının belirli bir karışımı üzerinde zaten anlaştıklarını varsayalım. Gönderici artık aşağıdaki kodlama şemasını kullanarak bir ağırlığın arka Gauss dağılımından bir örnek gönderebilir:
- Karışımdaki Gausslulardan birini aşağıdaki ri olasılığı ile rastgele seçin:
2. Gaussian seçimini alıcıya iletin. Seçimi iletmek için karıştırma oranlarını prior olarak kullanırsak beklenen kod maliyeti şöyle olur:
3. Seçilen Gaussian’ı kullanarak örnek değeri alıcıya iletin. Alıcı, örneklemin seçildiği sonsal dağılımı yeniden oluşturduğunda geri aldığımız rastgele bitleri hesaba katarsak, örneklemi iletmenin beklenen maliyeti şöyle olur:
Dolayısıyla hem Gauss seçiminin hem de bu seçimin verildiği örnek değerin iletilmesinin beklenen maliyeti şöyledir:
4. Tüm sonsal ağırlık dağılımlarından örnekler aldıktan ve bu örneklenmiş ağırlıklarla eğitim vakalarındaki hataları aldıktan sonra, alıcı, öğrenme algoritmasını çalıştırabilir ve ağırlıkların örneklendiği sonsal dağılımları yeniden oluşturabilir. Bu, alıcının tüm Gi’yi yeniden yapılandırmasına ve dolayısıyla karışımdan bir Gaussian seçmek için kullanılan rastgele bitleri yeniden yapılandırmasına olanak tanır. Dolayısıyla, beklenen maliyetten çıkarılması gereken “geri bitlerin” (bits back) sayısı şöyledir:
Artık beklenen kod maliyetinden bitlerin çıkarılmasıyla elde edilen basit bir ifadeyi elde etmek için istatistiksel mekanikten bir lemma kullanıyoruz.
7.1 İstatistik mekaniğinden bir lemma (a lemma from statistical mechanics)
Sıcaklığı 1 olan bir fiziksel sistem için Helmholtz serbest enerjisi F, beklenen enerji eksi entropi olarak tanımlanır:
i’nin sistemin alternatif olası durumları üzerindeki bir indeks olduğu durumda, Ei bir durumun enerjisidir ve ri bir durumun olasılığıdır. F, durumlar üzerindeki olasılık dağılımının bir fonksiyonudur ve en aza indiren olasılık dağılımı F, olasılıkların enerjilerle üstel olarak ilişkili olduğu Boltzmann dağılımıdır:
Boltzmann dağılımı tarafından verilen minimumda, serbest enerji eksi bölme fonksiyonunun loguna eşittir:
Karışımdaki her Gaussian’ı fiziksel bir sistemin alternatif bir durumuyla eşitlersek, e^Ei’yi πie^(-Gi) ile eşitleyebiliriz. Yani karışımdan bir Gauss seçme yöntemimiz Boltzmann dağılımını kullanır çünkü bu, ri’yi e^Ei ile orantılı kılmaktadır. Alıcı, ri olasılıklarını yeniden oluşturduğunda başarılı bir şekilde iletilen rastgele bitler, Boltzmann dağılımının entropisine tam olarak karşılık gelir, dolayısıyla toplam kod maliyeti (geri bitler dahil) F’ye eşdeğerdir ve bu nedenle denklemde verilen ifadeye eşittir.
8. Uygulama (Implementation)
Gauss kodlamasının uyarlanabilir bir karışımıyla, maliyet fonksiyonunun türevleri orta derecede karmaşıktır, dolayısıyla bunların uygulanmasında hata yapmak kolaydır. Bu endişe vericidir çünkü gradyan iniş algoritmaları küçük hatalara karşı oldukça dayanıklıdır. Ayrıca, Gauss dağılımlarını lojistik fonksiyonlar aracılığıyla yaymak veya türevleri geri yaymak için kullanılan tabloların ne kadar büyük yapılacağını bilmek zordur. Uygulamanın doğru olduğunu göstermek ve tablo boyutlarına karar vermek için aşağıdaki anlamsal kontrolü kullandık. Her parametreyi küçük bir adımla değiştiriyoruz ve maliyet fonksiyonunun eğim ve adım boyutunun çarpımına göre değiştiğini kontrol ediyoruz. Bu yöntemi kullanarak doğrusal enterpolasyonlu bir 300 300 tablosunun oldukça doğru türevler verdiğini bulduk.
9. Preliminary Results
Bu algoritma ile alternatif yöntemler arasında henüz kapsamlı bir karşılaştırma yapmadık ve onu rekabetçi kılmak için daha fazla iyileştirmenin gerekli olduğu ortaya çıkabilir. Ancak algoritmayı çok az eğitim verisine sahip, çok yüksek boyutlu bir görev üzerinde denedik. Görev, bir peptid molekülü sınıfının etkinliğini tahmin etmektir. Her molekül 128 parametre (girdi vektörü) ile tanımlanır ve tek bir skaler (çıktı değeri) olan bir etkinliğe sahiptir. Ağırlıkların benzer ölçeklere sahip olması beklenebilmesi için tüm girdiler ve çıktılar sıfır ortalama ve birim varyansa sahip olacak şekilde normalleştirildi. Eğitim seti 105 vakadan, test seti ise geri kalan 420 veriden oluşuyordu. Ağırlıklardaki bilgi miktarını kontrol etmenin en faydalı olacağı durumlar olduğundan, kasıtlı olarak çok küçük bir eğitim seti seçtik. 4 gizli birimden oluşan bir ağ denedik. Bu ağ 521 uyarlanabilir ağırlık içerir (çıkış ve gizli birimlerin önyargıları dahil), bu nedenle, ağırlıklardaki bilgileri sınırlamazsak, 105 eğitim vakasına çok kötü uyum sağlar.
Ağırlıklardan önce kodlamamız olarak 5 Gauss’un uyarlanabilir bir karışımını kullandık. Gaussian’lar, 0,24 ile +0,24 arasında eşit aralıklı ortalamalarla başlatıldı ve komşularından 2 standart sapma ile ayrıldılar. Her bir ağırlığın sonsal dağılımları için başlangıç ortalamaları, ortalaması 0 ve standart sapması 0,15 olan bir Gaussian’dan seçilmiştir. Ağırlıklar için arkaların standart sapmalarının tümü 0,1 olarak başlatıldı.
Eşlenik gradyan yöntemini kullanarak tüm parametreleri aynı anda optimize ediyoruz. Varyanslar için log varyansını negatife dönmeyecek ve sıfıra düşmeyecek şekilde optimize ediyoruz. Ön kodlamadaki Gaussianların karışım oranlarının 0 ile 1 arasında olmasını ve 1'e eklenmesini sağlamak için xi’yi optimize ediyoruz:
Ağırlıkları, bunları tanımlamanın tam maliyetine göre cezalandırırsak, optimizasyon hızlı bir şekilde tüm ağırlıkları eşit ve negatif hale getirir ve çıktı biriminin önyargısını, eğitim setindeki istenen değerlerin ortalamasında çıktının x’i olarak kullanır. Neredeyse hiçbir bilgi içermeyen ağırlıklar kullanılarak birleşik maliyet fonksiyonunun azaltılması başlangıçta çok kolay gibi görünmektedir ve bu zayıf çözümden kaçmak çok zordur. Bu tuzağa düşmemek için ağırlıkların maliyetini 0,05'ten başlayan ve 0,5, 0,1, 0,2, 0,3, 0,4, 0,5, 0,6, 0,7, 0,8, 0,9, 1,0 çizelgesine göre kademeli olarak 1'e çıkan bir ko cent ile çarpıyoruz. Katsayının her değerinde, ağırlıkların 100 eşlenik gradyan güncellemesini yapıyoruz ve 1,0 nihai değerinde, maliyet fonksiyonu 106 nat’tan daha az değişene kadar optimizasyonu sonlandırmıyoruz (bir nat, log2(e) bittir). Şekil 2, optimizasyonun bir kez çalıştırılmasından sonra dört gizli birimin tüm gelen ve giden ağırlıklarını göstermektedir.
Ağırlıkların oldukça keskin üç küme oluşturduğu açıktır. Şekil 3,5 Gaussian’ın karışımın bu ağırlık dağılımı için uygun kodlamayı önceden uygulayacak şekilde uyarlandığını göstermektedir. Ağın performansı, test verilerinde elde ettiği hatanın karesi, test verileri için doğru cevapların ortalamasını tahmin ederek elde edilebilecek hatayla karşılaştırılarak ölçülebilir:
Gürültülü ağırlıkların başlangıç ortalamaları için rastgele seçilen farklı değerleri kullanarak optimizasyonu 5 kez çalıştırdık. Genel maliyet fonksiyonunun en düşük değerini elde eden ağ için göreceli hata 0,286 idi. Bu, gürültüsüz ağırlıklar kullandığımızda ve bilgi içeriklerini cezalandırmadığımızda aynı ağ için 0,967'lik göreceli hatayla karşılaştırılır. Dört doğrusal olmayan gizli birim ile basit ağırlık azalması kullanılarak elde edilen en iyi bağıl hata 0,317 idi. Bu, denklem 4'te σ²j /σ²w’ye karşılık gelen kare ağırlıklar için dikkatle seçilmiş bir ceza katsayısı gerektiriyordu. Bu ağırlık azalması katsayısını uygun bir şekilde ayarlamak için, eğitim setinin bir bölümünde birçok farklı değeri denemek ve eğitim setinin geri kalanını hangi katsayısının en iyi genellemeyi sağladığına karar vermek için kullanmak gerekliydi. En iyi katsayı belirlendikten sonra eğitim setinin tamamı bu katsayı ile kullanıldı. Ağırlık azalması katsayısını kademeli olarak arttırırsak ve test verileri üzerinde en iyi performansı veren değeri seçersek, ağırlık azalması kullanılarak 0,291 gibi daha düşük bir hata elde edilebilir. Ama bu hile yapmaktır. Doğrusal regresyon 35,6'lık büyük bir göreli hata verir (aşırı fazla aşırı uyum), ancak regresyon katsayılarının karelerinin toplamını test verilerindeki performansı optimize etmek için seçilen bir miktarla cezalandırdığımızda bu 0,291'e düştü. Bu, 4 gizli ünite ve optimal ağırlık azalması performansıyla hemen hemen aynıdır, çünkü muhtemelen küçük ağırlıklarda, gizli üniteler merkezi doğrusal aralıklarında çalışır, dolayısıyla tüm ağ etkili bir şekilde doğrusaldır.
Bu ön sonuçlar, yeni yöntemimizin, eğitim vakalarının sayısı girdi vektöründeki boyutların sayısından az olsa bile oldukça karmaşık doğrusal olmayan modeller oluşturmamıza olanak sağladığını göstermektedir. Sonuçlar ayrıca yeni yöntemin en az bir görevde basit ağırlık azaltımından biraz daha iyi olduğunu gösteriyor. Girdinin boyutuyla karşılaştırıldığında eğitim verisi miktarının çok küçük olduğu doğrusal olmayan görevlerin üstesinden gelmek için yöntemin diğer istatistiksel tekniklerle rekabetçi olup olmadığına karar vermek için çok daha fazla deneysel çalışmaya ihtiyaç vardır. Toplam açıklama uzunluğunun en düşük değerine sahip çözümün, çıktı sapması dışındaki tüm ağırlıkların eşit ve negatif olduğu çözüm olduğunu da belirtmekte fayda var. Bu çözümün göreceli hatası yaklaşık 1,0'dır, bu nedenle Minimum Açıklama Uzunluğu Prensibi veya ağırlıkları tanımlama yöntemimiz açısından ciddi bir sıkıntıdır.
10. Tartışmalar
İleri beslemeli bir sinir ağındaki ağırlıkları belirlemenin doğru fakat anlaşılması zor bir Bayes yöntemi vardır. Ağırlık alanındaki tüm olası noktalara yönelik bir ön dağıtımla başlıyoruz. Daha sonra ağırlık uzayındaki her noktada doğru sonsal dağılımı, öncelikleri bu ağırlıklar verilen eğitim setindeki çıktıları alma olasılığıyla çarparak oluştururuz. Son olarak tam sonsal dağılımı elde etmek için normalleştiririz. Daha sonra yeni girdi vektörleri için tahminlerde bulunmak amacıyla ağırlık değerlerinin bu dağılımını kullanırız. Pratikte ideal Bayes yöntemine en yakın olan yöntem, sonsal dağılımdan örnekleme yapmak için Monte Carlo yöntemini kullanmaktır. Bu, ağırlık alanındaki rastgele hareketler dikkate alınarak ve elde edilen ağın istenen çıktılara ne kadar iyi ulaştığına bağlı bir olasılıkla bir hareketi kabul ederek yapılabilir. Neal (1993), geri yayılım tarafından sağlanan gradyan bilgisinin, sonsal dağılımdan örneklerin elde edilmesinde çok daha verimli bir yöntem elde etmek için nasıl kullanılabileceğini göstermektedir. Monte Carlo yöntemlerinin en büyük avantajı, ağırlık uzayındaki sonsal dağılımın şekli hakkında gerçekçi olmayan basit varsayımlar dayatmamasıdır.
Sonsal dağılım hakkında basitleştirici varsayımlar yapmaya istekliysek, zaman alıcı Monte Carlo simülasyonlarından kaçınılabilir. MacKay (1992) ağırlık uzayında tek bir lokal optimal nokta bulur ve bu nokta etrafındaki sonsal dağılıma tam bir kovaryans Gauss yaklaşımı oluşturur. Bu yazıda önerilen alternatif yöntem, daha basit bir Gauss yaklaşımı kullanmak (kovaryans matrisinde köşegen dışı terimler olmadan), ancak öğrenme sırasında bu dağılımı dikkate almaktır. Doğrusal olmayan gizli birimlerin tek katmanıyla Gauss dağılımı üzerindeki entegrasyon tam olarak gerçekleştirilebilir ve tam ağırlık türevleri verimli bir şekilde hesaplanabilir.
Kovaryans matrisindeki köşegen dışı terimlerin göz ardı edilmesiyle ne kadar kayıp olduğu açık değildir. David Mackay ile yapılan kişisel görüşme, ağırlık uzayında tek, yerel olarak en uygun noktayı bulmak için standart geri yayılım kullanılırsa ve daha sonra bu nokta etrafında arka ağırlık dağılımına Gauss yaklaşımı oluşturulursa, farklı ağırlıklar arasındaki kovaryansların önemli olduğunu göstermiştir. Ancak bu, öğrenme algoritması Gauss dağılımını açıkça manipüle ettiğinde kovaryansların anlamlı olduğu anlamına gelmez çünkü bu durumda öğrenme, ağırlıklardaki gürültüyü bağımsız olmaya zorlayacaktır. Bağımsızlık baskısı, maliyet fonksiyonunun, gürültüyle ilişkili olması durumunda ağırlıklardaki bilgileri olduğundan fazla tahmin etmesinden kaynaklanmaktadır. Şu anda bu baskının gerçekten kovaryansları baskılayıp baskılamadığını görmek için simülasyonlar yapıyoruz.
Standart geri yayılım algoritmasını kullanırken gizli birimin çıkışının, girişinin düzgün bir fonksiyonu olması önemlidir. Gizli birimlerin doğrusal eşik işlevi yerine düzgün sigmoid işlevi kullanmasının nedeni budur. Ancak gürültülü ağırlıklarla, yukarıda açıklanan geri yayılım algoritmasının bir versiyonunun, tek katmanlı doğrusal eşik birimlerine sahip ağlarda kullanılması mümkündür. Ağırlıklardaki gürültü, bir eşik biriminin aktif olma olasılığının, girdilerinin düzgün bir fonksiyonu olmasını sağlar. Sonuç olarak, ağırlık vektörleri üzerinde bütün bir Gauss dağılımını optimize etmek, tek bir ağırlık vektörünü optimize etmekten daha kolaydır.
Kaynak
Geoffrey E. Hinton and Drew van Camp, (1993), Keeping Neural Networks Simple by Minimizing the Description Length of the Weights: