İçeriğe atla
Üyelik kaydınızı yaparak son yazılan içeriklerden haberdar olun! ×

Yapay Zeka

  • makale
    55
  • yorum
    2
  • görüntüleme
    766.489

Uyarlanabilir Rastgele Arama (Adaptive Random Search)


Doğuhan ELMA

232 görünüm

Uyarlanabilir Rastgele Arama algoritması, Stokastik Optimizasyon ve Global Optimizasyon olarak bilinen genel yaklaşımlar grubuna aittir. Arama uzayında gezinmek için türevlere ihtiyaç duymaması bakımından doğrudan bir arama yöntemidir. Uyarlanabilir Rastgele Arama, Rastgele Arama ve Yerelleştirilmiş Rastgele Arama algoritmalarının bir uzantısıdır.

Uyarlanabilir Rastgele Arama (Adaptive Random Search) Algoritması, standart rastgele arama algoritmasının bir varyantıdır. Standart rastgele arama algoritması, çözüm alanındaki tüm noktaları eşit olasılıkla göz önünde bulundururken, uyarlanabilir rastgele arama algoritması, daha önce bulunan iyi çözümlere yakın bölgeleri daha yoğun bir şekilde araştırır.

Bu algoritma, her iterasyonda, mevcut çözümün biraz dışında rastgele bir nokta seçer. Bu yeni nokta, eğer daha iyi bir çözümse, yeni mevcut çözüm olarak kabul edilir. Ayrıca, uyarlanabilir rastgele arama algoritması, arama alanındaki adım büyüklüğünü dinamik olarak ayarlar. Eğer yeni bir çözüm bulunamıyorsa, adım büyüklüğü artırılır (arama daha geniş bir alana yayılır). Eğer birçok yeni çözüm bulunuyorsa, adım büyüklüğü azaltılır (arama daha odaklı hale gelir).

Uyarlanabilir rastgele arama algoritması, daha geniş arama alanlarından iyi çözümler bulmayı ve bunları daha ayrıntılı bir şekilde incelemeyi sağlar. Bu nedenle, genellikle standart rastgele arama algoritmasına kıyasla daha verimlidir. Ancak, yine de karmaşık optimizasyon problemlarında genellikle gradient descent, genetik algoritmalar, simulated annealing vb. gibi daha gelişmiş yöntemlerin kullanılması önerilir.

Aşağıda uyarlanabilir rastgele arama algoritmasının basit bir Python uygulamasını bulabilirsiniz. Bu örnekte, belirli bir hedefe yaklaşan bir değeri rastgele bir adımla güncelliyoruz. Her adımda, eğer yeni tahmin eski tahminden daha iyiyse (yani hedefe daha yakınsa), adım boyutunu azaltıyoruz. Aksi takdirde, adım boyutunu artırıyoruz.

import random

def adaptive_random_search(target, guess, step, n_iterations):
    for _ in range(n_iterations):
        guess_new = guess + random.uniform(-step, step)
        if abs(target - guess_new) < abs(target - guess):
            guess = guess_new
            step *= 0.9  # eğer tahmin iyileştiyse, adım boyutunu azalt
        else:
            step *= 1.1  # eğer tahmin kötüleştiyse, adım boyutunu artır
    return guess

# Hedef değeri 100, başlangıç tahmini 50, başlangıç adım boyutu 10, iterasyon sayısı 1000 olan bir örnek
print(adaptive_random_search(100, 50, 10, 1000))

Bu kod parçası, uyarlanabilir rastgele arama algoritmasının temel bir örneğidir. Gerçek dünyada bu algoritmayı kullanırken, çeşitli hiperparametreleri (örneğin, adım boyutunu ne kadar hızlı değiştireceğinizi belirleyen çarpanlar) deneyerek en iyi sonuçları elde etmek için ayarlamanız gerekebilir. Ayrıca, farklı problemler için farklı başlangıç tahminlerini, adım boyutlarını ve iterasyon sayılarını denemek isteyebilirsiniz. 

Bu tahmin edilecek oyunda tahmin sahibinin ilk söylenen tahmine aşağı yukarı ya artır demesine benzetebiliriz.

Görsel Olarak ise;

 

Bu örnekte, basit bir karesel fonksiyonu (x^2) eniyileyeceğiz:

import random

# Optimizasyon yapmak istediğimiz fonksiyon
def function(x):
    return x**2

def adaptive_random_search(guess, step, n_iterations):
    for _ in range(n_iterations):
        guess_new = guess + random.uniform(-step, step)
        if function(guess_new) < function(guess):
            guess = guess_new
            step *= 0.9  # eğer fonksiyon değeri iyileştiyse, adım boyutunu azalt
        else:
            step *= 1.1  # eğer fonksiyon değeri kötüleştiyse, adım boyutunu artır
    return guess

# Başlangıç tahmini 10, başlangıç adım boyutu 1, iterasyon sayısı 1000 olan bir örnek
print(adaptive_random_search(10, 1, 1000))

Çıktı:

0.031509219561774604

Bu örnekte, function(x) karesel bir fonksiyondur ve amacımız bu fonksiyonu minimize etmektir (yani fonksiyonun en küçük değerini bulmaktır). Uyarlanabilir rastgele arama algoritması, bu amaca ulaşmak için her iterasyonda tahmini ve adım boyutunu günceller.

0 Yorum


Önerilen Yorumlar

Görüntülenecek yorum yok.

Misafir
Yorum ekle...

×   Zengin metin olarak yapıştırıldı.   Bunun yerine düz metin olarak yapıştır

  Yalnızca 75 emojiye izin verilir.

×   Bağlantınız otomatik olarak gömüldü.   Bunun yerine bağlantı olarak görüntüle

×   Önceki içeriğiniz geri yüklendi.   Düzenleyiciyi temizle

×   Görüntüleri doğrudan yapıştıramazsınız. URL'den resim yükleyin veya ekleyin.

×
×
  • Create New...