Python ile Reaktif Yapay Zeka: Başlangıç Rehberi

Python ile Reaktif Yapay Zeka: Başlangıç Rehberi

Günümüzde gittikçe daha çok ivme kazanan yapay zeka uygulamaları, şirketler kadar kendi yapay zeka uygulamalarını yazmak isteyenlerin de ilgi odağı haline geliyor. Python hakkında bilgisi ve tecrübesi olup yapay zeka kodlama alanına girmek isteyenler de doğal olarak nereden başlayacağını merak ediyor. Eğer bu durumda iseniz ve yapay zeka dünyasına bir geliştirici veya geliştirici adayı olarak ilk adımı atmak istiyorsanız yapay zekanın en basit hali olan reaktif yapay zeka modeli ile başlayabilirsiniz. Bu yazıda reaktif yapay zekanın ne olduğu, nasıl çalıştığı ve akabinde nasıl yazıldığı anlatılacaktır.

Reaktif Yapay Zeka (Reactive AI) Nedir?

Yapay zekanın en ilkel hali olarak kabul edilen, kronolojik olarak ortaya çıkan ilk evrimi olan ve yabancı literatürde “reactive AI” olarak geçen reaktif yapay zeka, gerçek zamanlı veri alımı ve bu verilerin işlenmesi mantığı üzerine kurulu bir yapay zeka sistemidir. Bu tür yapay zeka sistemlerinin örneği otonom arabalar, sensörlü robotlar, chatbot/sanal asistan yapay zeka sistemleridir. Bu tür bir yapay zeka sistemi, kullanıcıdan girdiyi alır ve bu girdiyi işleyerek girdiden elde ettiği sonucu döndürür. Bu sistemler genel olarak “kendi kendine öğrenen yapay zeka” olarak geçer.

Reaktif özellik gösteren bir yapay zeka, halihazırda veri tuttuğu bir veritabanına, yani hafızaya, sahip olabilir, ancak bu hafızaya sahip olmayan, sadece kullanıcı girdisiyle çalışan yapay zeka modelleri de bulunmaktadır. Bu tür yapay zeka sistemleri “stateless” (durumsuz) alt kategorisine ayrılır. “Stateless” olan bütün yapay zekalar, bilgiyi bir yerden almak zorunda olduklarından dolayı reaktif yapay zeka kategorisine girerler.

Reaktif Yapay Zeka Yazmak İçin Adımlar

Reaktif yapay zeka yazmak için kesin olarak gerek duyacağınız ilk şey Python programlama dili olmakla beraber, bunu hangi tür bir yapay zeka yazmak istiyor iseniz ona uygun şekilde kullanacağınız bir algoritma içeren yapay zeka paketleri ve (eğer dahil etmeyi düşünüyorsanız) veritabanı ya da bir yapay zeka modeli izler.

Bu yazıda Python dilini ve scikit-learn kütüphanesini kullanarak basit bir sayı tahmin uygulaması yapacağız. Bu uygulamamızda kullanıcıdan bir sayı dizisi isteyeceğiz ve bu sayı dizisine göre programımız bu dizinin bir sonraki sayısını tahmin edecek.

Aşama 1: Gerekli Kütüphaneyi İndirme

Bu örnek için gerekli olan scikit-learn kütüphanesi, Komut İstemi üzerinden aşağıdaki komut girilerek indirilir:

pip install scikit-learn

Aşama 2: Basit Sayı Tahmin Uygulaması Geliştirme

Daha sonra kod editörünüzü açıp oluşturduğunuz boş .py dosyasının ilk satırına aşağıdaki ifadeyi yazarak scikit-learn kütüphanesinin ilgili modülünü projenize dahil edin:

from sklearn.linear_model import LinearRegression

Hemen ardından programımızda en çok işimize yarayacak iki değişkenimizi tanımlıyoruz. Bunlar sırasıyla kullanıcı girişi ve sonraki sayısını tahmin edeceğimiz diziyi tutan dizi değişkenimiz:

userInput = None
sequence = []

Bu değişkenleri programımızın girdi alma kısmında şu şekilde kullanacağız:

def main():
    global userInput
    global sequence
    print("0 sayısını girerek diziyi sonlandırın.")
    while userInput != '0':
        userInput = input("Bir sayı girin: ")
        try:
            if userInput != ‘0’:
                sequence.append(int(userInput))
        except:
            pass
    result = round(guess(sequence))
    print(f"Sonraki sayı: {result}")

Burada userInput ve sequence değişkenlerimizi main fonksiyonumuza tanıtmak için o değişkenlerin global olduğunu belirtiyoruz. Kullanıcıya girdi girmesi için bir mesaj veriyoruz ve girdiği girdi 0 olmadığı sürece kullanıcı girdisini diziye ekleyip yeni bir girdi istiyoruz. Eğer girilen girdi ‘0’ değil ise girdiyi tam sayıya çevirip diziye ekliyoruz, çünkü input fonksiyonu standart olarak String tipi bir girdi alır. Bunu bir try-except bloğuna alarak girdinin hatalı olması durumunda programın çökmesini engelliyoruz.

Girdiyi aldıktan sonraki iki satırda karşımıza guess isimli bir fonksiyon çıkıyor. Bu fonksiyon örneğimiz için yazılmış olup programımızın yapay zeka kısmını oluşturuyor:

def guess(sequence):
    if len(sequence) < 2:
        return sequence[0]
    else:
        X = [[x] for x in sequence[:-1]]
        y = [x for x in sequence[1:]]
        model = LinearRegression()
        model.fit(X, y)
        return model.predict([[sequence[-1]]])[0]

Bu fonksiyonumuz kullanıcı girdileriyle oluşturduğumuz listeyi parametre olarak alıyor ve öncelikle dizinin uzunluğunu kontrol ediyor. Eğer dizi tek bir elemandan oluşuyorsa o tek sayıyı döndürüyor. Aksi takdirde Doğrusal Regresyon modelinde kullanılacak olan iki değişkeni (X ve Y) oluşturuyor. Modelde X girdi değerlerini, Y ise çıktı değerlerini temsil ediyor. Daha sonra LinearRegression sınıfında bir model oluşturuluyor ve X ile Y değişkenleri “fit” ediliyor. Akabinde modelin tahmini döndürülüyor.

Aşama 3: Uygulamayı Çalıştırma

Kodumuzun en alt satırına main fonksiyonunu çağırıp uygulamamızı çalıştırabilmek için “main()” kod satırını ekleyerek kodu kaydedin. Komut isteminden ya da dosya üzerine çift tıklama ile uygulama çalıştırılabilir.

Aşama 4: Uygulamayı Geliştirme Yolları

Bu basit örnek ile Python programlama dili üzerinden ilk yapay zeka yazma deneyiminizi kazanmış oldunuz. Kodun okunabilirliği için gerekli boşluklar dahil sadece 30 satır tutan bu uygulama, veritabanı ihtiyacı duymadan sadece kullanıcıdan aldığı girdiyle çalışıp çıktı üretir. Bu uygulama ile sıralı, toplam dizisi, Fibonacci dizisi gibi sayı dizilerini bulabilirsiniz. Ancak ikinci veya üçüncü dereceden polinom içeren dizilerde alacağınız sonuçlar pek doğru olmayacaktır.

Yazdığınız yapay zeka modelinin bu tür karmaşık dizilerdeki performansını artırmak için, elemanlar arasındaki farkları analiz etmekten başlayıp daha gelişmiş modelleri entegre etmeye, hatta kullanıma açacaksanız kullanıcı arayüzü tasarlamaya kadar giden çeşitli çözüm yöntemleriyle uygulamanızı daha da geliştirebilirsiniz. Bu adımlar, Python ile yapay zeka geliştirme yolculuğunuzda size sağlam bir temel sunacaktır.