损失函数是不是凸的?
不是
-
全局最优不一定是好的解,局部最优不一定是差的解
-
NN中设计得**函数是为了引入非线性变换,凸不凸都可以
NN不凸,是多个隐藏层导致的,即使每一层**函数都是凸的,目标函数依旧是非凸问题。 -
**函数设计为凸就可以得到凸的优化目标,然而NN不凸,是多个隐藏层导致的,即使每一层**函数都是凸的,目标函数依旧是非凸问题,举例说明
举例说明:假设一个NN的最后一层为least square loss(凸的): ,其中是NN的预测值,
对这个NN做最简单的假设,比如 ,也就是说这个NN一共有两层,第一层的参数为 第二层的参数为,两层都使用最简单的作为**函数f(x)=x,代入到目标函数中,目标函数变成,显然这是个非凸的目标函数(两次线性变换其实等价于一次线性变换,此处这么写是为了方便举例)。何况设计NN的时候,都会采用更复杂的** 函数,其中分别是第一层和第二层的**函数,无论这两个函数是不是凸,最终的目标函数都不会是凸优化问题。
- 凸的NN,以前也有人做过。比如:Yoshua Bengio的Convex Neural Networks,还有 Convex Deep Learning via Normalized Kernels。
activation 是凸函数,多层之后好多凸函数的composition 也不一定是凸的。
example:
在 上凸, ff(fx) 是concave的。
大家以前认为,deep learning的loss的形状会是布满弹坑的样子:
于是,梯度下降到local minimum如果不是global minimum就出大问题了。
但其实对于deep learning,我们是在一个非常高维的世界里做梯度下降。这时的 local minimum 很难形成,因为局部最小值要求函数在所有维度上都是局部最小。更实际得情况是,函数会落到一个saddle-point上,如下图:
在saddle-point上会有一大片很平坦的平原,让梯度几乎为0,导致无法继续下降。反倒是local/global minimum的问题,大家发现其实不同的local minimum其实差不多(反正都是over-fitting training data,lol)
根据现在最新的研究成果,多层神经网络,大部分局部极小值都在底部 ,已经非常接近全局最小值, 大家看下面这张图,可能就更清楚了
这张图,横坐标是临界点,纵坐标是错误率,可以看到,大部分临界点的确都已经很接近全局最小了.
以我们平时的经验来看,训练到底的全局最小值往往意味着过拟合 ,找到全局最小也许反而是件坏事
参考资料
https://www.zhihu.com/question/38549801