我试图通过绘制函数中参数的误差与值来理解梯度下降算法。什么是形式 y = f(x)的简单函数的例子,只有一个输入变量x和两个参数w1和w2,使得它具有非凸损失函数? y = w1.tanh(w2.x)是一个例子吗?我想要实现的是:
如何在不绘制图形的情况下知道函数是否具有非凸损失函数?
答案 0 :(得分:2)
在迭代优化算法(如梯度下降或高斯 - 牛顿)中,重要的是函数是否是局部凸。当且仅当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是事先修好的,并计算了导数wrt {{1} }。但我认为如果你想优化w1和w2(因为我认为如果你的函数来自玩具神经网络会更有意义),那么你可以用类似的方式计算x
Hessian。
答案 1 :(得分:0)
与高中代数相同:二阶导数告诉你弯曲的方向。如果在所有方向上都是负数,则函数是凸的。