Sinirsel Ağ Sistemleri 2

Sinirsel Ağ Sistemleri 2

Çev.: Sinan VURAL Geçen ay başladığımız Sinirsel Ağ Sistemleri yazısına bu ay kaldığımız yerden devam ediyoruz. Bu ayki yazımızla birlikte döküm ekinde üç kısa program da yayınlıyoruz.

Geçen ay sinirsel ağ sistemlerine bir giriş yapmış ve bunların bir örneği olan linear associator (LA) - çizgisel ortaklık sistemini incelemiştik. LA farklı giriş çıkış modellerini biliyordu ancak onun da sınırları vardı. Sadece bazı giriş modellerini öğrenebiliyordu. LA'nın öğrenebileceği modellerin sayısı, ağ sisteminin ilk katmanındaki işlem elemanlarının (PE) sayısına eşittir. Örneğin ilk katmanında 10 tane PE içeren bir ağ sistemini ele alalım. Bu sistemin birinci katmanına 1024 (2^10) tane değişik giriş modeli verebilirsiniz, ancak sistem bunlardan ancak 10 tanesini tam olarak öğrenebilecektir. Eğer daha fazla model öğrenmesi için sistemi zorlarsanız, daha önce öğrenilen modeller unutulacaktır. Bu sınırlama back propagation (BP) - geri yayılma sinirsel ağını pratik uygulamalar için daha iyi bir sistem haline getirir. Zaten BP bugün dünyada en yaygın olarak kullanılan sinirsel ağ sistemidir. Bu konunun daha iyi anlaşılması için program döküm ekinde, BASIC'ten de kullanılabilen makine dili bir program verilmiştir. BP adlı program geri yayılma algoritmasına dayanır. Aynı zamanda programın işlevini göstermek için iki de BASIC program verilmiştir. Çizgisel ortaklık sisteminin sınırlamalarını yenebilmek için BP, ortaya üçüncü bir katman daha ekler (şekil-1). Orta katman, sistemin kendi içinde, problemin bir örneğinin yaratılmasını sağlar. Bu örnek problem tamamen sistemin içinde gelişir. Şekil-1'de görüldüğü gibi, ikinci katman girişlerini birinci katmandan alır ve çıkışlarını da üçüncü katmana verir. Bu, ikinci katmanın dış ortamla direkt olarak bağlantısı olmadığını gösterir ve bu yüzden de bu dahili örneği oluşturacak bir öğrenme algoritmasına ihtiyaç vardır. Dahili olarak oluşturulan örnek girişleri bir çok değişik biçimde kodlar. Bu özellikler daha sonra verilecek olan exclusive-OR (XOR) adlı örnek programda ele alınacaktır. XOR işlemi ise mantıksal işlemlerden olup, ancak ve ancak olarak Türkçe'ye çevrilebilir. Bundan sonra, bu işlemden XOR olarak bahsedeceğiz. Örnek programlar üç katmanlı BP ağı kullanarak yapılmışlardır, böyle isimlendirilmesinin nedeni ise sistemde üç katman PE bulunmasıdır. BP işlem ağı en az üç katman PE gerektirir, ancak karmaşık problemlerin çözümü için çok daha fazla sayıda katman gerekebilir. LA, geçen ayki sayıda sinirsel ağ sistemlerinin önemli bazı özelliklerini anlatmak amacıyla açıklanmıştı. BP sinirsel ağ sistemleri de LA'ya benzer ancak bazı farklar vardır: katman sayısı, çıkış fonksiyonu ve öğretici algoritma. Katmanların sayısı, matris düzenini çok az bir düzeyde etkiler. LA'da, birinci ve ikinci katmanlardaki PE'ler arasındaki bağlantıları kapsayan bir tane matris vardı. BP'de ise üç katman PE ve iki katman bağlantı mevcut. Bu iki katman bağlantılarla uğraşabilmek için bizim de iki tane bağlantı matrisine ihtiyacımız var, 1. ve 2. katman PE'ler arasındaki bağlantılar için ve 2. ve 3. katman PE'ler arasındaki bağlantılar için bağlantı matrisi. Birinci katman dış ortamdan girdilerini alır, üçüncü katman ise çıktılarını dış ortama verir. BP sistemine, üstüste oturtulmuş iki LA sistemi gibi bakabilirsiniz, ancak BP'de her katman için ayrı bir çıkış fonksiyonu vardır. LA'da her PE'nin çıkışı, o PE'nin etkinlik düzeyiydi, bu da bir önceki katmandaki girdileri alıp, bunları bağlantı matrisinin yardımıyla çarptıktan sonra toplayarak bulunuyordu. BP'de de etkinleşme düzeyi benzer şekilde hesaplanır, ama burada etkinleşme düzeyi çıkış değeri olarak aynen kullanılmaz ancak o PE'nin gerçek çıkışını yaratacak olan çıkış fonksiyonunun bir parametresi olarak kullanılır. Pratik yapmanın, sonucu mükemmelleştirdiğini bilirsiniz. Bu, BP sistemi için de geçerlidir. Bu sistemlerde öğrenmenin hatasız olması için giriş modellerini ve öğretici maddeleri bir çok defa girmelisiniz. Giriş ve öğretici modelleri ne kadar çok sayıda girerseniz sistem de bunları eşlemeyi o kadar iyi öğrenir. Toplam hata miktarı size programın öğrenmede katettiği mesafeleri gösterir. Siz bilgiyi vermeye devam ettikçe sistemin yaptığı toplam hata sayısı giderek azalır ve sonunda minimum bir değere ulaşır. Eğer toplam hatanın deneme sayısına karşı grafiğini çizecek olursanız, hatanın yüksek bir düzeyden başlayıp yavaş yavaş azaldığını ve sonuçta minimuma ulaştığını görürsünüz (şekil-2).

Hata Çıkış O O 3 Katman 2 katman ağ De Katman

Şekil 1. Geri besleme sisteminin şeması.

Toplam Hata

Deneme Sayısı

Şekil 2. Hata yüksekten başlar, giderek azalır ve sonuçta bir eşiği geçer.

Bunu canlandırabilmenizin en iyi yöntemi tepeden aşağı yuvarlanan top örneğini kullanmaktır. Tepeler genelde düzgün olarak alçalır ama aralarda vadiler de vardır, işte top bu vadilere geldikçe yavaşlar ama vadiyi geçecek kadar hızı vardır. Böylece aşağıya kadar devam eder ve dibe ulaşır (şekil-1).

BİLGİSAYAR BAŞINA

BP.ML adlı program kendi sistemlerinizi yaratmanıza yardımcı olacak bir geri yayılma simülatörüdür. Program, ağ sisteminin tüm işlerini yapar; sizin tek yapmanız gereken sistemin karakteristiğini belirlemek, öğrenmesi gereken modelleri girmek ve sistemi kaydetmektir. Sistemin bu modelleri tekrar hatırlamasını istediğinizde tek yapmanız gereken sistemi yüklemek ve giriş modellerini girmektir; bu sefer sistem size doğru çıkış modelleri ile cevap verir. Başlamanız için geri yayılma prensibine dayanan iki tane örnek BASIC program verilmiştir. BP, bu programlardaki problemleri çözebilir ama LA sistemi çözemez.

Hata .5

Deneme Sayısı

Şekil 3. Sinirsel Ağ Sistemi'ndeki hatalar tepeden yuvarlanan top hareketine uyar.

BP adlı program tamamen makine diliyle yazılmıştır, bu yüzden hata yapmamak için MDE'yi kullanın. Aynı şekilde BASIC programlar, XOR ve ENCODE için de BDE'yi kullanın. Programları yazdıktan sonra, çalıştırmadan önce birer kopyalarını kaydedin. Programların nasıl çalıştığını görmek için XOR adlı programı çalıştırın. Program BP.ML adlı programı diskten yükleyecektir, bu yüzden makine dilindeki programı bu adla kaydetmeniz gerekir. Programı çalıştırınca ağ sistemi kurulur ve sistem modelleri öğrenmeye koyulur. Öğrendikten sonra ise, program bildiği her model girişi sisteme sunar ve uygun çıktıyı yazar.

ARAÇ GEREÇLER

BP programının, basit geri yayılma işlemini yürütebilmek ve çalıştırabilmek için altı tane komutu vardır. Bunu takip eden paragraflarda bu komutların ne işe yaradıkları ve nasıl kullanılacakları açıklanmıştır. Komutları en başta anlamazsanız üzülmeyin, XOR örneğini inceledikçe anlayacaksınız. — SYS 49152, bpe, ipe, üpe, ms, öh, mom, hata: BP ağ sistemini çalıştır. Bu komutla basit bir geri yayılma ağı kurulur. Komut 8 tane BA-SIC değişken ve 11 tane de dizi oluşturur (tablo-1). Bu değişkenler ve diziler sisteminin verdiği çıkışları saklayacaktır. Bunlar BASIC değişkenleri olduğu için NEW veya CLR komutu kullanıldığında, başka bir program yüklendiğinde veya hafızadaki program değiştirildiğinde silinirler; bu yüzden dikkatli olmalısınız. Komuttaki *bpe', “ipe” ve “üpe', birinci, ikinci ve üçüncü katmanlarda ka-

Tablo-1. BP Tarafından Yaratılan Değişken ve Diziler Değişken Anlamı pl 1. katmandaki PE sayısı p2 2. katmandaki PE sayısı p3 3. katmandaki PE sayısı np sistemin öğreneceği model sayısı rate öğrenme hızı momentum — öğrenmenin momentumu epsilon izin verilen en yüksek hata oranı te öğrenmeden sonraki toplam hata Dizi (Boyut) Anlamı 02 (p2) 2. katmanın çıktısı 03 (p3) 3. katmanın çıktısı e2 (p2) 2. katmandaki hata €3 (p2) 3. katmandaki hata wi (p2, pl) 1. ve 2. katmanlar arasındaki bağlantıların ağırlıkları w2 (p3, p2) 2. ve 3. katmanlar arasındaki bağlantıların ağırlıkları mi (p2, pl) 1. ve 2. katmanlar arasındaki bağlantıların momentumu m2 (p3, p2) 2. ve 3. katmanlar arasındaki bağlantıların momentumu t (p2, np) öğretici modeller in (pl, np) — giriş modelleri e (np) her modeldeki hata miktarı çar tane PE olduğunu belirler. Teorik olarak bu sayılar 1'den, hafızanın izin verdiği maksimum sayıya kadar çıkabilir. Ama pratikte, büyük sistemler için öğrenme süresi çok fazla olur. Dördüncü eleman olan 'ms', ağ sisteminin öğrenmesi gereken model sayısını belirler. Bu değer ve ikinci katmandaki PE'lerin sayısı birbirine bağlıdır. Eğer ağ sisteminin ikinci katmanında, daha önce bahsettiğimiz dahili örneği oluşturacak sayıda PE yoksa, program kısır döngüye girer. *Lr”' elemanı, sistemin öğrenme hızını, *mom' elemanı da sistemin, bir modeli öğrenirken sahip olduğu momentumu belirler. Bu iki eleman daha sonra açıklanacaktır. Son elaman olan “hata' ise, izin verilecek maksimum hata miktarını belirler. Program bu değeri kullanarak modelleri ne zaman öğrendiğine karar verir.

— SYS 49155, mod: modeli tanı. Bu komutu, sistem girdiğiniz modelleri öğrendikten sonra, sistemin hatırlamasını istediğiniz bir modeli girmek için kullanın. “Mod' elemanı, bir dizi O ve 1'lerden oluşur. Bu O ve sayısı, ilk katmandaki PE'lerin sayısına eşit olmalıdır. — SYS 49164, hg: Modelleri öğrenmeye başlar. Bu komutu BP'nin model öğrenmeye başlaması için kullanın. Bu komutu kullanmadan önce, ağ sistemini SYS 49152 komutuyla çalıştırmanız ve SYS 49167 komutuyla eğitim çiftlerini vermeniz gerekir. Hatta gösterme elemanı “hg', her öğrenme bittikten sonra toplam hatanın gösterilip gösterilmeyeceğini ayarlar. Eğer değeri | verilirse hatalar gösterilir, O verilirse hatalar gösterilmez. — SYS 49167, mn, gm, em: Eğitim çiftlerini ayarla. Ağ sistemini çalıştırdıktan sonra bu komutu sistemin öğreneceği modelleri ayarlamak için kullanın. Bu modeller, çiftle- Ti” denen çiftler halinde verilir. Bu çiftler giriş ve eğitim modellerini içerirler. Komuttaki *mn' model numa- Tasını temsil eder. Modelleri istediğiniz sıra ile girebilirsiniz ancak sayıları BP'nin çalıştırma komutundaki model sayısını (ms) geçmemelidir.

Sisteme verilecek olan eğitim çiftlerinin tümüne 'eğitim seti' denir. “Gm' giriş modelini temsil eder ve sistemin öğreneceği giriş tipidir. Eğitim modeli *em', giriş modellerine karşılık gelecek olan çıkış modelllerini hesaplamada kullanılacaktır. İki model de tırnak içine alınmış O ve 1'lerden oluşmalıdır. Giriş modelindeki toplam karakter sayısı, sistemin birinci katmanındaki PE'lerin sayısına eşit olmalıdır. Öğretici modeldeki toplam karakter sayısı ise, sistemin ü katmanındaki PE'lerin sayısına eşit olmalıdır. — SYS 49172, “dosya ismi”': Sistemi kaydet. Bu komutla BP'nin yarattığı değişkenler ve diziler kaydedilir. Sistemi kaydetmek için komutu, tırnak içine de dosyanın ismini yazın. — SYS 49173, “dosya ismi”': Sistemi yükle. Bu komutla daha önce kaydedilen sistemlerin tekrar çalıştırılmadan geri çağrılması sağlanır.

XOR

XOR (mantıksal komut olarak ve ancak” diye Türkçe'ye çevrilebilir) fonksiyonu, geri yayılma tü- Tü ağ sistemlerinin çözmeyi öğrenebileceği klasik bir tür problemdir. XOR programını BP'nin fonksiyonunu anlatabilmek için size kendi sistemlerinizi yapmada yardımcı olabilmek için biraz inceleyeceğiz.

Tablo-2. XOR Fonksiyonu

0 XOR 0-0 1 XOR 0-1 0 XOR 1-1 1 XOR 1-0

XOR fonksiyonu iki giriş değeri alır ve bunları kullanarak bir çıkış değeri verir (tablo-2). En alt seviyede, fonksiyon iki giriş bitinden bir çıkış biti üretir. Sistem XOR'u, birinci katmanında iki ve üçüncü katmanında bir tane PE yaratarak taklit eder (şekil-4). Orta katmandaki PE sayısı sistemin kaç tane model öğrenmesini istediğimize bağlıdır. Bu örnekte bu sayı ikidir, çünkü iki, dört model öğrenmek için gereken en düşük sayıdır.

3. Katman

2. Katman

1. Katman

Şekil 4.XD2 problemini çözen sistemin ana şeması.

50. satırda SYS 49152 komutuyla sistemi çalıştırıyoruz. Bu komutu takip eden ilk üç sayı birinci, ikinci ve üçüncü katmanlarda kaçar tane PE olacağını belirler (söz konusu durumda bu sayılar 2, 2 ve 1'dir). Dördüncü değer sisteme dört tane model öğretmek istediğimizi gösterir. Sistem, modelleri, öğrenme denemeleri yaparak öğrenir. Her denemede, dahili örnek üzerinde yapılan işlemlerle doğru sonuca biraz daha yaklaşılır. Her deneme sonunda sistemin bulduğu sonuç ve gerçek sonuç arasındaki fark yazılır. SYS komutunu takip eden beşinci sayı öğrenme hızını belirler, bu her denemede hatadan azalacak olan miktardır. Altıncı değer yani sistemin momentumu da sistemin bir modeli ne kadar hızlı öğreneceğini ayarlar. Pratikte öğrenme hızı maksimum tutulurken, momentum da en aza indirilmeli; Eğer öğrenme hızı çok büyükse, sistem her modeli çok hızlı öğrenir ancak, daha önce öğrenmiş olduğu modelleri unutur. Öte yandan momentum çok yüksek bir değer alırsa, sistem her modeli çok hızlı öğrenir ama başka bir model öğrenmeye kalktığında hemen unutur. Amacımız sisteme tek bir model değil, bir grup model öğretmektir. En iyi sonucu almak için de öğrenme hızı en yüksek, momentum da en düşük değerini almalıdır. SYS komutundan sonraki son değer ise, sistemin yapmasına izin verilen toplam hata miktarıdır. Toplam hata, her öğrenme denemesinden sonra eğitim çiftlerindeki hataların toplamıdır. Toplam hata, izin verilen sınırın altına düşünce, sistem modelleri öğrendiğine karar verir. Eğer bu değer 0'a çok yakın bir değer verilirse BP, sonsuza kadar öğrenmeye devam eder, çünkü yaptığı hata hiçbir zaman sıfır olmayacaktır.

MODELLERİ ÖĞRENME

Ağ sistemi kurulduktan sonra, program eğitim çiftlerini hazırlar. 60- 90. satırlarda program giriş ve eğitim modellerini BP'ye sunar.

Artık BP çalışmaya hazırdır. 140. satırdaki SYS 49164 komutu modelleri öğrenmeye başlaması için BP'yi uyarır. Komuttan sonraki | sayısı, her öğrenme denemesinden sonra toplam hatanın yazılacağını belirtir. Tüm modelleri öğrenmek oldukça uzun bir zaman alabilir. Program sürdürmekte olduğunu öğrenme denemesini bitirene kadar RUN/STOP tuşuna basarak programdan çıkabilir. Sistem bir grup modeli öğrendikten sonra, 170-200. satırlarda çıkışı yazılır. 170. satır sisteme SYS 49155, *00” komutuyla ilk giriş modelini tanıtır. Model tırnak içinde olmalıdır ve tırnak içindeki rakam sayısı birinci katmandaki PE sayısına eşit olmalıdır. SYS komutundan sonra ikinci ve ü ü katmanların çıkış değerleri 02 ve 03 dizilerinde saklanır.

BAŞKA BİR ÖRNEK

Kodlama (encoding) problemi BP'nin çözebileceği başka bir klasik örnektir. Problem basit olarak şudur: Dört değişik giriş modeli, dört tane çıkış modeli ile eşlenecektir. BP'nin bu modelleri doğru olarak öğrenmesi için orta katmanında problemin bir. örneğini oluşturması lazımdır. Dört modelin temsil edilebilmesi için gereken minimum PE sayısı ikidir. EN-CODE adlı program işte bu dört modeli orta katmanında kodlamayı ve eşlemeyi öğrenir. Geri yayılma yöntemi çizgisel ortaklığın çözebildiği her sorunu çözebildiği gibi bir çok yeni tip problemi de çözebilir. BP sinirsel ağ sisteminin en büyük dezavantajı ise öğrenmek için geçen uzun süredir. Bu süre XOR örneği için bir dakika 20 saniyedir. Ne yazık ki öğrenme süresi doğrusal olarak değil ama her katmandaki PE'lerin sayısına bağlı olarak üssel olarak artar. Kodlama problemi için öğrenme süresi 27 dakika 49 saniyedir - neredeyse yarım saat. Gelecek ayki yazımızda da daha biyolojik bir grup olan “rekabet ederek öğrenen sinirsel ağ sistemleri'nden bahsedeceğiz.

KURA

[PIPOMBILGiSAYAR KARANPIL SOK 15/3