如何调整梯度下降中的权重
how to adjust the weights in gradient descent
我目前正在尝试教我一些有关神经网络的知识。所以我给自己买了这本 Wolfgang Beer 写的叫做 Applied Artificial Intelligence 的书,现在我一直在理解他的部分代码。其实我理解代码我只是不理解它背后的一个数学步骤......
该部分如下所示:
for i in range(iterations):
guessed = sig(inputs*weights)
error = output - guessed
adjustment = error*sig_d(outpus)
#Why is there no learningrate?
#Why is the adjustment relative to the error
#muliplied by the derivative of your main function?
weights += adjustment
我试图查看梯度下降法的工作原理,但我从未了解过调整权重的部分。它背后的数学是如何工作的,为什么要使用导数呢?
Alo 当我开始在互联网上寻找其他解决方案时,我总是看到它们使用学习率。我理解它的概念,但为什么本书没有使用这种方法?如果有人能回答我这些问题,那真的对我有帮助...
感谢过去所有这些快速响应。
为什么没有学习率?
- 有很多不同风格的神经网络,一些会使用学习率,而另一些可能只是保持这个常数
为什么是相对误差的调整
- 它还应该与什么相关?如果有很多错误,那么你可能需要做很多调整,如果只有一点点错误,那么你只想调整少量的权重。
乘以你的主函数的导数?
- 这个真的没有好的答案。
为了训练回归模型,我们从任意权重开始并调整权重以使误差最小。如果我们将误差绘制为权重的函数,我们将得到如上图所示的图,其中误差 J(θ0,θ1) 是权重 θ0,θ1 的函数。当我们的错误值最小时,我们的错误将在图表的最底部时,我们将成功。红色箭头显示图中的最小点。为了达到最小点,我们对误差函数进行导数(函数的切线)。切线的斜率是该点的导数,它将为我们指明前进的方向。我们沿着下降最陡的方向降低成本函数。每一步的大小由参数α决定,称为学习率
梯度下降算法为:
repeat until convergence:
θj:=θj −[ Derivative of J(θ0,θ1) in respect of θj]
where
j=0,1 represents the weights' index number.
在上图中,我们绘制了误差 J(θ1) 是权重 θ1 的函数。我们从 θ1 的任意值开始,取误差 J(θ1) 的导数(切线的斜率)来调整权重 θ1,这样我们就可以到达误差最小的底部。如果斜率为正,我们必须向左移动或减少权重 θ1。如果斜率为负,我们必须向右移动或增加 θ1。我们必须重复此过程,直到收敛或达到最小点。
学习率α太小梯度下降收敛太慢。并且如果 α 太大,梯度下降就会过冲而无法收敛。
所有数据均来自 Andrew Ng 在 coursera.org 上的机器学习课程
https://www.coursera.org/learn/machine-learning/home/welcome
我目前正在尝试教我一些有关神经网络的知识。所以我给自己买了这本 Wolfgang Beer 写的叫做 Applied Artificial Intelligence 的书,现在我一直在理解他的部分代码。其实我理解代码我只是不理解它背后的一个数学步骤...... 该部分如下所示:
for i in range(iterations):
guessed = sig(inputs*weights)
error = output - guessed
adjustment = error*sig_d(outpus)
#Why is there no learningrate?
#Why is the adjustment relative to the error
#muliplied by the derivative of your main function?
weights += adjustment
我试图查看梯度下降法的工作原理,但我从未了解过调整权重的部分。它背后的数学是如何工作的,为什么要使用导数呢? Alo 当我开始在互联网上寻找其他解决方案时,我总是看到它们使用学习率。我理解它的概念,但为什么本书没有使用这种方法?如果有人能回答我这些问题,那真的对我有帮助...
感谢过去所有这些快速响应。
为什么没有学习率?
- 有很多不同风格的神经网络,一些会使用学习率,而另一些可能只是保持这个常数
为什么是相对误差的调整
- 它还应该与什么相关?如果有很多错误,那么你可能需要做很多调整,如果只有一点点错误,那么你只想调整少量的权重。
乘以你的主函数的导数?
- 这个真的没有好的答案。
为了训练回归模型,我们从任意权重开始并调整权重以使误差最小。如果我们将误差绘制为权重的函数,我们将得到如上图所示的图,其中误差 J(θ0,θ1) 是权重 θ0,θ1 的函数。当我们的错误值最小时,我们的错误将在图表的最底部时,我们将成功。红色箭头显示图中的最小点。为了达到最小点,我们对误差函数进行导数(函数的切线)。切线的斜率是该点的导数,它将为我们指明前进的方向。我们沿着下降最陡的方向降低成本函数。每一步的大小由参数α决定,称为学习率
梯度下降算法为:
repeat until convergence:
θj:=θj −[ Derivative of J(θ0,θ1) in respect of θj]
where
j=0,1 represents the weights' index number.
在上图中,我们绘制了误差 J(θ1) 是权重 θ1 的函数。我们从 θ1 的任意值开始,取误差 J(θ1) 的导数(切线的斜率)来调整权重 θ1,这样我们就可以到达误差最小的底部。如果斜率为正,我们必须向左移动或减少权重 θ1。如果斜率为负,我们必须向右移动或增加 θ1。我们必须重复此过程,直到收敛或达到最小点。
学习率α太小梯度下降收敛太慢。并且如果 α 太大,梯度下降就会过冲而无法收敛。
所有数据均来自 Andrew Ng 在 coursera.org 上的机器学习课程 https://www.coursera.org/learn/machine-learning/home/welcome