머신러닝의 상당부분은 결국 경사하강법에 의존하는 부분이 많다.
간단히 생각하면 이렇다. 가중치 w가 변하면 비용(=에러)가 변한다. 이것을 비용함수라고 하자. w가 변할 때 비용함수가 얼마나 변하냐를 구하려면 비용함수를 가중치 변수에 대해 편미분하면 된다. 이 미분값이 0에 가까워진다면 에러가 제일 적은 w가 되겠다.
# wx + q - y
for _ in range(100):
if 1:
temp = 0
for x, y in zip(xx, yy):
temp += w * x * x + q * x - x * y
w = w - alpha * (temp / len(yy))
temp = 0
for x, y in zip(xx, yy):
temp += w * x + q - y
q = q - alpha * (temp / len(yy))
가장 간단한 회귀다. 오차의 제곱을 미분하여 업데이트 한다.