我想创建一个简单的神经网络,在我的研究中,我想到了一个叫做梯度下降
的概念。那就是:
Imagine that you had a red ball inside of a rounded bucket. Imagine further that the red ball is trying to find the bottom of the bucket. This is optimization.
我使用这个教程:
http://iamtrask.github.io/2015/07/27/python-network-part2/
但我无法理解优化何时发生。当发生梯度下降时,最重要的是,与圆桶示例有什么关系?
本站还有一个教程(基本方法):
http://iamtrask.github.io/2015/07/12/basic-python-network/
根据这个网站,这个不是梯度下降,但第二个教程是相同的第一个,它称为梯度下降法。我无法理解这两个区别。
最佳答案
But I can't understand when optimization happens. When gradient descent happens and most importantly, What is the relation with the rounded bucket example?
对于所有机器学习问题,您都有一个损失函数。您离理想的解决方案越远,损失就越高。例如,在分类问题中,您可以计算当前分类器的误差。您可以将错误视为简单的损失函数。分类器犯的错误越多,情况就越糟。
现在您的模型有了参数。让我们称这些“权重”为w。如果你有 n 个,你可以写 w\in R^n。
对于每组权重 w,您可以为其分配一个错误。如果 n=2,您可以绘制此误差函数的图形。它可能看起来像这样:
x-y 平面上的每个位置都是一组参数。 z 方向上的点是误差。你想最小化错误。因此,您的优化问题是一个最小化问题。你想掉进那个碗里。你不知道这是一个碗,这只是一个想象。但是通过观察梯度,你可以计算出哪个方向会减少误差。因此梯度下降。通过优化权重减少错误。
通常,您没有 n=2,而是 n=100 * 10^6 或类似的东西。
Alec Redford 针对不同类型的梯度下降为这个过程做了几个很棒的可视化:
关于python - Python 中的梯度下降,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42065171/