Genetik algoritmalar tam olarak nedir ve ne tür problemler için iyidir?


16

Bu sitedeki birkaç sorunun genetik algoritmalardan bahsettiğini fark ettim ve bunlar hakkında gerçekten fazla bir şey bilmediğimi fark ettim.

Daha önce bu terimi duymuştum, ama şimdiye kadar kullandığım bir şey değil, bu yüzden nasıl çalıştıkları ve ne için iyi oldukları hakkında pek bir fikrim yok. Tek bildiğim, bir tür evrimi ve rastgele değişen değerleri içerdikleri.

Tercihen temel ilkeleri gösteren bir tür pratik örnek içeren kısa bir açıklama yapabilir misiniz?

Yanıtlar:


11

Evrimsel algoritmalar, Darwin'in doğal seleksiyon prensibine dayanan bir optimizasyon algoritmaları ailesidir . Doğal seleksiyonun bir parçası olarak, verilen bir ortamda hayatta kalma ve üreme için yarışan bir birey nüfusu vardır. Her bireyin bu hedeflere ulaşma yeteneği, çocuk sahibi olma şanslarını, diğer bir deyişle genlerini genetik nedenlerle bunları gerçekleştirmede daha iyi, daha iyi yapma şansını artıracak gelecek nesillere aktarma şanslarını belirler. iki hedef.

Nesiller üzerindeki bu sürekli iyileştirme ilkesi, bir soruna çözümlerin optimize edilmesi için evrimsel algoritmalar tarafından alınır. Olarak ilk nesil , farklı oluşan bir popülasyon kişiler rastgele ya da diğer yöntemlerle elde edilmektedir. Birey, soruna bir çözümdür, az ya da çok iyidir: bireyin problemle ilgili niteliği, çözümün çözülecek probleme yeterliliğini yansıtan uygunluk olarak adlandırılır . Bireyin zindeliği ne kadar yüksek olursa, genotipinin bir kısmını veya tamamını bir sonraki neslin bireylerine geçirme olasılığı o kadar yüksektir.

Birey, ** bit vektörü ( genetik algoritmalar ) veya gerçek bir vektör (evrim stratejileri) gibi herhangi bir şekle sahip olabilen bir genotip olarak kodlanır . Her genotip, bireyi değerlendirirken, yani uygunluğu hesaplandığında bir fenotipe dönüştürülür . Bazı durumlarda, fenotip genotip ile aynıdır: buna doğrudan kodlama denir . Aksi takdirde, kodlamaya dolaylı denir. Örneğin, uzunluğu, yüksekliği ve genişliği ile tanımlanan dikdörtgen bir paralel borunun boyutunu optimize etmek istediğinizi varsayalım. Örneği basitleştirmek için, bu üç miktarın 0 ile 15 arasında bir tamsayı olduğunu varsayalım. Her birini 4 bitlik bir ikili sayı kullanarak tanımlayabiliriz. Potansiyel bir çözümün bir örneği, 0001 0111 01010 genotipine olabilir. Karşılık gelen fenotip, uzunluk 1, yükseklik 7 ve genişlik 10'un paralel bir kanalıdır.

Eskiden yeni nesile geçiş sırasında amacı bireyleri manipüle etmek olan varyasyon operatörleri olarak adlandırılır . İki farklı varyasyon operatörü türü vardır:

  • mutasyon operatörleri , genetik mutasyonlar gibi, aynı kişide varyasyon sokmak için kullanılır;
  • geçit operatörleri kullanılır, ıslah genetik çaprazlanmaya, en az iki farklı genotipleri geçmeye.

Evrimsel algoritmalar, yöneylem araştırması, robotik, biyoloji, nüans veya kriptografi gibi çeşitli alanlarda kendini kanıtlamıştır. Buna ek olarak, aynı anda birden çok hedefi optimize edebilir ve optimize etmek için matematiksel modelde herhangi bir özellik varsaymadıkları için kara kutular olarak kullanılabilirler. Tek gerçek sınırlamaları hesaplama karmaşıklığıdır.

resim açıklamasını buraya girin


Buraya cevap verdiğiniz için teşekkürler! Kişisel olarak bunun AI SE için ideal bir soru olduğunu düşünmeme rağmen, temel ve "yüksek seviye" olduğundan, OP ve okuyucuları konu hakkında daha gelişmiş sorular için Çapraz Onaylanmış'a yönlendirmekten çekinme, bu yığın için uygun .
DukeZhou

8

Genetik algoritma, bir sorun için rastgele bir dizi deneme çözümü üreten bir algoritmadır. Bu denenmiş çözümlere "nüfus" denir.

Daha sonra, belirli bir uygunluk işlevini kullanarak bu çözümlerin sorunu ne kadar iyi çözdüğünü görmeye çalışır . En iyi zindeliğe sahip denenmiş çözümler değerine yeni bir popülasyon oluşturmak için kullanılır. Bu, denenmiş çözeltilerde (mutasyon) küçük değişiklikler yaparak veya mevcut denenmiş çözeltileri (çaprazlama) birleştirerek yapılabilir.

Fikir, zamanla, sorunu çözmek için yeterli kondisyon değerine sahip bir girişim çözümü ortaya çıkmasıdır .

Bunun ilhamı evrim teorisinden geldi; en uygun çözümler hayatta kalır ve ürer.

örnek 1

Bir odun parçasından birkaç şekli kesmenin en etkili yolunu aradığınızı varsayalım. Mümkün olduğunca az odun israf etmek istersiniz.

Yaptığınız çözüm, bu şekillerin ahşabınızda rastgele düzenlenmesi olacaktır. Uygunluk , bu düzenlemeyi izleyen şekiller kesildikten sonra ne kadar az odun bırakılacağına göre belirlenecektir.
Ne kadar az ahşap kalırsa, çözüm o kadar iyi olur.

ÖRNEK 2

Varsayalım ki birkaç noktadan geçen bir polinom bulmaya çalışıyorsunuz. Yaptığınız çözüm rasgele polinomlar olacaktır.
Belirlemek için uygunluğu bu polinomların, onlar verilen puan sığacak kadar iyi belirler. (Bu özel durumda, polinomun noktalara ne kadar iyi uyduğunu belirlemek için muhtemelen en küçük kareler yöntemini kullanırsınız). Bir dizi denemede, noktalara daha iyi uyan bir polinom olana kadar noktalara daha iyi uyan polinomlar elde edersiniz.


Yine de çözümle kastedilen nedir ? Bana belirli bir problemle pratik bir örnek verebilir misiniz, böylece neye benzeyebileceğini daha iyi hayal edebiliyorum?
Disenchanted Lurker

@InquisitiveLurker Örnekler ekledim. Yeterince açık olmadıklarını bana bildirin; Cevabımı güncellemekten memnuniyet duyarım.
SL Barth - Monica'yı

6

Bu cevap, diğer cevaplara ek olarak sağlamaya çalışacağım bir kişinin nasıl kullanılabileceğine dair pratik bir örnek ister. Genetik bir algoritmanın ne olduğunu açıklamak için çok iyi bir iş gibi görünüyorlar. Yani, bu bir örnek verecek.

Diyelim ki, bazı girdilerden bazı çıktılar verecek olan sinir ağınız var (bunların tek uygulaması olmasa da). Genetik bir algoritma bunlardan bir popülasyon yaratabilir ve hangi çıktının en iyi olduğunu görerek nüfusun üyelerini yetiştirebilir ve öldürür. Sonunda, bu sinir ağını yeterince karmaşıksa optimize etmelidir.

İşte kötü kodlanmış olmasına rağmen anlamanıza yardımcı olabilecek bir gösteri. http://khrabanas.github.io/projects/evo/evo.html Gelişen düğmeye basın ve hedeflerle uğraşın.

Nüfusun hangisinin hayatta kalacağına karar vermek, mutasyon yapmak ve karar vermek için basit bir genetik algoritma kullanır. Giriş değişkenlerinin nasıl ayarlandığına bağlı olarak, ağ onlara yakın bir seviyeye ulaşabilir.Bu şekilde, nüfus muhtemelen sonunda çıktıları hedeflere benzeyen homojen bir grup haline gelecektir.

Genetik algoritma, RGB'yi alarak bir çıktı rengi elde edecek bir "sinir ağı" yaratmaya çalışıyor. İlk olarak rastgele bir nüfus oluşturur. Daha sonra popülasyondan 3 rastgele üye alarak, en düşük zindeliğe sahip olanı seçerek ve popülasyondan çıkararak. Uygunluk, üst golün karesi + alt golün farkıdır. Daha sonra kalan iki kişiyi bir araya getirir ve çocuğu nüfusun ölü üyesi ile aynı yere ekler. Çiftleşme meydana geldiğinde, bir mutasyon olma ihtimali vardır. Bu mutasyon değerlerden birini rastgele değiştirecektir.

Bir yan not olarak, nasıl kurulduğundan dolayı, birçok durumda tamamen doğru olması imkansızdır, ancak göreceli yakınlığa ulaşacaktır.


6

Burada genetik algoritmaların ne olduğunu açıklayan ve örnek uygulamalar veren bir dizi iyi cevap var. Ne için iyi oldukları hakkında genel amaçlı tavsiyeler ekliyorum, aynı zamanda bunları KULLANMAMANIZ gereken durumlar da. Tonum sert görünüyorsa, bunun nedeni Uygun Değil bölümündeki vakaların herhangi birinde GA'ların kullanılması, makalenizin herhangi bir üst düzey dergiden anında reddedilmesine neden olacaktır .

İlk olarak, sorununuz bir optimizasyon problemi OLMALIDIR. Optimize etmeye çalıştığınız bir "fitness fonksiyonu" tanımlamanız gerekir ve bunu ölçmek için bir yolunuz olmalıdır.

İyi:

  • Geçiş işlevlerinin tanımlanması kolay ve doğaldır : Belirli veri türleriyle uğraşırken, çaprazlama / mutasyon işlevlerinin tanımlanması kolay olabilir. Örneğin, dizeler (örneğin, DNA veya gen dizileri), yeni bir dizge elde etmek için iki aday dizeyi ekleyerek kolayca mutasyona uğrayabilir (bu nedenle doğa genetik algoritmalar kullanır!). Ağaçlar (filogenetik ağaçlar veya ayrıştırılmış ağaçlar gibi) bir ağacın bir dalını diğerinden bir dal ile değiştirerek de eklenebilir. Şekiller (uçak kanatları veya tekne şekilleri gibi), şekle bir ızgara çizerek ve bir çocuk elde etmek için ebeveynlerden farklı ızgara bölümlerini birleştirerek kolayca mutasyona uğrayabilir. Genellikle bu, probleminizin farklı parçalardan oluştuğu ve parçaları farklı çözümlerden bir araya getirmenin geçerli bir aday çözüm olduğu anlamına gelir.
    • Bu, sorununuz koordinatların özel bir anlamı olmayan bir vektör uzayında tanımlanmışsa, GA'ların iyi bir seçim olmadığı anlamına gelir. Sorununuzu GA olarak formüle etmek zorsa buna değmez.
  • Kara Kutu değerlendirmesi : Bir aday için kondisyon fonksiyonunuz bilgisayar dışında değerlendirilirse, GA'lar iyi bir fikirdir. Örneğin, bir hava tünelinde bir kanat şeklini test ediyorsanız, genetik algoritmalar denemek için iyi aday şekiller oluşturmanıza yardımcı olacaktır.
    • İstisna: Simülasyonlar . Kondisyon fonksiyonunuz bir nozul tasarımının ne kadar iyi performans gösterdiğini ölçüyorsa ve her nozul şekli için sıvı dinamiklerini simüle etmeyi gerektiriyorsa, GA'lar sizin için iyi çalışabilir. Zaman içinde fiziksel bir sistemi simüle ediyorsanız ve tasarımınızın çalışma boyunca ne kadar iyi performans gösterdiğiyle ilgileniyorsanız da çalışabilirler. hareket modellerinin modellenmesi . Bununla birlikte, kısıtlama olarak kısmi diferansiyel denklemleri kullanan yöntemler literatürde geliştirilmektedir. PDE optimizasyonu kısıtladı , bu nedenle bu gelecekte değişebilir.

Uygun değil:

  • İşleviniz için bir degrade hesaplayabilirsiniz : İşlevinizin degradesine erişiminiz varsa, genel olarak GA'lardan çok daha verimli olan degrade inişi yapabilirsiniz. Gradyan kökenli lokal minima (GA'lar gibi) ile ilgili sorunlar olabilir, ancak bunu hafifletmek için birçok yöntem araştırılmıştır.
  • Fitness işlevini kapalı biçimde biliyorsunuz : O zaman, muhtemelen degradeyi hesaplayabilirsiniz. Birçok dilde otomatik farklılaştırmayı destekleyen kütüphaneler vardır , bu yüzden manuel olarak yapmanız gerekmez. İşleviniz farklı değilse, alt gradyan alçalmasını kullanabilirsiniz .
  • Optimizasyon probleminiz doğrusal bir program veya karesel bir program gibi bilinen bir formdadır : GA'lar (ve genel olarak kara kutu optimizasyon yöntemleri) değerlendirmeleri gereken aday sayısı açısından çok verimsizdir ve mümkünse en iyi şekilde önlenir.
  • Çözüm alanınız küçük : Arama alanınızı verimli bir şekilde ızgaralayabilirseniz, en iyi çözümü bulduğunuzu garanti edebilir ve daha fazla araştırmanız gereken bir bölge olup olmadığını görmek için çözüm alanının kontur çizimlerini yapabilirsiniz.

Son olarak, bir GA düşünüyorsanız, Evrimsel Stratejilerdeki daha yeni çalışmaları düşünün. CMA- ES'ye karşı önyargılıyım , bence geleneksel GA'ların yapamayacağı bir şekilde fitness manzarasındaki bir gradyan kavramını yakalayan iyi bir basit algoritma.


CMA-ES, çözümlerin gerçek değerli vektörler olarak temsil edilebildiği sorunlara iyi gelir.
NietzscheanAI

5

Başka bir cevapta da görüldüğü gibi, Genetik Algoritmalar (GA) uygulamak için tek ihtiyacınız, probleminize çaprazlama ve mutasyona tabi bir formda potansiyel bir çözüm sunmaktır. İdeal olarak, fitness fonksiyonu, bir 'Haystack'teki İğne' olmaktan ziyade, bir çözümün kalitesi hakkında bir tür pürüzsüz geri bildirim sağlayacaktır.

Genetik Algoritmaların (ve genel olarak Meta-sezgilerin ) iyi olduğu bazı problemler şunlardır:

  • NP-complete - Soruna olası çözümlerin sayısı üsteldir, ancak bir çözümün uygunluğunu kontrol etmek nispeten ucuzdur (teknik olarak, girdi boyutunda zaman polinomuyla).
  • Kara kutu - Çözülecek sorunun özellikle bilgilendirilmiş bir modeline sahip olmasanız bile, GA'lar oldukça iyi çalışır. Bu, bu yaklaşımların aynı zamanda problemlerin çözümünde 'hızlı prototipleme' yaklaşımı olarak da yararlı olduğu anlamına gelir.

Bununla birlikte, amaç için yaygın olarak kullanılmalarına rağmen, GA'ların aslında işlev optimize edici olmadığını unutmayın - GA mekanizmaları, uzak bir yüksek kaliteli çözüm bulma umuduyla arama alanının 'dış' bölgelerini keşfetme eğilimi değil, daha fazlasını kümeleme 'fitness manzara' kolayca ulaşılabilir zirveleri.

GA'ların uygulanabilirliği hakkında daha fazla ayrıntı ünlü bir erken makalede "Genetik Algoritma için bir problemi zorlaştıran nedir?"

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.