Методы градиента обычно работают лучше, оптимизируя чем потому что градиент обычно более хорошо масштабируется . Таким образом, он имеет размер, который последовательно и полезно отражает геометрию целевой функции, облегчая выбор подходящего размера шага и достижение оптимального за меньшее количество шагов.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)не меняется слишком сильно или слишком быстро, что приводит к почти квадратичной функции, которую легко оптимизировать с помощью градиентных методов. Сумма производной является производной от суммы, независимо от того, каков порядок производной, что помогает гарантировать, что эта большая куча слагаемых имеет очень разумную вторую производную!