AGI & Research

YZ Planlama: Sıfırdan Otonom Karar Verme Sistemleri Oluşturma

Yapay Zeka planlaması, otonom ajanların omurgasıdır. Genellikle desen tanıma üzerine odaklanan standart makine öğrenmesinin aksine, YZ planlaması mantık, durum geçişleri ve hedeflere ulaşma üzerine odaklanır. Gelişmiş ajanlar geliştiren veya AGI kavramlarını keşfeden geliştiriciler için, mevcut durum ile istenen hedef arasındaki boşluğu nasıl köprüleyeceğini anlamak kritiktir. Bu rehber, durum uzayı aramanın temellerini kapsar ve Python kullanılarak pratik bir uygulama sağlar.

Durum Uzayı Problemini Anlama

Temelinde, planlama; bir ajanı tanımlanmış bir ortamda bir başlangıç durumundan bir hedef durumuna götüren eylem dizisini bulma sürecidir. Bu, genellikle düğümlerin durumları, kenarların ise eylemleri temsil ettiği yönlü bir graf olarak modellenir. Zorluk, kombinatoryal patlamada yatar: ortamın karmaşıklığı arttıkça, olası durumların sayısı üstel olarak büyür. Verimli planlama algoritmaları, her bir olasılığı keşfetmeden bu uzayda gezinmelidir.

Planlayıcının Temel Bileşenleri

Sağlam bir planlama sistemi üç ana bileşenden oluşur:

  • Temsil: Dünya durumunun nasıl tanımlandığı (ör. JSON nesneleri, mantıksal öngörüler).
  • Eylemler: Ön koşulları ve etkileri tanımlayan operatörler kümesi.
  • Arama Stratejisi: Durum uzayını dolaşmak için kullanılan algoritma (ör. A*, BFS, Dijkstra).

Pratik Uygulama: A* Araması

A* algoritması, en kısa yolu verimli bir şekilde bulmak için sezgisel bir yöntem kullanan en iyi-önce arama stratejisidir. Özellikle oyun geliştirme ve robotik alanında popülerdir. Aşağıda, ızgara tabanlı bir ortam için A* kullanan bir planlayıcının basitleştirilmiş Python uygulaması yer almaktadır.

import heapq
from typing import List, Tuple

def heuristic(a: Tuple[int, int], b: Tuple[int, int]) -> int:
    # Manhattan mesafesi sezgisi
    return abs(a[0] - b[0]) + abs(a[1] - b[1])

def get_neighbors(state: Tuple[int, int]) -> List[Tuple[int, int]]:
    # Geçerli hamleleri tanımla: Yukarı, Aşağı, Sol, Sağ
    x, y = state
    return [
        (x + 1, y), (x - 1, y),
        (x, y + 1), (x, y - 1)
    ]

def a_star_planner(start: Tuple[int, int], goal: Tuple[int, int]) -> List[Tuple[int, int]]:
    open_set = []
    heapq.heappush(open_set, (0, heuristic(start, goal), start))
    came_from = {}
    g_score = {start: 0}
    f_score = {start: heuristic(start, goal)}
    
    while open_set:
        current = heapq.heappop(open_set)[2]
        
        if current == goal:
            # Yolu yeniden oluştur
            path = [current]
            while current in came_from:
                current = came_from[current]
                path.append(current)
            return path[::-1]
        
        for neighbor in get_neighbors(current):
            tentative_g_score = g_score[current] + 1
            
            if tentative_g_score < g_score.get(neighbor, float('inf')):
                came_from[neighbor] = current
                g_score[neighbor] = tentative_g_score
                f_score[neighbor] = tentative_g_score + heuristic(neighbor, goal)
                heapq.heappush(open_set, (f_score[neighbor], heuristic(neighbor, goal), neighbor))
                
    return [] # Yol bulunamadı

Güncel Trendler: LLM'ler ve Planlama

Son yıllarda, alan, yüksek düzey planlama için Büyük Dil Modelleri'nin (LLM) kullanımına doğru kaydı. ReAct (Muhakeme + Eylem) gibi çerçeveler, modellerin doğal dilde planlar oluşturmasına ve ardından bu planların harici araçlar tarafından uygulanmasına olanak tanır. Bu hibrit yaklaşım, uygulama için klasik arama algoritmalarının güvenilirliğini korurken LLM'lerin muhakeme yeteneklerinden faydalanır.

Sonuç

YZ planlamasını ustalaşmak, statik YZ modellerinin ötesine geçen herhangi bir geliştirici için gereklidir. Klasik arama algoritmalarını modern LLM muhakemesiyle birleştirerek, yalnızca zeki değil, aynı zamanda dinamik ortamlara uyum sağlayabilen sistemler oluşturabilirsiniz. Basit durum uzayı aramalarıyla başlayın, karmaşıklığı kademeli olarak artırın ve sezgisel fonksiyonlarınızın verimliliğine her zaman öncelik verin.

Share: