Bu yazıda MATLAB programında mevcut olan newff komutu kullanarak Yapay Sinir Aği eğitimin gerçeklenmesi anlatılacaktır.
Ağ eğitimi için öncelikle giriş çıkış veri setinin tanımlanması gerekmektedir. M girişli ve N çıkışlı bir Yapay Sinir Ağı için sayısının K adet örnekten oluşan veri seti için girişi veri seti için MxK‘lık, çıkış veri seti için NxK‘lık matrisler oluşturulmalıdır. Örnek olarak XOR problemini ele alırsak giriş çıkış veri seti aşağıdaki gibi olmaktadır.
Input = [0 0 1 1; 0 1 0 1]; Output = [0 1 1 0];
Yapay Sinir Ağı yapısının oluşturulması için newff komutu kullanılır. Komut seti içerisinde ilk olarak giriş veri setinin minimum ve maksimum değerleri tanımlama işlemi yapılmaktadır ([minmax(Input)]). Bu ifade ile aynı zamanda ağın giriş sayısıda tanımlanmış olmaktadır. İkinci olarak kullanılacak ağın yapısı tanımlanmaktadır. Kodda tanımlanan [9 1] ifadesi ile 1 gizli katmana sahip ve bu katmanda 9 hücre olduğu, çıkış katmanının ise 1 adet çıkış hücresine sahip olduğu ağ tanımlanmaktadır. Bu değer [9 3 1] şeklinde olursa bu sefer 2 gizli katmana sahip ağ tanımlanmakta ve sırasıyla bu katmanlar 9 ve 3 hücreye sahip olmaktadır. {‘tansig’, ‘purelin’ } ifadesi ile gizli katmanda tanjant hiperbolik aktivasyon fonksiyonunun ve çıkış katmanında lineer aktivasyon fonksiyonu kullanılacağı tanımlanmaktadır. ‘trainlm‘ ile de ağın eğitiminde kullanılacak algoritma seçilmektedir. LM algoritması seçilmesi önerilmektedir.
net=newff([minmax(Input)], [9 1], {'tansig', 'purelin' }, 'trainlm');
init(net) komutu ile ağ oluştırma işlemi yapılmaktadır.
net=init(net);
Aşağıda tanımlanan parametreler sırasıyla iterasyon sayısını, performans değerini, öğrenme oranını ve momentum değerini göstermektedir.
net.trainParam.epochs=2500; net.trainParam.goal = 0.0000000001; net.trainParam.lr=0.30; net.trainParam.mc=0.7;
Tanımlanan parametreler doğrultusunda ağ eğitimi işlemi aşağıdaki şekilde yapılmaktadır.
net=train (net, Input, Output);
Ağın başarımını test etmek için ise sim komutu kullanılır.
Test_Output = sim(net,[ Input]);
Ağın başarımı ise test çıkışları ile beklenen çıkış değerlerinin farkı kullanılarak ortalama karesel hata değerin hesaplanarak yorumlanabilmektedir.
TK = mse(Test_Output - Output);