Зачем оптимизировать максимальную логарифмическую вероятность вместо вероятности

66

В большинстве задач машинного обучения, где вы можете сформулировать некоторую вероятность которая должна быть максимизирована, мы фактически оптимизировали бы логарифмическую вероятность вместо вероятности для некоторых параметров . Например, в обучении с максимальным правдоподобием, это, как правило, логарифмическое правдоподобие. При выполнении этого с некоторым методом градиента, это включает в себя фактор:plogpθ

logpθ=1ppθ

Смотрите здесь или здесь для некоторых примеров.

Конечно, оптимизация эквивалентна, но градиент будет другим, поэтому любой метод, основанный на градиенте, будет вести себя иначе (особенно методы стохастического градиента). Есть ли основания полагать, что градиент работает лучше, чем градиент ?logpp

Альберт
источник
3
Вы должны заметить, что мы обычно максимизируем вероятность, используя производные. С другой стороны, во многих случаях применяется условие независимости, означающее, что вероятность является произведением некоторых функций плотности вероятности iid. Более того, произведение многих малых значений (в интервале [0,1]) приводит к очень маленькому значению. Это приводит к сложности вычислений.
TPArrow
@AlejandroRodriguez проверьте мой ответ здесь для более подробной информации.
Пол

Ответы:

65

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

В общем, нет никакой гарантии, что будет иметь такие большие свойства градиентного масштабирования, как этот игрушечный пример, особенно когда у нас более одной переменной. Однако для почти любой нетривиальной задачи будет намного лучше, чем . Это потому, что вероятность - это большой продукт с кучей терминов, и журнал превращает этот продукт в сумму, как отмечено в нескольких других ответах. При условии, что термины в вероятности хорошо себя ведут с точки зрения оптимизации, их журнал, как правило, хорошо себя ведет, а сумма функций хорошо ведет себя хорошо. Под хорошим поведением я подразумеваюlogp(x)logp(x)p(x)f(x)не меняется слишком сильно или слишком быстро, что приводит к почти квадратичной функции, которую легко оптимизировать с помощью градиентных методов. Сумма производной является производной от суммы, независимо от того, каков порядок производной, что помогает гарантировать, что эта большая куча слагаемых имеет очень разумную вторую производную!

Павел
источник
4
+1 Этот ответ поднимает и подчеркивает моменты, которые доходят до сути вопроса.
whuber
47

Underflow

Компьютер использует представление дробных чисел с плавающей запятой ограниченного числа, поэтому умножение такого количества вероятностей будет очень близко к нулю.

С у нас нет этой проблемы.log

Ури Горен
источник
3
+1 для числовой устойчивости - это и ответ Юрила должен быть один!
Алек Тил
1
Вы можете рассчитать продукт в лог-пространстве, таким образом, он станет суммой, а затем перенести его обратно. Или вы вычисляете который равен . Таким образом, численная стабильность не является вопросом. logpθppθ
Альберт
1
Имейте в виду, что вы упомянули, является умножением вероятностей всех событий в выборке, а является элементом, подверженным понижению. pp
Ури Горен
5
@Filip Терминология в этой теме несколько опрометчива. Мы обсуждаем плотности вероятностей , а не вероятностей. Плотности произвольны: они зависят от единиц измерения. Более того, для достаточных размеров выборки плотность вероятности любой простой выборки из параметрической модели в конечном итоге будет меньше . В больших задачах (с миллионами данных) плотности вероятности обычно составляют или меньше. Даже выборка размером из стандартного нормального распределения почти наверняка имеет плотность вероятности менее . 212721000000802127
whuber
4
@FilipHaglund: что бы это ни было правильно, однако, тот факт, что его плотность не является критическим наблюдением здесь. С тем же успехом мы могли бы обсуждать дискретный процесс и говорить о реальных вероятностях (и на самом деле ФП не сказал ничего, что исключало бы этот случай). Но мы говорим о вероятностях для очень конкретных результатов (например, миллион наблюдений, идущих определенным образом). Отдельный конкретный результат маловероятен, но в байесовском соотношении вероятности важны, поэтому мы должны знать, насколько больше одна крошечная вероятность от другой.
Мени Розенфельд
34
  1. Логарифм вероятности множественных совместных вероятностей упрощается до суммы логарифмов отдельных вероятностей (а правило сумм проще, чем правило произведения для дифференцирования).

    log(iP(xi))=ilog(P(xi))

  2. Логарифм члена семейства экспоненциальных распределений вероятностей (который включает в себя вездесущую нормаль) является полиномиальным по параметрам (т. Е. Максимальное правдоподобие сводится к наименьшим квадратам для нормальных распределений)

    log(exp(12x2))=12x2

  3. Последняя форма является более численно устойчивой и символически легче дифференцируемой, чем первая.

  4. И последнее, но не менее важное: логарифм представляет собой монотонное преобразование, которое сохраняет местоположения экстремумов (в частности, оценочные параметры по максимальному правдоподобию идентичны для исходной и лог-преобразованной формулировок)

TemplateRex
источник
5
Причина 2 не может быть подчеркнута достаточно. Чтобы максимизировать логарифмическую вероятность для линейной модели с гауссовским шумом, вам просто нужно решить задачу наименьших квадратов, которая сводится к решению линейной системы уравнений.
Пол
Причины 1 и 3 просто описывают, как рассчитать это. Вы можете рассчитать его таким образом, а затем преобразовать обратно (умножить на ), чтобы получить . На самом деле довольно часто вычислять в лог-пространстве для численной устойчивости. Но это не объясняет, почему вы используете этот градиент. Причина 4 также не является причиной, по которой градиент лучше. Вы можете сделать это и со многими другими преобразованиями. Причина 2 интересная, но я все еще не совсем уверен, почему градиент полинома лучше, чем градиент другой функции. ppθlogp
Альберт
@ Альберт, производная многочлена, является многочленом на один градус ниже (в частности, квадратичное переходит в линейное), тогда как экспоненты не просто дифференцируются
TemplateRex
@TemplateRex: Да, это понятно. Но я спрашиваю о свойствах сходимости в методе стохастического градиента.
Альберт
25

Намного проще взять производную от суммы логарифмов, чем взять производную от продукта, который содержит, скажем, 100 множителей.

Юрий
источник
10
Кроме того, вы уменьшаете потенциальные численные проблемы, когда термины становятся очень маленькими или большими.
Бьорн,
8
Напротив, OP неявно предоставляет отличный способ вычислить производную любого произведения неотрицательных функций: умножить сумму производных логарифмов на само произведение. (Это умножение лучше всего проводить в терминах логарифмов, что устраняет числовые проблемы, упомянутые в комментарии @ Björn.) Таким образом, «легкость» не дает реальной объяснительной силы и не затрагивает более значимый вопрос о сравнении градиентов. ,
whuber
10

Как правило, наиболее простой и простой задачей оптимизации является оптимизация квадратичной функции. Вы можете легко найти оптимальный вариант для такой функции, где бы вы ни начинали. Как это проявляется, зависит от конкретного метода, но чем ближе ваша функция к квадратичному, тем лучше.

Как отмечает TemplateRex, в широком спектре задач вероятности, которые входят в расчет функции правдоподобия, берутся из нормального распределения или аппроксимируются им. Поэтому, если вы работаете с журналом, вы получите хорошую квадратичную функцию. Принимая во внимание, что если вы работаете над вероятностями, у вас есть функция, которая

  1. Не является выпуклым (повсеместно отягощены алгоритмы оптимизации)
  2. Быстро пересекает несколько шкал, и поэтому имеет очень узкий диапазон, где значения функций указывают, куда направить ваш поиск.

Какую функцию вы бы предпочли оптимизировать, это или это ?

(На самом деле это было легко; в практических приложениях ваш поиск может начинаться настолько далеко от оптимума, что значения функций и градиенты, даже если вы смогли их численно вычислить, будут неотличимы от 0 и бесполезны для целей оптимизации. Алгоритм. Но преобразование в квадратичную функцию делает это легко.)

Обратите внимание, что это полностью согласуется с уже упомянутыми проблемами числовой стабильности. Причина, по которой для работы с этой функцией требуется масштаб журнала, - это та же самая причина, по которой вероятность ведения журнала намного лучше (для оптимизации и других целей), чем в оригинале.

Вы также можете подойти к этому по-другому. Даже если у лога не было никаких преимуществ (которые есть) - мы все равно будем использовать логарифмический масштаб для дериваций и вычислений, так какая же причина в том, чтобы применять преобразование exp только для вычисления градиента? Мы также можем оставаться в соответствии с журналом.

Мени Розенфельд
источник
@TemplateRex: журнал (нисходящей) выпуклой положительной функции выпуклый, но обратное неверно. Вероятности не выпуклые, поэтому им нечего сохранять, но бревно выпуклое. Посмотрите на графики, которые я связал - exp (-10x ^ 2) явно невыпуклый, но -10x ^ 2 есть.
Мени Розенфельд
4

Используя мы увеличиваем динамический диапазон алгоритма оптимизации. в приложениях, как правило , является продуктом функций. Например, при оценке максимального правдоподобия это произведение вида , где - функция плотности, которая может быть больше или меньше 1, между прочимlnppL(x|θ)=Πi=1nf(xi|θ)f(.)

Так что , когда очень велико, то есть большая выборка, ваша функция правдоподобия обычно далека от 1: это либо очень маленьких или очень большие, потому что это функция мощности .nL(.)Lf(.)n

Делая журнал, мы просто улучшаем динамический диапазон любого алгоритма оптимизации, позволяя ему работать с очень большими или маленькими значениями одинаково.

Аксакал
источник
0

Некоторые хорошие ответы уже были даны. Но я недавно столкнулся с новым:

Часто вам дается огромный набор обучающих данных , и вы определяете некоторую вероятностную модель , и вы хотите максимизировать вероятность для . Предполагается, что они независимы, т.е. у вас есть Теперь вы часто проводите какое-то стохастическое (мини-пакетное) обучение на основе градиента, т.е. на каждом шаге для вашей потери вы оптимизируете для , то есть Xp(x|θ)xX

p(X|θ)=xXp(x|θ).
LL(X|θ)XX
θ:=θxXL(x|θ)θ.
Теперь эти стохастические шаги накапливаются аддитивно. Из-за этого вам нужно свойство, которое в общем случае Это имеет место для
L(X|θ)=xXL(x|θ).
L(x|θ)=logp(x|θ).

Альберт
источник