在大多数机器学习任务中,您可以制定应最大化的概率,我们实际上将优化对数概率而不是某些参数的概率。例如,在最大似然训练中,通常是对数似然。使用某些渐变方法进行此操作时,涉及一个因素:数p θ
当然,优化是等效的,但梯度会有所不同,因此任何基于梯度的方法的行为都会有所不同(尤其是随机梯度方法)。是否有理由证明梯度比梯度更好?p
在大多数机器学习任务中,您可以制定应最大化的概率,我们实际上将优化对数概率而不是某些参数的概率。例如,在最大似然训练中,通常是对数似然。使用某些渐变方法进行此操作时,涉及一个因素:数p θ
当然,优化是等效的,但梯度会有所不同,因此任何基于梯度的方法的行为都会有所不同(尤其是随机梯度方法)。是否有理由证明梯度比梯度更好?p
Answers:
梯度方法通常比p (x )更好地优化因为log p (x )的梯度通常更易于缩放。也就是说,它的大小可以始终如一地帮助反映目标函数的几何形状,从而更容易选择合适的步长并以更少的步长达到最佳状态。
要了解我的意思,请比较和f (x )= log p (x )= − x 2的梯度优化过程。在任意点x处,f (x )的梯度为f '(x )= − 2 x 。如果我们乘上1 / 2
相比之下,的梯度具有非常差的全局特性,无法进行优化。我们有p '(x )= f '(x )p (x )= − 2 x exp (− x 2)。这将完美的,行为良好的渐变− 2 x与因数exp (− x 2)相乘,该因数随x的衰减(快于x)
通常,不能保证会像这个玩具示例一样具有如此大的渐变比例属性,尤其是当我们有多个变量时。但是,对于几乎所有非平凡的问题,log p (x )都会变得更好,比p (x )更好。这是因为可能性是一个包含大量项的大乘积,对数将乘积转化为总和,如其他几个答案所述。从优化的角度出发,假设似然项是良好的,它们的对数通常是良好的,并且良好的函数之和是良好的。通过行为良好,我的意思是不会改变得太快或太快,导致了几乎是二次函数,可以通过梯度方法轻松优化。无论导数的阶数如何,导数的和都是该和的导数,这有助于确保一大堆总和项具有非常合理的二阶导数!
多个联合概率的对数简化为单个概率的对数之和(并且求和规则比求积规则要容易得多)
指数概率分布族的一个成员的对数(包括普遍存在的正态)在参数中是多项式的(即,对于正态分布,max-likelihood减小为最小二乘)
与前一种形式相比,后一种形式在数值上更稳定,并且在符号上更易于区分。
最后但并非最不重要的一点,对数是保留了极值位置的单调变换(特别是,对于原始公式和对数变换公式,最大似然的估计参数相同)
通常,最基本,最简单的优化问题是优化二次函数。无论从何处开始,都可以轻松找到此类功能的最佳选择。这种表现方式取决于特定的方法,但是您的函数越接近二次方就越好。
正如TemplateRex所指出的,在各种各样的问题中,用于计算似然函数的概率来自正态分布,或由正态分布近似。因此,如果您处理日志,则会得到很好的二次函数。而如果您处理这些概率,则可以使用
(这实际上很简单;在实际应用中,您的搜索可能会偏离最佳值,以至于即使您能够进行数值计算,函数值和梯度也将与0难以区分,并且对于优化目的毫无用处。算法。但是将其转换为二次函数就可以轻松完成。)
注意,这与已经提到的数值稳定性问题完全一致。使用此功能需要对数刻度的原因,这与对数概率表现出更好的效果(出于优化和其他目的)的原因完全相同。
您也可以采用另一种方法。即使对数没有任何优势(有)-我们还是要使用对数刻度进行推导和计算,所以有什么理由将exp变换仅用于计算梯度呢?我们也可能与日志保持一致。