본문 바로가기
Book Review/[혼공머신] 리뷰

확률적 경사 하강법

by 3n952 2023. 1. 4.

 

지금까지 살펴본 머신러닝의 흐름은 다음과 같습니다.

데이터를 준비하여 데이터를 학습시키면 모델이 완성되고, 그 모델로 예측을 진행하는 형식입니다.

그렇다면 데이터가 적으면 학습된 모델의 성능이 좋지 않을 것입니다.

또한 데이터가 너무 많으면 데이터를 유지하는 비용이 많이 들어 비효율적일 것입니다.

 

이를 해결하기 위해서 나온 개념이 점진적 학습(온라인 학습)의 개념입니다.

 

오프라인 학습과 온라인 학습

이전의 방식은 오프라인 방식으로 파란색 부분을 제외한 부분입니다.

점진적 학습은 파란색 부분으로 학습이 이뤄집니다.

즉, 훈련한 모델을 가지고 새로운 데이터에 대해서만 조금씩 더 훈련하는 것이라고 생각하면 됩니다.


 

-확률적 경사 하강법

 

점진적 학습의 가장 대표적인 알고리즘은 확률적 경사 하강법(stochastic gradient descent)입니다.

여기서 확률적이란 단어의 의미를 해석하면 '무작위의', '랜덤의'라는 뜻을 가집니다.

직관적으로 해석하면 랜덤 하게 경사를 내려가는 법이라고 할 수 있겠네요.

 

확률적 경사 하강법의 개념을 이해할 때 가장 많이 드는 예시는 산에서 내려가는 모험가에 예시가 될 것입니다.

(여기서 산이 머신러닝에서 무엇을 의미하고 내려가는 건 어떻게 적용되는 건지에 대해서는 후에 말씀드리겠습니다.

우선은 개념을 이해해보도록 하겠습니다.)

 

상상해 보세요.

산의 정상에 있는 모험가가 눈을 가린 채(말도 안 되는 가정) 산 입구까지 내려가야 하는 상황에서 

어떻게 하면 가장 빨리 내려갈 수 있을까요?

바로 주위에 발을 내디뎌보면서 가장 가파른 방향으로 발걸음을 내딛는 것입니다.

가장 가파른 경사를 따라 내려가다 보면 원하는 지점에 도달할 것입니다.(절대 따라 하지 마세요 ㅋㅋ)

 

그림1) 확률적 경사 하강법

 

즉, 확률적 경사하강법은 하나의 샘플을 랜덤 하게 뽑아(확률적) 가장 가파른 경사를 따라 내려가는 것입니다.

원하는 목표로 다다르지 못했다면 다시 산 정상에서 다시 내려오면 됩니다.

이렇게 훈련 세트에서 랜덤하게 뽑은 샘플을 훈련 세트에서 한 번씩 모두 사용하는 과정을 한 단위로 에포크(epoch)라고 합니다.

 

무작위로 샘플을 하나씩 골라 경사를 내려가는 것은  아주 조금씩 내려가는 방식이기 때문에 어느 정도 샘플을 무더기로 뽑아 

경사하강법을 진행할 수 있습니다. 이를 미니배치 경사 하강법이라고 합니다.

자주 사용되는 방식입니다.

 

더 나아가 극단적으로 훈련 데이터 전체를 사용하여 경사 하강법을 진행할 수도 있습니다.

이를 배치 경사 하강법이라고 부릅니다.

데이터 전체를 사용하는 것은 컴퓨터 자원을 많이 사용하므로 비효율적입니다. 따라서 자주 사용되는 방식은 아닙니다.

 

다음과 같은 그림으로 더욱 쉽게 이해할  수 있습니다.

그렇다면 도대체 여기서 어떤 산을 내려가야 하는 건지, 산은 머신러닝에서 무엇을 의미하는지 궁금할 것입니다.

여기서 산은 '손실 함수'(loss function)를 의미합니다.

손실 함수는 머신러닝 모델이 얼마나 잘 못 만들어졌는지, 엉터리인지 알려주는 기준값이라고 생각하면 됩니다.

손실 함수의 값이 작을수록 훈련된 모델이 좋은 모델임을 알 수 있는 것이죠.

여기서 손실 함수의 값이 우리의 목표인 산의 입구입니다.

그 값은 정확히 정할 수 없습니다. 다만, 만족할만한 선에서 값이 도출될 때까지 경사 하강이 이뤄져야 합니다.

 

손실 함수는 미분이 가능하도록 연속적인 값들을 가져야합니다.

(손실 함수의 미분 값이 큰 방향으로 경사 하강이 이뤄집니다.)

즉, 정확도와 같이 이산적인 값들에 대해서는 경사하강법을 적용할 수 없습니다.

 

다양한 손실 함수가 있는데,

회귀 모델에 대해서는 주로 MSE(평균제곱오차), MAE(평균절대오차) 등을 손실 함수로 사용합니다.

이진 분류 모델에 대해서는 주로 이진 크로스엔트로피(binary corss-entropy loss function) 손실 함수를 사용합니다.

다중 분류 모델에 대해서는 주로 크로스엔트로피(cross-entropy loss function) 손실 함수를 사용합니다.

 

이번 포스트에서는 확률적 경사하강법에 대해서 알아보았습니다.

정리하자면, 훈련된 모델을 샘플 하나씩 적용시켜 최적화하는 것을 확률적 경사 하강법이라고 하고,

이 때 손실 함수의 값이 최소가 되는 방향으로 경사 하강이 이뤄지면서 모델 최적화가 이뤄진다는 것입니다.