Я пытаюсь выяснить градиентный спуск с Octave. С каждой итерацией мои теты становятся экспоненциально большими. Я не уверен, в чем проблема, поскольку я копирую другую функцию напрямую.Градиентный спуск: thetas не сходятся
Вот мои матрицы:
X = 1 98
1 94
1 93
1 88
1 84
1 82
1 79
y = 97
94
94
78
85
85
76
theta = 1
1
Я использую эту формулу:
theta = theta - 0.001 * (1/7) * (X' * (X * theta - y))
Я понял, что оптимальный thetas использует нормальное уравнение, но только после нескольких итераций моего тета находятся в нескольких тысячах. Любая идея, что не так?
Чтобы избежать числовую нестабильность может быть на самом деле лучше масштабировать данные тоже. Проблема заключается в том, что X и Y находятся в 100, деление на X и Y на 100 не изменяет решение, но будет иметь тот же эффект (эффективно изменяя скорость обучения), но без потери численной устойчивости (умножение большого числа на небольшой число является одной из основных нестабильных операций) – lejlot