Jump to content
  • entries
    55
  • comments
    2
  • views
    281

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


Doğuhan ELMA

63 views

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