반응형
경사하강법
- 선형 회귀의 목적식을 최소화 하게끔 그레디언트 벡터를 구해야 함
- 선형 회귀의 목적식은 ||y-XB||2 (L2 norm)이고 이를 최소화 하는 B를 찾아야함
- 목적식을 B로 미분하고 주어진 B에서 미분값을 빼주게 되면 경사하강법 알고리즘으로 최소가 되는 값을 찾을 수 있음
- 경사하강법 기반 선형회귀 알고리즘
X = np.array([1,1],[1,2],[2,2],[2,3]])
y = np.dot(X, np.array([1,2])) + 3
beta_gd = [10.1, 15.1, -6.5]
X_ = np.array([np.append(x,[1]) for x in X])
for t in range(5000):
error = y - X_ @beta_gd
grad = - np.transpose(X_) @ error
beta_gd = beta_gd -0.01 * grad
print(beta_gd)
-> [1.000067, 1.999949, 2.999999516]
- grad를 엡실론(임의의 작은 양의 실수)으로 하는 조건을 잡지 않고 위의 식처럼 딥러닝에서는 학습 횟수를 지정해두고 학습을함
- 경사하강법 알고리즘에선 학습률과 학습횟수가 중요한 hyperparameter임
- 미분가능한 볼록(convex)한 함수에 대해선 hyperparameter가 적절하다면 수렴이 보장되어 있음
- 선형회귀의 경우 목적식 l2norm은 회귀계수 B에 대해 볼록함수라서 수렴이 보장됨
- 하지만 비선형 회귀의 경우 목적식이 볼록하지 않을 수 있으므로 항상 수렴이 보장되지는 않음
확률적 경사하강법(stochastic gradient discent) SGD
- 확률적 경사하강법은 모든 데이터를 사용해서 업데이트 하는것이 아니라 데이터 한개(sgd) 또는 일부(mini batch sgd) 활용해서 그레디언트를 업데이트함
- 볼록이 아닌(non-convex) 목적식은 SGD를 통해 최적화 가능
- 일부의 데이터만 사용하기 때문에 연산자원을 좀 더 효율적으로 활용가능
- mini batch는 확률적으로 선택하므로 목적식 모양이 바뀜
- non-convex한 목적식에도 사용 가능하므로 머신러닝 학습에 더 효율적임
- mini batch의 사이즈도 중요함
1) 경사 하강법
2) 확률적 경사 하강법
반응형