gpt4 book ai didi

python - 理解Numpy中梯度下降算法的梯度

转载 作者:太空宇宙 更新时间:2023-11-04 00:59:09 26 4
gpt4 key购买 nike

我试图找出多元梯度下降算法的 python 代码,并找到了几个这样的实现:

import numpy as np

# m denotes the number of examples here, not the number of features
def gradientDescent(x, y, theta, alpha, m, numIterations):
xTrans = x.transpose()
for i in range(0, numIterations):
hypothesis = np.dot(x, theta)
loss = hypothesis - y
cost = np.sum(loss ** 2) / (2 * m)
print("Iteration %d | Cost: %f" % (i, cost))
# avg gradient per example
gradient = np.dot(xTrans, loss) / m
# update
theta = theta - alpha * gradient
return theta

从梯度下降的定义来看,梯度下降的表达式为: [\frac{1}{m}\sum_{i=1}^m(h_\theta(x^{(i)})-y^{(i)})x_j^{(i)}]

然而,在 numpy 中,它被计算为:np.dot(xTrans, loss)/m有人可以解释一下我们是如何得到这个 numpy 表达式的吗?

最佳答案

代码其实很简单,多花点时间阅读会很有帮助。

  • hypothesis - y 是平方损失梯度的第一部分(作为每个分量的向量形式),它被设置为 loss 变量。假设的计算看起来像是线性回归。
  • xTransx 的转置,因此如果我们对这两个进行点积,我们将得到它们分量积的总和。
  • 然后我们除以 m 得到平均值。

除此之外,代码还有一些 python 风格的问题。我们通常在 python 中使用 under_score 而不是 camelCase,因此例如函数应该是 gradient_descent。比 java 更易读,不是吗? :)

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

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com