본문 바로가기
  • 데이터에 가치를 더하다, 서영석입니다.
공부하는 습관을 들이자/Machine Learning For Study

Hands-on ML : 4. 2 경사 하강법

by 꿀먹은데이터 2022. 5. 17.

경사 하강법 (gradient descent)

최적의 해법을 찾을 수 있는 일반적인 최적화 알고리즘

 

아이디어 : 비용 함수를 최소화하기 위해 반복해서 파라미터 조정해가는 것.

제시된 함수의 기울기로 최소값을 찾아내는 머신러닝 알고리즘 

1. 특정 파라미터 값으로 시작

: 가중치 W1에 대한 시작점을 선택한다. 

2. 비용 함수 (Cost function) 계산

: 모델을 구성하는 가중치 W의 함수

3. 반복 학습 (iteration)

: 과정을 n번 반복하며 최소값으로 수렴. (스텝의 크기가 중요)

-> numeric analysis에서의 수치적 접근법과 같다. ( ex) Bisection algorithm etc..)

 

4.2.1 배치 경사 하강법

경사 하강법을 구현하기 위해 각 모델 파라미터에 대한 비용 함수의 그레디언트를 계산해야 한다.

편도 함수 (partial derivative) 

: 비용함수를 미분해서 미분값(기울기)의 변화를 관찰한다.

비용함수의 편도함수
비용 함수의 그레디언트 벡터

각 모델 파라미터마다 편도함수를 모두 담고 있다

그러므로 이 알고리즘을 배치 경사하강법 (batch gradient descent)라고 부른다.

경사 하강법의 스텝

np.random.seed(42)
theta = np.random.randn(2,1)  # 무작위 초기값

plt.figure(figsize=(10,4))
plt.subplot(131); plot_gradient_descent(theta, eta=0.02)
plt.ylabel("$y$", rotation=0, fontsize=18)
plt.subplot(132); plot_gradient_descent(theta, eta=0.1, theta_path=theta_path_bgd)
plt.subplot(133); plot_gradient_descent(theta, eta=0.5)

plt.show()

여러 가지 학습률에 대한 경사 하강법

왼쪽 그림 : 학습률이 너무 낮다. 최적점에 도달하겠지만 시간이 오래 걸릴 것으로 예상된다.

가운데 그림 : 학습률이 적당하다. 점과 일치하며 최적점에 수렴한 것으로 보인다.

오른쪽 그림 : 학습률이 너무 높아 최적점에서 멀어지며 발산한다.

 

그러므로 적절한 학습률을 찾기 위해 그리드 탐색반복 횟수를 제한하며 사용해야한다.

 

다음으로는 확률적 경사하강법미니배치 경사 하강법에 대해 포스팅하겠다.

 

참고 문헌 :

https://book.naver.com/bookdb/book_detail.nhn?bid=16328592

 

핸즈온 머신러닝

머신러닝 전문가로 이끄는 최고의 실전 지침서 텐서플로 2.0을 반영한 풀컬러 개정판 『핸즈온 머신러닝』은 지능형 시스템을 구축하려면 반드시 알아야 할 머신러닝, 딥러닝 분야 핵심 개념과

book.naver.com