Python ile Basit Reaktif Yapay Zeka Geliştirme
Günümüzde giderek artan bir ivme kazanan yapay zeka uygulamaları, hem şirketlerin hem de kendi yapay zeka uygulamalarını yazmak isteyen bireylerin ilgi odağı haline geliyor. Python dilinde bilgi ve tecrübe sahibi olup yapay zeka kodlama alanına adım atmak isteyenler için doğal bir başlangıç noktası merak konusudur. Eğer siz de bu durumdaysanız ve yapay zeka dünyasına bir geliştirici veya geliştirici adayı olarak ilk adımı atmak istiyorsanız, yapay zekanın en yalın hali olan reaktif yapay zeka modeli ile başlayabilirsiniz. Bu makalede, reaktif yapay zekanın ne olduğu, nasıl çalıştığı ve ardından nasıl kodlandığı detaylı bir şekilde ele alınacaktır.
Reaktif Yapay Zeka (Reactive AI) Nedir?
Yapay zekanın en ilkel ve kronolojik olarak ilk evrimi olarak kabul edilen reaktif yapay zeka, yabancı literatürde “reactive AI” olarak adlandırılır. Bu sistemler, gerçek zamanlı veri alımı ve bu verilerin işlenmesi mantığı üzerine kuruludur. Otonom araçlar, sensörlü robotlar ve chatbot/sanal asistanlar gibi yapay zeka sistemleri, reaktif yapay zeka türüne örnek olarak verilebilir. Bu tür bir yapay zeka sistemi, kullanıcıdan aldığı girdiyi işler ve bu girdiden elde ettiği sonucu geri döndürür. Genellikle “kendi kendine öğrenen yapay zeka” olarak da anılırlar.
Reaktif özellik gösteren bir yapay zeka, mevcut verileri tuttuğu bir veritabanına (hafızaya) sahip olabilir. Ancak, hafızası olmayan ve yalnızca kullanıcı girdisiyle çalışan yapay zeka modelleri de mevcuttur. Bu modeller “stateless” (durumsuz) alt kategorisine girer. Bilgiyi bir yerden almak zorunda olan tüm “stateless” yapay zekalar, reaktif yapay zeka kategorisine dahil edilir.
Python ile Reaktif Yapay Zeka Yazma
Reaktif yapay zeka yazmak için öncelikle Python programlama diline ihtiyaç duyulur. Ardından, yazmak istediğiniz yapay zeka türüne uygun bir algoritma içeren yapay zeka paketleri ve eğer dahil etmeyi düşünüyorsanız veritabanı veya bir yapay zeka modeli gereklidir.
Bu makalede, Python dilini ve scikit-learn kütüphanesini kullanarak basit bir sayı tahmin uygulaması geliştirilecektir. Bu uygulamada, kullanıcıdan bir sayı dizisi istenecek ve bu diziye göre program, dizinin bir sonraki elemanını tahmin edecektir.
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 komutla indirilir:
pip install scikit-learn
Aşama 2: Uygulamayı Yazma
Kod editörünüzü açıp oluşturduğunuz boş .py dosyasına aşağıdaki ifadeyi ekleyerek başlayın:
from sklearn.linear_model import LinearRegression
Bu satır, scikit-learn kütüphanesinin linear_model alt modülündeki LinearRegression sınıfını projenize dahil eder.
Hemen ardından, programımızda en çok kullanılacak iki değişkeni tanımlayın:
userInput = None sequence = []
Bu değişkenler, ana fonksiyonumuzda girdi alma bölümünde şu şekilde kullanılacaktır:
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şkenlerini main fonksiyonumuza tanıtmak için, değişken adlarının önüne global anahtar kelimesini ekleyerek fonksiyonun başında belirtiyoruz. Ardından, kullanıcıya girdi girmesi için bir mesaj gösteriyoruz. Girilen değer ‘0’ olmadığı sürece, kullanıcı girdisini diziye ekleyip yeni bir girdi istiyoruz. Girilen değer ‘0’ değilse, girdiyi tam sayıya çevirip diziye ekliyoruz çünkü input() fonksiyonu varsayılan olarak metin (String) tipinde girdi alır. Bu işlemi bir try-except bloğuna alarak, hatalı giriş durumunda programın çökmesini engelleyip sadece girdi almaya devam etmesini sağlıyoruz.
Girdiyi aldıktan sonraki iki satırda, guess adlı bir fonksiyon karşımıza çıkıyor. Bu fonksiyon, örneğimiz için özel olarak yazılmış olup, programımızın yapay zeka kısmını oluşturmaktadır:
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 fonksiyon, kullanıcı girdileriyle oluşturulan listeyi parametre olarak alır. Öncelikle dizinin uzunluğunu kontrol eder. Eğer dizi tek bir elemandan oluşuyorsa, bu bir dizi olarak kabul edilemeyeceği için fonksiyon o tek sayıyı döndürür. Aksi takdirde, Doğrusal Regresyon modelinde kullanılacak olan iki değişken (X ve Y) oluşturulur. İlk değişken (X), dizinin son elemanı hariç tüm elemanları içerirken, ikinci değişken (Y) ilk elemanı hariç tüm elemanları içerir. Modelde X girdi değerlerini, Y ise çıktı değerlerini temsil eder.
Daha sonra LinearRegression sınıfından bir model değişkeni oluşturulur ve X ile Y değişkenleri kullanılarak model fit edilir. Akabinde, modelin tahmini return ifadesiyle döndürülür ve main fonksiyonunun son satırında çıktı olarak alınır. Modelin tahmini bir dizi olarak döndürüldüğü için, bu dizinin sıfırıncı elemanı alınır.
Aşama 3: Uygulamayı Çalıştırma
Kodumuzun en altına main() fonksiyonunu çağırarak uygulamamızı çalıştırabiliriz. Kod kaydedildikten sonra, Komut İstemi’nden veya dosya üzerine çift tıklayarak uygulama çalıştırılır.
| Kullanıcı Girdisi (Örnek Dizi) | Tahmin Edilen Sonraki Sayı |
| 1, 2, 3, 4, 5 | 6 |
| 10, 20, 30 | 40 |
| 5, 10, 15, 20 | 25 |
Yukarıdaki tablo, programın örnek bir kullanımını göstermektedir. Örneğin, 1’den 5’e kadar sıralı bir dizi girildiğinde, uygulamanın sonunda tahmin olarak “6” sonucu alınacaktır.
Aşama 4: Uygulamayı Geliştirme
Bu örnekle, 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 basit uygulama, veritabanı ihtiyacı duymadan yalnızca kullanıcıdan aldığı girdiyle çalışıp çıktı üretiyor. Bu uygulama ile sıralı diziler, toplam dizileri veya Fibonacci dizileri gibi sayı dizilerini tahmin edebilirsiniz. Ancak, ikinci veya üçüncü dereceden polinom içeren dizilerden girdi aldığınızda alacağınız sonuçlar pek doğru veya tatmin edici olmayabilir.
Yazdığınız yapay zeka modelinin bu tür sorunlarını çözmek için, elemanlar arasındaki farkları bir dizide tutup o dizi üzerinden işlem yapmaktan başlayarak daha gelişmiş modelleri uygulamaya dahil etmeye, hatta eğer kullanıma açacaksanız bir kullanıcı arayüzü tasarlamaya kadar giden çözüm yöntemleriyle uygulamanızı daha da geliştirebilirsiniz. Bu, reaktif yapay zeka prensiplerini kullanarak daha karmaşık problemleri ele almanıza olanak tanıyacaktır.




