You are on page 1of 6

SB-22

Java ile Yapay Zeka Yazlmlar Gelitirme Aybars Uur, Erkan Binici2
Ege niversitesi, Mhendislik Fakltesi, Bilgisayar Mhendislii Blm 35100 Bornova-ZMR ugur@bornova.ege.edu.tr1, erbinici@yahoo.com2 ZET Bu makalede, yapay zeka konusunun nemi anlatlm ve zeki yazlmlar gelitirmenin yazlm mhendisliindeki yeri belirtilmitir. Yeni yazlm gelitirme ortamlarndan biri olan Javann avantajlar zerinde durulmutur. Java platformunun, yapay zeka ieren yazlmlarn gelitirilmesine etkileri incelenmi ve rnek bir program zerinde deerlendirilerek sonulara ulalmtr.

Anahtar Kelimeler : Yapay Zeka, Yazlm Mhendislii, Java


GR Gnmzde internet kullanclar iin, bir kelime veya konu ilgili tm sayfalar bulup grntlemek olaan bir ilemdir. Arama makineleri, tm sayfalar yerine, gereksizleri ayklayarak en uygun olanlar getirmeyi ve daha ileri birok zellii desteklemektedir. Satlk daire arayan kiiler iin belirli kriterlere uyanlarn bulunup incelenmesi de olasdr. letim sistemleri, yazlm gelitirme ortamlar, kelime ilemci ve tablolama gibi uygulama yazlmlar, ok kullanlmayan seenekleri eleyip dierlerini grntleyebilmektedirler. Her tr yazlmda, komutlardan boyutlu ekillere kadar zeki otomatik tamamlama zellikleri desteklenmektedir. Bilgisayar oyunlarnda karakterlerin, zeki olarak hareket edebilir hale gelmesi gerekilii artrmtr. Tm bu gelimeler, yapay zeka alma ve aratrmalarnn sonucudur. Bu makalede, yapay zeka unsurlar ieren yazlmlarn gelitirilmesinde, en ileri platformlardan biri olan Javann nemi zerinde durulmu ve zeki yazlmlar gelitirme konusunda yaplmas gerekenler belirlenmitir. YAPAY ZEKA D. Lenat ve E. Feigenbaumun tanmlarna gre zeka Karmak bir problemi zmek iin gerekli bilgileri toplayp birletirme kabiliyetidir veya Karmak bir problemi, zm arama alann daraltarak ksa yoldan zebilme kabiliyetidir. Zekann szlk anlam ise, insann dnme, akl yrtme, nesnel gerekleri alglama, kavrama, yarglama, sonu karma yeteneklerinin tmdr. Ayrca : Soyutlama, renme ve yeni durumlara uyma gibi yetenekler de zeka kapsam iindedir. Yapay zeka ise, bu zelliklere sahip organik olmayan sistemlerdeki zekadr. Luger ve Stubblefield, 1993 ylnda yapay zekay zeki davranlarn otomasyonu ile ilgili bilgisayar bilimleri daldr eklinde tanmlamtr. [2][3][4] Yapay zekann nemli baz konu ve alma alanlar aada belirtildii gibidir : Problem zme, Arama ve Sezgisel Programlama Bilgi ve karsama Planlama renme ve Alglama Oyun Oynama Uzman Sistemler Robotbilim Yapay Sinir Alar Genetik Algoritmalar ve Programlama Yapay Yaam Ses Tanma Grnt ileme Yazlm Etmenleri Veri Madencilii

Bilim kurgu filmlerinde grlen insan benzeri robotlar gibi yapay zeka rnekleri gereklememi olsa da, gnmzde, yapay zeka aratrmalarnda snrl amalarla mutlu olunmaktadr : Bilgisayarlara belirli ileri yaptrma Snrl ses tanma Evde veya dier alanlarda Akll Yardmclar nternetteki basit Yapay Zeka rnekleri

Yapay Zeka ile balantl en popler rnekler ise, robotlar (aibo, asimo gibi), internet zerindeki sohbet robotlar (eliza, alice, cybelle gibi) yani chatbotlar ve hareketli etmen sistemleridir (Mobile Agent Systems).

II. Ulusal Meslek Yksek okullar Sempozyumu, 15-17 Ekim 2003, zmir

SB-22
Yazlm gelitirme alannda, daha zeki yazlmlar gelitirmeye ynelik almalar yaplmaktadr. Zeki olmayan yazlmlar, kullanclarn gereksiz veya tekrarl ileri yapmak durumunda brakarak verim kaybna yol amaktadrlar. Sonuta kalite dmekte, zaman kayb olmakta, kullanm zorlamakta yani etkinlik azalmaktadr. Kullanclar, ayn trde yazlmlarn zeki olanlarn tercih etmektedirler. YAZILIM GELTRME ORTAMLARI ve JAVA Gnmzde yazlm gelitirme ortamlar, A, Web ve Grafik tabanl, Mobil letiim Cihazlarn destekleyecek ekilde ilerlemeler gstermitir. Web ve mobil iletiimin yaygnlamas ile kavramlarda meydana gelen deimeler sonucunda bu tr ilemlere destek verecek ekilde Java ve .NET platformlar ortaya kmtr. .NET dilleri ve Java, Pascal, C ve C++ gibi dillerin eksikliklerini de giderecek ve verimlerini artracak ekilde tasarlanmlardr. Bu almada, 1995 ylnda gelitirilen Java programlama dilinin seilmesindeki en byk neden platform bamszlnn daha ileri derecede olmasndandr. Ayn zellikler, C# (C Sharp) gibi daha yakn tarihte gelitirilen .NET zerindeki diller iin de geerlidir. Java Programlama Dili ve Platformu, aada nemlileri saylan zellikleri sayesinde yazlm gelitiricilere kolaylklar salayp avantajlar sunmaktadr : [1] Nesneye ynelik bir dil olmas nedeniyle, gerek dnyadaki nesneler, yazlm nesnelerine birebir elenebilmektedir. Yazlm tasarmn ve anlalrln kolaylatrmaktadr. Deiiklikler yerel olarak yaplabildiinden esnek programlar yazlabilmektedir. 1995 gibi ok uzak olmayan bir tarihte gelitirildii ve yeni srmleri ile srekli gncellendii iin web ve grafik altyaps ve a zellikleri gldr. Bu nedenle, her tr zellii ieren yazlmlar gelitirilebilmektedir. Platform bamszl, dnyann her yerindeki deiik donanml bilgisayarlar ve deiik iletim sistemleri zerinde kodlarn altrlabilmesini salamaktadr. rnek olarak Windows iletim sistemi zerinde yazlan bir Java program, Linux veya dier iletim sistemleri zerinde iletilebilmektedir. Tm bunlar, herhangi bir Java kodunun yeniden kullanm zelliklerini artrmakta ve kodun her platform iin deitirilme gereksinimini ortadan kaldrmaktadr. Yazlan java appletleri yerel makinelere yklenerek, internet zerinden iletilebilmektedir. Bu, internet zerinde iletilebilen program yazmn kolaylatrmakta ve kullanclarnn saysn otomatik olarak artrp ve tm dnyaya yaygnlatrmaktadr. Multithreaded yani ok i parackl Java programlar, nternet ve World Wide Web uygulamalar iin ayn anda birden ok ilemin yaplmasn salayarak, belirli bir iin bitmesini beklemekle snrl kalnmasn nlemektedir [5].

YAPAY ZEKA YAZILIMLARI GELTRME Yapay zeka dilleri olarak adlandrlan LISP, 1958 ylnda John McCarthy ve Prolog ise 1972 ylnda Philippe Roussel tarafndan gelitirilmilerdir. Gnmze kadar gncel gelimelere paralel zellikleri destekleyebilecek ekilde srmleri ortaya kmtr. Veri tabanlarn desteklemekten, dier dillerle entegrasyonuna, grselliinden, derleme hznn artrlmalarna kadar birok almalar yaplmtr ve yaplmaya devam edilmektedir. rnek olarak Prolog, karsama reasoning ve Geri zleme backtracking gibi gl mekanizmalar dorudan sunduu iin, karmak olmayan yapay zeka programlar yazlmasn, inanlmaz derecede kolaylatrmaktadr. Bu mekanizmalar renmek isteyen aratrmaclar iin de, ok uygun bir deneme ortam sunmaktadr. Ancak buradaki problem, C, Java gibi popler programlama dillerini renmi olan programc ve yazlm gelitiricilerin, farkl yaklamlar ve zellikler ieren dilleri renme zorunluluunda kalmasdr. leri zellikler ieren zeki yazlmlarn gelitirilmesinde, Prolog ve Lisp gibi dillerin snrlarnn iyi renilmesi gerekmektedir. Ancak rnek olarak Java dilinde rahatlkla zyineleme (recursion) mekanizmasn kurabilen bir kii, Prologda hazr kodlar bile anlamakta zorlanabilmektedir. Java gibi dillerin avantajlar burada ortaya kmaktadr. Javay renmi olan bir kii, Java Collections Framework iindeki hazr veri yaplarndan yani snf, metot ve zelliklerden yararlanarak kolaylkla verileri (yapay zekada gerekleri ve bilinenleri) temsil edebilmekte ve zerlerinde karsama gibi ilemler yapabilmektedir. Gerekiyorsa veritaban balantlar da rahatlkla kurabilmektedir. Ayrca dnyann herhangi bir yerinde hazrlanm olan zellemi ve hatalardan arndrlm paketler kullanlarak daha ileri almalar da gerekletirilebilmektedir. IKARSAMA EREN BR JAVA PROGRAMI GELTRME

II. Ulusal Meslek Yksek okullar Sempozyumu, 15-17 Ekim 2003, zmir

SB-22
Yapay zeka programlarn normal programlardan ayran zellikler; renme, karsama, karar verme ve alglama gibi yeteneklere sahip olmalardr. Bu yetenekleri programlara katabilmek iin; geri izleme, karar aalar, arama mekanizmalar gibi eitli teknikler kullanlmaktadr. Bu almada, yapay zekann balang uygulamas denilebilecek XOR ilemi (ekil 1), Java ile gerekletirilmitir. X Y 0 0 1 1 0 1 0 1 Z = X XOR Y 0 1 1 0 rneimizde ileri besleme ve geri yaylm backpropagation algoritmas kullanarak deerlendirme yapan 3 katmanl bir a bulunmaktadr (ekil 2). Yapay Sinir Ann gerekletiriminde Javann nesne tabanl bir dil olmas, ortam nesnelerinin program iinde birebir modellenebilmesini saland iin tasarm ve programlamay olduka basitletirmi ve esnek hale getirmitir. Model zerinde grlen hcre, balant, ekirdek, giri ve k gibi yaplar kendimiz yeniden gerekletirebileceimiz gibi bu konuda uzun almalar sonucunda oluturulmu ve denenmi hazr Sinir A Ktphanelerindeki mevcut snflar kullanarak da yapay zeka uygulamamz gelitirebiliriz. rneimizde tm java ile gerekletirilmi ak kaynak kodlu bir ktphane ve motoru olan JOONE (http://joone.sourceforge.net/) [6] kullanlmtr. JOONE ktphanesi ierisinde yapay zeka uygulamamz gelitirebilmemiz iin; - leri beslemeli veya yinelemeli ekilde alacak Sinir A elamanlarnn bileenleri, - Back Propagation algoritmasnn eitli uygulamalarn sunan bileenler, - Temelde moduler bir a yaps oluturmamz salayacak ilikisel bileenler, - A sisteminin bir bilgisayar a zerinden aktarlmasn, dosya sistemine kaydedilmesini salayacak serialization mekanizmas, - eitli kaynaklarla ilikili I/O birimi, - Denetlemeli ve denetlemesiz renmeyi uygulayabilecek bileenler, - Sinir ann kontrolnn salayan (balatma / durdurma / renme / yenileme) denetim bileenleri, - Girdi bilgisinin n ilemesini salayacak ve renme parametrelerini dinamik olarak deitirebilmeyi salayacak bileenler, - Sinir a zerinde deiik kontrol ilemlerini yapabilmek iin script arabirimi. gibi hazr zellikler bulunmaktadr. Paketler aadaki gibidir : - org.joone.engine : ekirdek a elementlerini ieren paket. - org.joone.engine.learning : Sinir ann eitimi iin kullanlacak paket. - org.joone.io : Dosya gibi girdi kt kaynaklaryla sinir ann iletiimini salayacak paket. - org.joone.util : eitli hizmet snflarn ieren paket.

ekil 1 : XOR ilemi Program, temel olarak yapay zeka alannn alt dallarndan biri olan Yapay Sinir Alar (Artificial Neural Networks) ile tasarlanmtr. Yapay sinir alar, insan beyninin tahmin edilen alma ynteminin bilgisayarlar zerinde modellenmesi sonucu ortaya kmtr. nsan beyninde olduu gibi sinirlerin birbirine bal olduu bir sinir a zerinde; renme ilemi, renilen bilgilerin saklanmas ve bu bilgiler sayesinde karsama yaplmas salanmaktadr. Bu sayede programlara, yani bilgisayarlara zeka katlmaktadr.

Giri katman

Sakl katman

k katman

ekil 2 : XOR zm iin tasarlanan A Yaps. nsan beyni, sinir hcreleri neuron, balantlardan synapse olumaktadr. Bu sinir hcreleri birer ekirdek iermektedir. Kendisine bal olan dier hcrelerden gelen bilgileri bu ekirdek ierisinde deerlendirerek gerekli olan kty retip kendisinin bal olduu dier hcrelere kt olarak rettii bilinmektedir. Bu bilgiler nda bulunmu eitli sinir a modelleri ve algoritmalar mevcuttur.

II. Ulusal Meslek Yksek okullar Sempozyumu, 15-17 Ekim 2003, zmir

SB-22
org.joone.script : Script uygulamalarn salayan paket. output.addInputSynapse(synapse_HO); Sinir an ynetecek olan monitor snfnn oluturulmas : Monitor monitor = new Monitor(); monitor.setLearningRate(0.8); monitor.setMomentum(0.3); Monitr ile katmanlar arasndaki ilikinin kurulmas : input.setMonitor(monitor); hidden.setMonitor(monitor); output.setMonitor(monitor); Uygulamann, monitor nesnesinden gelen mesajlar yakalayabilmesi iin monitor nesnesinin Listenernn eklenmesi : monitor.addNeuralNetListener(this); 0.0;0.0;0.0 0.0;1.0;1.0 1.0;0.0;1.0 1.0;1.0;0.0 Sinir ann ana elemanlarnn kodlamasnn gerekletiriminden sonra, girdi bilgilerinin dosyadan okunmas ve bunlar girdi hcrelerine balanmasn salayan blm : FileInputSynapse inputStream = new FileInputSynapse(); /* rnek eitim dosyamiz ierisindeki ilk iki kolonda giri bilgileri bulunuyor.*/ inputStream.setFirstCol(1); inputStream.setLastCol(2); inputStream.setFileName("c:\\joone\\XOR.txt"); /* Dosya yerini ve ismini belirliyoruz.*/ Oluturulan inputStreamin, girdi hcrelerinin bulunduu katmana atanmas : input.addInputSynapse(inputStream); Girdi bilgilerinin alnmasndan sonra, sinir anda renme ileminin yaplmas (Girdi bilgileri bir eitmen snftan geirilerek, girdiler ve ktlar arasnda beklenen kt ile karlatrlmaktadr) : TeachingSynapse trainer = new TeachingSynapse(); /* rnek girdiler sonucu olumas beklenen kt bilgisini eitmen snfa belirtiyoruz.*/ FileInputSynapse samples = new FileInputSynapse(); samples.setFileName("c:\\joone\\XOR.txt"); trainer.setDesired(samples); /* kt bilgisi rnekleri ieren dosyadaki 3. kolonda yeralmaktayd.*/ samples.setFirstCol(3); samples.setLastCol(3);

XOR problemini zm iin uygulanacak senaryo u ekilde olacaktr. 1- An konu zerinde eitilmesini salayacak rnek verilerin ilgili kaynaktan okunmas. 2- Aa girilen veriler renme algoritmasndan geirilerek (training) an problem deseni zerinde, yeni veriler iin karsama yaparak karar vermesinin salanmas. 3- Eitim verilerinden sonra test verileri ile sinir a sisteminin almasnn test edilmesi. 1. adm iin rnek XOR girdileri ve ktlarn ieren ; iareti ile ayrlm ekilde bir girdi dosyas oluturulmutur. rnek veriler ;

Joone paketi ierisindeki snflar yardmyla a zerindeki katmanlarn oluturulmas (Katmanlar arasndaki iletiim Sigmoid aktarm yntemi ile olacandan SigmoidLayer snf kullanlmaktadr) :
SigmoidLayer input = new SigmoidLayer(); // Giri katman SigmoidLayer hidden = new SigmoidLayer(); // Sakl katman SigmoidLayer output = new SygmoidLayer(); // k katman

Katmanlardaki sinir hcresi saylarnn belirlenmesi:


input.setRows(2); // XOR problemi iin iki giri verisi var hidden.setRows(3); // sakl katmanda 3 adet sinir hucresi oluturuluyor output.setRows(1); // k deeri tek say olduundan tek sinir hcresi ekleniyor

Katmanlar aras balantlar iin, 3 katman arasna tam balant salayan 2 tane FullSynapse kullanlmaktadr : FullSynapse synapse_IH = new FullSynapse(); /* Input -> Hidden balants. */ FullSynapse synapse_HO = new FullSynapse(); /* Hidden -> Output balants*/ Girdi ve sakl katman aras ilikinin kurulmas : input.addOutputSynapse(synapse_IH); hidden.addInputSynapse(synapse_IH); Sakl katman ve kt katman aras ilikinin kurulmas : hidden.addOutputSynapse(synapse_HO);

II. Ulusal Meslek Yksek okullar Sempozyumu, 15-17 Ekim 2003, zmir

SB-22
/* Eitmen ve monitor objesi arasindaki ilikiyi salyoruz.*/ trainer.setMonitor(monitor); kt katman ile eitmenin ilikisinin salanmas: output.addOutputSynapse(trainer); Girdi, sakl, kt katmanlarnn ve eitmenin altrlmas : input.start(); hidden.start(); output.start(); trainer.start(); Sinir ann dier altrlmas : parametrelerinin belirlenip metodu 1 dongu says ile arlmaktadr ve bu sefer sinir ann rnek bir girdi deseni iin a zerindeki renilmi bilgilere gre elde edilen bir kt bilgisi kt dosyasna yazlmaktadr. SONULAR Bu almada, java Joone paketi ile yapay sinir a gerekletiriminde, temel elemanlarn nasl oluturulduu ve bunlar arasndaki ilikilerin nasl saland gsterilmektedir. Hazr Joone yapay sinir alar ktphanesi sayesinde, renme, karsama ve etkinlikte bulunma ilemlerinde kullanlmas gereken geri besleme mekanizmalar, karar aalar, arama algoritmalar gibi ayrntlarla ilgilenmeden yapay zeka uygulamalar gelitirilebilmektedir. Ak kaynak kodlu org.joone.engine paketi ierisindeki ilgili snflarn incelenmesi ile temel yapay zeka mekanizmalarnn renilmesi ve paketin gelitirilmesi de olasdr. Grld gibi, yapay zeka dillerini bilmeyen ve zeki yazlmlar gelitirmek isteyen kiilerin, yapay zeka dillerini kullanmalar zorunlu deildir. Java gibi programlama dilleri ierisinden de hazr paketler yardmyla, hazr veri yaplar kullanlabilmekte, arama ve karsama yaplabilmektedir. Paketlerin kullanmnn renilebilmesi iin Java altyapsnn iyi dzeyde olmas yeterlidir. Prolog ve LISP gibi yapay zeka dillerinin renilmesi de yapay zeka mekanizmalarnn anlalmas bakmndan olduka nemlidir. Bu diller de, donanm ve yazlm dnyasndaki gelimelere paralel olarak, yeni srmleri ile gncellenmektedirler. Java gibi diller ile gl yapay zeka dillerinin karlkl olarak birbirine benzer hale getirilmesi, zeki yazlmlar gelitirme ynndeki eksikliklerin kapanmasn salayacaktr. Bylece zeki yazlmlarn kullanm oran ve yazlmlardaki verim artacaktr. LTERATR LSTES [1] Deitel, H. M. and Deitel, P. J., 1999, Java : How to Program, Third Edition, PrenticeHall. [2] Luger, G.F., 2002, Artificial Intelligence : Structures and Strategies for Complex Problem Solving, 4th edition, AddisonWesley. [3] Nilsson, N. J., 1998, Artificial Intelligence : A New Synthesis, Morgan Kaufmann Publishers. [4] Russell, S., J., and Norvig, P., 1995, Artificial Intelligence : A Modern Approach, PrenticeHall.

monitor.setPatterns(4); /* # girdi dosyasi deseni. Kolon sayisi.*/ monitor.setTotCicles(20000); /* Girdi dosyalarindaki bilgi ile Sinir ann zerinde yaplacak eitim says.*/ monitor.setLearning(true); /* Sinir ann eitim modunda olduunun belirlenmesi.*/ monitor.Go(); /* Sinir ann almaya balamas.*/ Monitor nesnesinin alarak sinir ana girdi bilgileri girip 20000 dng ile eitiminden sonra rnek girdi deseni iin alnabilecek rnek bir kt, u ekilde olacaktr : 0.02592995527027603 0.9664584492704527 0.9648193164739925 0.03994103766843536 Sinir ann, girdileri alaca dosyay ve sonu bilgilerini yazaca dosyay belirtebileceimiz, sinir an eitip, altrmay salayabileceimiz bir arayzn ekran grnts ekil 3te verilmektedir.

ekil 3 : Yapay Sinir Alar programnn penceresi Egit dmesine basldnda, Monitor.go metodu, Monitor.setLearning(true) modunda 20000 dng says ile altrlarak sinir ann eitilmesi salanmaktadr. Calistir dmesi Monitor.setLearning(False) eklinde Monitor.go

II. Ulusal Meslek Yksek okullar Sempozyumu, 15-17 Ekim 2003, zmir

SB-22
[5] Tarau, P., 1999, Jinni: Intelligent Mobile Agent Programming at the Intersection of Java and Prolog. Proceedings of PAAM'99, London. [6] http://www.jooneworld.com

II. Ulusal Meslek Yksek okullar Sempozyumu, 15-17 Ekim 2003, zmir

You might also like