Градієнтні методи, як правило, краще оптимізують ніж тому що градієнт як правило, більш масштабований . Тобто, він має розмір, який послідовно та корисно відображає геометрію цільової функції, полегшуючи вибір відповідного розміру кроку та досягти оптимального за кілька кроків.logp(x)p(x)logp(x)
Щоб побачити, що я маю на увазі, порівняйте процес оптимізації градієнта для та . У будь-якій точці градієнт дорівнюєЯкщо ми помножимо це на , ми отримаємо точний розмір кроку, необхідний для досягнення глобального оптимуму у початку, незалежно від того,p(x)=exp(−x2)f(x)=logp(x)=−x2xf(x)
f′(x)=−2x.
1/2xє. Це означає, що нам не доводиться надто працювати, щоб отримати хороший розмір кроків (або "швидкість навчання" в жаргоні ML). Незалежно від того, де знаходиться наша початкова точка, ми просто встановимо наш крок на половину градієнта, і ми будемо біля початку в один крок. І якщо ми не знаємо точний коефіцієнт, який необхідний, ми можемо просто вибрати розмір кроку навколо 1, здійснити невеликий пошук рядків, і ми дуже швидко знайдемо великий розмір кроку, який добре працює незалежно від того, де є. Ця властивість є надійною для перекладу та масштабування . Хоча масштабування призведе до того, що оптимальне масштабування кроків буде відрізнятися від 1/2, принаймні масштабне ступінь буде однаковим, незалежно від того, що таке , тому нам потрібно знайти лише один параметр для отримання ефективної оптимізації на основі градієнта схема.
xf(x)f(x)x
Навпаки, градієнт має дуже погані глобальні властивості для оптимізації. МаємоЦе помножує ідеально приємний градієнт з коефіцієнтом який занепадає (швидше, ніж) експоненціально в міру збільшення . У нас вже є , тому крок уздовж вектора градієнта приблизно разів замалий. Щоб отримати розумний розмір кроку до оптимального, нам доведеться масштабувати градієнт шляхом зворотної, величезної постійноїp(x)
p′(x)=f′(x)p(x)=−2xexp(−x2).
−2xexp(−x2)xx=5exp(−x2)=1.4⋅10−1110−11∼1011. Такий погано масштабований градієнт гірший, ніж марний для оптимізаційних цілей - нам було б краще просто спробувати одиничний крок у гору, ніж встановити наш крок шляхом масштабування проти ! (У багатьох змінних стає дещо кориснішим, оскільки ми принаймні отримуємо інформацію про напрямки з градієнта, але проблема масштабування залишається.)
p′(x)p′(x)
Загалом немає гарантії, що матиме такі великі властивості масштабування градієнта, як цей приклад іграшки, особливо коли у нас є більше однієї змінної. Однак для майже будь-якої нетривіальної проблеми буде набагато кращим, ніж . Це тому, що ймовірність - це великий продукт з купою термінів, і журнал перетворює цей товар на суму, як зазначається в кількох інших відповідях. За умови, що умови, ймовірно, добре поводяться з точки зору оптимізації, їхній журнал, як правило, добре ведеться, а сума належних функцій добре дотримується. Під поводженням я маю на увазіlogp(x)logp(x)p(x)f′′(x)не змінюється занадто сильно або занадто швидко, що призводить до майже квадратичної функції, яку легко оптимізувати градієнтними методами. Сума похідної - це похідна від суми, незалежно від того, який порядок є похідним, що допомагає забезпечити, що велика купа суми має дуже розумну другу похідну!