...那么到底是什么使它凸出呢?
我发现这种重复遗漏有点烦人,因为我希望能够使用自己的成本函数设计自己的自适应算法,但是如果我无法确定我的成本函数是否产生凸误差面还是没有,我不会在应用诸如梯度下降之类的方法上走得太远,因为不会有全局最小值。也许我想变得有创意-也许我不想使用最小二乘作为错误标准。例如,
深入研究之后,(我的问题从这里开始),我发现为了为了能够判断您是否具有凸误差表面,必须确保您的Hessian矩阵是正半定的。对于对称矩阵,此测试很简单-只需确保Hessian矩阵的所有特征值均为非负值即可。 (如果您的矩阵不对称,则可以通过将其添加到自己的转置中并借助Gramian进行相同的特征值测试来使其对称,但这在这里并不重要)。
什么是黑森州矩阵? Hessian矩阵将成本函数的部分的所有可能组合编码。那里有几个局部?特征向量中的特征数量。如何计算局部数?从原始成本函数中“手动”取偏导数。
所以这就是我所做的:我假设我们有一个$ m $ x $ n $数据矩阵,用矩阵$ X $表示,其中$ m $表示示例数,而$ n $表示数每个示例的功能。 (也将是部分的数量)。我想我们可以说我们有来自传感器的$ m $个时间样本和$ n $个空间样本,但是物理应用在这里并不是太重要。
此外,我们还有一个向量$ y $大小为$ m $ x $ 1 $。 (这是您的“标签”向量,或与$ X $每行相对应的“答案”)。为简单起见,对于此特定示例,我假设$ m = n = 2 $。因此有2个“示例”和2个“功能”。
因此,现在假设您要在此处确定最适合的“线”或多项式。也就是说,您针对多项式系数向量$ \ boldsymbol {\ theta} $投影输入数据特征,从而使成本函数为:
$$
J(\ theta)= \ frac {1} {2m} \ sum_ {i = 1} ^ {m} \ bigg [\ theta_ {0} x_ {0} [i] + \ theta_ {1} x_ {1} [i]-y [i] \ bigg] ^ {2}
$$
现在,让我们采用w.r.t $ \ theta_ {0} $的一阶偏导数,(特征0)这样:
$$
\ frac {\ delta J(\ theta)} {\ delta \ theta_0} = \ frac {1} {m} \ sum_ {i = 1} ^ {m} \ bigg [\ theta_ {0} x_ {0} [i] + \ theta_ {1} x_ {1} [i]-y [i] \ bigg] x_ {0} [i]
$$
$$
\ frac {\ delta J(\ theta)} {\ delta \ theta_0} = \ frac {1} {m} \ sum_ {i = 1} ^ {m} \ bigg [\ theta_ {0} x_ {0} ^ {2} [i] + \ theta_ {1} x_ {1} [i] x_ {0} [i]-y [i] x_ {0} [i] \ bigg]
$$
现在,让我们计算所有第二部分,所以:
$$
\ frac {\ delta ^ {2} J(\ theta)} {\ delta \ theta_0 ^ {2}} = \ frac {1} {m} \ sum_ {i = 1} ^ {m} x_ {0} ^ {2} [i]
$$
$$
\ frac {\ delta ^ {2} J(\ theta)} {\ delta \ theta_0 \ theta_ {1}} = \ frac {1} {m} \ sum_ {i = 1} ^ {m} x_ {0} [i] x_ {1} [i]
$$
$$
\ frac {\ delta ^ {2} J(\ theta)} {\ delta \ theta_1 \ theta_ {0}} = \ frac {1} {m} \ sum_ {i = 1} ^ {m} x_ {1} [i] x_ {0} [i]
$$
$$
\ frac {\ delta ^ {2} J(\ theta)} {\ delta \ theta_1 ^ {2}} = \ frac {1} {m} \ sum_ {i = 1} ^ {m} x_ {1} ^ {2} [i]
$$
我们知道黑森州不过是什么:
$$
H(J(\ theta))= \ begin {bmatrix} \ frac {\ delta ^ {2} J(\ theta)} {\ delta \ theta_0 ^ {2}}和\ frac {\ delta ^ {2} J(\ theta)} {\ delta \ theta_0 \ theta_ {1}} \\ \ frac {\ delta ^ {2} J(\ theta)} {\ delta \ theta_1 \ theta_ {0}}&\ frac {\ delta ^ {2} J(\ theta)} {\ delta \ theta_1 ^ {2}} \ end {bmatrix}
$$
$$
H(J(\ theta))= \ begin {bmatrix} \ frac {1} {m} \ sum_ {i = 1} ^ {m} x_ {0} ^ {2} [i]&\ frac {1} {m} \ sum_ {i = 1} ^ {m} x_ {0} [i] x_ {1} [i] \\ \ frac {1} {m} \ sum_ {i = 1} ^ {m} x_ {1} [i] x_ {0} [i]和\ frac {1} {m} \ sum_ {i = 1} ^ {m} x_ {1} ^ {2} [i] \ end {bmatrix}
$$
现在,基于我如何构造数据矩阵$ X $(我的“功能”按列,而我的示例按行),Hessian似乎是:
$$
H(J(\ theta))= X ^ {T} X = \ Sigma
$$
...这不过是样本协方差矩阵!
所以我不太确定如何解释-还是应该说,我不太确定我应该在这里这么概括。但是我想我可以说:
始终为真:
黑森州矩阵始终控制着您的错误/成本面是凸的。
如果Hessian矩阵为pos-semi-def,则为凸形(并且可以愉快地使用梯度下降之类的算法收敛到最优解)。
仅适用于LSE:
LSE成本标准的Hessian矩阵不过是原始的协方差矩阵。 (!)。
对我来说,这意味着,如果我使用LSE准则,则数据本身将确定我是否具有凸面? ...那么这意味着我的协方差矩阵的特征向量某种程度上具有“塑造”成本表面的能力?这始终是真的吗?还是按照LSE标准进行计算?误差表面的凸度应该取决于数据,这与我的观点不符。
因此,将其放回原始问题的上下文中,如何确定误差冲浪(基于您选择的某些成本函数)是凸的还是凸的?不?该确定是基于数据还是基于Hessian?
感谢
TLDR:如何,准确,实用地确定我的成本函数和/或数据集是否产生凸面或非凸面误差表面?
#1 楼
您可以想到一维线性最小二乘法。成本函数类似于$ a ^ {2} $。那么一阶导数(Jacobian)为$ 2a $,因此线性为$ a $。二阶导数(Hessian)为$ 2 $-一个常数。由于二阶导数为正,因此您要处理凸成本函数。这等效于多元演算中的正定Hessian矩阵。
您只处理两个变量($ \ theta_ {1} $,$ \ theta_ {2} $),因此Hessian特别简单。
但是,实际上通常涉及许多变量,因此构建和检查Hessian是不切实际的。
更有效的方法是直接在Jacobian矩阵上工作最小二乘问题中的J $:
$$ Jx = b $$
$ J $可以是秩不足的,奇异的或接近奇异的。在这种情况下,成本函数的二次曲面几乎是平坦的和/或在某个方向上疯狂地拉伸。您还可以发现您的矩阵在理论上是可解的,但是解在数值上是不稳定的。可以使用一种预处理方法来处理这种情况。
某些算法可以简单地运行$ J $的Cholesky分解。如果算法失败,则意味着$ J $是奇异的(或病态的)。
从本质上讲,QR分解更稳定,但代价更高,只有在$ J $是规则的情况下,QR分解才存在最后,最先进的方法是奇异值分解(SVD),它最昂贵,可以在每个矩阵上完成,揭示$ J $的数值排名,并允许您
我写了一篇有关线性和非线性最小二乘解的文章,详细介绍了以下主题:
线性和非线性最小二乘使用Math.NET
也有参考书,涉及与最小二乘相关的高级主题(参数/数据点的协方差,预处理,缩放,正交距离回归-总最小二乘,确定最小二乘估计器的精度和准确性等)。 )。
我为该文章制作了一个示例项目,该项目是开源的:
LeastSquaresDemo-二进制
LeastSquaresDemo-源(C#)
评论
$ \ begingroup $
感谢Libor:1)切向,但是choleskey好像是矩阵平方根,是吗? 2)不确定我是否理解您关于黑森州如何告诉您有关误差表面上每个点处的凸度的观点-您是说一般吗?因为从上面的LSE派生,Hessian完全不依赖$ \ theta $参数,而仅依赖于数据。也许您是说一般? 3)最后,总的来说,如何确定错误表面是否凸出-仅坚持确保黑森州为SPD?但是您提到过,它可能取决于$ \ theta $ ...所以人们怎么能确定呢?谢谢!
$ \ endgroup $
–太空
2012年5月15日14:47
$ \ begingroup $
2)是的,我是说一般。在线性最小二乘法中,整个误差面具有恒定的Hessian。取平方的二次导数是恒定的,对于Hessian也是如此。 3)取决于数据矩阵的条件。如果Hessian是spd,则存在单个封闭解,并且误差面在所有方向上都是凸的。否则,数据矩阵是病态的或奇异的。我从未使用过Hessian来进行探测,而是检查数据矩阵的奇异值或检查它是否具有Cholesky分解。两种方式都会告诉您是否有解决方案。
$ \ endgroup $
– Libor
2012年5月15日15:08
$ \ begingroup $
Libor-1)如果可以,请添加您如何使用$ X $数据矩阵的SVD或如何使用Choleskey分解来检查您是否有一个封闭的解决方案,它们似乎非常有用并且这是一个好点,我很想学习如何使用它们。 2)最后,只是为了确保我对Hessian有所了解:因此,Hessian通常是$ \ theta $和/或$ X $的函数。如果是SPD,则我们有一个凸面。 (但是,如果Hessian中包含$ \ theta $,我们将不得不在所有出现的地方对其进行评估)。再次感谢。
$ \ endgroup $
–太空
2012年5月15日15:32
$ \ begingroup $
穆罕默德:1)我重写了答案,并在我的有关最小二乘的文章(可能有一些错误,我尚未正式发布)中添加了链接,包括工作示例项目。我希望它可以帮助您更深入地了解问题... 2)在线性最小二乘中,Hessian是常数,并且仅取决于数据点。通常,它也取决于模型参数,但这仅是非线性最小二乘的情况。
$ \ endgroup $
– Libor
2012年5月15日在21:12