Yapay Zeka Ajanları Sıfırdan Uzmanlığa – Bölüm 2
0

Yapay zeka ajanları serimizin ilk bölümünde temel kavramları ve basit ajan yapılarını ele almıştık. Bu ikinci bölümde, daha gelişmiş yapay zeka ajanı türlerini, bunların nasıl çalıştığını ve Python ile pratik uygulamalarını inceleyeceğiz.

Yapay Zeka Ajanları Türleri

1. Basit Refleks Ajanları

En temel yapay zeka ajanı türüdür. Mevcut durumu algılar ve önceden tanımlanmış kurallara göre hareket eder.

class SimpleReflexAgent:
    def __init__(self, rules):
        self.rules = rules  # Durum-hareket eşleştirmeleri
    
    def perceive_and_act(self, current_state):
        for condition, action in self.rules:
            if condition(current_state):
                return action
        return None  # Eşleşme yoksa hareketsiz kal

# Örnek kullanım
rules = [
    (lambda state: state['weather'] == 'rainy', 'take_umbrella'),
    (lambda state: state['temperature'] < 15, 'wear_jacket')
]
agent = SimpleReflexAgent(rules)
current_state = {'weather': 'rainy', 'temperature': 10}
print(agent.perceive_and_act(current_state))  # Çıktı: take_umbrella

2. Model Tabanlı Refleks Ajanları

Bu ajanlar, içsel bir dünya modelini korur ve geçmiş durumları hatırlayarak daha akıllı kararlar verebilir.

class ModelBasedReflexAgent:
    def __init__(self, rules, initial_state):
        self.rules = rules
        self.state = initial_state
        self.history = []
    
    def update_state(self, new_perception):
        self.history.append(self.state.copy())
        # Durumu güncelleme mantığı buraya gelir
        self.state.update(new_perception)
    
    def act(self):
        for condition, action in self.rules:
            if condition(self.state):
                return action
        return None

# Örnek kullanım
initial_state = {'battery_level': 100, 'location': 'home'}
rules = [
    (lambda s: s['battery_level'] < 20, 'return_to_charge'),
    (lambda s: s['location'] == 'home' and s['battery_level'] < 100, 'charge')
]
agent = ModelBasedReflexAgent(rules, initial_state)
agent.update_state({'battery_level': 15})
print(agent.act())  # Çıktı: return_to_charge

3. Hedef Tabanlı Ajanlar

Belirli hedeflere ulaşmak için hareket eden bu ajanlar, farklı eylemleri değerlendirerek en uygun olanı seçer.

class GoalBasedAgent:
    def __init__(self, goals):
        self.goals = goals
        self.actions = []
    
    def plan(self, current_state):
        # Basit bir planlama algoritması
        plan = []
        remaining_goals = self.goals.copy()
        
        while remaining_goals:
            next_goal = remaining_goals.pop(0)
            plan.append(f"achieve_{next_goal}")
        
        return plan

# Örnek kullanım
agent = GoalBasedAgent(['clean_house', 'buy_groceries'])
print(agent.plan({}))  # Çıktı: ['achieve_clean_house', 'achieve_buy_groceries']

4. Fayda Tabanlı Ajanlar

Bu gelişmiş ajanlar, olası eylemlerin beklenen faydasını hesaplayarak en yüksek faydayı sağlayacak hareketi seçer.

import numpy as np

class UtilityBasedAgent:
    def __init__(self, utility_function):
        self.utility_function = utility_function
    
    def decide(self, possible_actions, current_state):
        utilities = []
        for action in possible_actions:
            utility = self.utility_function(action, current_state)
            utilities.append((utility, action))
        
        # En yüksek faydalı eylemi seç
        return max(utilities)[1]

# Örnek kullanım
def utility_func(action, state):
    # Basit bir fayda fonksiyonu
    if action == 'study':
        return state['knowledge'] * 1.5
    elif action == 'rest':
        return state['energy'] * 0.8
    else:
        return 0

agent = UtilityBasedAgent(utility_func)
current_state = {'knowledge': 50, 'energy': 30}
print(agent.decide(['study', 'rest'], current_state))  # Çıktı: study

Yapay Zeka Ajanları Öğrenme Yeteneği

Modern yapay zeka ajanları, makine öğrenmesi algoritmaları sayesinde deneyimlerinden öğrenebilir. İşte basit bir öğrenen ajan örneği:

from sklearn.linear_model import LinearRegression

class LearningAgent:
    def __init__(self):
        self.model = LinearRegression()
        self.experiences = []
    
    def add_experience(self, state, action, reward):
        self.experiences.append((state, action, reward))
    
    def train(self):
        if len(self.experiences) < 10:  # Yeterli veri yoksa
            return
        
        # Eğitim verilerini hazırla
        X = [[s['feature'] for s, _, _ in self.experiences]]
        y = [r for _, _, r in self.experiences]
        
        # Modeli eğit
        self.model.fit(X, y)
    
    def predict_reward(self, state):
        return self.model.predict([[state['feature']]])[0]

# Örnek kullanım
agent = LearningAgent()
for i in range(10):
    agent.add_experience({'feature': i}, f"action_{i}", i*2)
agent.train()
print(agent.predict_reward({'feature': 5}))  # Yaklaşık 10 çıktısı beklenir

Gerçek Dünya Uygulamaları

Yapay zeka ajanları günlük hayatımızda birçok alanda karşımıza çıkıyor:

  1. Sanal Asistanlar: Siri, Alexa, Google Assistant
  2. Öneri Sistemleri: Netflix, Amazon ürün önerileri
  3. Otonom Araçlar: Kendi kendine giden arabalar
  4. Finansal Danışmanlar: Otomatik yatırım stratejileri
  5. Oyun Ajanları: Starcraft, DOTA 2’deki yapay zeka rakipler

Python ile Gelişmiş Yapay Zeka Ajanları Örneği

İşte çoklu ortamda çalışabilen daha gelişmiş bir yapay zeka ajanı örneği:

import random
from collections import defaultdict

class AdvancedAIAgent:
    def __init__(self, possible_actions):
        self.possible_actions = possible_actions
        self.q_table = defaultdict(lambda: defaultdict(float))
        self.learning_rate = 0.1
        self.discount_factor = 0.9
        self.exploration_rate = 0.3
    
    def choose_action(self, state):
        state_key = str(state)
        
        # Keşif (exploration) veya kullanım (exploitation)
        if random.random() < self.exploration_rate:
            return random.choice(self.possible_actions)
        else:
            return max(self.possible_actions, 
                      key=lambda a: self.q_table[state_key][a])
    
    def learn(self, state, action, reward, new_state):
        state_key = str(state)
        new_state_key = str(new_state)
        
        # Q-öğrenme formülü
        best_next_action = max(self.possible_actions, 
                              key=lambda a: self.q_table[new_state_key][a])
        td_target = reward + self.discount_factor * self.q_table[new_state_key][best_next_action]
        td_error = td_target - self.q_table[state_key][action]
        self.q_table[state_key][action] += self.learning_rate * td_error
        
        # Keşif oranını zamanla azalt
        self.exploration_rate *= 0.99

# Örnek kullanım
actions = ['up', 'down', 'left', 'right']
agent = AdvancedAIAgent(actions)

# Eğitim döngüsü (basit bir labirent ortamında)
for episode in range(100):
    state = {'position': (0, 0)}  # Başlangıç pozisyonu
    total_reward = 0
    
    for step in range(100):
        action = agent.choose_action(state)
        
        # Ortam simülasyonu (gerçek uygulamada ortamdan gelir)
        if action == 'up':
            new_pos = (state['position'][0], state['position'][1]+1)
        elif action == 'down':
            new_pos = (state['position'][0], state['position'][1]-1)
        elif action == 'left':
            new_pos = (state['position'][0]-1, state['position'][1])
        else:  # right
            new_pos = (state['position'][0]+1, state['position'][1])
        
        new_state = {'position': new_pos}
        
        # Ödül hesapla (hedef (5,5) pozisyonu)
        if new_pos == (5,5):
            reward = 100
            done = True
        else:
            reward = -1
            done = False
        
        # Ajan öğrensin
        agent.learn(state, action, reward, new_state)
        
        total_reward += reward
        state = new_state
        
        if done:
            break
    
    print(f"Episode {episode}, Total reward: {total_reward}")

Sonuç

Yapay zeka ajanları, basit kurallardan karmaşık öğrenme algoritmalarına kadar geniş bir yelpazede uygulama alanı buluyor. Bu yazıda, farklı ajan türlerini ve Python ile nasıl uygulanabileceklerini inceledik. Serinin bir sonraki bölümünde, derin öğrenme tabanlı ajanları ve gerçek dünya problemlerine nasıl uygulanabileceklerini ele alacağız.

Yapay zeka ajanları hakkında daha fazla bilgi edinmek ve uygulamalı projeler yapmak için sitemizi takip etmeye devam edin. Aşağıdaki yorum bölümünden sorularınızı ve görüşlerinizi paylaşabilirsiniz.

E-posta adresiniz yayınlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir