ทำไมขั้นตอนของฉันถึงเล็กลงเมื่อใช้ขนาดขั้นตอนคงที่ในการไล่ระดับสีแบบลาดชัน


9

สมมติว่าเรากำลังทำตัวอย่างของเล่นในการไล่ระดับสีที่ดีลดฟังก์ชันกำลังสองโดยใช้ขั้นตอนขนาดคงที่\( )xTAxα=0.03A=[10,2;2,3]

ถ้าเราพล็อตการติดตามของในการวนซ้ำแต่ละครั้งเราจะได้ตัวเลขดังต่อไปนี้ ทำไมคะแนนจึงมีความหนาแน่นสูงเมื่อเราใช้ขนาดขั้นตอนคงที่ โดยสังหรณ์ใจมันไม่ได้ดูเหมือนขนาดขั้นตอนคงที่ แต่ขนาดขั้นตอนลดลงx

ป้อนคำอธิบายรูปภาพที่นี่


PS: รหัส R รวมถึงพล็อต

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.010.01
whuber

คำตอบ:


12

ให้โดยที่มีความสมมาตรและเป็นบวกแน่นอน (ฉันคิดว่าสมมติฐานนี้ปลอดภัยตามตัวอย่างของคุณ) แล้วและเราสามารถ diagonalize เป็น T ใช้การเปลี่ยนแปลงของพื้นฐานx จากนั้นเรามี f(x)=12xTAxAf(x)=AxAA=QΛQTy=QTx

f(y)=12yTΛyf(y)=Λy.

Λเป็นแนวทแยงดังนั้นเราจึงได้รับการอัปเดตเป็น

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

ซึ่งหมายความว่าควบคุมการบรรจบกันและเราจะได้รับการลู่เข้าถ้า<1ในกรณีของคุณเรามี ดังนั้น 1αλi|1αλi|<1

Λ(10.5002.5)
IαΛ(0.89000.98).

เราได้รับการบรรจบกันค่อนข้างเร็วในทิศทางที่สอดคล้องกับไอเก็นเวกเตอร์กับไอเกนแวลูเท่าที่เห็นโดยการวนซ้ำลงส่วนที่ชันชันของพาราโบลาค่อนข้างเร็ว แต่การบรรจบกันช้าในทิศทางของไอเกนใกล้เคียงกับมาก ดังนั้นแม้ว่าอัตราการเรียนรู้คงที่ แต่ขนาดที่แท้จริงของขั้นตอนในทิศทางนี้จะลดลงตามประมาณλ10.50.981α(0.98)nซึ่งช้าลงและช้าลง นั่นคือสาเหตุของการชะลอตัวของการดูแบบเอ็กซ์โปเนนเชียลในความคืบหน้าในทิศทางนี้ (มันเกิดขึ้นในทั้งสองทิศทาง แต่ทิศทางอื่นใกล้เข้ามาเร็วพอที่เราจะไม่สังเกตหรือไม่สนใจ) ในกรณีนี้การลู่เข้าจะเร็วขึ้นมากถ้าเพิ่มขึ้นα

สำหรับการอภิปรายที่ดีมากและทั่วถึงมากกว่านี้ผมขอแนะนำhttps://distill.pub/2017/momentum/


ขอบคุณสำหรับคำตอบโดยละเอียดและการอ้างอิงที่ยอดเยี่ยม! เปลี่ยนพื้นฐานของช่วยฉันจริงๆ y
Haitao Du

11

สำหรับฟังก์ชั่นที่ราบรื่นที่ local minimaf=0

เนื่องจากรูปแบบการอัปเดตของคุณคือ , ขนาดควบคุมขนาดขั้นตอน ในกรณีของสมการกำลังสองของคุณเช่นกัน (เพียงคำนวณ hessian ของกำลังสองในกรณีของคุณ) โปรดทราบว่าสิ่งนี้ไม่จำเป็นต้องเป็นจริงเสมอไป ตัวอย่างเช่นลองโครงการเดียวกันใน x จากนั้นขนาดขั้นตอนของคุณจะเป็นเสมอดังนั้นจะไม่ลดลง หรือน่าสนใจกว่านั้นคือซึ่งการไล่ระดับสีไปที่ 0 ในพิกัด y แต่ไม่ใช่พิกัดดูคำตอบของ Chaconne สำหรับวิธีการสำหรับ quadraticsαf|f||Δf|0f(x)=xαf(x,y)=x+y2x

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.