İç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
    717.221

Çapraz Entropi Yöntemi (Cross-Entropy Method, CEM)


Doğuhan ELMA

295 görünüm

Çapraz Entropi Yöntemi (Cross-Entropy Method, CEM), bir tür tahmini dağılım optimizasyonu (EDO) algoritmasıdır. Yöntem, önce bir dizi örnekleme yolu oluşturur, ardından bu örneklerden en iyi performans gösterenleri seçer ve bu örneklerden bir tahmini dağılım oluşturur. Bu işlem birkaç döngü boyunca tekrarlanır.

CEM genellikle global optimizasyon problemlarında kullanılır, özellikle de optimizasyon alanı düz olmayan veya düzensiz, yani yerel minimumlarla dolu olduğunda. Ayrıca, genellikle belirsizlik altında karar verme problemlarında ve özellikle güçlendirme öğrenmesinde kullanılır. 

CEM, bir dizi adımda gerçekleştirilir:

1. Örnekleme: Önce mevcut dağılımdan bir dizi örnek çıkarılır. Bu genellikle rastgele bir süreçtir.

2. Değerlendirme: Her örneğin bir "değeri" veya "performansı" hesaplanır. Bu genellikle bir "fitness" fonksiyonu aracılığıyla yapılır.

3. Seçim: En iyi örnekler seçilir. "En iyi" genellikle en yüksek fitness değerine sahip olanları ifade eder.

4. Güncelleme: Seçilen örneklerden yeni bir dağılım tahmin edilir ve mevcut dağılım bu yeni tahmin ile güncellenir.

5. İterasyon: Bu adımlar, belirli bir durdurma kriterine ulaşılıncaya kadar tekrarlanır. Durma kriteri genellikle belirli bir maksimum iterasyon sayısı, belirli bir zaman limiti veya belirli bir fitness düzeyine ulaşmak olabilir.

CEM'nin gücü, arama alanını belirli bir yön boyunca hızla daraltabilmesi ve genellikle global optima yaklaşabilmesidir. Ancak, CEM'nin yerel optima'ya hapsolma riski vardır ve bu, özellikle düşük kaliteli örneklerin dahil edilmediği durumlarda bir sorun olabilir. Bu nedenle, CEM genellikle bir tür gürültü eklenerek veya bir tür keşif mekanizması kullanılarak modifiye edilir.

Cross-Entropy Method (CEM) algoritmasını basit bir örnekle gösterebiliriz. CEM'i bir optimizasyon probleminde uygulayalım: bir hedef fonksiyonunu maksimize etmek.

Hedef fonksiyonumuz, bir çözümün "fitness"ini belirleyen bir fonksiyon olacak. Bu örnekte, bir çözümün fitness'ini, çözüm vektöründeki tüm elemanların toplamı olarak tanımlayalım. Ayrıca, çözümlerin bir normal dağılımdan örneklendiğini varsayacağız.

import numpy as np

# Hedef fonksiyonu (fitness fonksiyonu)
def fitness_function(solution):
    return np.sum(solution)

# Cross-Entropy Method algoritması
def run_cem(population_size, sol_len, num_iterations, elite_frac):
    # Çözümler için başlangıç dağılım parametrelerini belirle
    mean = np.zeros(sol_len)
    std_dev = np.ones(sol_len)

    for _ in range(num_iterations):
        # Dağılımdan bir popülasyon örnekle
        population = np.random.normal(mean, std_dev, (population_size, sol_len))

        # Her çözümün fitness'ini hesapla
        fitness_values = np.apply_along_axis(fitness_function, 1, population)

        # Elit çözümleri seç (yani en yüksek fitness değerlerine sahip çözümler)
        num_elites = int(population_size * elite_frac)
        elite_indices = fitness_values.argsort()[-num_elites:]
        elites = population[elite_indices]

        # Dağılım parametrelerini güncelle
        mean = np.mean(elites, axis=0)
        std_dev = np.std(elites, axis=0, ddof=1)

    # En iyi çözümü döndür
    best_solution = mean  # Bu durumda, ortalama en iyi çözümü temsil eder
    return best_solution

# Algoritmayı çalıştır
best_solution = run_cem(population_size=100, sol_len=50, num_iterations=100, elite_frac=0.2)
print("Best solution:", best_solution)

Bu kod, belirli bir popülasyon boyutu, çözüm uzunluğu, iterasyon sayısı ve elit fraksiyonu için CEM algoritmasını çalıştırır. Her iterasyon sırasında, kod öncelikle dağılımdan bir popülasyon örneklendirir. Ardından, her çözümün fitness değerini hesaplar ve en iyi çözümleri seçer. Son olarak, bu elit çözümlerden yeni dağılım parametreleri tahmin edilir.

En sonunda, en iyi çözüm döndürülür. Bu durumda, çözümler bir normal dağılımdan örneklendiğinden, ortalama genellikle en iyi çözümü temsil eder. Bu örnekte, "en iyi" çözüm genellikle yüksek değerlere sahip elemanlardan oluşan bir çözüm olacaktır, çünkü fitness fonksiyonumuz elemanların toplamını maksimize etmeye çalışır.

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...