확률적 경사하강법 이해

jiho·2019년 12월 2일
0

ML

목록 보기
1/2

ML 스터디 공부중에 항상 어떤 원리인지는 알지만 정리하지 못한 개념인
확률적 경사하강법에 대해 정리 해볼려고합니다.

우선, 경사하강법의 원리는 기본적으로 알고 있어야합니다.

가중치 대 손실 도표에서 극점(기울기가 0)을 향해 가중치를 변화시켜가는 방법입니다.
즉, 현재 가중치에서의 기울기와 반대방향으로 가중치를 조금씩(학습률에따라) 변화시켜갑니다.

여기서 문제가 하나 발생합니다. 대부분의 데이터세트는 굉장히 클 것입니다.
이 상태로 위 방식을 사용할 경우 모든 데이터에 대한 손실함수를 계산해야할 것 입니다.
굉장히 오래걸리는 비효율적인 방법이죠.
그리고 대량의 데이터 세트에는 중복 데이터가 많은 것입니다.

적당한 중복성은 노이즈가 있는 기울기를 평활화해주는데 유용하지만,
배치가 거대해지면 예측성이 훨씬 높은 값이 영향을 덜 미칠 것입니다.(학습이 굉장히 느리거나 안되겠죠)

그래서 생각한 방법이 SGD입니다.
Stochastic Gradient Descent
확률적이라는 말이 중요합니다. 데이터 세트에서 무작위로 선택한 데이터 하나를 가지고 학습을 합니다. 노이즈는 많이 생기겠지만 지속적으로 무작위 데이터를 선택할 경우, 훨씬 적은 데이터 세트로 중요한 평균값을 추정할 수 있습니다.(그냥 믿고 가야합니다. 모집단에서 샘플링하는 행위를 무수히 많이 했을 때 모집단의 평균에 수렴하는 원리)

자 이제 적은 계산으로 알맞은 모집단의 분포를 가진 데이터로 학습을 할 수 있습니다.
하지만 노이즈가 심하다는 단점이 있습니다. 노이즈가 뭐냐구요? 아직 저도 잘 모르겠습니다.
(단지 감으로는 여기 저기 값이 많이 튄다는 느낌을 의미하는 것 같습니다.)

이 노이즈를 잡을 방법은 많은 데이터들의 손실함수를 계산하고 평균을 내서 가중치에 변화를 줘야합니다. 즉, 방금전의 전체 배치를 이용하는 것과 SGD간의 절충안을 사용해야합니다.

그 방법이 미니 배치 확률적 경사하강법(미니 배치 SGD)입니다.
미니배치는 일반적으로 10 ~ 1000 개 사이의 데이터로 구성됩니다.
미니 배치 SGD는 SGD의 노이즈를 줄이면서 전체 배치보다는 더 효율적입니다.

정리

전체 배치 + 경사하강법 : 중복데이터가 많아서 비효율이고 예측성이 높은 값이 영향을 많이 못미침.
1개 배치 + 확률적 경사하강법 : 적은 계산으로 평균값을 추정할 수 있으나 노이즈가 심합니다.
미니 배치(10 ~ 1000개) + 확률적 경사하강법 : SGD보다 노이즈를 줄이면서 전체 배치보다는 더 효율적입니다.

profile
Scratch, Under the hood, Initial version analysis

0개의 댓글