我试图通过绘制函数中参数的误差与值来理解梯度下降算法。 y = f(x) 形式的简单函数的示例是什么?只有一个输入变量 x 和两个参数 w1 和 w2,这样它就具有非凸损失函数? y = w1.tanh(w2.x) 是一个例子吗?我想要实现的是:
如何在不绘制图形的情况下知道该函数是否具有非凸损失函数?
最佳答案
在梯度下降或高斯牛顿等迭代优化算法中,重要的是函数是否是局部凸的。当且仅当 Hessian 矩阵(梯度雅可比)是半正定时,这是正确的(在凸集上)。至于一个变量的非凸函数(请参阅下面我的编辑),一个完美的例子就是您提供的函数。这是因为它的二阶导数,即 Hessian(此处的大小为 1*1)可以计算如下:
first_deriv=d(w1*tanh(w2*x))/dx= w1*w2 * sech^2(w2*x)
second_deriv=d(first_deriv)/dx=some_const*sech^2(w2*x)*tanh(w2*x)
sech^2
部分始终为正,因此 second_deriv
的符号取决于 tanh
的符号,而该符号可能会因您以 x
和 w2
形式提供的值。因此,我们可以说它并非处处凸。
编辑:我不清楚一个输入变量和两个参数的含义,因此我假设 w1 和 w2 已预先固定,并计算了 w.r.t x 的导数
。但我认为,如果你想优化 w1 和 w2 (我认为如果你的函数来自玩具神经网络,它更有意义),那么你可以用类似的方法计算 2*2
Hessian方式。
关于optimization - 非凸损失函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43920812/