python - Python 中的梯度下降

标签 python machine-learning neural-network artificial-intelligence deep-learning

我想创建一个简单的神经网络,在我的研究中,我想到了一个叫做梯度下降的概念。那就是:

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,您可以绘制此误差函数的图形。它可能看起来像这样:

enter image description here

x-y 平面上的每个位置都是一组参数。 z 方向上的点是误差。你想最小化错误。因此,您的优化问题是一个最小化问题。你想掉进那个碗里。你不知道这是一个碗,这只是一个想象。但是通过观察梯度,你可以计算出哪个方向会减少误差。因此梯度下降。通过优化权重减少错误。

通常,您没有 n=2,而是 n=100 * 10^6 或类似的东西。

Alec Redford 针对不同类型的梯度下降为这个过程做了几个很棒的可视化:

enter image description here

Source

关于python - Python 中的梯度下降,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42065171/

相关文章:

Python内存表数据结构分析(dict、list、combo)

python - 选择只有一个唯一值的 pandas 数据框列

python - 对 scikit 学习决策树中的 random_state 感到困惑

machine-learning - 在 Tensorflow 中切片稀疏张量?

machine-learning - 我应该应用哪些人工神经网络概念?

python - TensorFlow:简单的递归神经网络

machine-learning - 神经网络-Softmax交叉熵损失减少对应准确率下降

python - "(?u)"在正则表达式中做什么?

python - 将数据帧与单个值进行比较时如何获取返回的模式

python - Keras 始终输出恒定值