Degrade inişi büyük veri kümesi için neden yetersiz?


13

Diyelim ki veri setimizde 1 milyon örnek var, yani ve bu veri setinde lojistik veya doğrusal bir regresyon gerçekleştirmek için degrade iniş kullanmak istiyoruz.x1,,x106

Verimsiz hale getiren degrade iniş yöntemiyle nedir?

zamanında degrade iniş adımının aşağıdakiler tarafından verildiğini hatırlayın :t

wt+1=wt+ηtf(x)

burada kayıp fonksiyonudur.f

Yukarıdaki adımda algoritmanın verimsiz olmasına neden olan sıra dışı bir şey görmüyorum. ' nin hesaplanması mı ? Bu işlem önceden hesaplanamadı, yani her ff(x) zaten hesaplanmış ve sadece her veri noktasında değerlendirmekxi?fxxi?


1
... 'ya göre verimsiz? Büyük bir veri kümesi için verimsiz en küçük kareler bile. algoritmaya ne yaptığı hakkında anlamlı fikirlere sahip olmak için büyük O gösterimi gerekir . Tüm GD algoritmaları aynı büyük O. n
değerine

Yanıtlar:


7

Degrade inişin verimsiz olduğu iddiasına bir bağlam vermeniz yardımcı olacaktır. Neye göre verimsiz?

Buradaki eksik bağlamın makine öğrenimindeki stokastik veya yığın gradyan iniş ile karşılaştırılması olduğunu düşünüyorum. Soruyu bu bağlamda nasıl cevaplayacağınız aşağıda açıklanmıştır. Modelin parametrelerini, hatta hiperparametreleri bile optimize ediyorsunuz. Yani, maliyet fonksiyonu var , x i veri ve - Θ - parametrelerin vektör ve L ( ) - kayıp fonksiyonu. Bu maliyeti en aza indirmek için θ j : parametreleri üzerinde degrade iniş kullanırsınızi=1nL(xi|Θ)xiΘL() θj

θji=1nL(Θ|xi)

Yani, x i = 1 , , n üzerindeki tüm verilerin toplamını almanız gerektiğini görüyorsunuz . Bu talihsiz bir durumdur, çünkü bu, degrade inişinizin her adımı için verilerde döngü oluşturmaya devam ettiğiniz anlamına gelir. Toplu ve stokastik gradyan inişi şu şekilde ortaya çıkar: veri kümesinden örnekleme yaparsak ve degradeyi tam kümede değil bir örnek üzerinde hesaplarsak ne olur? xi=1,,n Buradans,sörneğindeki gözlem sayısıdır. Dolayısıyla, numuneniz toplam setin 1 / 100'ü ise, hesaplamalarınızı 100 kat hızlandırırsınız! Açıkçası, gürültü öğrenmeyi uzatır, ancak gürültü, bu tanıtır oranında azalır

θjk=1nsL(Θ|xk)
nss de hesaplama miktarı artar ikenn, bu nedenle bu hüner çalışabilir.nn

i=1ns=1Mis=1ns


19

Degrade inişin verimsiz olabilmesinin iki yolu vardır. İlginç bir şekilde, her biri neredeyse ters çözüm olan kendi sabitleme yöntemlerine yol açarlar. İki sorun:

(1) Çok fazla degrade iniş güncellemesi gerekiyor.

(2) Her gradyan iniş adımı çok pahalıdır.

(1) ile ilgili olarak, gradyan inişini ikinci mertebeden türevler hakkındaki bilgileri dikkate alan yöntemlerle karşılaştırarak, gradyan inişi her iterasyonda kaybın iyileştirilmesi bakımından oldukça verimsiz olma eğilimindedir. Çok standart bir yöntem olan Newton'un Yöntemi , genellikle yakınsama için çok daha az yineleme gerektirir, yani lojistik regresyon için, Newton Metodunun 10 yinelemesi genellikle 5.000 gradyan inişinin sağladığı çözümden daha düşük bir kayıp olacaktır. Doğrusal regresyon için, bu daha da aşırıdır; kapalı bir form çözümü var! Bununla birlikte, yordayıcıların sayısı çok arttıkça (yani 500+), Newton'un Yöntemi / doğrusal regresyon için doğrudan çözme, yineleme başına çok pahalı olabilir gereken matris işlemlerinin miktarı nedeniyle, gradyan inişi yineleme başına önemli ölçüde daha az maliyete sahip olacaktır.

O(nk)nkn=106k<100n=1012k=103olacak. Bu durumda, verilerin daha küçük alt kümelerine dayanan türevi yaklaşık olarak hesaplayan yöntemler, stokastik gradyan inişi gibi daha caziptir .

Bu düzeltmelerin neredeyse zıt olduğunu söylüyorum, çünkü Newton'un yöntemi gibi bir şey güncelleme başına daha pahalı ama daha verimli (kayıptaki değişiklik açısından), stokastik gradyan inişi aslında güncelleme başına daha az verimli ama hesaplama açısından daha ucuz.


k

2
@Öğrenmeepageatatime: değişkenler = öngörücü değişkenler.
Cliff AB

10

L(w)f(x)Lwxwx

L(w)=(Lw1,,LwD),
D

wx

L(w)=i=1N(yiwTxi)2.
L(w)wNxN=106

3

Kısa cevap: Degradenin hesaplanması tüm veri noktalarının toplamını gerektirir. Büyük miktarda veriye sahipsek uzun zaman alır.

Burada detaylı bir cevabım var.

Stokastik degrade iniş, standart degrade inişe kıyasla zamandan nasıl tasarruf edebilir?


Öte yandan, yinelemeli yöntemlere ek olarak doğrudan yöntemler olduğunu da unutmayın (gradyan insana yakışır). En az kare problemini çözmek istiyorsak, doğrudan yöntem süper verimli olabilir. Örneğin, QR ayrışması. Çok fazla özelliğimiz yoksa, çok hızlıdır.

Bunu doğruladığınızda, sizi şaşırtabilir: 2 özellikli 5 milyon veri noktası, Doğrusal regresyon / en küçük kareyi çözmek birkaç saniye sürer!

x=matrix(runif(1e7),ncol=2)
y=runif(5e6)
start_time <- Sys.time()
lm(y~x)
end_time <- Sys.time()
end_time - start_time
# Time difference of 4.299081 secs

1

Bahsettiğiniz iki örnek genellikle dışbükey olsa da, dışbükey olmayan problemler hakkında bir nokta ekleyeceğim. Bence (parti) gradyan inişinin "verimsiz" olarak kabul edilmesinin iki ana nedeni vardır. "Büyük" fonksiyonların gradyanını hesaplamanın hesaplama çabası hakkındaki ilk nokta, diğer cevaplarda zaten çok açık bir şekilde belirtilmiştir. Bununla birlikte, dışbükey olmayan problemler için GD genellikle "yakın" bir yerel minimumda takılı kalma sorununa sahiptir. Bu minimum değer, küresel minimum değerle karşılaştırıldığında çok kötü olabilir. SGD veya mini-grup GD rastgele (en azından kısmen) rastgele dolaşmanın "avantajına" sahiptir ve bu nedenle daha iyi bir yerel minimum bulma şansına sahip olabilir. Bu CV yanıtına buradan bakın . Veya bu diğer CV yazısı rasgeleliğin nasıl faydalı olabileceğinin ana hatlarını çizmek.

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.