optimization - 非凸损失函数

标签 optimization machine-learning gradient-descent

我试图通过绘制函数中参数的误差与值来理解梯度下降算法。 y = f(x) 形式的简单函数的示例是什么?只有一个输入变量 x 和两个参数 w1 和 w2,这样它就具有非凸损失函数? y = w1.tanh(w2.x) 是一个例子吗?我想要实现的是: enter image description here

如何在不绘制图形的情况下知道该函数是否具有非凸损失函数?

最佳答案

在梯度下降或高斯牛顿等迭代优化算法中,重要的是函数是否是局部凸的。当且仅当 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 的符号,而该符号可能会因您以 xw2 形式提供的值。因此,我们可以说它并非处处凸。

编辑:我不清楚一个输入变量和两个参数的含义,因此我假设 w1 和 w2 已预先固定,并计算了 w.r.t x 的导数。但我认为,如果你想优化 w1 和 w2 (我认为如果你的函数来自玩具神经网络,它更有意义),那么你可以用类似的方法计算 2*2 Hessian方式。

关于optimization - 非凸损失函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43920812/

相关文章:

java - SQLite 写入速度非常慢

c - 为什么代码不断调用 mmap 和 munmap?

linux - 体积图像数据的分布式处理

python - CNN 对猫/狗图像二元分类的准确度并不比随机分类好

tensorflow - Tensorflow 和 Theano 这样的动量梯度更新有什么不同?

python - tensorflow ,凯拉斯 : How to create a trainable variable that only update in specific positions?

machine-learning - 我如何知道成本函数是否已达到最小值?

ruby 新手 : are hashes speedy and optimal for storage or should I make a tuple?

list - 如何避免不必要的计算?

machine-learning - 如何分割在keras中训练的模型?