• Sonuç bulunamadı

XOR Probleminin MATLAB Yardımı İle Çözülmesi

4. UYGULAMADA KULLANILAN BĠLGĠSAYAR PROGRAMI - MATLAB Yapay sinir ağı ile ilgili çalışmaların yürütülmesinde bilgisayar desteği

4.2. XOR Probleminin MATLAB Yardımı İle Çözülmesi

Bu bölümde, Bölüm 3.2‟de çok katmanlı ileri beslemeli yapay sinir ağlarındaki işleyişinin anlatımı sırasında kullanılan XOR probleminin, yine Bölüm 3.2‟de ele alınan benzer başlangıç koşullarında MATLAB programındaki yapay sinir ağları araç kutusu yardımıyla çözümü yapılarak detaylı bir şekilde programın kullanımı anlatılacaktır.

MATLAB‟ın sadece yapılacak işlemleri hızlandıran ve kolaylaştıran bir ara program olduğu unutulmamalı, problemin çözümüne başlamadan önce modelin tasarlanmış, eğitim ve test veri kümeleri oluşturulmuş ve parametreler ile ilgili kararların verilmiş olmasına özen gösterilmelidir.

MATLAB programı çalıştırıldıktan sonra yapay sinir ağları ile ilgili araç kutusu “NNTool” Şekil 4.1‟de gösterildiği şekilde açılır.

ġekil 4.1: Yapay Sinir Ağları Araç Kutusuna (NNTool) Erişim

Yapay sinir ağları araç kutusunun başlangıçtaki görüntüsü Şekil 4.2‟deki gibidir. Bu ekran ağla ilgili bütün işlerin kontrol edileceği ekrandır. Modelin kaç katmanlı

kullanacakları fonksiyonların belirlenmesinden modele girdilerini nereden alacağının, beklenen çıktıların neler olduğunun gösterilmesine kadar bütün işlemler bu arayüz üzerinde gerçekleştirilir.

ġekil 4.2: NNTool Arayüzü

Yapay sinir ağları uygulamasında kullanılacak girdiler ve beklenen çıktıların tanımlanması gereklidir. MATLAB‟da bu girdi ve çıktı verilerinin tanımlanması işlemi vektörler vasıtasıyla gerçekleştirilir.

Girdileri ifade eden vektörü X, çıktıları ifade eden vektörü ise Y ile gösterelim. XOR problemine ait girdiler iki farklı değişkenden oluşan 0 ve 1 değeri olan ifadelerdir. MATLAB‟da girdi vektörü tanımlanırken dikkat edilmesi gereken hususlardan biri girdi sinir hücreleri kombinasyonlarını doğru ifade etmektir. Oluşturulan vektöre her bir girdi hücresinin her test grubu için değerleri arka arkaya yazılır. Yani birinci sinir hücresinin birinci eğitim adımında kullanılacak değeri ilk sayı, ikinci değeri ikinci sayı olmak üzere bütün değerleri aralarında bir boşluk bırakmak suretiyle girilir. İlk girdi hücresine ait tüm değerler girildikten sonra “;” işareti ile ikinci girdi hücresine

geçilir ve ilk girdi hücresinde olduğu üzere tüm adımlarda kullanılacak değerler arka arkaya arada sadece bir boşluk bırakılarak yazılır. Bu durumda XOR probleminin girdi vektörü X şu şekilde ifade edilir:

(4.1) X = [ 0 1 0 1; 0 0 1 1]

4.1‟de verilen vektör iki farklı sinir hücresini ifade etmekte, “;” işaretinden önceki sayılar 1. girdi hücresinin değerlerini, sonraki sayılar ise 1. girdi hücresi değerleriyle beraber kullanılacak 2. girdi hücresi değerlerini göstermektedir.

Çıktı vektörü (Y) de girdi vektörüne benzer şekilde oluşturulur. XOR problemi için 4.1‟de tanımlanılan girdi vektörüne (X) karşılık gelecek şekilde tanımlanan Y vektörü 4.2‟de gösterilmiştir.

(4.2) Y = [ 0 1 1 0]

MATLAB‟da vektör tanımlamaları ana ekranın sağ tarafında yer alan komut penceresinden yapılır. Şekil 4.3‟te problemde kullanılacak vektörlerin tanımlamalarının yapılışı gösterilmiştir.

Vektörler girildikten sonra MATLAB bu vektörlerden girdi gruplarını oluşturmakta, komut penceresinde bu grupları göstermekte ve sol tarafta görülen çalışma alanına bu verileri ilgili isim adı altında kaydetmektedir.

Daha büyük veri kümelerinin girişi sırasında karşılaşılabilecek karışıklık problemini önlemek amacıyla MATLAB Microsoft Excel‟de oluşturulan bir tablodan veri alma kolaylığını da sağlamaktadır.

ġekil 4.3: Girdi ve Çıktı Vektörlerinin Tanımlanması

MATLAB komut penceresinde oluşturulan vektörlerin oluşturulacak ağ modeline tanıtılması için Şekil 4.2‟de gösterilen arayüz üzerinde bulunan “import” komutu kullanılmaktadır. Bu komut sayesinde açılan pencerede oluşturulan vektörlerin model tarafından hangi amaçla kullanılacağı belirlenmektedir. Örneğin oluşturulan X vektörü için ekranın sağında yer alan “inputs” seçeneği seçilmelidir.

Yeni bir yapay sinir ağı oluşturmak için Şekil 4.2‟de gösterilen arayüzde “Networks” bölümü seçilmeli ve “New Data” seçeneği tıklanmalıdır. İşlem sonrasında Şekil 4.5‟te görülen model tasarlama arayüzü görülecektir.

ġekil 4.5: Yapay Sinir Ağı Oluşturma Arayüzü

Şekil 4.5‟te görülen arayüzde, en üstte oluşturulacak modele verilecek isim belirlenmektedir. Altındaki alanda, modellenecek olan yapay sinir ağı türü belirlenmektedir. XOR probleminin çözümünde kullanılacak olan model ileri beslemeli geri yayılım algoritmasıdır. Altta yer alan bölümlerde sırasıyla, girdi verilerin alabilecekleri değer aralıkları, ağın eğitiminde kullanılacak olan eğitim ve öğrenme fonksiyonu, ağın performansının takip edileceği performans fonksiyonu ve ağın kaç katmandan oluşacağı belirlenmektedir. Ağın oluşacağı katman sayısı hesaplanırken girdi katmanı dışında olan katmanlar düşünülerek işlem yapılacaktır. Arayüzün en alt bölümünde ise, her bir katman ile ilgili bilgiler sisteme yüklenmektedir. Burada her katmanda kaç tane sinir hücresinin bulunacağı ve bu sinir hücrelerinin girdilerini işlemede hangi fonksiyonu kullanacakları belirlenmektedir. İlgili veriler girildikten sonra “Create” tuşuna basılarak model

Çalışmada kullanılacak olan ağ tasarlandıktan sonra Şekil 4.2‟de gösterilen arayüzde ilgili ağ “Networks” bölümünde görülebilir. Burada ilgili model seçildikten sonra arayüzün altında bulunan düğmelerden “View” a basılması suretiyle ağ ile ilgili olarak detaylı bilgilere erişilebileceği gibi modelin ihtiyaç duyduğu diğer ayarlamalar da bu bölümden yapılabilir. İlerleyen paragraflarda bu işlemler teker teker açıklanacaktır.

“View” düğmesine basıldığında açılan arayüzde ilk olarak tasarlanan ağın çizimsel görüntüsü görülecektir. Şekil 4.6‟da XOR probleminin çözümünde kullanılacak ağın görünümü bulunmaktadır.

ġekil 4.6: Oluşturulan Ağı Görünümü

Şekil 4.6‟da verilen arayüz incelenecek olursa, ağın görüntüsünün verildiği bölüm dışında 5 alt başlığı daha kapsayan, 6 alt başlıklı bir yapı olduğu anlaşılır. Bu alt bölümlerden ikincisi “initialize” dır. Bu alanda ağın başlangıç ağırlıkları atanır ya da başlangıç koşulları değiştirilerek yeni ağırlıklarla model başlangıç konumu güncellenebilir. Arayüzün alt bölümünde yer alan “initialize weights” düğmesi ağırlıkların rassal olarak atanmasında kullanılmaktadır. “Revert weights” ise eğitilmiş bir ağın eğitim öncesindeki başlangıç konumundaki ağırlıklarına geri dönüşünde kullanılmaktadır. Şekil 4.7‟de ilgili arayüz gösterilmektedir.

ġekil 4.7: Başlangıç Ağırlıklarının Atanması

Modelin başlangıç konumundaki ağırlıklarının atanmasının ardından arayüzün son alt bölümü olan “Weights” bölümünden atanmış olan ağırlıklar görülebilir. Aynı şekilde, eğitimi tamamlanmış bir modelin ağırlıklarını görmek için de bu alt başlık kullanılır.

Şekil 4.8‟de gösterilen arayüzün üst kısmında, ağdaki hangi bağlantı değerlerinin görüntülenmesinin istendiğinin belirtildiği bir bölüm bulunmaktadır. Burada yapılan seçim doğrultusunda, arayüzün ortasında yer alan bölümde ilgili ağırlık değerleri girdi ve çıktı vektörlerine benzer şekilde sıralanmış biçimde gösterilmektedirler. Şekil 4.8‟deki örnek üzerinden anlatılacak olursa, parantez içerisinde yer alan ilk iki rakam birinci girdi sinir hücresi ile sırasıyla ilk ve ikinci gizli sinir hücreleri arasındaki bağlantıların kuvvetlerini gösterirken noktalı virgülden sonraki iki değer aynı sırayla ikinci girdi sinir hücresi ile ilgili bağlantı kuvvetlerini göstermektedir.

Bu aşamaya kadar yapılan işlemlerle ağ eğitim aşamasına hazır duruma gelmiş olmaktadır. Eğitimle ilgili son ayarlamaların yapılması için Şekil 4.6‟da gösterilen arayüzün “Train” alt bölümü kullanılmaktadır. Şekil 4.9‟da ilgili alt bölüm gösterilmiştir.

Eğitim ile ilgili yapılacak olan ayarlamalar 3 alt başlık altında toplanmıştır. Bu alt başlıklardan ilki “training info”dur ve bu bölümde ağın hangi girdileri ve hangi çıktı değerlerini kullanacağı bilgileri ile eğitim sonuçları olan çıktı ve hata değerlerinin hangi isimle saklanacağı bilgilieri tanımlanır.

Eğitim ile ilgili arayüzün ikinci altbaşlığı eğitimle ilgili parametrik değerlerin ağa girişinin yapıldığı “Training Parameters” bölümüdür. Bu bölümde eğitim sürecinin bitirilmesi için kullanılacak olan sınır değerler, iterasyon sayısı (epochs) ve hedeflenen hata miktarı (goal) değerleri modele girilir. Ayrıca öğrenme oranı (lr) ve momentum sabiti (mc) de tanımlanır. Eğitim sırasında hata miktarında meydana gelen iyileşmeyi gözlemek amacıyla “show” adında bir değer tanımlanır. Bu değer kaç iterasyonda bir iyileşme miktarının grafiğe yansıtılacağını belirlemektedir. 1 değeri ile her iterasyon sonucunu grafiksel olarak yansıtmak mümkünken genellikle daha büyük değerler ile daha izlenebilir bir grafik takibi yapılması uygun görülür.

ġekil 4.10: Eğitim Parametrelerinin Tanımlanması

Eğitim ile ilgili olarak son alt bölüm kullanıcının isteklerine bağlı olarak kullanabileceği bir bölüm olan “Optional Info” bölümüdür. İlk iki bölümde yapılan işlemler ağın eğitilmesi için yeterli olmakla birlikte kullanıcı isterse eğitim sırasında doğrulama ve test etme işlemlerini de gerçekleştirebilir. Kullanıcı tercihlerine bağlı olan bu işlemleri eş zamanlı gerçekleştirmek için kullanıcının yapması gereken anlatılan bölüme doğrulama ve test etme aşamalarında ağın kullanması gereken girdi ve çıktı vektörlerini tanımlamak olacaktır. Elbette ki, bu durumda modelin tasarlanması aşamasında eğitimde kullanılacak girdi ve çıktı vektörlerinin

ve çıktı vektörleri de tanımlanmalı ve “import” seçeneği kullanılarak modele girişi sağlanmalıdır.

ġekil 4.11: Eğitim Sırasında Kullanıcı Tercihine Bağlı Olarak Gerçekleştirilebilecek İşlemler

Önceki paragraflarda belirtilen tanımlamaların yapılmasının ardından ağ eğitim için hazır durumdadır ve sağ altta yer alan “Train” düğmesi ile eğitim süreci başlar. Model tanımlanan parametreler doğrultusunda girdi ve çıktı vektörlerini kullanarak kendini eğitir ve parametrelerin belirlenmesi esnasında girilen değer uyarınca (show) belirli aralıklarla hata miktarındaki gelişimi grafiksel olarak kullanıcıya sunar. Bu sayede kullanıcı eğitim süreci hakkında program tarafından bilgilendirilir. Modelin tasarlanması aşamasında rassal olarak atanan bağlantı kuvvetleri, her zaman problemin çözümünü veren ağırlık kombinasyonunu oluşturan değerlere ulaşmayı sağlayacak değerler olmayabilir. Hata miktarındaki değişimin grafiksel gösterimi kullanıcıyı böyle bir durumla ilgili olarak uyarıcı rolü üstlenmektedir. Çünkü hata miktarındaki değişimi gösteren grafiğin iterasyon sayısı artmasına rağmen yatay bir çizgiye yakın belirginleşmesi ve beklenen hata değerine oldukça küçük adımlarla yaklaşan bir şekil alması eğitimin oldukça uzun bir sürede gerçekleşeceği veya eğitimin tamamlanamayacağının bir göstergesidir. Bu durumda kullanıcı uygun

başlangıç değerlerini bulana kadar, eğitimi durdurup, başlangıç ağırlık değerlerini güncelleyerek eğitime yeniden başlamalıdır. Şekil 4.12‟de XOR probleminin çözümü sırasında takip edilen grafik verilmiştir.

ġekil 4.12: Eğitim Süresince Hatada Meydana Gelen Değişim

Eğitim süreci başarılı bir şekilde tamamlandığında yapılması gerken eğitilen ağın test edilmesidir. Bu amaçla Şekil 4.6‟da gösterilen ağ ile ilgili detay bilgilerin tanımlandığı arayüzdeki “Simulate” alt başlığı kullanılmaktadır. Şekil 4.13‟te gösterilen arayüzde test aşamasında kullanılacak girdi değerleri ve çıktıların saklanacağı vektörün ismi tanımlanmaktadır. Kullanıcı isteğine bağlı olarak test değerlerinin çıktıları da modele tanımlanabilir.

Ağın eğitilmi ve test edilmesi işlemlerinin sonuçları Şekil 4.2‟de gösterilmiş olan yapay sinir ağı arayüzünün sağ bölümünde yer alan “Outputs (çıktılar)” ve “Errors (hatalar)” bölümlerinde erişime hazır tutulmaktadır. Şekil 4.14‟te XOR probleminin

ġekil 4.13: Eğitilen Ağın Test Edilmesi

Arayüzde görülen çıktı vektörlerine ulaşmak için öncelikle model bünyesinde tutulan bu değerlerin modelden MATLAB‟ a aktarımının sağlanması gerekmektedir. Bunu gerçekleştirmek için yapay sinir ağı arayüzündeki “Export” komutu kullanılmaktadır. İlgili düğmeye basılması sonrasında Şekil 4.15‟te gösterilen arayüze ulaşılır. Bu arayüzde model bünyesinde kullanılan bütün vektörler gösterilmektedir. Kullanıcı incelemek istediği vektörü bu listeden belirlemek ve arayüzün altında yer alan “Export” seçeneğini seçmek suretiyle bu bilgilerin modelden MATLAB‟a aktarımını sağlayabilir. Bu işlem gerçekleştirildiğinde MATLAB ana sayfasında yer alan “Workspace” bölümünde incelenecek olan vektör Şekil 4.16‟da gösterildiği üzere erişilebilir hale gelecektir. Kullanıcı istediği vektörü bu alandan seçerek grafiksel gösterimine veya vektör bünyesindeki verilere ulaşabilir. XOR probleminin test aşamasının sonuçları modelden MATLAB çalışma alanına aktarılmış ve bu vektörün grafiksel gösterimine nasıl erişilebileceği Şekil 4.16‟da gösterilmiştir. XOR probleminin çözümü için geliştirilen modelin test aşamasının sonuç grafiği ve test aşamasında elde edilen değerler Şekil 4.17 ve Şekil 4.18‟de verilmiştir.

ġekil 4.16: Test Sonuç Grafiğine Erişim

Benzer Belgeler