티스토리 뷰

머신러닝

8. 확률적 경사 하강법

0307kjb 2022. 4. 20. 22:12

이전의 데이터를 가지고 새로운 데이터를 추가하면서 모델을 매일 훈련한다면 어떨까.

초기에는 괜찮겠지만 점차 데이터가 많아지고 많아지면 용량 오버가 일어날 수 있다. 그렇다고 이전 데이터를 버린다고 생각해보면 중요한 데이터를 잃어버릴 수 있다.

그래서 훈련한 모델을 버리지 않고 새로운 데이터에 대해서만 조금씩 훈련하는 방법을 고안했는데 이를 점진적 학습 또는 온라인 학습이라고 하며 이런 점진적 학습 알고리즘의 대표격이 확률적 경사 하강법 알고리즘이다.

 

확률적 경사 하강법

  1. 확률적 경사 하강법에서 확률적이라는 말은 무작위,랜덤하게의 기술적 표현이다.
  2. 확률적 경사 하강법에서 경사라는 말은 기울기를 나타내며 하강법은 내려가는 방법이다.

하지만 내려갈 때 너무 경사를 크게 잡고 가면 오히려 내려가기는 커녕 내려갈 수 있다.

확률적이라는 말을 깊게 설명하면 전체 샘플을 사용하지 않고 딱 하나의 샘플을 훈련 세트에서 랜덤하게 골라 가장 가파른 경사를 찾는다. 이처럼 훈련 세트에서 랜덤하게 하나의 샘플을 고르며 모델의 경사 값을 내려가는 것이 확률적 경사 하강법이다.

더 자세히 설명하면 훈련 세트에서 랜덤하게 하나의 샘플을 선택하여 가파른 경사를 내려가며 그다음 훈련 세트에서 랜덤하게 또 다른 샘플을 하나 선택하여 경사를 내려간다. 이런 식으로 전체 샘플을 모두 사용할 때까지 계속한다.

물론 만족하지 않은 결과가 나온다면 훈련 세트에 모든 샘플을 다시 채워놓고 위 과정을 반복한다.

 

확률적 경사 하강법에서 훈련 세트를 한 번 모두 사용하는 과정을 에포크라고 부른다.(일반적으로 확률적 경사하강법은 수백 번이상 에포크 실행함.)

여기서 1개씩 말고 무작위로 몇 개의 샘플을 선택해서 경사를 내려가는 방식을 미니배치 경사 하강법이라고 한다.

 

또 극단적으로 한 번 경사로를 따라 이동하기 위해 전체 샘플을 사용하는데 이를 배치 경사 하강법이라고 한다. 전체 데이터를 사용하기 때문에 가장 안정적이나 시간이 매우 오래 걸린다!

그런데..

이거 왜 내려가야 하는 이유가 뭘까. 이거 확률 아닌가...?

 

손실 함수

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

손실함수는 미분이 가능해야 하는데 이 말뜻은 경사면은 연속적이여야 한다는 뜻이다.

 

로지스틱 손실 함수

샘플(예측 값) x 양성(1) x -1

샘플(1 - 예측 값) x 음성(0) x -1 => 손실 점수

예측 확률을 사용해 이런 방식으로 계산하면 연속적인 손실 함수를 얻을 수 있고 로그 함수를 적용하면 더좋다. 예측 확률의 범위는 0~1 사이 인데 로그 함수는 이 사이에서 음수가 되므로 최종 손실 값이 양수가 된다는 장점과 로그함수 특성상 0에 가까울수록 큰 음수가 되니 손실을 아주 크게 만들어 모델에 큰 영향을 미칠 수 있다.

이것이 로지스틱 손실 함수 또는 크로스엔트로피 손실 함수라고 한다.

(이진 분류는 로지스틱 손실함수, 다중 분류는 크로스엔트로피 손실 함수 사용.)

  • 회귀의 경우 평균 제곱 오차를 사용하며 이 값이 작을수록 좋다.

그래프를 통해 대략 75~100 에포크에서 과소, 과대적합이 일어나지 않는 점을 알 수 있다.

 

'머신러닝' 카테고리의 다른 글

10. 교차 검증과 그리드 서치  (0) 2022.04.24
9. 결정 트리  (0) 2022.04.23
7. 로지스틱 회귀  (0) 2022.04.18
6. 특성 공학과 규제 ( 회귀 )  (0) 2022.04.17
5. 선형 회귀  (0) 2022.04.17
댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2024/05   »
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31
글 보관함