gpt4 book ai didi

python - 梯度下降 - 我可以绘制要最小化的函数吗?线性回归

转载 作者:行者123 更新时间:2023-11-30 09:48:19 25 4
gpt4 key购买 nike

我是机器学习领域的新手。我从梯度下降的线性回归开始。我有这方面的Python代码并且我理解这种方式。我的问题是:梯度下降算法最小化函数,我可以绘制这个函数吗?我想看看最小值的函数是什么样的。有可能吗?我的代码:

import matplotlib.pyplot as plt import numpy as np

def sigmoid_activation(x):
return 1.0 / (1 + np.exp(-x))

X = np.array([
[2.13, 5.49],
[8.35, 6.74],
[8.17, 5.79],
[0.62, 8.54],
[2.74, 6.92] ])

y = [0, 1, 1, 0, 0]

xdata = [row[0] for row in X] ydata = [row[1] for row in X]

X = np.c_[np.ones((X.shape[0])), X] W = np.random.uniform(size=(X.shape[1], ))

lossHistory = []


for epoch in np.arange(0, 5):

preds = sigmoid_activation(X.dot(W))
error = preds - y

loss = np.sum(error ** 2)
lossHistory.append(loss)

gradient = X.T.dot(error) / X.shape[0]
W += - 0.44 * gradient


plt.scatter(xdata, ydata) plt.show()

plt.plot(np.arange(0, 5), lossHistory) plt.show()

for i in np.random.choice(5, 5):

activation = sigmoid_activation(X[i].dot(W))
label = 0 if activation < 0.5 else 1
print("activation={:.4f}; predicted_label={}, true_label={}".format(
activation, label, y[i]))


Y = (-W[0] - (W[1] * X)) / W[2]

plt.scatter(X[:, 1], X[:, 2], c=y) plt.plot(X, Y, "r-") plt.show()

最佳答案

存在明显的风险...您可以简单地使用 matplotlib 绘制 lossHistory 。或者我错过了什么?

编辑:显然OP问梯度下降(GD)正在最小化什么。我会尝试在这里回答,希望能回答原来的问题。

GD 算法是一种在参数空间中寻找函数最小值的通用算法。在您的情况下(这就是神经网络通常使用的方式),您想要找到损失函数的最小值:MSE(均方误差)。您可以像使用 GD 算法一样更新权重

gradient = X.T.dot(error) / X.shape[0]
W += - 0.44 * gradient

梯度只是损失函数(MSE)相对于权重的偏导数。有效地最小化损失函数(MSE)也是如此。然后,您以 0.44 的学习率更新权重。然后你只需将损失函数的值保存在数组中

loss = np.sum(error ** 2)
lossHistory.append(loss)

因此 lossHistory 数组包含您的成本(或损失)函数,您可以绘制该函数来检查您的学习过程。情节应该显示出一些减少的东西。这个解释对您有帮助吗?

最好,翁贝托

关于python - 梯度下降 - 我可以绘制要最小化的函数吗?线性回归,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49394377/

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