ग्रेडिएंट डिसेंट में निश्चित स्टेप साइज़ का उपयोग करने पर मेरे कदम छोटे क्यों हो रहे हैं?


9

मान लीजिए कि हम ढाल पर एक खिलौना उदाहरण कर रहे हैं, एक द्विघात समारोह को कम करते हुए xTAएक्स, निश्चित चरण आकार का उपयोग कर α=0.03। (A=[10,2;2,3])

अगर हम ट्रेस ट्रेस करते हैं एक्सप्रत्येक पुनरावृत्ति में, हम निम्नलिखित आंकड़ा प्राप्त करते हैं। जब हम निश्चित चरण आकार का उपयोग करते हैं तो अंक "बहुत घने" क्यों मिलते हैं ? सहज रूप से, यह एक निश्चित कदम के आकार की तरह नहीं दिखता है, लेकिन एक घटते कदम के आकार का है।

यहाँ छवि विवरण दर्ज करें


पुनश्च: आर कोड में प्लॉट शामिल हैं।

A=rbind(c(10,2),c(2,3))
f <-function(x){
  v=t(x) %*% A %*% x
  as.numeric(v)
}
gr <-function(x){
  v = 2* A %*% x
  as.numeric(v)
}

x1=seq(-2,2,0.02)
x2=seq(-2,2,0.02)
df=expand.grid(x1=x1,x2=x2)
contour(x1,x2,matrix(apply(df, 1, f),ncol=sqrt(nrow(df))), labcex = 1.5, 
        levels=c(1,3,5,10,20,40))
grid()

opt_v=0
alpha=3e-2
x_trace=c(-2,-2)
x=c(-2,-2)
while(abs(f(x)-opt_v)>1e-6){
  x=x-alpha*gr(x)
  x_trace=rbind(x_trace,x)
}
points(x_trace, type='b', pch= ".", lwd=3, col="red")
text(x_trace, as.character(1:nrow(x_trace)), col="red")

आपका कोड आपके विवरण से मेल नहीं खाता: यह alpha=3e-2बजाय उपयोग करता है0.01।
— whuber

जवाबों:


12

चलो f(x)=12xTAx कहाँ पे Aसममित और सकारात्मक निश्चित है (मुझे लगता है कि यह धारणा आपके उदाहरण के आधार पर सुरक्षित है)। फिर∇f(x)=Ax और हम विकर्ण कर सकते हैं A जैसा A=QΛQT। आधार के परिवर्तन का उपयोग करेंy=QTx। तो हमारे पास हैं

f(y)=12yTΛy⟹∇f(y)=Λy.

Λ विकर्ण है इसलिए हम अपने अपडेट प्राप्त करते हैं

y(n+1)=y(n)−αΛy(n)=(I−αΛ)y(n)=(I−αΛ)n+1y(0).

इस का मतलब है कि 1−αλi अभिसरण को नियंत्रित करें, और हम केवल अभिसरण प्राप्त करें यदि |1−αλi|<1। आपके मामले में हमारे पास है

Λ≈(10.5002.5)
इसलिए
I−αΛ≈(0.89000.98).

हम eigenvector के साथ eigenvector के अनुरूप दिशा में अपेक्षाकृत जल्दी अभिसरण प्राप्त करते हैं λ≈10.5 के रूप में देखा कि कैसे पुनरावृत्त बहुत जल्दी paraboloid के स्टेपर भाग उतरते हैं, लेकिन छोटे eigenvalue के साथ eigenvector की दिशा में अभिसरण धीमा है क्योंकि 0.98 इतना करीब है 1। भले ही सीखने की दरα निश्चित है, इस दिशा में कदमों की वास्तविक परिमाण लगभग के अनुसार क्षय है (0.98)nजो धीमा और धीमा हो जाता है। यह इस दिशा में प्रगति में उस घातीय-दिखने वाली मंदी का कारण है (यह दोनों दिशाओं में होता है लेकिन दूसरी दिशा इतनी जल्दी बंद हो जाती है कि हमें ध्यान नहीं आता या परवाह नहीं है)। अगर इस मामले में अभिसरण बहुत तेजी से होगाα वृद्धि की गई थी।

इसके बारे में अधिक बेहतर और अधिक गहन चर्चा के लिए, मैं दृढ़ता से अनुशंसा करता हूं https://distill.pub/2017/momentum/ ।


विस्तृत जवाब और महान संदर्भ के लिए धन्यवाद!। का आधार बदलोyवास्तव में मेरी मदद की।
— डू

11

एक सुचारू कार्य के लिए, ∇च=0 स्थानीय मिनीमा में।

क्योंकि आपकी अपडेट स्कीम है α∇च, महत्व |∇च|कदम के आकार को नियंत्रित करता है। अपने द्विघात के मामले में|Δच|→0के रूप में अच्छी तरह से (बस अपने मामले में द्विघात के हेसियन गणना)। ध्यान दें कि यह हमेशा सच नहीं होता है। उदाहरण के लिए उसी योजना पर प्रयास करेंच(एक्स)=एक्स। फिर आपका चरण आकार हमेशा होता हैαइसलिए कभी नहीं घटेगा। या अधिक दिलचस्प है,च(एक्स,y)=एक्स+y2, जहां ग्रेड y में समन्वय 0 पर जाता है, लेकिन नहीं एक्ससमन्वय। चतुर्भुज के लिए कार्यप्रणाली के लिए चकोन का जवाब देखें।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.