본문 바로가기
ML & DL/혼자 공부하는 머신러닝+딥러닝

확률적 경사 하강법

by Glory_Choi 2022. 8. 8.
반응형

확률적 경사 하강법

  • 전체 샘플을 사용하지 않고 하나의 샘플을 훈련 세트에서 랜덤하게 골라 그 샘플에 대해서만 기울기를 계산하는 방법입니다.
  • 샘플 데이터 셋에 대해서만 경사를 계산하므로, 매 반복에서 다뤄야 할 데이터 수가 매우 적어, 학습 속도가 매우 빠릅니다.
  • 하나의 샘플만 대상으로 경사를 계산하므로, 메모리 소모량이 매우 낮으며, 매우 큰 훈련 데이터 셋이라 할지라도 학습 가능합니다다.
  • 확흏적 경사 하강법에서 훈련 세트를 한 번 모두 사용하는 과정을 에포크(epoch)라고 부릅니다. 일반적으로 경사 하강법은 수십, 수백 번 이상 에포크를 수행합니다.

 

미니배치 경사 하강법

  • 한 개씩 말고 무작위로 몇개의 샘플을 선택해서 경사를 따라 내려가는 방법입니다.\
  • 여러개의 샘플을 사용해 경사 하강법을 수행하는 방식입니다.

 

배치 경사 하강법

  • 극단적으로 한 번 경사로를 따라 이동하기 위해 전체 샘플을 사용합니다.
  • 전체 데이터를 사용하기 때문에 가장 안정적인 방법이 될 수 있습니다.
  • 전체 데이터를 사용하면 그만큼 컴퓨터 자원을 많이 사용하게 됩니다. 어떤 경우에는 데이터가 너무 많아 한 번에 전체 데이터를 모두 읽을 수 없을수도 있습니다.

손실 함수

'머신러닝은 타깃과 예측값( 모델에 입력값을 넣었을 때 나오는 값, 즉 출력값)의 오차를 최소화하는 방향으로 모델의 파라미터들을 조정하여 가장 알맞은 모델을 찾아내는 것'

어떤 문제에서 머신러닝 알고리즘이 얼마나 엉터리인지를 측정하는 기준입니다.

손실 함수를 직접 계산하는 일이나 손실 함수를 직접 만드는 일은 매우 드물고 머신러닝 라이브러리가 처리 해 주기 때문에 걱정할 필요 없습니다.

 

 

이전과 같이 판다스 데이터프레임을 이용해 데이터를 불러온 후 훈련세트와 테스트세트를 분류해 줍니다. 이 후 전처리 과정까지 진행해줍니다.

사이킷런에서 확률적 경사 하강법을 제공하는 대표적인 분류용 클래스 SGDClassifier을 임포트 합니다.

SGDClassifier은 2개의 매개변수를 지정해야 하는데 loss는 손실 함수의 종류를 지정합니다 loss='log'는 손실 함수를 로지스틱 손실 함수를 지정한것입니다. max_iter는 수행할 에포크 횟수를 지정합니다. 10으로 지정하면 전체 훈련 세트를 10회 반복하게 됩니다.

훈련 세트와 테스트세트의 정확도 점수를 출력해보니 정확도가 낮게 나왔습니다. 이유는 반복 횟수를 10회로 지정했기 때문입니다.

모델을 이어서 훈련할 때는 partial_fit() 메서드를 사용합니다. 이 메서드는 fit() 메서드와 사용법이 같지만 호출할 때마다 1 에포크씩 이어서 훈련합니다.

정확도가 향상 되었지만 더 훈련할 필요가 있어보입니다.

하지만 무작정 많이 반복할 수는 없기 때문에 기준을 정하겠습니다.

 

에포크와 과대/과소적합

에포그 횟수가 적으면 모델이 훈련 세트를 덜 학습합니다. 에포크 횟수가 충분히 많으면 훈련 세트를 완전히 학습 할 것입니다. 바꾸어 말하면 적은 에포크 횟수 동안에 훈련한 모델은 훈련 세트와 테스트 세트에 잘 맞지 않는 과소적합된 모델일 가능성이 높습니다. 반대로 많은 에포크 횟수 동안에 훈련한 모델은 훈련 세트에 너무 잘 맞아 테스트 세트에는 오히려 나쁜 과대적합된 모델일 가능성이 높습니다.

 

때문에 과대 적합이 시작하기 전에 훈련을 멈추어야 하는데 이것을 조기 종료(early stopping)이라고 합니다.

300번의 에포크 동안 훈련을 반복하여 진행해 보겠습니다. 반복마다 훈련 세트와 테스트 세트의 점수를 계산하여 train_score, test_score 리스트에 추가합니다.

300번의 에포크 동안 기록한 훈련 세트와 테스트 세트의 점수를 그래프로 그려보면 위와 같습니다.

데이터가 작기 때문에 아주 잘 드러나지는 않지만, 백 번째 에포크 이후에는 훈련 세트와 테스트 세트의 점수가 조금식 벌어지고 있습니다. 또 확실히 에포크 초기에는 과소적합되어 훈련 세트와 테스트 세트의 점수가 낮습니다. 이 모델의 경우 백 번째 에포크가 적절한 반복 횟수로 보입니다.

 

반응형