Ошибка в градиентном спуске почти никогда не роняет программу. Она молча учит не туда, и заметить её можно только по поведению чисел.
Признаки при этом разные. Растущая ошибка со сменой знака у весов — слишком большой шаг. Монотонный уход от минимума в одну сторону — потерянный минус в правиле шага. Очень медленное убывание — слишком маленький шаг. Умение назвать причину по выводу, не залезая в код, отличает инженера от того, кто правит чужой код наугад.
Подробно: Длина шага.
Задание
В программе одна ошибка. Минимум функции в точке 3, но программа к нему не приближается.
w = 0
lr = 0.1
for step in range(10):
gradient = 2 * (w - 3)
w = w + lr * gradient
print(step, w)
Приведите исправленную программу
Ниже программы в комментариях, напишите
1) по какому признаку в выводе можно было заметить ошибку,
2) чем этот признак отличается от признака слишком большого шага.