Niyazi Volkan POLAT. Karabük Üniversitesi Bilgisayar Mühendisliği

Benzer belgeler
YAPAY SİNİR AĞLARI. Araş. Gör. Nesibe YALÇIN BİLECİK ÜNİVERSİTESİ

İlk Yapay Sinir Ağları. Dr. Hidayet Takçı

Çok Katmanlı Algılayıcı (Multilayer Perceptron) DOÇ. DR. ERSAN KABALCI

Esnek Hesaplamaya Giriş

PROGRAMLAMAYA GİRİŞ FONKSİYONLAR

C PROGRAMLAMA D İ L İ

Diziler. Yrd.Doç.Dr.Bülent ÇOBANOĞLU

C dilinde if-else yapısı

YAPILAR BİRLİKLER SAYMA SABİTLERİ/KÜMELERİ. 3. Hafta

BİLGİSAYAR TEMELLERİ VE PROGRAMLAMAYA GİRİŞ

Adı Soyadı : Öğrenci No :

İSTANBUL TİCARET ÜNİVERSİTESİ BİLGİSAYAR MÜHENDİSLİĞİ BÖLÜMÜ BİLGİSAYAR SİSTEMLERİ LABORATUARI

Bil101 Bilgisayar Yazılımı I. M. Erdem ÇORAPÇIOĞLU Bilgisayar Yüksek Mühendisi

Temel Bilgisayar Bilimleri Ders Notu #4-1. kısım

Başkent Üniversitesi MühendislikFakültesi BaharYarıyılı YerSıra No BİL 101 Bilgisayar Yazılımı-I Dersi Dönem Sonu MAZERET Sınavı

İNÖNÜ ÜNİVERSİTESİ MÜH. FAK. BİLGİSAYAR MÜH. BÖL. ALGORİTMA VE PROGRAMLAMA 1 DERSİ LAB. ÖDEVİ

Algoritma ve Programlama: Karar Yapıları ve Döngüler

ALGORİTMA VE PROGRAMLAMA I

Karakter katarları ile ilgili fonksiyonlar içerir Yerel kayan noktalı sayılar tanımlanır

Diziler (Arrays) Çok Boyutlu Diziler

Adım Adım C. Dr. Hidayet Takcı

Deney 7: Fonksiyon Tanımlama ve Parametre Aktarım Yöntemleri

Yapay Sinir Ağları (Artificial Neural Networks)

Arasınav Sınavı Soruları Güz 2017 Süre: 90 Dakika

Bölüm 3 Yapısal Programlama

Web Madenciliği (Web Mining)

Başkent Üniversitesi Mühendislik Fakültesi Güz Yarıyılı BİL 101-Bilgisayar Yazılımı I Arasınavı

VERİ MADENCİLİĞİ (Kümeleme) Yrd.Doç.Dr. Kadriye ERGÜN

Web Madenciliği (Web Mining)

CBS ve Coğrafi Hesaplama

Yapay Sinir Ağları. (Artificial Neural Networks) DOÇ. DR. ERSAN KABALCI

İSTANBUL TİCARET ÜNİVERSİTESİ BİLGİSAYAR MÜHENDİSLİĞİ BÖLÜMÜ BİLGİSAYAR SİSTEMLERİ LABORATUVARI LİNEER KRİPTANALİZ

C PROGRAMLAMA D İ L İ

Program Akış Kontrol Yapıları

Döngü komutları komutların bir çok kez yeniden yürülmesini. sağlayan, programlamada kullandığımız önemli yapılardan biridir.

2) /* Kullanıcıdan alınan iki sayının obebini alt fonksiyon yardımı ile hesaplayan C programı*/

2 ALGORİTMA VE AKIŞ DİYAGRAMLARI

elemanlı bir dizide bir sinyalin 1 er saniye aralıklarla ölçülen gerilim değerleri tutulmaktadır. Bu sinyalin tepeden tepeye genliğini,

PROGRAMLAMAYA GİRİŞ DERSİ II. ÖDEVİ

İstanbul Teknik Üniversitesi IEEE Öğrenci Kolu DİZİLER

Mekatronik Mühendisliği Uygulamalarında Yapay Zekâ. Ders 1- Yapay Zekâya Giriş. Erhan AKDOĞAN, Ph.D.

etme çabalarının en son ürünlerinden bir tanesi yapay sinir ağları (YSA) teknolojisidir.

/ C Bilgisayar Programlama Final Sınavı Test Soruları. Adı soyadı :... Öğrenci no :... İmza :... Tarih, Süre : , 60 dak.

ESM-361 Mikroişlemciler. 3. Hafta Ders Öğretim Üyesi Dr.Öğr.Üyesi Ayşe DEMİRHAN

BASİT C PROGRAMLARI Öğr.Gör.Dr. Mahmut YALÇIN

Yrd. Doç. Dr. A. Burak İNNER

BMÜ-111 Algoritma ve Programlama. Bölüm 5. Tek Boyutlu Diziler

BİLGİSAYAR TEMELLERİ VE PROGRAMLAMAYA GİRİŞ

Döngü Komutları. Komutu. while Komutu Diğer Operatörler Bileşik Komut for Komutu. İçiçe Döngüler break ve continue Komutları

Temel Giriş/Çıkış Fonksiyonları

ARA SINAV 07.Nisan 2015

ALGORİTMA VE PROGRAMLAMA I DERS NOTU#8

BLM 111 ALGORİTMA VE PROGRAMLAMA I

2. Dereceden Denklemin Köklerini Bulan Program

BLM111 Programlama Dilleri I. Hafta 10 Diziler. Yrd. Doç. Dr. Caner ÖZCAN

Döngü ve Koşul Deyimleri

Algoritma ve Akış Diyagramları

Uzaktan Algılama Teknolojileri

Makine Öğrenmesi 2. hafta

Büyük Veri İçin İstatistiksel Öğrenme (Statistical Learning for Big Data)

Hafta 9 C Dilinde Kontrol ve Döngü Yapıları

Sınav tarihi : Süre : 60 dak.

ALGORİTMA VE PROGRAMLAMA I

ALGORİTMA VE PROGRAMLAMA I

DİZİLER. Bu ünitede yapılan örnekler Visual Studio 2010 programındaki Visual Basic programlama diliyle çözülmüştür.

KARINCA KOLONİ ALGORİTMASI BMÜ-579 Meta Sezgisel Yöntemler. Yrd. Doç. Dr. İlhan AYDIN Fırat Üniversitesi, Bilgisayar Mühendisliği Bölümü

Doç.Dr.Erkan ÜLKER, Selçuk Üniversitesi Mühendislik F, Bilgisayar Mühendisliği Bölümü

Hafta 11 Çok Boyutlu Diziler

BMT 101 Algoritma ve Programlama I 11. Hafta. Yük. Müh. Köksal Gündoğdu 1

MAK 210 SAYISAL ANALİZ

BMB1002 Bilgisayar Programlamaya Giriş. Dosyalar. Prof. Dr. Necmettin Kaya

BİL-142 Bilgisayar Programlama II

BLM-111 PROGRAMLAMA DİLLERİ I. Ders-10 Diziler. Yrd. Doç. Dr. Ümit ATİLA

BİLECİK ŞEYH EDEBALİ ÜNİVERSİTESİ, MÜHENDİSLİK FAKÜLTESİ, BİLGİSAYAR MÜHENDİSLİĞİ BÖLÜMÜ BAHAR Y.Y. BM106 PROGRAMLAMA DİLLERİ 1, ARA SINAVI

Fonksiyonlar. C++ ve NESNEYE DAYALI PROGRAMLAMA 51. /* Fonksiyon: kup Bir tamsayının küpünü hesaplar */ long int kup(int x) {

BİL-142 Bilgisayar Programlama II

ALGORİTMA VE PROGRAMLAMA I

Sınav tarihi : Süre : 60 dak. a) ABCDE b) BCDE c) ABCD d) kod hatalı e) BCD

OTOMATİK KONTROL SİSTEMLERİ TEMEL KAVRAMLAR VE TANIMLAR

ALGORİTMA ANALİZİ. Cumhuriyet Üniversitesi Bilgisayar Mühendisliği Bölümü

8. Bölüm DİZİLER. tip dizi_ismi[eleman_sayısı]; Bütün diziler 0 ile baţlar.

Temel Bilgisayar Bilimleri Ders Notu #4-2. kısım

BLM-111 PROGRAMLAMA DİLLERİ I. Ders-12 Fonksiyonlar. Yrd. Doç. Dr. Ümit ATİLA

METASEZGİSEL YÖNTEMLER

Sınav tarihi : Süre : 60 dak. a) strstr b) strchr c) strcat d) strcpy e) strlen. a) b) d) e) 0

BÖLÜM 2 C PROGRAMLAMADA AKIŞ KONTROLÜ. GOTO: C programında programın herhangi bir yerinden bir yerine şartsız olarak atlanmasını sağlayan komuttur.

ALP OĞUZ ANADOLU LİSESİ EĞİTİM ÖĞRETİM YILI BİLGİSAYAR BİLİMİ DERSİ 2.DÖNEM 2.SINAV ÖNCESİ ÇALIŞMA SORULARI VE YANITLARI

Bil Hafta Çalışma Soruları (Yanıtlar)

Final Sınavı Soruları Güz, Süre: 90 Dakika

Adı soyadı :... Öğrenci no :... İmza :... Tarih, Süre : dak.

BİLGİSAYAR MÜHENDİSLİĞİ ALGORİTMA VE PROGRAMLAMA II 2.HAFTA SWİTCH (CASE), SAYAÇLAR, DÖNGÜLER,

C ile Uygulamalar 4 - Cevaplar

İNÖNÜ ÜNİVERSİTESİ MÜH. FAK. BİLGİSAYAR MÜH. BÖL. ALGORİTMA VE PROGRAMLAMA 1 DERSİ LAB. ÖDEVİ

BÖLÜM 6: KARŞILAŞTIRMALI KONTROL YAPILARI

Örnek: İki fonksiyondan oluşan bir program. Fonksiyon Tanımı

KOCAELİ ÜNİVERSİTESİ BİLGİSAYAR MÜHENDİSLİĞİ. BİLGİSAYAR LABORATUVARI II FİNAL SINAVI SORU ve CEVAPLARI(I. ogr)

Zeki Optimizasyon Teknikleri

KRİPTOANALİZ DERSİ FİNAL ÖDEVİ. PSO ile TRANSPOSITION CIPHER ÇÖZÜMÜ

Transkript:

Niyazi Volkan POLAT Karabük Üniversitesi Bilgisayar Mühendisliği Ödev Konusu: Yapay sinir ağlarında(ysa) kullanılan Adaline öğrenme kuralı algoritmasını kodlayınız. Programın akış diyagramı ve kod açıklamaları proje dokümanına eklenmelidir. Dönem Sonu Projesi www.pcbilisim.com

İçindekiler GİRİŞ... 3 YSA Nasıl Çalışır?... 3 Adaline... 4 Adaline Ünitesinin Öğrenme Kuralı... 4 Adaline Ünitesinin Öğrenme Kuralına Örnek... 6 Öğrenme Tamamlanır.... 8 C KODLARI VE AÇIKLAMALARI... 9 C Programı üzerinde çıktı Görüntüsü... 12 Akış Diyagramı... 12 Referanslar... 14

GİRİŞ Son yıllarda bilgisayar bilimlerinde yaşanan teknolojik gelişmeler, neredeyse takip edilemeyecek bir hızda ilerlemektedir. Bu ilerleme, insanoğlunun da yaratıcılığını ve sınır tanımazlığını arttırmış, daha önce hiç hayal bile edilemeyen yeni gelişmelerin doğmasına neden olmuştur. Bu gelişmelerden bir tanesi de Yapay Zeka dır. Bilim adamları, adına Yapay Zeka dedikleri, insanın düşünebilme, anlayabilme, öğrenebilme ve yorumlayabilme yeteneklerini, programlamayla taklit ederek problem çözümüne kullanmaktadırlar. Yapay Sinir Ağları (YSA) da, Yapay Zeka biliminin altında araştırmacıların çok yoğun ilgi gösterdikleri bir araştırma alanıdır. YSA ların örnekler ile öğrenebilme ve genelleme yapabilme özellikleri onlara çok esnek ve güçlü araçlar olma özelliği sağlamaktadır. Bu çalışmada YSA teorik olarak anlatılmış ve günlük hayatta kullanılan değişik YSA uygulamalarından bahsedilmiştir. YSA Nasıl Çalışır? Sinir ağı ile hesaplamalarda istenilen dönüşüm için, adım adım yürütülen bir yöntem gerekmez. Sinir ağı ilişkilendirmeyi yapan iç kuralları kendi üretir ve bu kuralları, bunların sonuçlarını örneklerle karşılaştırarak düzenler. Deneme ve yanılma ile ağ kendi kendine işi nasıl yapması gerektiğini öğretir. YSA'larda bilgi saklama, verilen eğitim özelliğini kullanarak eğitim örnekleri ile yapılır. Sinirsel hesaplama, algoritmik programlamaya bir seçenek oluşturan, temel olarak yeni ve farklı bir bilgi işleme olayıdır. Uygulama imkânının olduğu her yerde, tamamen yeni bilgi işleme yetenekleri geliştirebilir. Bu sayede de geliştirme harcamaları ile geliştirme süresi büyük ölçüde azalır. Bir yapay sinir ağı girdi setindeki değişiklikleri değerlendirerek öğrenir ve buna bir çıktı üretir. Öğrenme işlemi benzer girdi setleri için aynı çıktıyı üretecek bir öğrenme algoritması ile gerçekleşir. Öğrenme setindeki girdilerin istatistiksel özelliklerinin çıkarılarak benzer girdilerin gruplandırılmasını sağlayan bir işlemdir. Sinir yapılarına benzetilerek bulunan ağların eğitimi de, normal bir canlının eğitimine benzemektedir. Sınıfların birbirinden ayrılması işlemi (dolayısıyla kendini geliştirmesi), öğrenme algoritması tarafından örnek kümeden alınan bilginin adım adım işlenmesi ile gerçeklenir. YSA kullanılarak makinelere öğrenme genelleme yapma, sınıflandırma, tahmin yapma ve algılama gibi yetenekler kazandırılmıştır.

Adaline 1959 da, Stanford Üniversitesinden Bernard Widrow, basit nöron benzeri elemanlara dayanan ve Adaline (Adaptive Linear Nöron) olarak adlandırılan bir adaptif lineer elemanı geliştirmiştir. Adaline yapısı tüm sinir ağlarının en basitidir ve öğrenme için danışmanlı öğrenmeyi kullanır. Adaline ve iki tabakalı biçimi olan madaline (Multiple Adaline); ses tanıma, karakter tanıma, hava tahmini ve adaptif kontrol gibi çok çeşitli uygulamalar için kullanılmıştır. Daha sonraları adaline, ayrık bir çıkış yerine sürekli bir çıkış üretmek için geliştirilmiştir. Widrow, telefon hatları üzerindeki ekoları elimine etmeye yarayan adaptif filtreleri geliştirmede, adaptif lineer eleman algoritmasını kullanmıştır. Bununla ilk defa YSA lar gerçek bir probleme uygulanmıştır. Adaline bir çok uygulama için oldukça iyi çalışmasına rağmen lineer problem uzayıyla sınırlıdır. Lineer transfer fonksiyonu kullanırlar. Giriş ve istenilen çıkış desenlerinin tekrar tekrar ağa uygulanmasıyla eğitim gerçekleştirilir. Desenlerin doğru sınıflara ayrılmasıyla, hatalar minimize edilerek öğrenme gerçekleştirilir. Eğitimden sonra adaline, yeni girişleri kazandığı deneyime göre sınıflandırabilir. Adaline Ünitesinin Öğrenme Kuralı Adaline ünitesinin öğrenme kuralı, YSA lardaki geneler öğrenme prensibine göre çalışmaktadır. Girdilerden çıktılar hesaplanır ve ağırlıklar çıktıya göre değiştirilir. ADALİNE ünitesinin net girdisi Net ve çıktısı (Ç) aşağıdaki formül ile hesaplanmaktadır. NET = w i x i Eğer NET >= 0 çıktı (Ç)=1 Eğer NET < 0 çıktı (Ç)=-1 Çıktı hesaplandıktan sonra, ADALİNE ünitesinin hatası aşağıdaki formül ile hesaplanır. E=B-Ç Olacaktır. Amaç, bu hatayı en aza indirecek ağırlıkları bulmaktır. Bunun için ağa her seferinde farklı örnekler gösterilerek hatalar hesaplanmakta ve ağırlıklar hatayı azaltacak şekilde değiştirilmektedir. Zaman içinde hata, olması gereken en küçük değere düşmektedir. Bu hatayı azaltmak için kullanılan kural şu formül ile gösterilmektedir.

Wy = We + *E*Xi Her hangi bir t a anında, Wi (t) = Wi (t-1) + a * E* Xi olacaktır. Wi (t) : Ağırlıkların t zamanındaki değerleri Wi (t-1) : Ağırlıkların t zamanındaki değerleri : Öğrenme katsayısı B: Beklenen Çıktı E: Beklenen değer ile çıktı arasındaki hata X: Girdiler Benzer şekilde, eşik değerinin zaman içindeki değeri de y= e + (B-Ç) formülü ile hesaplanır. Adaline modeli öğrenimi, yani Widrow-Hoff olarak bilinen eğitim algoritmasının öğrenimi şu şekildedir. -1 ile 1 arasında ağırlık değerlerinin rastgele atanması; Hedef çıktı ve girdi değerlerinin seçimi, Hata oranının hesaplanması, Ağırlıkların düzenlenmesi, Hata değeri sıfır olana kadar işlemin devamı, Yeni girdilerin verilecek işlemin devamı,

Adaline Öğrenme Modeli Kısaca Adaline Öğrenme Modeli Net girdi hesabı: NET = ( + W1*X1+ W2*X2 +.. + Wn*Xn ) Çıktı hesabı: C = ( NET >= 0? 1 : -1 ) Hata hesabı: E = B Ç Öğrenme işlemi: Wi = Wi + * E * Xi Eşik değer formülü: y= e + *E Adaline Ünitesinin Öğrenme Kuralına Örnek Adaline ünitesinin çalışma prensibini göstermek için şu örnek verilebilir. Meyve üreticisi bir firmanın, elma ve armutlar ambara geldiklerinde karışmalarını önlemek için bir makine yapmak istediğini varsayalım. Bu amaçla bir yapay sinir ağının kurulabilmesi nasıl mümkün olacaktır? Meyveleri gösteren ve birbirinden farklılıklarını ortaya koyan örnekler oluşturmak yapılacak ilk iştir. Bunun için meyveleri ve onun özelliklerini gösteren vektörleri belirlemek gerekmektedir. Meyvelerin şeklini, görüntüsünü ve ağırlığını temsil etmek üzere 3 boyutlu bir vektör oluşturulabilir. Elma ve portakalı gösteren prototiplerin şu vektörler ile gösterildiği varsayılırsa örnek setinde iki örnek olacaktır. Bunlar şu şekilde belirlensin. Örnek 1: Portakal X1= (1,0) ; Bu örneğin beklenen çıktısı Ç1=-1 Örnek 2: Elma X2 = (0.1) ; Bu örneğin beklenen çıktısı Ç2= 1 Bu problemi çözebilmek için 2 girdisi olan bir Adaline ünitesi tasarlamak gerekecektir. Öğrenmenin amacı problem girdilerini doğru sınıflandıracak ağırlık değerlerini ve eşik değerini bulmaktır.

2 girdili bir adaline ünitesi Problemin çözümü için ağırlık değerleri ve eşik değeri başlangıçta rastgele atanmaktadır. Bunun aşağıdaki gibi olduğu varsayılsın. W1=0.3 W2= 0.2 =0.5 Ø =0.1 Birinci İterasyon: Birinci girdi vektörünün ağa gösterilmesi sonucu ağın çıktısı aşağıdaki formüle göre hesaplanırsa. NET=0.3+0+0.1= 0.4 >0 => Ç= 1 NET değeri sıfırdan büyük bir değer olduğundan ağın çıktı değeri 1 kabul edilir. B=-1 olduğundan ağın ağırlıklarının değiştirilmesi gerekmektedir. E= B-Ç= -1-1=-2 Değiştirme yukarıda verilen formüle göre yapılacaktır. Wy = We + a(b-ç) X Wy= [0.3, 0.2] + 0.5*(-2) [1, 0] Wy= [0.3, 0.2]+ (-1) [1,0] Wy= [0.3-1, 0.2-0] =[ -0.7, 0.2] Eşik değeri de benzer şekilde değiştirilir. Øy= Øe + a (B-Ç) Øy = 0.1 + 0.5* (-2)= -0.9 Böylece öğrenmede birinci iterasyon tamamlanmış olur.

İkinci İterasyon: İkinci iterasyonda benzeri işlemler ikinci örnek için yapılır. Fakat ağırlıkların ve eşik değerinin yeni değerleri kullanılır. NET = -0.7*0+0.2*1-0.9 = - 0.9 < 0 => Ç=-1 Bu örnek için B= 1 olması gerektiğinden bir hata oluşmuş olacaktır. E=B-Ç= 1-(-1)=2 olur. Wy= [-0.7, 0.2] + 0.5*2 [0, 1] Wy= [-0.7, 0.2]+ [0, 1] Wy= [-0.7, 1.2] Eşik değeride değiştirilir. Øy = -0.9 + 0.5* (2)= 0.1 Üçüncü İterasyon: NET = -0.7+ 0+0.1= -0.6 < 0 => Ç= -1 Bu örnek için B= -1 olması gerektiğinden ağın sınıflandırması doğrudur. Bu ağırlıklarda bir değişiklik yapılmasını gerektirmez. Çünkü B-Ç=0 olacak ve formülde herhangi bir değişiklik olmayacaktır. Dördüncü İterasyon: NET = 0+ 1.2 + 0.1= 1.3 > 0 => Ç= 1 Bu örnek için B= 1 olması gerektiğinden ağın sınıflandırması doğrudur. İki örneği de doğru sınıflandırdığına göre öğrenme tamamlanmıştır. Ağırlıkların ve eşik değerinin aşağıdaki gibi olması sonucu bu ağ sınıflandırıcı olarak (bu örnek için) kullanılabilir. SON DEĞERLER: WY = [-0.7,1.2] FY = 0.1 Öğrenme Tamamlanır. ------------------------------------------------------------------------------------------------------------------------------------ Önemli Bölüm: Verilen örnekleri sırası ile kontrol ediliyor ve ne zaman ki her iki örnekte ağırlıklarda bir değişiklik olmuyor o zaman öğrenme tamamlanmış olur.

C KODLARI VE AÇIKLAMALARI #include <stdio.h> #include <conio.h> int main () int zeka[5][5],cvp[5]; float agirlik[5],topla,net,esikdegeri,ogrenmekatsayisi; int ornek,girdi,i,ii,c1,fark,dogru,iterasyon; printf("ornek sayisi: "); // Örnek Sayısı girişi yapıyoruz. scanf("%d",&ornek); printf("ornek Sayi Giris Sayisi: "); // Örnek içerisinde bulunacak sayı miktarını giriyoruz. scanf("%d",&girdi); printf("---------------------------\n"); for(i=1;ornek>=i; i++) // Döngü ile Örnekler içerisine sayı girişleri yapıyoruz ve örneklerin cevaplarını giriyoruz son olarak. for(ii=1;girdi>=ii; ii++) printf("%d ornegin girdisi:",i); scanf("%d",&zeka[i][ii]); printf("%d. ornegin cevabi:",i); scanf("%d\n",&cvp[i]); printf("---------------------------\n"); for(ii=1;girdi>=ii; ii++) // Örnek içerisinde bulunan sayı kadar ağırlık giriyoruz, sırası ile. printf("%d. Agirlik :",ii); scanf("%f",&agirlik[ii]); printf("\n"); // Eşik değeri ve Öğrenme kat sayısı değerleri giriliyoruz. Bu sayılar 0 ile 1 arasında olur. Sonradan bu degerler program içerisinde değişecektir. printf("ornegin esik degeri:"); /* Eşik degeri 0 dan farklı bir degerde olmalıdır, aksi halde program hatalı çalışacaktır. */ scanf("%f",&esikdegeri); printf("\n"); printf("ogrenme katsayisi degeri:"); scanf("%f\n",&ogrenmekatsayisi); // ekrana girilen degeri yazdırıyoruz. for(i=1;ornek>=i; i++) printf("%d. ornek= (",i);

for(ii=1;girdi>=ii; ii++) printf(" %d",zeka[i][ii]); printf(")=%d \n",cvp[i]); printf("\n"); printf("agirliklar= ("); for(ii=1;girdi>=ii; ii++) printf(" %.1f\n\n",agirlik[ii]); dogru=0; iterasyon=0; printf("-----------ogrenme Basliyor---------\n"); do for(i=1;ornek>=i; i++) // Döngüyü en az örnek sayısı kadar döndürüyoruz. topla=0; iterasyon=iterasyon+1; for(ii=1;girdi>=ii; ii++) // Net hesapı yapıyoruz. topla=topla+zeka[i][ii]*agirlik[ii]; net=(topla+(esikdegeri)); if(net>=0) /* Net 0dan büyük veya eşitse cevap 1 olmalıdır, değilse 0. Sonraki adımda beklenen cevap ile şimdi buluduğumuz cevabı karşılaştıracağız eğer eşitse ağılıklarda herhangi bir değişiklik olmayacak. */ c1=1; else c1=-1; printf("%d. iterasyon---------",iterasyon); printf("\n"); if(cvp[i]==c1) printf(" C1 = B1 oldugundan degisiklik yapilmiyor"); dogru=dogru+1; /*Can alıcı nokta!!! Döngünün sonlandırılmasında Örnek sayısına eşik olacak olan dogru değişkeni her true degerde 1 artar aksi halde else degerinde Dogru=0; ile yeniden 0 lanır. */

else dogru=0; fark=cvp[i]-(c1); for(ii=1;girdi>=ii; ii++) // ağırlık degerleri değiştirilir. agirlik[ii]=agirlik[ii]+ogrenmekatsayisi*fark*zeka[i][ii]; printf("%d agirlik= %.1f\n",ii,agirlik[ii]); esikdegeri=esikdegeri+ogrenmekatsayisi*fark; printf("\n"); printf(" NET= %.1f\n",net); printf("---------------------------\n"); while(dogru<ornek); /* Örnek sayımız 2 ydi ne zaman ağırlıklar her iki örnek için true değer döndürdüğünde dogru degişkenizi 2 degerini alacak ve öğrenme sonlanacaktır.*/ printf("ogrenme Tamamlandi.\n"); printf("yeni Agirliklar: "); for(ii=1;girdi>=ii; ii++) /* Son olarak en son ağırlık değerleri ekrana yazdırılır.*/ printf(" W%d: %.1f",ii,agirlik[ii]); getch(); return 0;

C Programı üzerinde çıktı Görüntüsü

Akış Diyagramı

Referanslar 1) http://www.yapay-zeka.org/files/tez/tugba-sarac-ysa-seminer.pdf (Tuğba Saraç ın hazırlamış olduğu tez bu projeyi yapabilmemde en büyük yardımcım olmuştur.) 2) http://www.cnylmz.net/php/adaline-modelli-yapay-sinir-agi-ornegi-25/ ******* 3) http://gokercebeci.com/ysa/backpropagation (Göker Cebeci ile mail yolu ile iletişime geçip yardım alındı. Kendilerine teşekkürü borç bilirim.) 4) http://www.scribd.com/doc/53716723/tf00590# 5) http://www.burhanemre.com/yapay-sinir-aglari-perceptron-ve-adaline-modeli.htm/ 6) http://w3.gazi.edu.tr/~akcayol/files/zol6ann.pdf 7) http://ben.mukerremyilmaz.com/dersler/tbil610/