• Gradyan İniş: Bilmeniz gereken her şey. Gradyan inişleri: toplu ve stokastik gradyan inişleri

    Nerede F i, i'nci grupta hesaplanan fonksiyondur, i rasgele seçilir;

    Öğrenme adımı bir hiperparametredir; değerler çok büyükse öğrenme algoritması uzaklaşır, değerler çok küçükse yavaş yavaş yakınsar.

    Atalet ile stokastik gradyan inişi

    Stokastik gradyan iniş yönteminde, gradyanın her yinelemede büyük ölçüde değişmesi alışılmadık bir durum değildir. Bunun nedeni, işlevin önemli ölçüde farklılık gösterebilen farklı veriler üzerinde hesaplanmasıdır. Böyle bir değişiklik, önceki iterasyonlarda hesaplanan ve atalet hiperparametresi μ ile ölçeklenen gradyanlar kullanılarak yumuşatılabilir:

    (14)
    (15)

    Tahmin edebileceğiniz gibi, atalet hiperparametresi μ, sözde Newton atalet kuvveti gibi, yani. direnç kuvveti, eğim değişikliklerine "direnir" ve eğitim boyunca ağırlıklardaki değişiklikleri yumuşatır. Böyle bir öğrenme algoritmasına momentumlu stokastik gradyan iniş veya SGDM (momentumlu stokastik gradyan iniş) denir.

    Uyarlanabilir Gradyan Yöntemi

    Uyarlanabilir gradyan algoritması (Adagrad), ölçeklendirme fikrine dayanmaktadır. Bu parametre için tüm geçmiş gradyanların geçmişini hesaba katarken, ayarlanabilir her parametre için öğrenme oranını ayrı ayrı yeniden ölçeklendirir. Bunu yapmak için, degradenin her bir öğesi aşağıdakilere bölünür: Kare kökönceki karşılık gelen gradyan öğelerinin karelerinin toplamından. Bu yaklaşım, sahip olan ağırlıklar için öğrenme oranını etkili bir şekilde azaltır. büyük önem kareler toplamı her yinelemede tüm parametreler için istikrarlı bir şekilde arttığından, zaman içinde tüm parametreler için öğrenme oranını azaltır. Sıfır başlangıç ​​ölçeklendirme parametresi g = 0 belirtildiğinde, ağırlık katsayılarını yeniden hesaplama formülü şu şekildedir (bölme, öğe öğe gerçekleştirilir).

    Amaç, tüm olası noktaların uzayında F fonksiyonunu en aza indirmektir. Grafik F bir parabolik yüzeydir ve tek bir minimuma sahip olmalıdır. Ve noktaların bu minimuma doğru hareket edecek şekilde nasıl düzeltileceği sorusu uzun zaman önce çözüldü. matematiksel analiz. Bunu yapmak için ters yönde hareket etmeniz gerekir. gradyan- türevin maksimum olduğu vektör. Gradyan şu şekilde hesaplanır:

    Onlar. gradyanı hesaplamak için verilen fonksiyonun türevini uygun noktalarda (değişkenlerde) kullanmalıyız.

    Bu nedenle, noktaların koordinatlarının nasıl doğru bir şekilde düzeltileceğini belirlemek için, gradyanı hesaplamalı ve önceden belirlenmiş bir uzunlukta bir vektörü çıkarmalıyız (bizim durumumuzda, bu uzunluk verilen adımdır a) mevcut nokta vektöründen:

    Bunu programlı olarak uygulamak için, F işlevini nasıl ayırt edeceğinizi öğrenmeniz gerekir:

    Örnek 1 - bir nokta için gradyan iniş algoritması.

    Dereceli alçalma()

    • 1. Küçük rasgele değerlerle başlatın.
    • 2. Number_of_Steps kez tekrarlayın:
      • a) Herkes için Ben 1'den N
      • b) Herkes için J 1'den M:
        • (i) hepsi için Ben 1'den N
    • 3. değerleri yayınlayın.

    Bu, her test durumundan sonra noktaların koordinatlarını şu şekilde düzeltmemiz gerektiği anlamına gelir:

    Yeni, değiştirilmiş algoritma örnek 1'de gösterilmektedir. Doğru, başka değişikliklerin yapılması gerekiyor. Birincisi, artık bir noktada orijinal verilerle mükemmel uyum sağlamayı bekleyemeyiz ve bir noktada durmayı öğrenmemiz gerekiyor. Burada durma şartı olarak, fonksiyonun değerleri arasındaki fark daha önce belirtilen doğruluktan daha az iken algoritmanın çalıştırıldığı varsayılır. Diğer bir değişiklik ise, bir sabiti bırakırsanız, o zaman bir aşamada nokta istenen minimuma yaklaşmayı durduracak, ancak her yinelemede, sonra bir yönde, sonra diğer yönde "atlamaya" başlayacaktır. Bu nedenle, bir zorunluluk zamanla azalır. Bu programda adımı ikiye indiriyoruz.

    Bu algoritma yerel minimumları bulabilir (düşündüğümüz paraboloidin bir yerel minimumu vardır). Farkı, tüm test durumlarından tüm bilgileri toplamaması, ancak her yineleme adımından sonra noktaları hemen değiştirmesidir.

    SVM

    Destek vektör makinesi(eng. SVM, destek vektör makinesi) -- sınıflandırma problemleri için kullanılan bir dizi benzer denetimli öğrenme algoritması ve regresyon analizi. Lineer sınıflandırıcılar ailesine aittir, Tikhonov düzenlileştirmesinin özel bir durumu olarak da düşünülebilir. özel mülkiyet destek vektör makinesi ampirik sınıflandırma hatasını sürekli olarak azaltmak ve aralığı artırmaktır, bu nedenle yöntem maksimum boşluk sınıflandırıcı yöntemi olarak da bilinir.

    Yöntemin ana fikri, orijinal vektörleri daha yüksek boyutlu bir uzaya çevirmek ve bu uzayda maksimum boşluk ile ayırıcı bir hiperdüzlem aramaktır. Sınıflarımızı ayıran hiperdüzlemin her iki yanında iki paralel hiperdüzlem inşa edilmiştir. Ayırıcı hiperdüzlem, iki paralel hiperdüzlem arasındaki mesafeyi maksimize eden hiperdüzlem olacaktır. Algoritma şu varsayıma göre çalışır: daha fazla fark veya bu paralel hiperdüzlemler arasındaki mesafe, ortalama sınıflandırıcı hatası o kadar küçük olacaktır.

    Genellikle makine öğrenimi algoritmalarında, verileri sınıflandırmak gerekli hale gelir. Her veri nesnesi, -boyutlu uzayda (bir p sayıları dizisi) bir vektör (nokta) olarak temsil edilir. Bu noktaların her biri, iki sınıftan yalnızca birine aittir. Noktaları bir hiper düzlemle ayırıp ayıramayacağımızla ilgileniyoruz.Bu, tipik bir lineer ayrılabilirlik durumudur. Bu tür birçok hiper düzlem olabilir. Bu nedenle, sınıflar arasındaki boşluğu en üst düzeye çıkarmanın daha güvenli bir sınıflandırmaya katkıda bulunduğuna inanmak doğaldır. Yani, ondan en yakın noktaya olan mesafe maksimum olacak şekilde böyle bir hiper düzlem bulabilir miyiz? Bu, yan yana uzanan en yakın iki nokta arasındaki mesafenin olduğu anlamına gelir. farklı taraflar hiper düzlemler, maks. Eğer böyle bir hiperdüzlem varsa, o zaman bizi en çok o ilgilendirecektir; optimal ayırıcı hiperdüzlem olarak adlandırılır ve karşılık gelen doğrusal sınıflandırıcı, optimal ayırıcı sınıflandırıcı olarak adlandırılır.

    Resmi olarak, sorun aşağıdaki gibi tanımlanabilir.

    Noktaların, noktanın hangi sınıfa ait olduğuna bağlı olarak 1 veya?1 değerini aldığı: şeklinde olduğunu varsayıyoruz. Her biri, genellikle veya değerleri ile normalize edilen, boyutlu bir gerçek vektördür. Noktalar normalleştirilmezse, ortalama nokta koordinatlarından büyük sapmalara sahip bir nokta, sınıflandırıcıyı çok fazla etkileyecektir. Bunu, her öğeye ait olduğu bir sınıfın zaten verildiği bir eğitim koleksiyonu olarak düşünebiliriz. Destek vektör makinesi algoritmasının bunları aynı şekilde sınıflandırmasını istiyoruz. Bunu yapmak için, şuna benzeyen bir ayırıcı hiperdüzlem oluşturuyoruz:

    Vektör, ayırıcı hiper düzleme diktir. Parametre mutlak değer olarak hiperdüzlemden orijine olan mesafeye eşittir. Parametre sıfırsa, hiperdüzlem orijinden geçer ve bu da çözümü sınırlar.

    Optimal ayırma ile ilgilendiğimiz için, optimal olana paralel ve iki sınıfın destek vektörlerine en yakın olan destek vektörleri ve hiperdüzlemlerle ilgileniyoruz. Bu paralel hiperdüzlemlerin aşağıdaki denklemlerle (normalizasyona kadar) açıklanabileceği gösterilebilir.

    Eğitim örneği doğrusal olarak ayrılabilirse, hiperdüzlemleri eğitim örneğinin hiçbir noktası aralarında olmayacak şekilde seçebilir ve ardından hiperdüzlemler arasındaki mesafeyi maksimize edebiliriz. Aralarındaki şeridin genişliğini geometrik düşüncelerden bulmak kolaydır, eşittir, bu nedenle görevimiz en aza indirmektir. Tüm noktaları şeritten çıkarmak için, tüm bunlardan emin olmalıyız.

    Bu şu şekilde de yazılabilir:

    Sınıfların lineer ayrılabilirliği durumunda, optimal bir ayırıcı hiper düzlem oluşturma problemi (1) koşulu altında minimizasyona indirgenir. Bu, şuna benzeyen ikinci dereceden bir optimizasyon problemidir:

    Kuhn-Tucker teoremine göre, bu problem şuna eşdeğerdir: ikili problem Lagrange fonksiyonunun eyer noktasını arayın.


    ikili değişkenlerin vektörü nerede

    Bu sorunu, yalnızca ikili değişkenler içeren eşdeğer bir ikinci dereceden programlama sorununa indirgiyoruz:


    Diyelim ki bu sorunu çözdük, o zaman formüllerle bulunabilir:

    Sonuç olarak, sınıflandırma algoritması şu şekilde yazılabilir:

    Bu durumda, toplama tüm numune üzerinde değil, sadece destek vektörleri üzerinde gerçekleşir.

    Sınıfların lineer ayrılmazlığı durumunda algoritmanın çalışabilmesi için eğitim setinde hata yapmasına izin verelim. Nesnelerdeki hatanın büyüklüğünü karakterize eden bir dizi ek değişken tanıtalım. (2)'yi bir başlangıç ​​noktası olarak alıyoruz, eşitsizlik kısıtlamalarını yumuşatıyoruz ve aynı zamanda minimize edilmiş fonksiyonele toplam hata için bir ceza ekliyoruz:

    Katsayı, ayırma şeridinin genişliğini en üst düzeye çıkarma ve toplam hatayı en aza indirme arasındaki oranı ayarlamanıza izin veren bir yöntem ayar parametresidir.

    Benzer şekilde, Kuhn-Tucker teoremine göre, sorunu Lagrange fonksiyonunun eyer noktasını bulmaya indirgiyoruz:


    Benzetme yaparak, bu sorunu eşdeğer bir soruna indirgeriz:


    Uygulamada, bir destek vektör makinesi oluşturmak için, noktaların iki sınıfa doğrusal olarak ayrılabilmesini garanti etmek genellikle mümkün olmadığından (3) değil, bu problem çözülür. Algoritmanın bu varyantı, esnek marjlı SVM algoritması olarak adlandırılırken, doğrusal olarak ayrılabilir durumda bir sabit marjdan (sert marjlı SVM) söz edilir.

    Sınıflandırma algoritması için formül (4) korunur, tek fark artık yalnızca referans nesnelerin değil, aynı zamanda ihlal eden nesnelerin de sıfır olmayan değerlere sahip olmasıdır. Belli bir anlamda, bu bir dezavantajdır, çünkü gürültü yükselmeleri genellikle suçludur ve bunlara dayanan karar kuralı aslında gürültüye dayanır.

    Sabit genellikle kayan kontrol kriterine göre seçilir. Bu zahmetli bir yöntemdir çünkü problem her değer için yeniden çözülmelidir.

    Numunenin neredeyse doğrusal olarak ayrılabilir olduğuna inanmak için bir neden varsa ve yalnızca aykırı değer nesneleri yanlış sınıflandırılırsa, aykırı değer filtreleme uygulanabilir. İlk olarak, problem bir miktar C için çözülür ve en büyük hata değerine sahip nesnelerin küçük bir kısmı örnekten çıkarılır. Bundan sonra problem, kesik bir numune üzerinde yeniden çözülür. Kalan nesneler doğrusal olarak ayrılabilir olana kadar bu tür birkaç yineleme yapmak gerekli olabilir.

    1963'te Vladimir Vapnik ve Alexei Chervonenkis tarafından önerilen, optimal bir ayırıcı hiper düzlem oluşturmak için bir algoritma, doğrusal bir sınıflandırma algoritmasıdır. Bununla birlikte, 1992'de Bernhard Boser, Isabelle Guyon ve Vapnik, skaler çarpımlardan gelişigüzel çekirdeklere geçişe dayalı doğrusal olmayan bir sınıflandırıcı oluşturmak için çekirdek hilesi adı verilen bir yöntem önerdiler (ilk olarak M.A. Aizerman, E.M. Bravermann ve L tarafından önerildi). Doğrusal olmayan ayırıcıların oluşturulmasına izin veren potansiyel fonksiyonlar yöntemi için V. Rozonoer. Ortaya çıkan algoritma, doğrusal sınıflandırma algoritmasına çok benzer, tek fark, yukarıdaki formüllerdeki her bir skaler çarpımın, doğrusal olmayan bir çekirdek fonksiyonu (daha yüksek boyutlu bir uzayda skaler çarpım) ile değiştirilmesidir. Bu uzayda zaten optimal bir ayırıcı hiper düzlem mevcut olabilir. Ortaya çıkan uzayın boyutu, orijinal uzayın boyutundan daha büyük olabileceğinden, skaler çarpımlarla eşleşen dönüşüm doğrusal olmayacaktır, yani orijinal uzayda en iyi ayırıcı hiper düzleme karşılık gelen fonksiyon da doğrusal olmayacaktır.

    Orijinal uzay yeterince yüksek bir boyuta sahipse, içindeki örneğin doğrusal olarak ayrılabileceğini umabiliriz.

    En yaygın çekirdekler:

    1. Doğrusal çekirdek:

    2. Polinom (homojen):

    3.RBF işlevi:

    4. Sigmoid:

    Önümüze konulan görev çerçevesinde lineer homojen bir kernel kullanacağız. Naive Bayes Sınıflandırıcı ile karşılaştırıldığında, bu sınıflandırıcının eğitimi nispeten uzun bir süre almasına rağmen, bu çekirdek Belge Sınıflandırma görevlerinde mükemmel sonuçlar gösterdi. Diğer tüm çekirdeklerin işi bu liste ve eğitimlerinin çok daha uzun sürdüğü, ancak sınıflandırma doğruluğunda fazla bir gelişme sağlamadığı bulundu.

    Eğitimi hızlandırmak için, doğruluğundan büyük ölçüde ödün vermeden sınıflandırıcının eğitimini önemli ölçüde hızlandırmamızı sağlayan Stokastik Gradient Descent adlı bir yöntem kullanacağız.

    Stokastik Gradyan İnişi

    Gradyan yöntemleri, yalnızca makine öğreniminde kullanılmayan geniş bir optimizasyon algoritmaları sınıfıdır. Burada, gradyan yaklaşımı, doğrusal bir sınıflandırıcıda sinaptik ağırlıkların bir vektörünü seçmenin bir yolu olarak değerlendirilecektir. Yalnızca eğitim örneğinin nesneleri üzerinde bilinen hedef bağımlılığı olsun:

    Bağımlılığa yaklaşan bir algoritma bulalım. Doğrusal bir sınıflandırıcı durumunda, istenen algoritma şu şekildedir:

    aktivasyon işlevinin rolünü nerede oynar (en basit durumda ayarlanabilir).

    Ampirik risk minimizasyonu ilkesine göre, optimizasyon problemini çözmek yeterlidir:

    Verilen kayıp fonksiyonu nerede.

    Minimizasyon için, gradyan iniş yöntemini kullanıyoruz. Bu adım adım algoritma, vektörün işlevseldeki en büyük azalma yönünde (yani, antigradyan yönünde) değiştiği her yinelemede:

    Öğrenme oranı adı verilen pozitif bir parametre nerede.

    Gradyan inişini uygulamak için 2 ana yaklaşım vardır:

    1. Grup (toplu), her yinelemede eğitim örneği bütünüyle görüntülendiğinde ve yalnızca bundan sonra değiştirildiğinde. Bu, büyük hesaplama maliyetleri gerektirir.

    2. Stokastik (stokastik / çevrimiçi), algoritmanın her yinelemesinde eğitim örneğinden bir şekilde (rastgele) yalnızca bir nesne seçildiğinde. Böylece vektör, seçilen her yeni nesneye göre ayarlanır.

    Stokastik gradyan iniş algoritmasını sözde kodda şu şekilde temsil edebiliriz:

    - eğitim örneği

    - öğrenme hızı

    - fonksiyonel yumuşatma parametresi

    1. Ağırlık vektörü

    1) Ağırlıkları başlat

    2) Fonksiyonelin mevcut değerlendirmesini başlatın:

    3) Tekrarla:

    1. Rastgele bir nesne seçin

    2. Algoritmanın çıkış değerini ve hatayı hesaplayın:

    3. Gradyan İniş Adımı Atın

    4. Fonksiyonelin değerini tahmin edin:

    4) Değer sabitlenene ve/veya ağırlıklar değişmeyi bırakana kadar.

    SGD'nin ana avantajı, gereksiz büyük veriler üzerinde öğrenme hızıdır. Önümüzdeki görev çerçevesinde bizim için ilginç olan bu, çünkü girdi verilerinin hacmi çok büyük olacak. Aynı zamanda, SGD algoritması, klasik toplu gradyan inişinin aksine, biraz daha düşük bir sınıflandırma doğruluğu verir. Ayrıca, doğrusal olmayan bir çekirdeğe sahip bir destek vektör makinesini eğitirken SGD algoritması uygulanamaz.

    sonuçlar

    Çözülmekte olan problemin bir parçası olarak, nadir olayların ağırlığını artırmamızı ve sık olayların ağırlığını azaltmamızı sağlayacak olan TF-IDF kaynak veri dönüştürme algoritmasını kullanmamız gerekiyor. Dönüşümden sonra elde edilen verileri karşılaştığımız problemin çözümüne uygun sınıflandırıcılara yani Naive Bayes Classifier veya Support Vector Machine ile aktaracağız. Doğrusal çekirdek, stokastik gradyan iniş yöntemiyle eğitildi. Toplu gradyan iniş yöntemi kullanılarak eğitilmiş doğrusal olmayan çekirdeklerle Destek Vektör Makinesinin verimliliğini de kontrol edeceğiz. Fakat, verilen tip sınıflandırıcı, aşırı karmaşık çekirdek ve sınıflandırıcının, sınıflandırıcıyı eğitmek için kullanılmayan verilerle iyi başa çıkamadığı aşırı uyum eğilimi nedeniyle görev için uygun görünmüyor.

    yazılım makinesi ön işlemesi verildi

    Yani, büyüklüğü verilen bir evin değeri gibi bir şeyi tahmin etme göreviniz var. Veya bazı isteklerin sisteminiz tarafından işlenme süresi. Evet, asla bilemezsin.

    Doğrusal regresyon kullanmaya karar verdiniz ve şimdi modelinizin tahmin ettiği fiyat ile satılan konutların gerçek değeri arasındaki farkı en aza indirecek katsayıları bulmak istiyorsunuz. Bunu yapmak için şu yöntemlerden birini kullanabilirsiniz:

    1. Toplu Eğimli İniş (genel gradyan iniş)
    2. Stokastik Gradyan İnişi (stokastik gradyan inişi)
    3. Normal Denklemler (normal denklemler)
    4. Newton Metodu (Newton Metodu)

    Bugün iki tür eğimli inişten bahsedeceğiz.

    Dereceli alçalma

    Zaten gradyan iniş nedir?

    biraz hayal et karmaşık fonksiyon bir değişkenden. Bazı iniş çıkışları var. Bu fonksiyonun her noktasında türevi alabiliriz:

    Yeşil çizgi bu noktada türevin pozitif, kırmızı çizginin ise negatif olacağını gösteriyor.

    Özellik üzerinde herhangi bir nokta seçin. O noktaya en yakın dibe "aşağı inmek" istiyorsunuz. Noktanızdaki türev pozitifse (yeşil çizgi), bu minimumun "arkanızda" olduğu anlamına gelir ve ona inmek için noktanızın koordinatından çıkarmanız gerekir. X türevinizin değeri.

    Bulunduğunuz noktada türev negatifse (kırmızı çizgi), bu, minimumun "önünüzde" olduğu anlamına gelir ve ona ulaşmak için yine koordinattan çıkarmanız gerekir. X türevinizin değeri. Değeri negatiftir ve bu nedenle negatif bir değer çıkararak koordinatı artıracaksınız. X.

    Pekala, inişin acı verici bir şekilde uzun veya hatalı bir şekilde hızlı olmaması için, türevinizin değerini seçilen noktadaki bir faktörle çarpın.

    Ancak bu, işlevin bir koordinata bağlı olduğu durum içindir. Ev satma modelimiz durumunda, maliyet fonksiyonu iki değişkene bağlıdır.

    Bu işlevi 3B uzayda bir "fincan" olarak düşünebilirsiniz:

    Birkaç değişkenli fonksiyonların türevine gradyan denir. Bir gradyan, vektörün her öğesinin bir değişkenin türevi olduğu değişken sayısı boyutuna sahip bir vektördür.

    Maliyet fonksiyonumuz:

    Gradyanı olarak gösterilir ve aşağıdaki formül kullanılarak hesaplanacaktır:

    Her kısmi türevde, onu bir değişkenden ele alıyoruz. Diğer tüm değişkenleri sabit olarak kabul ediyoruz, bu nedenle türevleri sıfıra eşit olacaktır:

    Bundan sonra, her değeri aşağıdaki formülle güncelleriz:

    Parametreye öğrenme oranı denir ve fonksiyonun minimum değerine ne kadar hızlı hareket edeceğimizi belirler. Parametrelerin her güncellenmesiyle, minimuma doğru küçük bir adım atıyoruz. Bundan sonra prosedürü tekrarlıyoruz. Buna paralel olarak bir önceki adıma göre maliyet fonksiyonunun değerinin ne kadar değiştiğine bakıyoruz. Bu değişiklik çok küçük hale geldiğinde (zamanı işaretliyoruz) durup minimum noktaya ulaştığımızı düşünebiliriz.

    Bir tepeden aşağı en yakın boşluğa doğru yürümek gibidir. Gradyan iniş, yerel bir minimum bulmanızı sağlar, ancak genel bir minimum bulmanızı sağlar. Bu, işlevinizin minimum olduğu birkaç nokta varsa, eğim inişinin sizi bunlardan birine - başlangıç ​​noktasına en yakın olana, ancak zorunlu olmamakla birlikte - en derin yarığa götüreceği anlamına gelir.

    İlk adımdan önce, parametreleri rastgele belirliyoruz ve bunları tam olarak nasıl belirleyeceğimiz, hangi minimuma düşeceğimize bağlı:


    Burada, parantez içinde, yukarıdakilerin gradyan iniş için geçerli olduğuna dikkat edilmelidir. Genel görünüm, ancak özellikle gradyan inişini ele almıyor doğrusal regresyon. Doğrusal regresyon maliyet fonksiyonu dışbükeydir ve yalnızca bir minimuma sahiptir (3B kabı hatırlayın), bu nedenle gradyan iniş her zaman onu bulacaktır.

    Maliyet fonksiyonunun minimum değerine ne kadar yaklaşırsanız (öngörülen fiyat ile gerçek fiyat arasındaki fark ne kadar küçükse), düz çizginiz geçmiş verilerinizi o kadar iyi tanımlar:

    Çok fazla tarihsel örnek olmadığında her şey yolunda ama milyonlarca olduğunda, minimuma doğru atılan her küçük adım için milyonlarca hesap yapmak zorunda kalıyoruz ve bu uzun zaman alabiliyor.

    Buna bir alternatif, stokastik gradyan inişi olabilir; bu, bir örnek alıp sadece ona odaklanarak değerleri güncellediğimiz bir yöntemdir. Ardından, aşağıdaki örneği alıyoruz ve zaten ona odaklanarak parametreleri güncelliyoruz. Ve benzeri. Bu, her zaman tepeden "aşağı inmememize", bazen yukarı veya yana doğru bir adım atmamıza, ancak er ya da geç o minimuma ulaşıp onun etrafında dönmeye başlamamıza neden olur. Değerler bize uymaya başladığında (ihtiyacımız olan doğruluğa ulaşınca) inişi durduruyoruz.

    Sözde kodda, stokastik gradyan iniş şuna benzer:

    Maliyet Fonksiyonu değişikliği küçük olana kadar: (

    j için:= 1 ila m (

    Son olarak, algoritmanın yakınsama özellikleri: yeterince küçük bir değerin kullanılması koşuluyla toplu gradyan iniş her zaman minimuma yakınsar. Stokastik gradyan inişi genellikle minimuma yakınsama yapmaz, ancak yakınsamanın sağlanmasına izin veren modifikasyonları vardır.

    Stokastik gradyan aşağıdaki formülle tahmin edilir:

    yani, verilen rasgele yönlerde küçültülmüş fonksiyonun artışlarına eşit ağırlıklara sahip tüm rasgele vektörlerin toplamıdır.

    Değer olarak birim vektörleri alırsak, yani (3.3.22)'den kolayca görülebileceği gibi, için bu tahmin, gradyanın tam değerini verir.

    Açıklanan her iki gradyan tahmini, deterministik tahmin yönteminden (3.3.22) önemli ölçüde farklı olan ve bunlar için önemli ölçüde farklı olan herhangi bir değer için etkili bir şekilde uygulanabilir; alt bölüm 3.3.1 ). Böyle bir genellemeye başka bir örnek verelim.

    Gradyan arama (3.3.21), en az iki rastgele arama algoritmasının özel bir durumudur. İlk algoritma:

    burada hala tek bir rasgele boyutlu vektör var. Bu, ünlü gradyan rastgele arama algoritmasıdır. İkinci algoritma (3.3.23) formuna sahiptir, ancak gradyan tahmini formülle hesaplanır.

    Görülebileceği gibi, her iki algoritma da gradyan arama algoritmasına (3.3.21) dönüşmektedir.

    Bu nedenle rastgele arama, bilinenlerin doğal bir uzantısı, devamı ve genelleştirilmesidir. düzenli yöntemler aramak.

    Etkili uygulaması için geniş fırsatlar açan rastgele aramanın diğer bir özelliği, rastgele adım operatörünün karmaşık bir stokastik model olarak kullanılmasıdır. düzenli operatörler optimize edilmiş parametreler alanında arama yönlerini bulma

    Bu nedenle, doğrusal taktiklere sahip rastgele arama algoritması (3.3.12), en dik iniş algoritmasının stokastik bir modelidir:

    rastgele vektörün gradyan tahminini modellediği. Stokastik özellikleri tahmin edilen gradyanın özelliklerine bile benzemediğinden, böyle bir "tahmin" kaba olarak adlandırılamaz. Bununla birlikte, yukarıda gösterildiği gibi, rasgele arama algoritması yalnızca verimli olmakla kalmaz, aynı zamanda bazı durumlarda en dik iniş algoritmasından bile daha verimlidir. Burada

    rasgele adım operatörü, örneğin formül (3.3.22)'ye göre zahmetli gradyan tahmin operatörünün yerini alır.

    Rastgele aramanın onu normal yöntemlerden olumlu şekilde ayıran bir sonraki özelliği, kendisini öncelikle küresel bir ekstremum bulmak için tasarlanmamış yerel rastgele arama algoritmalarında gösteren küreselliktir. Böylece rastgele iniş algoritması global bir ekstremum bulabilirken, normal en dik iniş algoritması yerel bir ekstremum bulmak için tasarlandığından temelde böyle bir olasılığa izin vermez.

    Sonuç olarak, rasgele arama algoritmalarının küreselliği, deyim yerindeyse, rasgeleliğin kullanımı için bir "bonus" ve "gibi bir şeydir". ücretsiz uygulama» algoritmaya Bu durum, özellikle bilinmeyen bir yapıya sahip nesneleri optimize ederken, sorunun bir ekstremum olduğuna dair tam bir kesinlik olmadığında ve (beklenmese de) birkaç ekstremum olması mümkün olduğunda önemlidir. Böyle bir durumda global arama yöntemlerini kullanmak mantıksız bir israf olacaktır. Yerel rasgele arama yöntemleri, yerel bir sorunu etkili bir şekilde çözdükleri ve prensip olarak, varsa genel bir sorunu çözebildikleri için burada en kabul edilebilir yöntemlerdir. Bu, kullanıcılar tarafından büyük beğeni toplayan bir tür psikolojik güvenilirlikle rastgele arama sağlar.

    Rastgele aramanın algoritmik basitliği, onu öncelikle tüketiciler için çekici kılmaktadır. Deneyimler, bilinen rasgele arama algoritmalarının yalnızca, kullanıcının her bir özel durum Yalnızca zevklerini ve eğilimlerini (bu dikkate alınmalıdır) değil, aynı zamanda optimize edilen nesnenin özelliklerini de yansıtan yeni algoritmaların "nakış kalıpları". İkincisi, algoritmanın "nesne için" tasarlanması gerektiği şeklindeki iyi bilinen ilkenin uygulanması için uygun bir temel oluşturur. Son olarak, rastgele aramanın algoritmik basitliği, donanım uygulamasının basitliğini belirler. Bu, yalnızca optimize edilecek sınırsız sayıda parametre ile basit, kompakt ve güvenilir optimize ediciler oluşturmayı mümkün kılmakla kalmaz, aynı zamanda optimum sentezlerini bir bilgisayarda düzenlemeyi oldukça kolaylaştırır.