为什么要优化最大对数概率而不是概率


66

在大多数机器学习任务中,您可以制定应最大化的概率,我们实际上将优化对数概率而不是某些参数的概率。例如,在最大似然训练中,通常是对数似然。使用某些渐变方法进行此操作时,涉及一个因素:p θplogpθ

logpθ=1ppθ

有关示例,请参见此处此处

当然,优化是等效的,但梯度会有所不同,因此任何基于梯度的方法的行为都会有所不同(尤其是随机梯度方法)。是否有理由证明梯度比梯度更好?plogpp


3
您需要注意,我们通常使用导数来最大化似然性。另一方面,在许多情况下应用独立性条件,这意味着似然性是某些同义概率密度函数的乘积。而且,许多小的值(在[0,1]间隔内)的乘积会导致非常小的值。这导致计算困难。
TPArrow

@AlejandroRodriguez 在这里查看我的答案以获取更多详细信息。
保罗

Answers:


65

梯度方法通常比p x 更好地优化因为log p x 的梯度通常更易于缩放。也就是说,它的大小可以始终如一地帮助反映目标函数的几何形状,从而更容易选择合适的步长并以更少的步长达到最佳状态。日志pXpX日志pX

要了解我的意思,请比较f x = log p x = x 2的梯度优化过程。在任意点x处f x 的梯度为f 'x = 2 x 如果我们乘上1 / 2pX=经验值-X2FX=日志pX=-X2XFX

FX=-2X
1个/2,无论是多少,我们都会获得在原点达到全局最优所需的精确步长。这意味着我们不必费劲就能获得良好的步长(或用ML术语“学习率”)。无论我们的起始点在哪里,我们都将步长设置为渐变的一半,然后一步步到达原点。而且,如果我们不知道所需的确切因素,我们可以选择一个大约为1的步长,进行一些线搜索,然后我们会很快找到一个很大的步长,无论在哪里,它都可以正常工作x是。该属性对于f x )的平移和缩放具有鲁棒性。缩放f x XXFXFX会导致最佳步长比例不同于1/2,至少步长比例将是相同的,无论是多少,因此我们只需找到一个参数即可获得有效的基于梯度的优化方案。X

相比之下,的梯度具有非常差的全局特性,无法进行优化。我们有p 'x = f 'x p x = 2 x exp x 2这将完美的,行为良好的渐变2 x与因数exp x 2相乘,该因数随x的衰减(快于x)pX

pX=FXpX=-2X经验值-X2
-2X经验值-X2X增加。在,我们已经有EXP - X 2= 1.4 10 - 11,因此沿着梯度矢量的工序为约10 - 11倍太小。为了使合理的步长达到最佳,我们必须按梯度的倒数来缩放梯度,其常数约为10 11。这样的缩放比例差的缩放效果比出于优化目的无用的效果更糟-我们最好只是尝试在上坡方向上执行一个单位步长,而不是通过针对p 'x 缩放设置步长X=5经验值-X2=1.410-1110-111011pX!(在许多变量中,变得更加有用,因为我们至少从梯度中获取了方向信息,但是缩放问题仍然存在。)pX

通常,不能保证会像这个玩具示例一样具有如此大的渐变比例属性,尤其是当我们有多个变量时。但是,对于几乎所有非平凡的问题,log p x 都会变得更好,比p x 更好。这是因为可能性是一个包含大量项的大乘积,对数将乘积转化为总和,如其他几个答案所述。从优化的角度出发,假设似然项是良好的,它们的对数通常是良好的,并且良好的函数之和是良好的。通过日志pX日志pXpX行为良好,我的意思是不会改变得太快或太快,导致了几乎是二次函数,可以通过梯度方法轻松优化。无论导数的阶数如何,导数的和都是该和的导数,这有助于确保一大堆总和项具有非常合理的二阶导数!F''X


4
+1此答案提出并强调了成为问题核心的要点。
ub

47

下溢

计算机使用分数的有限数字浮点表示形式,因此将许多概率相乘可以保证非常非常接近零。

使用,我们没有这个问题。ØG


3
+1以获得数值稳定性-这和Yuril的答案应该是一个!
亚历克·蒂尔

1
您可以在对数空间中计算乘积,从而将其变成一个总和,然后将其转回。或者你计算等于p日志pθp。因此,数值稳定性不是问题。pθ
艾伯特

1
请记住,在你所提到的,是所有样本中的事件的概率乘法,而p是元素受到溢。pp
Uri Goren 2015年

5
212721000000802127

4
@FilipHaglund:抱怨是正确的,但是,它的密度并不是在这里的关键观察。我们也可以讨论一个离散的过程并讨论实际概率(实际上,OP没有说任何排除这种情况的东西)。但是,我们谈论的是非常特定结果的概率(例如,一百万个观察结果以某种特定方式出现)。一个特定的结果不太可能,但是在贝叶斯推理中,概率比很重要,因此我们需要知道一个小概率与另一个小概率有多大。
Meni Rosenfeld

34
  1. 多个联合概率的对数简化为单个概率的对数之和(并且求和规则比求积规则要容易得多)

    日志一世PX一世=一世日志PX一世

  2. 指数概率分布族的一个成员的对数(包括普遍存在的正态)在参数中是多项式的(即,对于正态分布,max-likelihood减小为最小二乘

    日志经验值-1个2X2=-1个2X2

  3. 与前一种形式相比,后一种形式在数值上稳定,并且在符号上更易于区分。

  4. 最后但并非最不重要的一点,对数是保留了极值位置的单调变换(特别是,对于原始公式和对数变换公式,最大似然的估计参数相同)


5
原因2强调不够。为了使具有高斯噪声的线性模型的对数似然性最大化,您只需要解决最小二乘问题,就等于解决了线性方程组。
保罗

ppθ日志p

@Albert多项式的导数是低一阶的多项式(特别是,二次变为线性),而指数并不仅仅在微分下
TemplateRex

@TemplateRex:是的,很明显。但是我想问一下随机梯度法的收敛特性。
艾伯特

25

取对数和的导数要比取包含100乘数的乘积的导数容易得多。


10
此外,当项变得很小或很大时,您还可以减少潜在的数字问题。
比约恩

8
相反,OP隐式提供了一种计算任何非负函数乘积的极好方法:将对数的导数之和乘以乘积本身。(这种乘法最好以对数的形式进行,这样也可以消除@Björn评论中提到的数值问题。)因此,“缓动”没有提供真正的解释能力,也没有解决关于比较梯度的更有意义的问题。
ub

10

通常,最基本,最简单的优化问题是优化二次函数。无论从何处开始,都可以轻松找到此类功能的最佳选择。这种表现方式取决于特定的方法,但是您的函数越接近二次方就越好。

正如TemplateRex所指出的,在各种各样的问题中,用于计算似然函数的概率来自正态分布,或由正态分布近似。因此,如果您处理日志,则会得到很好的二次函数。而如果您处理这些概率,则可以使用

  1. 不凸(无处不在的优化算法)
  2. 快速跨越多个尺度,因此范围非常狭窄,函数值指示将搜索定向到何处。

您想优化哪个函数,thisthis

(这实际上很简单;在实际应用中,您的搜索可能会偏离最佳值,以至于即使您能够进行数值计算,函数值和梯度也将与0难以区分,并且对于优化目的毫无用处。算法。但是将其转换为二次函数就可以轻松完成。)

注意,这与已经提到的数值稳定性问题完全一致。使用此功能需要对数刻度的原因,这与对数概率表现出更好的效果(出于优化和其他目的)的原因完全相同。

您也可以采用另一种方法。即使对数没有任何优势(有)-我们还是要使用对数刻度进行推导和计算,所以有什么理由将exp变换仅用于计算梯度呢?我们也可能与日志保持一致。


@TemplateRex :(向下)凸正函数的对数是凸,但反之则不成立。概率不是凸的,因此没有什么可保留的,但是对数是凸的。看一下我链接的图-exp(-10x ^ 2)显然是非凸的,但-10x ^ 2是。
Meni Rosenfeld

4

lnpp大号X|θ=Π一世=1个ñFX一世|θF

ñ大号大号Fñ

通过记录日志,我们可以简单地提高任何优化算法的动态范围,使其以相同的方式适用于极大或极小的值。


0

已经给出了一些不错的答案。但是我最近遇到了一个新的:

XpX|θXX

pX|θ=XXpX|θ
大号大号X|θXX
θ:=θ-XX大号X|θθ
大号X|θ=XX大号X|θ
大号X|θ=-日志pX|θ

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.