Mak*_*ich 8 machine-learning neural-network deep-learning tensorflow
我正在玩tensorflow很长一段时间,我有更多的理论问题.通常,当我们训练网络时,我们通常使用GradientDescentOptimizer(可能是adagrad或adam的变体)来最小化损失函数.一般来说,我们似乎正在尝试调整权重和偏差,以便我们获得此损失函数的全局最小值.但问题是我假设这个函数有一个非常复杂的外观,如果你绘制它,有很多局部优化.我想知道的是,我们怎样才能确定Gradient Descent找到全局最优并且我们没有立即陷入某些局部最优而不是全局最优?
我记得,例如当你在sklearn中执行聚类时,它通常会随着群集中心的随机初始化多次运行聚类算法,并且通过这样做,我们确保我们不会陷入不优化的结果.但是我们在张量流中训练人工神经网络时并没有做这样的事情 - 我们从一些随机权重开始,然后沿着函数的斜率行进.
那么,对此有何见解?为什么我们可以或多或少地确定一旦损失停止显着减少,通过梯度下降的训练结果接近全局最小值?
只是为了澄清,为什么我想知道这个问题是,如果我们不能确定我们至少接近全球最小值,我们就不能轻易判断出哪两个不同的模型实际上更好.因为我们可以进行实验,得到一些模型评估,表明模型不好......但实际上它只是在训练开始后不久就陷入了局部最低限度.虽然对我们来说似乎更好的其他模型更幸运的是从更好的起点开始训练并且没有陷入局部最低速度.此外,这个问题意味着我们甚至不能确定我们从目前可以测试的网络架构中获得最大化.例如,它可能具有非常好的全局最小值,但很难找到它,而且我们大多陷入局部最小值的不良解决方案,这将远离全局最优并且永远不会看到手头的网络的全部潜力.
从本质上讲,梯度下降是在局部观察局部函数(局部梯度).因此,绝对不能保证它将成为全球最小值.事实上,除非函数是凸的,否则它可能不会.这也是GD喜欢的方法对你开始的初始位置敏感的原因.话虽如此,最近有一篇文章说,在高维解空间中,最大值/最小值的数量并不像以前想象的那么多.
以合理的方式在高维空间中寻找全局最小值似乎是一个未解决的问题.但是,您可能希望更多地关注马鞍点而不是最小值.请参阅此帖子,例如:
这里有更详细的论文(https://arxiv.org/pdf/1406.2572.pdf)
| 归档时间: |
|
| 查看次数: |
1720 次 |
| 最近记录: |