Tepe Tırmanışı - Hill climbing - Wikipedia

Sayısal analizde, Tepe Tırmanışı bir matematiksel optimizasyon ailesine ait teknik Bölgesel arama. O bir yinelemeli algoritma bir soruna gelişigüzel bir çözümle başlayan, daha sonra bir sorun çıkararak daha iyi bir çözüm bulmaya çalışan artımlı çözüme geçin. Değişiklik daha iyi bir çözüm üretirse, yeni çözümde başka bir artımlı değişiklik yapılır ve daha fazla iyileştirme bulunmayana kadar bu şekilde devam eder.

Örneğin tepe tırmanışı, seyyar satıcı sorunu. Tüm şehirleri ziyaret eden bir başlangıç ​​çözümü bulmak kolaydır, ancak optimal çözüme kıyasla muhtemelen çok zayıf olacaktır. Algoritma böyle bir çözümle başlar ve iki şehrin ziyaret edilme sırasını değiştirmek gibi küçük iyileştirmeler yapar. Sonunda, çok daha kısa bir rota elde edilmesi muhtemeldir.

Tepe tırmanışı aşağıdakiler için en uygun çözümleri bulur: dışbükey sorunlar - diğer sorunlar için sadece bulacaktır yerel optima (herhangi bir komşu konfigürasyon tarafından geliştirilemeyen çözümler), bunlar mutlaka mümkün olan en iyi çözüm değildir ( küresel optimum ) olası tüm çözümlerden ( arama alanı ). Tepeye tırmanarak dışbükey problemleri çözen algoritma örnekleri şunları içerir: simpleks algoritması için doğrusal programlama ve Ikili arama.[1]:253 Yerel optimada takılıp kalmaktan kaçınmak için, yeniden başlatmalar (yani, tekrarlanan yerel arama) veya yinelemelere dayalı daha karmaşık şemalar (ör. yinelenen yerel arama ) veya bellekte (reaktif arama optimizasyonu gibi ve tabu araması ) veya hafızasız stokastik modifikasyonlarda ( benzetimli tavlama ).

Algoritmanın göreceli basitliği, algoritmayı optimize eden algoritmalar arasında popüler bir ilk seçenek haline getirir. Yaygın olarak kullanılmaktadır yapay zeka, bir başlangıç ​​düğümünden bir hedef durumuna ulaşmak için. İlgili algoritmalarda sonraki düğümler ve başlangıç ​​düğümleri için farklı seçenekler kullanılır. Gibi daha gelişmiş algoritmalar olmasına rağmen benzetimli tavlama veya tabu araması daha iyi sonuçlar verebilir, bazı durumlarda tepe tırmanışı da işe yarar. Tepe tırmanışı, bir aramayı gerçekleştirmek için mevcut olan süre sınırlı olduğunda, örneğin gerçek zamanlı sistemlerde olduğu gibi, diğer algoritmalardan daha iyi bir sonuç üretebilir, ancak az sayıdaki artış tipik olarak iyi bir çözüme yakınlaşır (en uygun çözüm) veya yakın bir tahmin). Diğer uçta, kabarcık sıralama bir tepe tırmanma algoritması olarak görülebilir (her bitişik eleman değişimi, düzensiz eleman çiftlerinin sayısını azaltır), ancak bu yaklaşım, gerekli değişim sayısı ikinci dereceden arttığından, en mütevazı N için bile verimli olmaktan uzaktır.

Tepe tırmanışı bir her zaman algoritma: sona ermeden önce herhangi bir anda kesilse bile geçerli bir çözüm döndürebilir.

Matematiksel açıklama

Tepe tırmanışı bir hedefi büyütmeye (veya küçültmeye) çalışır işlevi , nerede sürekli ve / veya ayrık değerlerin bir vektörüdür. Her yinelemede tepe tırmanışı, tek bir öğeyi ayarlayacaktır. ve değişikliğin, . (Bunun farklı olduğunu unutmayın. dereceli alçalma içindeki tüm değerleri ayarlayan yöntemler tepenin eğimine göre her yinelemede.) Yokuş tırmanışında, gelişen herhangi bir değişiklik kabul edilir ve işlem, değerini iyileştirecek hiçbir değişiklik bulunmayana kadar devam eder. . Sonra "yerel olarak optimal" olduğu söyleniyor.

Ayrık vektör uzaylarında, her olası değer için olarak görselleştirilebilir tepe içinde grafik. Tepe tırmanışı, grafiği tepe noktasından tepe noktasına kadar takip edecek, her zaman yerel olarak değerini artıracak (veya azaltacaktır). , e kadar yerel maksimum (veya yerel minimum ) ulaşıldı.

Yalnızca bir maksimuma sahip bir yüzey. Tepe tırmanıcıları, bu tür yüzeyleri optimize etmek için çok uygundur ve küresel maksimuma yakınlaşacaktır.

Varyantlar

İçinde basit tepe tırmanışıilk yakın düğüm seçilirken en dik yokuş tepe tırmanışı tüm halefler karşılaştırılır ve çözüme en yakın olan seçilir. Daha yakın bir düğüm yoksa her iki form da başarısız olur ve bu, arama alanında çözüm olmayan yerel maksimumlar varsa meydana gelebilir. En dik tırmanış tepe tırmanışı, en iyi arama, yalnızca bir tanesi yerine geçerli yolun tüm olası uzantılarını deneyen.

Stokastik tepe tırmanışı nasıl taşınacağına karar vermeden önce tüm komşuları incelemiyor. Bunun yerine, rastgele bir komşuyu seçer ve (o komşudaki gelişme miktarına bağlı olarak) o komşuya mı taşınacağına yoksa başka bir komşuyu mu incelemeye karar verir.

Koordinat iniş yapar satır arama her yinelemede geçerli noktada bir koordinat yönü boyunca. Koordinat inişinin bazı versiyonları, her yinelemede rastgele farklı bir koordinat yönü seçer.

Rastgele yeniden başlayan tepe tırmanışı bir meta algoritma tepe tırmanma algoritmasının üzerine inşa edilmiştir. Olarak da bilinir Av tüfeği tepe tırmanışı. Her seferinde rastgele bir başlangıç ​​koşuluyla yinelemeli olarak tepe tırmanışı yapar . En iyisi korunur: yeni bir tepe tırmanışı koşusu daha iyi bir depolanmış durumdan daha fazla, depolanmış durumun yerini alır.

Rastgele yeniden başlatılan tepe tırmanışı, çoğu durumda şaşırtıcı derecede etkili bir algoritmadır. Bir başlangıç ​​koşulundan dikkatlice optimize etmektense, alanı keşfetmek için CPU zamanını harcamanın genellikle daha iyi olduğu ortaya çıktı.[orjinal araştırma? ]

Problemler

Yerel maksimum

İki yerel maksimuma sahip bir yüzey. (Bunlardan yalnızca biri küresel maksimumdur.) Bir tepe tırmanıcı kötü bir yerde başlarsa, daha düşük maksimuma yakınlaşabilir.

Tepe tırmanışı, mutlaka küresel maksimum değeri bulmayacaktır, bunun yerine bir yerel maksimum. Buluşsal yöntem dışbükey ise bu sorun oluşmaz. Ancak, birçok işlev dışbükey olmadığından, tepe tırmanışı genellikle küresel bir maksimuma ulaşmada başarısız olabilir. Diğer yerel arama algoritmaları bu sorunun üstesinden gelmeye çalışır. stokastik tepe tırmanışı, rastgele yürüyüşler ve benzetimli tavlama.

Bu grafikteki birçok yerel maksimuma rağmen, küresel maksimum yine de benzetilmiş tavlama kullanılarak bulunabilir. Ne yazık ki, benzetilmiş tavlamanın uygulanabilirliği probleme özgüdür çünkü bulmaya dayanmaktadır. şanslı atlayışlar pozisyonu iyileştiren. Bu tür aşırı örneklerde, tepe tırmanışı büyük olasılıkla yerel bir maksimum üretecektir.

Sırtlar ve sokaklar

Bir sırt

Sırtlar sürekli alanlarda optimize eden tepe tırmanıcıları için zorlu bir sorundur. Tepe tırmanıcıları bir seferde vektörde yalnızca bir öğeyi ayarladıkları için, her adım eksen hizalı bir yönde hareket edecektir. Hedef fonksiyon, eksene göre hizalanmamış bir yönde yükselen dar bir sırt oluşturuyorsa (veya amaç, eksene göre hizalanmamış bir yönde alçalan dar bir geçidi küçültmekse), bu durumda tepe tırmanıcı yalnızca zikzak çizerek sırt (veya sokağa inin). Sırtın (veya sokağın) kenarları çok dikse, tepe tırmanıcı daha iyi bir konuma doğru zikzaklar çizerken çok küçük adımlar atmaya zorlanabilir. Bu nedenle, sırttan çıkması (veya sokağa inmesi) mantıksız bir zaman alabilir.

Bunun tersine, gradyan iniş yöntemleri, sırt veya geçidin yükselebileceği veya alçalabileceği herhangi bir yönde hareket edebilir. Dolayısıyla, gradyan inişi veya eşlenik gradyan yöntemi hedef işlevi ayırt edilebilir olduğunda genellikle tepe tırmanmaya tercih edilir. Bununla birlikte, tepe tırmanıcıları, hedef işlevin farklılaştırılabilir olmasını gerektirmeme avantajına sahiptir, bu nedenle hedef işlev karmaşık olduğunda tepe tırmanıcılar tercih edilebilir.

Plato

Bazen tepe tırmanışında ortaya çıkan bir diğer sorun da bir plato sorunudur. Arama alanı düz olduğunda veya makine tarafından değerini temsil etmek için kullanılan hassasiyet nedeniyle hedef fonksiyon tarafından döndürülen değerin yakındaki bölgeler için döndürülen değerden ayırt edilemeyecek kadar düz olduğunda bir platoyla karşılaşılır. Bu gibi durumlarda tepe tırmanıcısı hangi yöne adım atması gerektiğini belirleyemeyebilir ve hiçbir zaman iyileştirmeye yol açmayacak bir yönde dolaşabilir.

Sözde kod

algoritma Ayrık Uzay Tepe Tırmanışı dır-dir    currentNode: = startNode döngü yapmak        L: = KOMŞULAR (currentNode) nextEval: = −INF nextNode: = NULL için tümü x in L yapmak            Eğer EVAL (x)> nextEval sonra                nextNode: = x nextEval: = EVAL (x) Eğer nextEval ≤ EVAL (currentNode) sonra            // Daha iyi komşular olmadığından mevcut düğümü döndür dönüş currentNode currentNode: = nextNode
algoritma Sürekli Uzay Tepesi Tırmanışı dır-dir    currentPoint: = initialPoint // sıfır büyüklük vektörü ortak stepSize: = initialStepSizes // tüm 1'lerin bir vektörü ortak ivmedir: = bir miktarHızlanma // 1.2 gibi bir değer ortak adaydır [0]: = − hızlanma adayı [1 ]: = −1 / hızlanma adayı [2]: = 1 / hızlanma adayı [3]: = hızlanma en iyi puanı: = EVAL (currentPoint) döngü yapmak        beforeScore: = bestScore her biri için currentPoint'teki i öğesi yapmak            beforePoint: = currentPoint [i] bestStep: = 0 için j, 0-3 arası yapmak      // 4 aday konumun her birini deneyin step: = stepSize [i] × aday [j] currentPoint [i]: = beforePoint + step score: = EVAL (currentPoint) Eğer skor> bestScore sonra                    bestScore: = en iyi puan Adım: = adım Eğer bestStep 0 sonra                currentPoint [i]: = beforePoint stepSize [i]: = stepSize [i] / ivme Başka                currentPoint [i]: = beforePoint + bestStep stepSize [i]: = bestStep // hızlandırma Eğer (bestScore - beforeScore) sonra            dönüş currentPoint

Kontrast genetik Algoritma; rastgele optimizasyon.

Ayrıca bakınız

Referanslar

  • Russell, Stuart J.; Norvig, Peter (2003), Yapay Zeka: Modern Bir Yaklaşım (2. baskı), Upper Saddle River, New Jersey: Prentice Hall, s. 111–114, ISBN  0-13-790395-2
  1. ^ Skiena, Steven (2010). Algoritma Tasarım Kılavuzu (2. baskı). Springer Science + Business Media. ISBN  1-849-96720-2.

Bu makale, şuradan alınan malzemeye dayanmaktadır: Ücretsiz Çevrimiçi Bilgisayar Sözlüğü 1 Kasım 2008'den önce ve "yeniden lisans verme" şartlarına dahil edilmiştir. GFDL, sürüm 1.3 veya üzeri.

Dış bağlantılar