본문 바로가기

Study/Hands-On Machine Learning

[Book] 4. 모델 훈련

Book Title : Hands-On Machine Learning with Scikit-Learn, Keras & TF

지은이 : 오렐리아 제롱

옮긴이 : 박해선

출판사 : 한빛미디어

코드 출처

https://github.com/rickiepark/handson-ml2

 

GitHub - rickiepark/handson-ml2: 핸즈온 머신러닝 2/E의 주피터 노트북

핸즈온 머신러닝 2/E의 주피터 노트북. Contribute to rickiepark/handson-ml2 development by creating an account on GitHub.

github.com

4. 모델 훈련

책에서는 각종 모델을 훈련하지만, 포스팅에서는 용어 정리만 간단하게 포스팅합니다.

경사 하강법(Gradient Descent)

  • 기본 아이디어는 비용 함수를 최소화하기 위해 반복해서 파라미터를 조정해가는 것
  • 파마 미터 벡터에 대해 비용 함수의 현재 그레이디언트(gradient)를 계산하고, gradient가 감소하는 방향으로 진행 , 0이 되면 최솟값에 도달
  • 대게 시작 값은 무작위 초기화를 통해 임의의 값에서 조금씩 비용 함수(ex. mse)가  감소되는 방향으로 진행하여 알고리즘이 최솟값에 수렴할 때까지 점진적으로 향상

쉬운 예시

  • 짙은 안개 때문에 산속에서 길을 잃었을 때, 발밑 지면의 기울기만 있다. 빨리 내려가는 방법은 가장 가파른 길을 따라 아래로 내려가는 것

배치 경사 하강법

  • 매 스텝에서 훈련 데이터 전체를 사용
  • 전체를 사용하기 때문에 훈련 세트가 커지면 매우 느려짐
  • 전체 경사 하강법이라고도 함

확률적 경사 하강법

  • 매 스텝에서 한 개의 샘플을 무작위로 선택하고 그 하나의 샘플에 대한 gradient를 계산함
  • 배치 경사 하강법과는 다르게 매 반복에서 다뤄야 할 데이터가 매우 적기 때문에 한 번에 하나의 샘플을 처리하면 알고리즘이 확실히 빠름
담금질 기법(Simulated Annealing, SA) 
  • 전역 최적화 문제에 대한 일반적인 확률적 메타 알고리즘이다.
  • 이 기법은 광대한 탐색 공간 안에서, 주어진 함수의 전역 최적해에 대한 좋은 근사를 준다
  • (그냥 이런 게 있다)
학습 스케줄
  • 매 반복에서 학습률을 결정하는 함수

미니 배치 경사 하강법

  • 미니 배치라 부르는 임의의 작은 샘플 세트에 대해 그레이디언트를 계산
  • 확률적 경사 하악 법에 비해 행렬 연산에 최적화된 하드웨어, 특히  GPU를 사용해서 얻는 성능 향상

로지스틱 회귀

  • 샘플이 특정 클래스에 속할 확률을 추정하는 데 널리 사용
  • 예시 ) 이 이메일이 스팸일 확률은 얼마인가?
조기종료
  • early stopping
  • 경사 하강법과 같은 반복적인 학습 알고리즘을 규제하는 방식으로 검증 에러가 최솟값에 도달하면 바로 훈련을 중지시키는 방법
  • ‘beautiful free lunck’  ‘훌륭한 공짜 점심’이라고 불렸음
시그모이드 함수
  • 0과 1 사이 값을 출력하는 함수

Q. 충분히 오랫동안 실행하면 모든 경사 하강법 알고리즘이 같은 모델을 만들어 내는가?

- 최적화할 함수가 볼록 함수이고 학습률이 너무 크지 않다고 가정하면 모든 경사 하강법 알고리즘이 전역 최적 값에 도달하고 결국 비슷한 모델을 만들 것
- 하지만 학습률을 점진적으로 감소시키지 않으면 SGD와 미니 배치 경사 하강법은 진정한 최적점에 수렴하지 못함
- 대신 전역 최적점 주변을 이리저리 맴돌게 됨, 이 말은 매우 오랫동안 훈련을 해도 경사 하강법 알고리즘들은 조금씩 다른 모델을 만들게 됨