Jump to content
Üyelik kaydınızı yaparak son yazılan içeriklerden haberdar olun! ×
  • entries
    55
  • comments
    2
  • views
    435,728

Uyarlanabilir Rastgele Arama (Adaptive Random Search)


Doğuhan ELMA

206 views

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 Comments


Recommended Comments

There are no comments to display.

Guest
Add a comment...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

×
×
  • Create New...