Evrimsel Stratejilere Giriş: Optimizasyon problemlerine başka bir bakış açısı

Leifeng.com AI Teknolojisi Yorumu: Bu, otoro.net'in Evrim Stratejilerindeki birçok kavramı popüler ve görsel bir şekilde açıklayan teknik blog serilerinden biridir. Leifeng.com AI Technology Review'in tam metni aşağıdaki gibi derlenmiştir.

Bu makale size evrimsel stratejilerin bazı görsel vakalarla nasıl çalıştığını açıklayacaktır. Giriş niteliğindeki okuyucuların bu makaleyi anlamasını kolaylaştırmak için, ilgili formülleri basitleştireceğim. Aynı zamanda, daha matematiksel ayrıntıları anlamak isteyen okuyucular için ilgili matematiksel formüllerin orijinal makalelerini de sağlıyorum. Bu dizinin ilk makalesi Bu dizide, bu algoritmaları MNIST, OpenAI Gym, Roboschool, PyBullet gibi görevlere nasıl uygulayacağınızı göstereceğim.

Giriş

Sinir ağı modeli çok esnektir ve güçlü veri gösterimi yeteneklerine sahiptir. Uygun model parametreleri bulabilirsek, birçok zor sorunu çözmek için sinir ağlarını kullanabiliriz. Derin öğrenmenin başarısı, büyük ölçüde, amaç fonksiyonunun gradyanını verimli bir şekilde hesaplayabilen geri yayılım algoritmalarının kullanılmasından kaynaklanmaktadır ve bu amaç fonksiyonu, tüm model parametrelerini içerir. Bu gradyan tabanlı hesaplamalar sayesinde, parametre uzayında sinir ağının görevinin tamamlanmasına yardımcı olan çözümleri verimli bir şekilde bulabiliriz.

Bununla birlikte, geri yayılım algoritmasının uygulamadığı hala birçok sorun vardır. Örneğin, pekiştirmeli öğrenme (pekiştirmeli öğrenme) probleminde, çevredeki belirli görevleri tamamlamak için bir dizi eylem kararı almak için bir sinir ağını da eğitebiliriz. Bununla birlikte, özellikle gelecekte birçok zaman adımında ödüllerin alınacağı durumlarda, mevcut eğitim kişisi (aracı) tarafından gerçekleştirilen operasyonlara dayalı olarak gelecekte eğitime katılan kişiye verilen ödül sinyalinin gradyanını tahmin etmek çok karmaşıktır. Dahası, doğru bir eğimi hesaplayabilsek bile, pek çok takviye öğrenme görevinde yaygın olan bir fenomen olan eğitim süreci sırasında yerel bir optimuma düşebiliriz.

Yerel optimada sıkışıp

Pekiştirmeli öğrenme araştırmasında, bu ilişkilendirme atama probleminin çalışılmasına adanmış bir alan vardır ve son yıllarda büyük ilerleme kaydedilmiştir. Bununla birlikte, ödül sinyali çok seyrek olduğunda, atıf ataması hala çok zordur. Gerçek dünyada, ödüller gerçekten seyrek ve gürültülü olabilir. Bazen nasıl yapıldığını bilmeden sadece basit bir ödül alırız. Yıl sonu ikramiyesi için bir çek gibi, miktarı da işverenimize bağlıdır. Tam olarak neden bu kadar düşük olduğunu anlamak zor olabilir . Bu sorunlar için, gelecekte stratejimizin gürültülü ve muhtemelen anlamsız bir gradyan tahminine güvenmek yerine, tüm gradyan bilgilerini doğrudan görmezden gelebilir ve kara kutu optimizasyon tekniklerini kullanmaya çalışabiliriz. Örneğin, genetik algoritmalar veya evrim stratejileri.

OpenAI, "Güçlendirmeli Öğrenmeye Ölçeklenebilir Bir Alternatif Olarak Evrim Stratejileri" başlıklı bir blog yazısı yayınladı (https://blog.openai.com/evolution-strategies/). Bu makalede, evrimsel stratejilerin verileri kullanmada pekiştirmeli öğrenmeden daha az verimli olmasına rağmen, yine de birçok avantajı olduğuna inanıyorlar. Evrim stratejisi, değişim stratejisinin tahminini daha verimli hale getiren gradyan hesaplamasını terk eder. Aynı zamanda, evrim stratejisinin hesaplama görevleri, paralel hesaplama için binlerce makineden oluşan dağıtılmış bir ortamda kolayca dağıtılabilir. Aslında, OpenAI bu algoritmayı başından beri birçok kez çalıştırdıktan sonra, evrimsel strateji algoritması kullanılarak keşfedilen stratejilerin, takviye öğrenimi kullanılarak keşfedilen stratejilerden daha çeşitli olduğunu keşfettiler!

Burada, bir sinir ağı mimarisi tasarlamak gibi bir makine öğrenimi modelini belirleme problemi için bile gradyanı doğrudan hesaplayamayacağımızı belirtmek isterim. Çözüm uzayında görev gereksinimlerini karşılayabilecek model parametrelerini aramak için pekiştirmeli öğrenme, evrimsel stratejiler ve genetik algoritmalar gibi yöntemler kullanılabilse de, bu makalede sadece bu algoritmaları önceden tanımlanmış bir modele uygulamaya odaklanacağım. Söz konusu arama parametreleri.

Evrim stratejisi nedir?

İki boyutlu Rastrigin işlevi, birçok yerel optimaya sahiptir.

Aşağıdaki şekil, dönüştürülmüş iki boyutlu Schaffer fonksiyonunun ve Rastrigin fonksiyonunun üstten görünüşünü gösterir.Bu iki fonksiyon genellikle sürekli kara kutu optimizasyon algoritmalarını test etmek için kullanılır. Resimde, daha parlak alan, F (x, y) 'nin daha büyük bir fonksiyon değerine sahip olduğu anlamına gelir. Gördüğünüz gibi, bu işlevin birçok yerel optimumları vardır. Yapmamız gereken, bir dizi model parametresi (x, y) bulmaktır, böylece F (x, y), global maksimuma olabildiğince yakın olur.

İnsanlar evrim stratejisinin tanımının farklı versiyonlarına sahip olsalar da. Burada, bir problemi değerlendirmek için kullanıcılara bir dizi aday çözüm sunan bir algoritma olarak tanımlıyoruz. Buradaki değerlendirme yöntemi, bir çözüm verilen nesnel bir işleve dayanır ve tek bir uygunluk döndürür. Mevcut çözümün uygunluk sonuçlarına göre, evrim stratejisi daha sonra yeni nesil aday çözümleri üretecek ve yeni çözümün daha iyi sonuçlar alma olasılığı daha yüksek olacaktır. Önerilen en iyi çözüm kullanıcıyı tatmin ettiğinde, yinelemeli süreç sonlandırılacaktır.

Aşağıdaki gibi sözde kod aracılığıyla EvolutionStrategy adlı bir evrim stratejisi algoritması uygulayabiliriz:

çözücü = EvolutionStrategy

True iken:

# ES'den bize bir dizi aday çözüm çözümü vermesini isteyin = çözücü.ask

# fitness sonuçlarını tutmak için bir dizi oluşturun. fitness_list = np.zeros (solver.popsize)

# Verilen her bir çözümün uygunluğunu değerlendirin.

aralıktaki i için (çözücü.popsize):

fitness_list = değerlendirmek (çözümler )

# fitness sonuçlarının listesini ES solver.tell'e geri verin (fitness_list)

# en iyi parametreyi, ES best_solution'dan uygunluk, best_fitness = solver.result

best_fitness ise > MY_REQUIRED_FITNESS: ara

Nüfusun boyutunu genellikle neslin her yinelemesinde sabit olarak ayarlasak da, aslında bu gerekli olmamalıdır. Evrim stratejisi, gereksinimlerimize göre karşılık gelen sayıda aday çözüm üretebilir. Bunun nedeni, evrim stratejisinin verdiği çözümün bir olasılık dağılımından örneklenmesidir ve bu dağıtım işlevlerinin parametreleri, her yinelemede evrim stratejisi tarafından geliştirilecektir. Güncellenmiş. Bu örnekleme sürecini basit bir evrim stratejisi ile açıklayacağım.

Basit evrim stratejisi

Hayal edebileceğimiz en basit evrim stratejisi, ortalama ve standart sapma ile normal bir dağılımdan bir dizi çözümü doğrudan örneklemek olabilir. İki boyutlu problemimizde, = (x, y) ve = (x, y). Başlangıçta, başlangıç noktasında ayarlanır. Uyarlama sonucu değerlendirildikten sonra, bu yinelemede popülasyonda en uygun çözüm olarak belirledik ve yeni nesil çözümü elde etmek için bu yeni ortalamanın etrafında örnekleme yaptık. Aşağıdaki şekil, bu basit evrim stratejisinin daha önce bahsedilen iki problemde 20 yinelemeden sonraki performansını göstermektedir:

Yukarıdaki görselleştirme örneğinde, yeşil nokta, her neslin dağıtım fonksiyonunun ortalama değerini temsil eder, mavi nokta örneklenen çözümdür ve kırmızı nokta, algoritmamız tarafından bulunan en uygun çözümdür.

Bu basit algoritma genellikle yalnızca basit problemler için uygundur. Bu algoritmanın kendisi açgözlü bir algoritma olduğu için, mevcut optimal çözüm dışındaki tüm çözümleri atacaktır. Bu nedenle, daha karmaşık problemlerde, bu algoritma yerel bir optimuma düşmeye daha yatkın olabilir. (Karmaşık problemlerin çözüm alanı daha büyük olduğu için, küresel optimal çözüm, bu basit algoritma tarafından atılan alanda gizlenebilir) Eğer bir sonraki yineleme, yalnızca daha fazla çözümü temsil eden olasılık dağılımından örneklenebilirse, Mevcut neslin optimal çözümüne yakın örnekleme yapmak daha avantajlı olabilir.

Basit genetik algoritma

Genetik algoritma, en klasik kara kutu optimizasyon algoritmalarından biridir. Genetik algoritmalar için, çeşitli karmaşıklık derecelerinin birçok çeşidi vardır Burada, herkes için yalnızca en basit sürümü tanıtacağım.

Genetik algoritma fikri çok basit: mevcut neslin en iyi çözümlerinin yalnızca ilk% 10'unu saklayın ve popülasyondaki diğer çözümlerin ortadan kaldırılmasına izin verin (doğada en uygun olanın hayatta kalmasına benzer şekilde). Bir sonraki nesilde, önceki neslin hayatta kalan iki çözümünü baba ve anne olarak rastgele seçiyor ve yeni bir çözüm elde etmek için parametrelerini yeniden düzenliyoruz. Bu zayıf yeniden yapılanma süreci, önceki neslin ebeveynlerinden hangisinin mevcut konumun parametrelerini miras alacağını belirlemek için yazı tura atışı (randomizasyon) kullanır. Kullandığımız iki basit iki boyutlu test fonksiyonunda, yeni çözümümüz x veya y'yi ebeveynlerden birinden yüzde on ila 50 olasılıkla miras alabilir. Bu çapraz rekombinasyon süreci bittikten sonra, yeni çözüme sabit bir standart sapmaya sahip Gauss gürültüsü de eklenecektir. (Normal bir öğe olarak)

Yukarıdaki resim size bu basit genetik algoritmanın nasıl çalıştığını göstermektedir. Yeşil noktalar, kahverengi insanların önceki nesli tarafından tutulan seçkinleri (çağdaş çapraz rekombinasyon için kullanılan ebeveynleri) temsil eder, mavi noktalar aday çözümler üretmek için kullanılan çocukları temsil eder ve kırmızı noktalar en uygun çözümü temsil eder.

Genetik algoritma, çoklu aday çözümlerle (çapraz rekombinasyon) iletişim halinde kalarak üretilen çözümlerin çeşitliliğini garanti eder. Bununla birlikte, gerçekte, popülasyonda hayatta kalan "seçkinlerin" çoğu, yerel optimum düzeye yavaş yavaş yakınlaşma eğiliminde olacaktır. Ek olarak, genetik algoritmaların CoSyNe, ESP ve NEAT gibi birçok karmaşık varyantı vardır ve popülasyondaki benzer çözümleri farklı tür kümeleri halinde kümeleyerek üretilen çözümlerin çeşitliliğini sağlamayı umarlar.

Kovaryans Matrisi Uyarlanabilir Evrim Stratejisi (CMA-ES)

Basit evrim stratejisi ve genetik algoritmanın ortak bir dezavantajı vardır, yani gürültüümüzün standart sapma parametresi sabittir. Bazen daha geniş bir çözüm alanında daha iyi çözümler keşfetmek isteriz, bu nedenle arama alanımızın standart sapmasını artırmamız gerekir. Ek olarak, bazen en uygun çözümün çevresini araştırdığımızdan oldukça eminiz, bu nedenle yalnızca mevcut çözüme ince ayar yapmak istiyoruz. Esas olarak, arama sürecimizin aşağıdaki performansa sahip olmasını umuyoruz:

Ne harika! Yukarıdaki şekilde gösterilen arama süreci Kovaryans-Matris Adaptasyon Evrim Stratejisi (CMA-ES) ile elde edilir. CMA-ES algoritması, her bir yinelemenin sonucunu alabilir ve yeni nesil aramada arama alanını uyarlamalı olarak artırabilir veya azaltabilir. Yalnızca ve parametrelerini uyarlamalı olarak ayarlamakla kalmayacak, aynı zamanda tüm parametre uzayının kovaryans matrisini de hesaplayacaktır. Her yinelemede, CMA-ES çok değişkenli normal dağılımın parametrelerini sağlayacak ve bu çok değişkenli normal dağılımdan yeni çözümler örnekleyecektir. Peki, bu algoritma arama alanını artırıp artırmayacağını nasıl biliyor?

Algoritmanın nasıl uyarlanabilir olduğunu tartışmadan önce, ilk olarak kovaryans matrisinin nasıl tahmin edileceğini gözden geçireceğim. Bu, CMA-ES algoritması tarafından kullanılan uyarlamalı yöntemi anlamamız için çok önemlidir. Tüm örneklememizden elde edilen N boyutunda bir kovaryans matrisinin parametrelerini tahmin etmek istiyorsak, kovaryans matrisi C'nin maksimum olasılık tahminini hesaplamak için aşağıda listelenen formülü kullanabiliriz. Önce popülasyonumuzdaki xi ve yi'nin ortalamasını hesaplıyoruz:

2 * 2 kovaryans matrisindeki öğeler şu şekilde ifade edilebilir:

Elbette, x ve y'nin tahmini ortalama değerleri ve bu şekilde elde edilen kovaryans terimleri x, y ve xy, yalnızca bizim için özellikle yararlı olmayan gerçek orijinal örnekleme kovaryans matrisinin parametre tahminleridir.

CMA-ES, optimizasyon problemlerine uygulanabilmesi için yukarıdaki kovaryans hesaplama formülünü akıllıca değiştirdi. Bunu nasıl yaptığını açıklayacağım. Öncelikle asıl görevi mevcut nesil Nbest'in en iyi N çözümlerini bulmaktır. Kolaylık sağlamak için Nbest'i en iyi% 25 çözüm olarak belirledik. Elde edilen çözümleri adaptasyon durumuna göre sıraladıktan sonra, gelecek neslin (g + 1) ortalama değerini (g + 1) sadece en iyi çağdaş (g) çözümlerin ilk% 25'i üzerinden hesaplayacağız. Hesaplama sürecimiz aşağıdaki formülle ifade edilebilir:

Ardından, gelecek neslin kovaryans matrisi C'yi (g + 1) tahmin etmek için en iyi çözümlerin yalnızca ilk% 25'ini kullanıyoruz. Burada akıllıca bir hesaplama yöntemi düşündük: yeni güncellediğimiz (g + 1) yerine çağdaş ortalama g'yi kullanın. Özel hesaplama formülü aşağıdaki gibidir:

Gelecek neslin (g + 1) x, y, x, y, xy ve diğer parametrelerini elde ettikten sonra, şimdi gelecek neslin aday çözümlerini örnekleyebiliriz.

Bu resim serisi, bu algoritmanın çağdaş (g) hesaplama sonuçlarına dayanarak yeni nesil (g + 1) çözümü nasıl inşa ettiğini canlı bir şekilde açıklıyor:

  • G'ncü nesildeki her bir çözümün uygunluğunu hesaplayın

  • Şekildeki mor noktalarla gösterildiği gibi, g-th neslinin en iyi% 25'lik çözümlerini seçin

  • Yeni nesil kovaryans matrisi C'yi (g + 1) hesaplamak için yalnızca bu en iyi% 25'lik çözümleri ve güncel ortalama g'yi (şekilde yeşil noktalarla gösterilen) kullanın

  • Yeni bir aday çözüm kümesini örneklemek için güncellenmiş ortalama (g + 1) ve kovaryans matrisi C (g + 1) ile elde edilen dağılım fonksiyonunu kullanın.

  • Aşağıda, önünüzdeki iki soruda tüm arama sürecini bir kez daha görselleştirelim:

    CMA-ES algoritması, ortalamasını ve kovaryans matrisini ayarlamak için en uygun çözümün bilgilerini kullanabildiğinden, optimum çözüm hala çok uzaktayken daha büyük bir alan arayabilir ve en uygun çözüm daha yakın olduğunda daha küçük bir alan arayabilir. Keşif için alan arayın. Anlamayı kolaylaştırmak için, CMA-ES'ye basit bir 2 boyutlu problem aracılığıyla girişim oldukça basitleştirilmiştir. Daha fazla ayrıntı öğrenmek istiyorsanız, CMA-ES yazarı tarafından herkes için hazırlanan CMA-ES Öğreticisini (https://arxiv.org/abs/1604.00772) okumanızı öneririm.

    CMA-ES algoritması, gradyan hesaplamaları gerektirmeyen en popüler optimizasyon algoritmalarından biridir ve birçok araştırmacı ve pratik mühendis tarafından seçilmiştir. Gerçek tek eksiği: Modelde çok fazla parametre olduğunda, algoritmanın performansı nedir? Hesaplama yoluyla, kovaryansı hesaplamanın zaman karmaşıklığının O (N2) olduğunu bulduk, ancak insanlar son zamanlarda zaman karmaşıklığını yaklaşık O (N) 'ye düşürdüler. Benim için, arama alanındaki parametreler 1000'den az olduğunda, CMA-ES algoritmasını seçme eğilimindeyim. Yeterince sabırlıysam, algoritmayı 10.000 parametreye kadar bir arama alanında kullanmanın da aynı derecede uygun olduğunu görüyorum.

    Doğal evrim stratejisi

    Yapay bir yaşam simülatörü oluşturduğunuzu ve bir gruptaki her bir karıncanın davranışını kontrol etmek için ondan bir sinir ağı çıkarmak istediğinizi varsayalım. Ve basit bir evrim stratejisi kullanırsak, bu optimizasyon yöntemi, karıncaların özelliklerinin ve davranışlarının, her bir karıncanın yararına olacak şekilde evrimleşmesini sağlayacaktır. Böylelikle nüfusumuz hayatlarını önemseyen bencil karıncalarla dolu olacaktır.

    Burada artık çevreye en çok uyum sağlayan karıncaların hayatta kalma kriterlerini kullanmıyoruz. Stratejimizi tüm popülasyondaki tüm bireylerin uygunluğunun toplamını bir metrik olarak kullanacak şekilde değiştirirsek ve ardından bu toplamı tüm popülasyonun rekreasyon endeksini maksimize edecek şekilde optimize edersek, sonuç ne olur? Haha, sonunda Marksist bir karınca ütopya yaratacaksın!

    Yukarıdaki bilgi algoritmaları için, insanlar hepsinin bir kusuru olduğunu fark ettiler: çözümlerin çoğunu atacaklar ve yalnızca en uygun çözümü koruyacaklar. Bununla birlikte, bu alt düzey çözümler genellikle, yeni nesil parametre tahminlerinin daha iyi hesaplanması için çok değerli olan "yapılmaması gereken" bilgileri içerir.

    Pekiştirmeli öğrenmeyi inceleyen pek çok araştırmacı REINFORCE ( adlı bu makaleye aşinadır. 1992'de yayınlanan bu makalede Williams, stratejik sinir ağı modelinde önerilen parametrelerin beklenen ödülünü tahmin etmek için bir yöntemi özetledi. Bu makalenin 6. Bölümünde yazar ayrıca takviye öğrenmenin evrimsel bir strateji olarak kullanılmasını önermiştir. Pekiştirmeli öğrenme ve evrim stratejisini birleştirmenin bu özel durumu, Parametre Keşfetme Politika Gradyanları (PEPG, 2009) ve Doğal Evrim Stratejileri (NES, 2014) bu iki makalede daha ayrıntılı tartışılmış ve genişletilmiştir.

    Bu hesaplama yönteminde, popülasyondaki iyi veya kötü tüm bireylerin bilgilerini kullanmayı umuyoruz. Bu, tüm popülasyonun gelecek nesilde daha iyi bir yönde gelişmesini sağlayabilecek gradyan sinyalini tahmin etmek için yapılır. Burada gradyanı tahmin etmemiz gerektiğinden, gradyanı güncellemek için derin öğrenmede yaygın olarak kullanılan standart stokastik gradyan iniş (SGD) yasasını da kullanabiliriz. Gerekirse, model parametrelerini çözmek için momentum stokastik gradyan inişini (Momentum SGD), kök ortalama kare yayılımını (RMSProp) ve uyarlanabilir momentum tahmin algoritmasını (Adam) bile kullanabiliriz.

    Buradaki fikrimiz, çıkarılan çözümün adaptasyon derecesinin beklenen değerini maksimize etmektir. İstenilen sonuç yeterince iyiyse, örneklenen popülasyondaki en iyi performans gösteren kişi daha da iyi olacaktır, bu nedenle beklentileri optimize etmek çok makul bir çözümdür. Örneklemenin maksimize edilmesiyle elde edilen çözümün beklenen adaptasyon derecesi, tüm popülasyonun adaptasyon derecesini maksimize edecek şekilde yaklaşık olarak tahmin edilebilir.

    Z'nin olasılık dağılımı fonksiyonu (z, ) 'den örneklenen çözüm vektörü olduğunu varsayarsak, F amaç fonksiyonunun beklenen değerini şu şekilde tanımlayabiliriz:

    Bunlar arasında , olasılık dağılımı fonksiyonunun parametresidir. Örneğin, normal bir dağılım ise, buna göre ve 'dur. Basit iki boyutlu problemimiz için her bir z iki boyutlu bir vektörün (x, y) bütünüdür.

    Natural Evolution Strategies (NES, 2014) makalesi, J () 'nin to'ye göre gradyanının nasıl hesaplandığını ayrıntılı olarak açıklamaktadır. J () gradyanını hesaplamak için REINFORCE algoritmasıyla aynı log-olabilirlik yöntemini kullanabiliriz. Spesifik formül aşağıdaki gibidir:

    N boyutunda bir popülasyonda, çözümü z1, z2 ... zn olarak belirtiriz ve gradyanı aşağıdaki toplamla tahmin edebiliriz:

    Gradyanı aldıktan sonra, öğrenme oranını temsil etmek için parametresini (örneğin 0.01) kullanabilir ve olasılık dağılımı fonksiyonunun parametresini optimize etmeye başlayabiliriz, böylece örneklediğimiz çözüm daha yüksek bir F hedef fonksiyonuna ulaşabilir. Fitness. Stokastik gradyan inişini (veya Adam algoritmasını) kullanarak, gelecek nesil parametreleri aşağıdaki gibi güncelleyebiliriz:

    Bundan sonra, bu güncellenmiş olasılık dağılımı işlevinden yeni bir aday çözüm kümesi örnekliyoruz. Tatmin edici bir çözüm bulana kadar yukarıdaki işlemleri yineleyeceğiz.

    REINFORCE'un altıncı bölümünde Williams gradyanı türetti

    Genel çözüm yönteminin formülü, (z, ) 'nin ayrışmadan sonraki çok değişkenli normal dağılımın özel bir durumu olduğunu düşündü (başka bir deyişle, parametrenin korelasyon katsayısı 0'dır). Bu özel durumda, , ve vektörüdür. Bu nedenle, çözümün her bir öğesi birim normal dağılımdan örneklenebilir:

    Her bir i çözümünün vektöründeki her bağımsız eleman için genel gradyan formülü

    Şu şekilde çıkarılabilir:

    Size daha net bir şekilde açıklamak için, parametre uzayında saymak için üst simge j'yi kullanıyorum ve toplam popülasyondan örneklenen bireyleri saymak için üst simge i'yi kullanıyoruz. İkisinin kafası karışmayacak. Bizim iki boyutlu problemimizde z1 = x, z2 = y, 1 = x, 2 = y, 1 = x, 2 = y.

    Yukarıdaki iki formül, gradyan yaklaştırma formülüne geri getirilebilir ve ve 'yu açıkça güncellemek için çıkarılabilir. Bu makalede daha önce bahsedilen makaleler, karşılaştırma için bir temel de dahil olmak üzere daha açık güncelleme kuralları türetmiştir ve PEPG'deki ikili örneklemeye benzer diğer Monte Carlo tekniklerini tanıtabilir, bu da algoritmayı uygulamak için güvendiğimiz şeydir. temeli. Örneğin, Natural Evolution Strategies (NES, 2014) makalesi, Fisher bilgi matrisinin ters matrisini gradyan güncelleme kuralına dahil etmek için bir yöntem önerdi. Bununla birlikte, bu fikir diğer evrimsel strateji algoritmalarıyla aynıdır.Hepsi, her nesilde çok değişkenli normal dağılımın ortalamasını ve standart sapmasını günceller ve yeni bir çözüm seti elde etmek için güncellenmiş olasılık dağılımından örnek alır. Aşağıdaki şekil, bu iki formül tarafından gerçekleştirilen eylemlerin görsel bir gösterimidir:

    Şekilde gösterildiği gibi, bu algoritma, alanı keşfetmek veya ince ayar yapmak için gerektiğinde dinamik olarak değiştirebilir. CMA-ES'den farklı olarak, bu algoritmanın uygulanması, korelasyon yapılarının (kovaryans gibi) hesaplanmasını içermez. Bu nedenle, burada diyagonal elips örnekleri almadık, sadece dikey veya yatay örnekler. Tabii ki gerekirse, yeni güncelleme kuralları türetmek için makine seçim verimliliği pahasına tüm kovaryans matrisini de ekleyebiliriz.

    Bu algoritmayı sevmemin bir başka nedeni de CMA-ES gibi standart sapmayı dinamik olarak ayarlayabilmesi, böylece arama alanımızı kademeli olarak artırabilir veya azaltabiliriz. Çünkü bu algoritmada, korelasyonu tanımlamak için parametreler kullanmadık, bu nedenle bu algoritmanın zaman karmaşıklığı O (N) 'dir, o zaman arama alanı büyük olduğunda, CMA-ES'nin performansı nispeten zayıfsa, kullanmayı seçeceğim PEPG. Genellikle model parametreleri birkaç bini aştığında, PEPG'yi seçeceğim.

    OpenAI'nin gelişim stratejisi

    OpenAI belgesinde, uyguladıkları algoritma, daha önce bahsedilen pekiştirmeli öğrenme ve evrim stratejisinin kombinasyonunun özel durumudur. Özellikle, sabit olarak sabitlenmiştir ve her nesilde yalnızca parametresi güncellenecektir. Aşağıdaki şekil, 'yu bir sabite sabitledikten sonra bu evrimsel stratejinin sürecine bir örnek göstermektedir:

    Bu makale, orijinal algoritmayı basitleştirmenin yanı sıra, farklı iş istasyonu makinelerinden oluşan bir kümede paralel hesaplama yapmasını sağlamak için yeni bir güncelleme kuralı değişikliği önermektedir. Bu güncelleme kuralında, sabit bir çekirdeğe dayalı çok sayıda rastgele sayı önceden hesaplanır. Sonuç olarak, her iş istasyonu diğer makinelerin parametrelerini kopyalayabilir ve yalnızca diğer makinelerle bir sayı, yani nihai uygunluk sonucu iletişim kurması gerekir. Evrim stratejisini binlerce, hatta milyonlarca farklı hesaplama düğümüne genişletmek istiyorsak, bu revize edilmiş güncelleme kuralı çok önemli hale geliyor. Çünkü güncellemenin her yinelemesinde tüm çözüm vektörünü milyonlarca kez iletmek pratik değildir. Ancak, nihai uygunluk sonucunun her seferinde iletilmesi uygun olmalıdır. Bu yazıda, Amazon EC2 platformunda 1440 iş istasyonu kullanmanın Mujoco insansı robot yürüyüş problemini yaklaşık on dakikada çözebileceğini gösterdiler.

    Teoride, bu paralel güncelleme kuralının aynı zamanda standart sapmayı ayarlayabilen algoritmalar için de çalışması gerektiğini düşünüyorum. Bununla birlikte, gerçek durum, iletilmesi gereken kısmı en aza indirmeyi umarak yalnızca büyük ölçekli paralel hesaplama için olmalarıdır. Bu eğitici makale, aynı zamanda, pekiştirmeli öğrenme alanındaki görevlere evrimsel stratejilerin uygulanmasına ilişkin diğer birçok pratik çalışmayı da tartışmaktadır. Bu makaleyi dikkatlice okumanızı ve derinlemesine keşif yapmanızı şiddetle tavsiye ederim.

    Yapısal uygunluk

    Yukarıda bahsedilen algoritmaların çoğu genellikle uygunluk oluşturma yöntemi ile birleştirilir.Örneğin, "sıralama tabanlı uygunluk oluşturma yöntemi" ni tartışacağım. Uygunluğun inşası, yaklaşık gradyan hesaplamasını kontrol etmek için popülasyonda yukarıda belirtilen aykırı değerlerden kaçınmamızı sağlar. Spesifik formül aşağıdaki gibidir:

    Özel bir F (zm) noktası popülasyondaki diğer F (zi) noktalarından çok daha büyükse, gradyan bu aykırı değer tarafından kontrol edilebilir ve algoritmanın yerel optimuma düşme olasılığını artırabilir. Bu sorunu hafifletmek için uygunluk sıralaması dönüşümünü kullanabiliriz. Burada uygunluk işlevinin gerçek değerini kullanmıyoruz, bunun yerine sonuçları sıralamak için popülasyondaki çözümün sıralamasıyla orantılı olan gelişmiş bir uygunluk işlevi kullanıyoruz. Aşağıdaki şekil, orijinal uygunluk ve sıralama tabanlı uygunluk işlevini kullanmanın etkisinin bir karşılaştırma diyagramıdır:

    Şekilde gösterildiği gibi, 101 örneklik bir popülasyonumuz varsa, popülasyondaki her bir bireyin gerçek uygunluk işlevi değerini tahmin edeceğiz ve çözümleri uygunluklarına göre sıralayacağız. Burada, en kötü performans gösteren kişiye -0.50 ve ikinci-son çözüme -0.49, ikinci en iyi çözüme 0.49 gelişmiş bir uygunluk işlevi değeri atayacağız ve 0.50 en iyi çözümü verir. Bu geliştirilmiş kondisyon seti, gradyan güncellemelerini hesaplamak için kullanılacaktır. Bir dereceye kadar bu, derin öğrenmeyle ilgili sonuçları işlemek için doğrudan toplu normalleştirmeyi kullanmaya benzer, ancak yaklaşımımız daha doğrudandır. Fitness oluşturmanın başka yöntemleri de var, ancak sonunda temelde benzer bir sonuç verecekler.

    Politika ağının amaç işlevi belirleyici olmayan bir işlev olduğunda, uygunluk oluşturmanın pekiştirmeli öğrenme görevlerinde çok yararlı olduğunu buldum. Bu durum, rastgele oluşturulan haritalama ilişkisi ve çeşitli rastgele stratejiler nedeniyle çok yaygındır. Bu deterministik ve iyi performans gösteren işlevler için, uygunluk oluşturma yönteminin kullanımı çok yararlı değildir ve bazen en uygun çözümü bulma hızını yavaşlatacaktır.

    MNIST üzerindeki test sonuçları

    Gradyan tabanlı algoritmalarla karşılaştırıldığında, evrimsel stratejiler daha şaşırtıcı derecede etkili çözümler bulmanın bir yolu olabilir. Hala, yüksek kaliteli gradyanları hesaplayabilen birçok problemde gradyan tabanlı algoritmalardan daha düşüktür. Tıpkı görüntü sınıflandırması için genetik algoritmaları kullanmak saçma! Ancak bazen bazı insanlar bunu yapar ve bazen bu tür girişimler işe yarar!

    Neredeyse tüm makine öğrenimi algoritmaları şu anda MNIST veri setinde test edildiğinden, bu çeşitli evrimsel strateji algoritmalarını MNIST el yazısı rakamları için basit, iki katmanlı bir yönteme de uygulamaya çalışıyorum. Evrişimli ağların sınıflandırılması. Algoritmamızın Stokastik Gradyan Düşüşü (SGD) ile nasıl karşılaştırıldığını görmek istiyorum. Bu evrişimli ağ yalnızca yaklaşık 11.000 parametreye sahip olduğundan, daha yavaş CMA-ES algoritmasını kullanabiliriz. İlgili kod ve deneysel bilgiler aşağıdaki bağlantıda bulunabilir. (Https://github.com/hardmaru/pytorch_notebooks/tree/master/mnist_es)

    Aşağıda farklı evrim stratejileri kullanılarak elde edilen sonuçlar verilmiştir: 101 kişilik bir popülasyon kullandık ve yinelemeli olarak 300 kez hesapladık. Her neslin sonunda en iyi performans gösteren modelin parametrelerini kaydetmeye devam ettik ve 300 yinelemeden sonra modeli değerlendirdik. İlginç bir şekilde, bu model bazen test setinde daha düşük puanlı eğitim setindekilere göre çok daha doğrudur.

    Bu deneyin sonuçlarına eleştirel bir gözle bakmalıyız, çünkü kodu ortalama 5-10 çalıştırma yerine yalnızca bir kez çalıştırdık. Bir deneye dayalı bu sonuç, CMA-ES modelinin MNIST el yazısıyla yazılmış rakamlar görevinde en iyi performansı gösterdiğini, ancak PEPG algoritmasının çok geride olmadığını gösteriyor gibi görünüyor. Bu algoritmaların her ikisi de, karşılaştırma için kullanılan temel SGD ve Adam'dan yaklaşık% 1 daha düşük olan yaklaşık% 98'lik bir test doğruluğuna ulaşır. Belki de, her bir yinelemede kovaryans matrisini ve standart sapma parametrelerini dinamik olarak ayarlama yeteneği, OpenAI tarafından önerilen daha basit evrim stratejisi varyantlarından daha iyi olan ağırlıkların ince ayarını yapmasına izin verir.

    Bir evrim stratejisi algoritmasını kendiniz uygulayın!

    Makalede bahsettiğimiz tüm algoritmalar açık kaynak uygulamalarına sahip olabilir. CMA-ES'nin yazarı Nikolaus Hansen, numpy kitaplığına dayanan birçok ek işlevle bir CMA-ES uygulamasını sürdürmüştür. Onun CMA-ES'sinin python uygulaması bana daha önce döngü eğitimi için bir bahane verdi. Bu arayüzün kullanımı çok kolay olduğu için, bu arayüzü basit genetik algoritma, PEPG ve OpenAI'nin evrimsel strateji algoritması gibi diğer bazı algoritmaları uygulamak için de kullanıyorum. Bu uygulamaları es.py adlı küçük bir python dosyasına koydum ve orijinal CMA-ES algoritma kitaplığını paketledim. Bundan, farklı evrimsel strateji algoritmalarını hızlı bir şekilde karşılaştırmak için koddaki bir satırı değiştirerek geçiş yapabilirim:

    ithal es

    # çözücü = es.SimpleGA (...)

    # çözücü = es.PEPG (...)

    #solver = es.OpenES (...)

    çözücü = es.CMAES (...)

    True iken:

    çözümler = çözücü.ask

    fitness_list = np.zeros (çözücü.popsize)

    aralıktaki i için (çözücü.popsize): fitness_list = değerlendirmek (çözümler )

    solver.tell (fitness_list)

    sonuç = çözücü.result

    sonuç ise > MY_REQUIRED_FITNESS: ara

    Github ve Ipython not defterinde farklı evrim stratejileri kullanan es.py dosyalarını görebilirsiniz: https://github.com/hardmaru/estool/blob/master/simple_es_example.ipynb

    Es.py dosyasını içeren bu Ipython not defterinde (https://github.com/hardmaru/estool/blob/master/simple_es_example.ipynb), daha kısmi problemi çözmek için es.py'deki evrimsel stratejilerin kullanımını gösterir. Optimal tek boyutlu Rastrigin fonksiyonu optimizasyon problemi. Bu yüz boyutlu versiyon, görselleştirme için kullanılan ve üretilen iki boyutlu versiyondan daha zordur. Aşağıdaki şekil, bu konuda daha önce tartıştığımız algoritmaların performans karşılaştırma çizelgesidir:

    Bu 100 boyutlu Rastrigin fonksiyon optimizasyon probleminde, hiçbir optimizasyon algoritması global optimal çözüme ulaşmamıştır.Bunlardan CMA-ES algoritması kullanılarak elde edilen sonuç, diğer algoritmalardan çok daha iyi olan global optimale en yakın olanıdır. PEPG algoritmasının performansı ikinci sıradadır ve OpenAI'nin evrimsel strateji algoritması ve genetik algoritmasının performansı nispeten zayıftır. Bu, bu görevde daha iyi performans göstermesi için standart sapmayı kademeli olarak azaltmak için tavlama simülasyonu yöntemi kullanmamı sağladı.

    CMA-ES algoritması kullanılarak 100 boyutlu Ras fonksiyonu optimizasyon probleminde elde edilen son çözüm, global optimal çözüm, 100 boyutlu eleman değeri 10 olan bir vektör olmalıdır.

    Bir sonraki makalede, evrimsel stratejileri diğer deneylere ve ilginç problemlere uygulamaya çalışacağım. Bu makale dizisine dikkat etmeye devam etmek için herkese hoş geldiniz!

    otoro aracılığıyla, Lei Feng.com AI Technology Review Compilation

    Lenovo Z5 Aurora Color Tour, sanat ve rengin mükemmel birleşimi
    önceki
    Nüfustaki mutlak düşüşle başa çıkmak: Çin hazır mı?
    Sonraki
    Engellilere yardımcı olmak için, donanım devleri bir PS4 tek elle denetleyici oluşturuyor
    Gerçekten taşınabilir grafik iş istasyonu ThinkPad P52s incelemesi
    Sıfır Bilgi Kanıtı (Sıfır Bilgi Kanıtı) ilkesi ayrıntılı açıklama: etkileşimli olmayan kanıt, dolandırıcılığı önlemek için otomatik doğrulamayı gerçekleştirir
    Bir insanla mı yoksa bir robotla mı konuşuyorsunuz?
    "Kötülük Basın Değil" nin beş metaforu: Anlamayanlar sıcak tavuk kitlesi sıcak film değerlendirmesi
    Kısa devreden toprağa LED sürücü çıkışını önleyin
    Toshiba TR200'den SSD tam disk performansını ve okuma gecikmesini görmek için
    Blockchain: zamanın hediyesi ve denemesi
    Bu dört noktayı yaptığınız sürece, havalı bir kızsınız!
    Yeni yaşam becerileri edinin, Samsung Galaxy A9 Star fotoğraf ustası olmanıza yardımcı olur
    Yüksek güçlü makine görüş flaşı için LED sürücü
    Qi Bixin'in oynadığı "Mission Impossible 6" Güney Kore prömiyeri Tang Ge, varyete şovunu oynayacak Koreli bir koşucu olacak
    To Top