Merhaba sevgili bergi okuyucuları. 2010 yılı biterken sizlere aslında çok da eski olmayan ama yazımı biraz geç kalmış bir alanla ilgili girizgah niteliğinde bir yazı hazırlamak istedim. Bu yazının konusu, başlığından da anlaşılabileceği üzere “etmenler” yani İngilizcesiyle “agent”lar. Etmen kavramı Yapay Zeka kadar ses getirmese de aslında çok revaçta ve gelecekte önemli bir rol oynayacak. Bunun sebepleri olarak ise bilgisayar bilimlerinin gelişimini incelersek öne çıkan beş akım görürüz:

  1. Aynı anda pek çok yerden erişilme(ubiquity): İşlemci hızlarının giderek artması ve maliyetlerinin düşmesi, avuç içi ve taşınabilir bilgisayarların ortaya çıkması ile dilenen veya ihtiyaç olunan herhangi bir hizmete her an her yerden ulaşılabilmesi giderek daha da mümkün olmuştur. iPhone, iPad, Blackberry gibi akıllı telefonlar ve ardılları ortaya çıktıkça bu kavram günlük hayatımızın vazgeçilmezi olacaktır. (bkz. Ubiquitous computing, pervasive computing)
  2. Arabağlantılılık (interconnection): Bilgisayar sistemleri artık tek başına kapalı bir kutu olarak değil, başka bilgisayarlar veya sistemlerle bağlı veya onların bir parçası olarak var olmaktalar. İnternet bunun en bariz örneğidir. Dağıtık (distributed) ve eş zamanlı (concurrent) sistemler giderek endüstriyel ve ticari uygulamalarda bir norm haline gelecek ve araştırmalar bu alana yoğunlaşacak.
  3. Zeka: Giderek daha zeki sistemler tasarlamaya eğilim gösteriliyor. Yani bilgisayarlara giderek daha karmaşık görevler yüklüyor ve bu görevlerle başa çıkabilecek daha kullanışlı bilgisayarlar tasarlayabiliyoruz.
  4. Yetkilendirme (delegation): Bilgisayarlara giderek daha önemli ve hayati işler veriliyor. Otomatik pilotluk, buna çok iyi bir örnek.
  5. İnsana yönelim: Programlamada giderek makina yönelimli bakış açısından onları kullanan ve onlarla etkileşimde olan insanoğlunun dünyayı algılayış şekline daha yakın olan yöntemlere doğru gidiliyor. İlk bilgisayarları kullanırken insanlar makinenin kontrol paneliyle doğrudan haşır neşir oluyor, kabloları takıp çıkarıyor veya düğmeleri açık veya kapalı konuma getiriyorlardı. Bilgisayarın iç işleyişi ve donanımıyla aramızda bir soyutlama katmanı bulunmamaktaydı. Daha sonra bu yerini komut satırı arayüzüne bıraktı. Grafik arayüzü tasarımlarının gerçekleştirilmesi ve işletim sistemlerinin giderek daha “kullanıcıya dost” olmasıyla programlama paradigmaları da değişti, daha üst seviyeli ve soyutlama düzeyi yüksek yazılım geliştirme yöntemleri ve programlama dilleri geliştirildi.

Bu tür akımların sonucunda “**_bizim yerimize_**” hareket edecek bilgisayar sistemleri geliştirme ihtiyacı doğmuştur. Yani bizim müdahalemiz olmadan, “bağımsız” hareket edebilen ve diğer sistemlerle etkileşirken “bizim çıkarlarımızı gözeten” türden sistemler olmalıdır. Aynı özelliklere sahip olan başka sistemlerle “konuşabilmeli”, “işbirliği” ve “anlaşma” yapabilmeli ve birlikte çalışabilmelidir. Davranış biçimleri insanlara benzeyen bu sistemlerle ilgili şimdiye kadar bilgisayar biliminde konuşulmadı. Ta ki çoklu etmen sistemleri ortaya çıkana dek. Aslında etmen kavramı bilgisayar bilimlerinde ayrı bir araştırma alanı olarak ortaya çıkmadan önce de başka birçok disiplinin araştırma konusuydu. Sosyoloji, felsefe ve ekonomi alanlarında da bu kavramdan bahsedilir ve hepsinde “kendi başına hareket eden”, “karar verme mekanizması olan”, “belirli bir iş atanıp o işi yapması beklenen” bir unsur olarak adı geçer. Biz kendi alanımıza, yani bilgisayar bilimleri alanına dönersek, etmen için yapılan tanım şöyledir:

“Etmen kendisine gösterilen hedefleri herhangi bir ortamda yerine getirebilecek kadar özerk bir bilgisayar sistemidir.”

Tek bir etmenin yalnız başına kendi bilgi ve bireysel yeteneklerini kullanarak çözemediği veya etkin bir biçimde çözemeyeceğini düşündüğü problemleri birbiriyle işbirliği yaparak eşgüdümlü bir biçimde çözmek için bir araya gelen etmenlerin oluşturduğu ağ, çoklu etmen sistemi (multi-agent systems-MAS) olarak adlandırılmaktadır (Durfee ve ark., 1989).

Çoklu etmen sistemleri araştırmaları da yapay zekadaki gibi kendi doğamızı anlamakla ilgilenir. Fakat yapay zeka bireylerdeki zeka unsuruna yoğunlaşırken, çoklu etmenlerin yoğunlaştığı bireylerin sosyallik yeteneğidir. Çoklu etmen sistemleri daha çok şu sorulara yanıt aramaktadır:

  • Bireysel etmenlerde işbirliği nasıl olur?
  • Etmenler birbirleriyle ve insanlarla kendi inançlarını nasıl paylaşır?
  • Bireysel etmenler inanç, hedef veya eylemlerine ters olan durumları nasıl algılar ve bu durumlara rağmen diğer etmenlerle nasıl anlaşmaya varır?
  • Özerk bireyler hedeflerine işbirliğiyle ulaşabilmek için eylemlerini nasıl organize ederler?

Bu tür sorulara yukarıda bahsettiğim gibi ekonomi ve sosyal bilimler gibi alanlar da cevap aramaktadır fakat çoklu etmen sistemlerini özel kılan şey bahsedilen etmenlerin bilgi işleyen varlıklar olmalarıdır.

Olası Kullanım Alanları

Çoklu etmen sistemlerinin kullanım alanlarıyla ilgili fikir oluşturması açısından gerçeğe çok yakın olmasalar da gerçekleştirilmesi arzulanan birtakım senaryolardan bahsedeceğim:

  1. senaryo: Beklenmedik bir sistem hatası yüzünden Satürn’e yaklaşmakta olan bir uzay aracının yeryüzündeki üsle arasındaki iletişim kopar ve rotasından çıkar. Boşluğa savrulup gitmektense uzay aracı sistemdeki hatayı algılar, teşhisi koyar ve hatayı çözümler, yönünü tekrar yer üssüyle iletişime geçebilmek için eski konumuna getirir.
  2. senaryo: Ruritania’nın ana havaalanındaki anahtar hava kontrol sistemi aniden çöker ve uçuşlar bu sistemin gözetiminde olmaksızın gerçekleşmek zorunda kalır. Neyse ki çevre havaalanlarındaki özerk hava trafik kontrol sistemleri paydaşlarındaki bu durumu fark eder ve durumdan etkilenen uçuşları işbirliğiyle başarıyla gerçekleştirirler. Böylece olaysız olarak bu korkunç durum atlatılır.
  3. senaryo – ki günümüzdeki olanaklarla daha uygulanabilir: Çok soğuk geçen bir kıştan sonra bir son dakika kararıyla sıcak bir yerlere tatil için gitmek istiyorsunuz. El bilgisayarınıza istediğiniz koşulları belirttikten sonra bilgisayarınız size uçak, otel odası, araç kiralama gibi hizmetler sunan web sitelerini verir. Sizin bu sitelere göre verdiğiniz kararla bilgisayarınız size bir tatil paketi sunar.

Yukarıdaki örnek senaryolara bakıldığında etmenlerin ne kadar hayatımızı kolaylaştırabileceğini, bazı kritik durumlarda nasıl önemli miktarda can ve mal kaybını önleyebileceğini hepimiz fark ediyoruz. Çok yeni ve tam olarak uluslararası düzeyde standartlar getirilse de tam oturmamış bu kavramla ilgili yapılan araştırmaların önemini bir kez daha gözler önüne seriliyor.

Zeki Etmen ve Özellikleri

Artık etmenin ne olduğu hakkında bir fikir oluşturduğumuza göre özelliklerinden bahsedebiliriz. Etmenler bir döngü içinde sürekli bulunduğu ortamdan aldığı bilgilere dayanarak karar veren ve buna göre hareket eden bir yapıya sahiptir. Basit anlamda bunu gerçekleştiren etmenlere örnek olarak termostatı verebiliriz. Termostatın görevi bildiğimiz gibi ortamı sürekli belirli bir sıcaklıkta tutmaktır. Bunun için de ortamın sıcaklığı düştüğünde ısıyı arttırır veya yükseldiğinde ısıyı azaltır. Ama karar verme mekanizması çok basittir. Bir etmenden, her ne kadar insanın sahip olduğu özellikte olmasa da, zeki diye bahsedebilmemiz için üç tip davranışa sahip olmalıdır:

  1. Reaktif: Gerçek dünya sabit değildir, sürekli değişen bir ortamdır. Zeki bir etmenin de değişken ortamlara ayak uydurabilmesi gerekir. Bu yüzden de bulunduğu ortamla etkileşim içinde olmalı, ortamdaki değişiklikleri göz önünde bulundurarak hareket etmelidir.
  2. Proaktif: Ortamla etkileşimli olmanın yanında zeki bir etmen verilen görevleri de yerine getirebilmelidir. Yani hedef odaklı hareket etmelidir. Bunun için de fırsatları değerlendirmeli, hedefe ulaşmak için gereken tüm koşulları yerine getirmelidir.
  3. Sosyal: Bazı hedeflere ulaşabilmek için başkalarıyla işbirliği içinde olmak gerekir. Gerçek dünyada nasıl ki insanlar birbirleriyle iletişim halinde bir işi yerine getiriyorlar ise, zeki etmenler de aynı şekilde birlikte çalışabilmelidirler.

Ortam Çeşitleri

Yapay zeka alanındaki önemli çalışmalarıyla tanınan Russell ve Norvig’in yaptığı sınıflandırmaya göre etmenlerin bulunduğu ortamlar dört kategoriye ayrılır.

  1. Erişilebilirliğine göre; Bir ortamın erişilebilir olması, o ortamın tüm parametrelerinden etmenin sürekli haberdar olması demektir. Gerçek hayatta ise çoğu ortam hakkında etmenlerin kısıtlı bilgisi bulunmaktadır (örneğin fiziksel dünyada bir etmen ortamın yalnızca görüş alanında kalan kısmıyla ilgili fikre sahiptir) Etmen bir ortam hakkında ne kadar bilgi sahibiyse, yani o ortam onun için ne kadar erişilebilirse o etmeni tasarlamak o kadar kolaylaşır.
  2. Deterministik oluşuna göre; etmenin ortama yaptığı her etkiye belirli ve tek bir tepki alması durumunda o ortam deterministiktir, her hareketin neyle sonuçlanacağı kesindir. Deterministik olmayan ortamlarda çalışan etmenleri tasarlamak zordur.
  3. Sabitlik veya değişkenliğine göre; Etmenin hareketleri ve doğurduğu sonuçlar dışında parametreleri değişmeyen ortamlar sabittir. Fakat fiziksel ortamlar oldukça değişkendir ve etmenin kontrolü dışında çalışan pek çok süreç bulundurmaktadır.
  4. Kesintili veya sürekli oluşuna göre; Belirli sayıda adımı ve algısı olan ortamlar kesintilidir. Örneğin bir satranç tahtasında yapılabilecek hamleler belirlidir. Ancak gerçek dünyada bu tarzda yön ve hareket sınırı bulunmaksızın nesneler hareket edebilmektedir.

Etmen ve Nesne Karşılaştırması

Etmen kavramından program geliştirme yöntemlerindeki son nokta, programlamadaki en yeni paradigma olarak bahsettiğimize göre, halihazırda kullanılmakta olan ve rakipsiz görünen nesne tabanlı yazılım geliştirmedeki “nesne” kavramıyla karşılaştırma yapmamız gerekir. Yazının girişinde sözünü ettiğim etmenlere duyulan ihtiyaç giderek kendini hissettirmeye başlamıştır ve şimdilik nesne, az sonra bahsedeceğim üzere etmen tabanlı yazılım geliştirmede kullanılmakta olsa da, etmenin sahip olduğu “zeka” kavramından maalesef yoksundur.

Nesne kavramının özelliklerini tekrar kısaca gözden geçirdiğimizde belirli bir durumu içerdiğini, bu durum ile metotları vasıtası ile etkileşebildiğini görürüz. Etmenlerin nesnelere üstün olduğu durumlar ise;

  1. Özerklik; bir etmen diğer etmenden gelen bir isteği yapıp yapmamaya karar verecek mantıksal altyapıya sahipken nesnelerde böyle bir fikir yoktur.
  2. Zeka; etmen reaktif, proaktif ve sosyaldir. Nesne yönelimli modelde bu davranış biçimiyle ilgili bir kavram bulunmamaktadır.
  3. Aktiflik; etmenler nesneler gibi pasif hizmet sağlamazlar çevreleriyle etkileşim halindedir.

“Nesneler bedavaya, etmenler bir bedel karşılığında çalışırlar.” (Objects do it for free, agents do it for money.)

Bu slogan, çarpıcı bir şekilde nesne ve etmen arasındaki farklılığın altını çizer.

Etmen Mimarileri

Çok fazla derinine inmeden etmen sistemi tasarımında kullanılan farklı bakış açılarından da bahsetmek istiyorum.

  1. Çıkarsamaya dayalı: Etmenin dış dünya ile ilgili sahip olduğu bilgileri sembolik olarak tuttuğu bir veritabanı bulunur. Buradaki bilgiler ve ortamdan gelen algıları birleştirerek bir sonraki hareketinin ne olacağını mantık kurallarıyla çıkarsamaya çalışır. Mantığa dayalı çalıştığı için oldukça tutarlı davranır, fakat değişken bir ortamda bu çıkarsamalar etmenin karar vermesini yavaşlatır. Çünkü hem sürekli bulunduğu ortamdaki değişikliklere göre bilgilerini tazelemekte hem de hedefini istenildiği şekilde gerçekleştirmektedir. Bu durumda bir taraftan ödün verilmesi gerekmektedir. Ayrıca bir başka dezavantajı da dış dünyanın sembolik olarak gösteriminin zorluğudur.
  2. Reaktif: Brooks’un geliştirdiği Subsumption algoritmasına göre zeki davranış çıkarım yapılmadan ve dış dünyanın temsilini barındırmadan yalnız ortamda meydana gelen değişikliklerle etkileşim içinde olarak da yapılabilir. Bunun için etmenin fiziksel bir gövdesi ve etmen ortamla birebir etkileşimli olmalıdır. Etmenin karar verme mekanizması sonlu durum makinalarıyla tanımlanmış davranış modellerinin oluşturduğu hiyerarşik bir yapıdadır. Hiçbir şekilde planlama yoktur, koşulları algılar ve harekete geçer.
  3. Deneyime dayalı: Günlük hayata geçirilebilmiş ve kullanımda olan bir mimaridir. BDI (Belief, Desire, Intention – İnanç, Dilek, Niyet) mimarisi olarak da bilinmektedir. Etmenin bulunduğu ortamla ilgili sahip olduğu bilgilere İnanç, ulaşmak istediği hedeflerine Dilek, o anlık gerçekleştirmeyi seçtiği hedefine ise Niyet denmektedir. Dileklerinden hangisini gerçekleştirmek istediğini seçtikten sonra o artık “niyet” olarak adlandırılmaktadır. Means-ends denilen usavurma (reasoning) ile o amaca(end) hangi araçla (means) ulaşacağını planladıktan sonra bir dizi eylem gerçekleştirir. Bu mimariye dayalı olarak geliştirilen OASIS adındaki hava kontrol sistemi Sydney Havaalanı’nda kullanılmaktadır.

Etmen Tabanlı Programlama Dilleri

Etmen tabanlı paradigmayı destekleyen ilk dil olan AGENT0 1993 yılında Yoav Shahom tarafından geliştirildi. Bu dilde etmenler yetenekler, başlangıç inançları, başlangıç sorumlulukları ve sorumluluk kuralları cinsinden tanımlanır. Etmenin nasıl hareket edeceğini sorumluluk kuralları belirler. Her sorumluluk kuralının içinde bir ileti durumu, bir zihinsel durum ve bir eylem bulunmaktadır. Etmen dışardan aldığı iletileri ileti durumuyla, zihinsel durumunu inançlarıyla eşleştirir. Eğer bunların sonucunda kural çalışırsa etmen ilgili eylemi gerçekleştirmekle yükümlü olur. Çıkarsamaya dayalı bir mimarinin üzerine kurulmuştur. Diğer etmen tabanlı diller ise FLUX, JACK, 3APL, Jason olarak sayılabilirler.

FIPA (Foundation for Intelligent Physical Agents)

Etmenler ve çoklu etmen sistemleriyle ilgili standartlar belirlemek için IEEE Computer Society bünyesinde kurulan kar amacı gütmeyen bir topluluktur. Etmen sistemleri ile ilgili yaptığı tanımlamalar soyut mimari, etmen yönetimi, FIPA ACL(Agent Communication Language – Etmen İletişim Dili) mesaj yapısı, FIPA iletişimsel edin (communicative act) kütüphanesi gibi konuları kapsar. Etmen tabanlı yazılım geliştirme ortamlarının bilinenleri FIPA uyumludur. Daha fazla bilgi için www.fipa.org

Etmen Tabanlı Yazılım Geliştirme Ortamları

Herhangi bir çoklu etmen sistemi geliştirilmek istendiğinde kullanılan belli başlı geliştirme ortamları arasında en çok bilinenleri JADE ve Jadex ortamlarıdır. JADE (Java Agent DEvelopment Framework), Telecom Italia Lab tarafından 2003’te geliştirilmiştir. Usavurması güçlü etmenler tasarlamaya uygun değildir ve genelde çoklu etmen sistemleri için bir iletişim middleware’i sağlamaktadır.(http://jade.tilab.com/) Bir diğeri olan Jadex, Hamburg Üniversitesi Dağıtık Sistemler Grubu tarafından geliştirilmiş BDI tabanlı ve yine Java dilini destekleyen bir geliştirme ortamıdır. (http://jadex.informatik.uni-hamburg.de/)

Etmen Tabanlı Yazılım Geliştirme Yöntemleri

Etmen tabanlı yazılım geliştirme için üzerinde çalışılmakta ve geliştirilmekte olan yöntemlerin en çok öne çıkanları Tropos, Prometheus ve O-MaSE’dir. Bu metodolojileri destekleyen araç setleri de Eclipse eklentisi olarak indirilip çalıştırılabilmektedir. Tropos’unki TAOM4e, Prometheus’unki PDT ve O-MaSE’ninki aT<sup>3</sup>’tür.

Sonuç

Giderek yapıp yapamayacağımız tüm işleri bilgisayarlara yüklemeye eğilimli olduğumuz bir dünyada etmenlerin üzerine düşen görevler de gün geçtikçe artıyor. Tüm bilgisayarlar kapalı devre çalışmaktan çıkıp “Dünya Çapında Ağ”ın birer elemanı olacaklar, böylece makinelerin, servislerin, sistemlerin birbirleriyle konuşmaları ve iletişimde olmaları vazgeçilmez bir özellik olacak. Bir de tüm bunların bizim müdahalemiz dışında, kendi kendine gerçekleşmesi beklentisi ortaya çıktığında – ki o da kaçınılmaz olacak - işte o noktada devreye etmenlerin gireceğinden hiç şüpheniz olmasın.

Kaynaklar