Genetik algoritma, iyi genleri daha fazla yayılarak ödüllendirmek için bir yol gerektirir. Kötü genlerden iyi genler söylemenin bir yolu yoksa, genetik bir algoritma kullanamazsınız.
Genetik bir algoritmanın çalışması için, daha uygun olmayan çözümlerin yerine daha uygun çözümlerin çoğaltılmasına izin vermelisiniz. Aksi takdirde, sadece rastgele çözümler deniyor olacaksınız.
İşte kendi deneyimlerime göre tipik bir örnek: İlk sesli arama sistemlerinden birini geliştirerek, konuşulan bir adı aynı adı taşıyan bir kopyayla eşleştirmek için bir algoritma bulmakta zorlandık. 25 kişiden bir isim seçerken% 95 doğruluk oranının yeterli olduğu söylendi. Her biri 10 kez 25 isim söyleyen bir grup insanımız vardı.
İlk olarak, konuşulan kelimenin uzunluğunu ve normalize edilmiş birkaç parçasındaki frekans enerjisini ölçen bir girdi sistemi geliştirdik. Ardından, bu parametrelerdeki eşleşmelere ağırlık atanan ve bu parametreler yoluyla iki parametre setini karşılaştıran bir algoritma geliştirdik.
Şimdi son bir adımımız vardı - bu ağırlıkların değeri ne olmalı?
1.000 rasgele ağırlık seti oluşturduk ve onları korpusa karşı test ettik. En kötüyü yapan 500'ü attık. Kalan 500 için, her birini çoğalttık ve bunlardan birinde, ağırlıklardan birini rastgele kaldırdık veya indirdik.
Bu işlemi bir bilgisayarda yaklaşık% 95 doğruluk ölçütünü karşılayan bir dizi ağırlığa sahip olana kadar yaklaşık iki hafta boyunca tekrarladık. Daha sonra bunu, toplulukta olmayan veriler üzerinde test ettik. Yaklaşık% 92 oranında doğruydu. Bu nedenle, korpusta% 98 doğruluk elde etmek için daha uzun sürdük ve bu ağırlık kümesi, korpusta olmayan verilerde% 95 doğruluk üretti.
Yani, genetik algoritma çalıştırmak için bir fitness fonksiyonuna sahip olmanız gerekir. Kötü genlerden iyi genleri anlatmanın bir yolu yoksa, iyi genlerin çoğaldığından ve kötü genlerin olmadığından nasıl emin olabilirsiniz?