Допустим, у вас есть y = m*x + p
с параметрами (m; p)
, которые вы настраиваете.
Когда вы пропускаете образец наблюдения X из X 'через вашу модель, вы получаете вектор Y'. Затем вы можете вычислить вашу потерю, скажем среднеквадратичную ошибку, как e = 1 / n * sum_i (Yi - Yi')²'
, где Y
- это координаты y, связанные с координатами x в X
.
Теперь мы хотим дифференцировать е относительно ваших параметров:
de / dm = -2 / sigma² * sum_i ( Xi' * ( Yi - p - m * Xi' ) )
de / dp = -2 / sigma² * sum_i ( Yi - p - m * Xi' )
Затем вы хотите минимизировать e
благодаря этому градиенту:
m <- m - lr * de / dm
p <- p - lr * de / dp
При скорости обучения lr
.
Выполняйте математику самостоятельно хотя, на всякий случай, я допустил ошибку.
РЕДАКТИРОВАТЬ: я реализовал это быстро, используя эти формулы, и математика кажется в порядке (по крайней мере, она быстро сходится к решению)