Чому мої кроки стають меншими при використанні фіксованого розміру кроку в градієнтному спуску?


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

Відповіді:


12

Нехай де симетричний і позитивно визначений (я думаю, це припущення безпечне на основі вашого прикладу). Тоді , і ми можемо діагоналізовать , як . Скористайтеся зміною базису . Тоді маємо 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αλi|1αλi|<1

Λ(10.5002.5)
IαΛ(0.89000.98).

Ми отримуємо конвергенцію відносно швидко в напрямку, що відповідає власному вектору з власним значенням як видно з того, як ітерати досить швидко спускаються на більш круту частину параболоїда, але конвергенція повільна у напрямку власного вектора з меншим власним значенням, оскільки так близько до . Тож навіть незважаючи на те, що швидкість навчання є фіксованою, фактична величина кроків у цьому напрямку спадає приблизноλ10.50.981α(0,98)няка стає повільнішою і повільнішою. У цьому причина експоненціального сповільнення прогресу в цьому напрямку (це відбувається в обох напрямках, але інший напрямок стає досить близьким досить швидко, що ми цього не помічаємо і не піклуємося). У цьому випадку конвергенція була б набагато швидшою, якби збільшувались .α

Для набагато кращого та ретельнішого обговорення цього настійно рекомендую https://distill.pub/2017/momentum/ .


дякую за детальну відповідь та чудовий довідник !. змінити основу дійсно мені допомогли. у
Haitao Du

11

Для плавної функції в локальних мінімумах.f=0

Оскільки ваша схема оновлення дорівнює , величинакерує розміром кроку. У разі вашої квадратичної також (просто обчисліть гессіан квадратичного у вашому випадку). Зауважте, що це не завжди повинно бути правдою. Наприклад, спробуйте ту саму схему на . Тоді розмір кроку завжди отже, ніколи не зменшиться. Або, що цікавіше, , де градієнт переходить до 0 у координаті y, але не координата . Дивіться відповідь Чаконе щодо методології квадратики.αf|f||Δf|0f(х)=хαf(х,у)=х+у2х

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.