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

Bağışıklık Ağı Algoritması (Immune Network Algorithm, aiNet)


Doğuhan ELMA

337 görünüm

Bağışıklık Ağı Algoritması (Immune Network Algorithm, aiNet), yapay bağışıklık sistemi algoritmalarının bir alt kümesidir. Bu algoritmalar, doğal bağışıklık sistemlerinin biyolojik süreçlerinden ilham alır. İnsan bağışıklık sistemi, vücudumuzu virüsler, bakteriler ve diğer patojenlerden korumak için bir dizi karmaşık mekanizma kullanır. Bu mekanizmalar arasında, antijenleri (yani patojenleri) tanıma ve onlara yanıt verme yeteneği bulunur.

Bağışıklık Ağı Algoritması, bağışıklık sisteminin "hafıza" fonksiyonunu taklit eder. Doğal bağışıklık sistemi, önceden karşılaşılan patojenlere karşı daha hızlı ve etkili bir yanıt verme yeteneğine sahiptir. Bu "hafıza" işlevi, bağışıklık sisteminin zaman içinde öğrenme yeteneğini sağlar. 

Bağışıklık Ağı Algoritması, bu fikri taklit eder ve bir veri kümesi üzerinde öğrenme yeteneği sağlar. Bu algoritma, bir veri kümesindeki her bir veri noktasını bir "antijen" olarak düşünür. Algoritma, bu antijenleri tanımak ve onlara yanıt vermek için "antikorlar" oluşturur. Antikorlar, zaman içinde değiştirilir ve geliştirilir, böylece algoritma antijenleri (veri noktalarını) daha etkili bir şekilde tanır ve sınıflandırır.

Bağışıklık Ağı Algoritması, çeşitli makine öğrenmesi ve optimizasyon problemleri için kullanılabilir. Örneğin, bu algoritma, veri kümesi içindeki benzer veri noktalarını bulmak için kümeleme problemleri üzerinde çalışabilir. Ayrıca, veri noktalarının belirli sınıflara ait olup olmadığını tahmin etmek için sınıflandırma problemleri üzerinde de çalışabilir.

Bağışıklık Ağı Algoritması'nın ana adımları genellikle şunları içerir:

1. Başlangıçta, rastgele bir antikor kümesi oluşturulur.
2. Her bir antikor, veri kümesindeki her bir veri noktasına (antijene) karşı bir uyum fonksiyonu kullanılarak değerlendirilir. Uyum fonksiyonu, genellikle antikorun antijenle ne kadar iyi eşleştiğini ölçer.
3. En uygun antikorlar, yeni antikorlar oluşturmak için çoğaltılır (klonlanır).
4. Yeni oluşturulan antikorlar, daha iyi bir uyum sağlamaları için mutasyona uğrar.
5. Bu adımlar, belirli bir durdurma kriteri karşılanana kadar tekrarlanır. Durdurma kriteri genellikle belirli bir sayıda iterasyon veya belirli bir uyum seviyesi olabilir.

Bağışıklık Ağı Algoritması, genetik algoritmalara benzer bir şekilde çalışır, ancak bağışıklık sisteminin biyolojik süreçlerinden ilham alır. Bu, onu benzersiz ve ilginç kılar ve çeşitli uygulamalar için yararlı kılar.

 

# Gerekli kütüphaneleri import ediyoruz.
import numpy as np
import matplotlib.pyplot as plt

# Optimizasyonu yapmak istediğimiz hedef fonksiyonunu tanımlıyoruz.
def objective_function(x):
    return x**2  # Bu örnekte kare fonksiyonunu optimize etmeye çalışıyoruz.

# Populasyon parametrelerini belirleyelim.
population_size = 100  # Populasyon boyutu
lower_bound = -10  # Rastgele seçim için alt sınır
upper_bound = 10  # Rastgele seçim için üst sınır

# Rastgele bir başlangıç populasyonu oluşturuyoruz.
population = np.random.uniform(low=lower_bound, high=upper_bound, size=population_size)

# Her bir antikorun uygunluğunu hesaplıyoruz.
fitness = objective_function(population)

# Algoritmanın çalıştırılacağı iterasyon sayısını belirleyelim.
num_iterations = 100

# Ana döngüyü başlatıyoruz.
for i in range(num_iterations):
    # En uygun antikorları seçiyoruz.
    best_indices = np.argpartition(fitness, population_size//2)[:population_size//2]
    best_antibodies = population[best_indices]
    
    # Seçtiğimiz en iyi antikorları çoğaltıyoruz.
    clones = np.repeat(best_antibodies, 2)
    
    # Çoğalttığımız antikorları mutate ediyoruz.
    mutations = np.random.normal(loc=0.0, scale=0.1, size=len(clones))
    clones += mutations
    
    # Yeni ve eski populasyonları birleştiriyoruz.
    population = np.concatenate((population, clones))
    
    # Yeni populasyonun uygunluk değerlerini hesaplıyoruz.
    fitness = objective_function(population)
    
    # En uygun antikorları seçiyoruz.
    best_indices = np.argpartition(fitness, population_size)[:population_size]
    population = population[best_indices]
    fitness = fitness[best_indices]
    
    # İterasyon sonuçlarını yazdırıyoruz.
    best_fitness = fitness[0]
    best_antibody = population[0]
    print(f"Iteration {i}: Best fitness = {best_fitness}, Best antibody = {best_antibody}")

Bu kod parçası, Bağışıklık Ağı Algoritması'nın temel bir uygulamasını sağlar. Her iterasyonda, en uygun antikorlar seçilir, çoğaltılır ve mutasyona uğratılır. Daha sonra, en uygun antikorları seçmek için yeni ve eski populasyonları birleştirir. Bu işlem, belirtilen iterasyon sayısı kadar tekrarlanır. Her iterasyonda, algoritma optimal çözüme bir adım daha yaklaşır. Sonunda, en iyi uygunluk değerine ve karşılık gelen antikora sahip oluruz. Bu değerler, her iterasyon sonunda yazdırılı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...