Итак, я новичок в изучении ОД и использую градиентный спуск в качестве своего первого алгоритма, в котором я хотел бы научиться и хорошо учиться.Я написал свой первый код и искал в Интернете проблему, с которой столкнулся, но из-за недостатка конкретных знаний мне трудно понять, как мне поступить в диагностике своей проблемы.Мой градиент начинается с приближения к правильному ответу, и когда ошибка уменьшается в 8 раз, алгоритм теряет свое значение, и значение b начинает уменьшаться, а значение m выходит за целевое значение.Извините, если я сформулировал это странно, надеюсь, код поможет.
Я изучаю это из нескольких источников на YouTube и в Google.Я следил за математикой интеллекта Сираджа Равала на YouTube, я понял, как работает базовый алгоритм, но я решил использовать свой собственный подход, и, похоже, он работает не слишком хорошо.Я изо всех сил пытаюсь читать онлайн-ресурсы, поскольку я неопытен в том, что означает алгоритм и как он реализован в python.Я знаю, что эта проблема имеет отношение к обучению и тестированию, но я не знаю, где это применить.
def gradient_updater(error, mcurr, bcurr):
for i in x:
# gets the predicted y-value
ypred = (mcurr * i) + bcurr
# uses partial derivative formula to get new m and b
new_m = -(2/N) * sum(x*(y - ypred))
new_b = -(2/N) * sum(y - ypred)
# applies the new b and m value
mcurr = mcurr - (learning_rate * new_m)
bcurr = bcurr - (learning_rate * new_b)
return mcurr, bcurr
def run(iterations, initial_m, initial_b):
current_m = initial_m
current_b = initial_b
for i in range(iterations):
error = get_error(current_m, current_b)
current_m, current_b = gradient_updater(error, current_m, current_b)
print(current_m, current_b, error)
Я ожидал, что значения m и b сходятся к конкретному значению, это непроисходят и значения продолжают расти в противоположном направлении.