Я сделал алгоритм градиентного спуска в Python, и он не работает.Мои значения m и b продолжают увеличиваться и никогда не останавливаются, пока я не получу ошибку -inf или переполнение, встречающееся в квадратной ошибке.
import numpy as np
x = np.array([2,3,4,5])
y = np.array([5,7,9,5])
m = np.random.randn()
b = np.random.randn()
error = 0
lr = 0.0001
for q in range(1000):
for i in range(len(x)):
ypred = m*x[i] + b
error += (ypred - y[i]) **2
m = m - (x * error) *lr
b = b - (lr * error)
print(b,m)
Я ожидал, что мой алгоритм вернет лучшие значения m и b для моих данных (x и y), но он не сработал.Что не так?