경사하강법 (SGD, Stochastic Gradient Descent)
확률적 경사하강법의 '확률적'은 방향 결정이 확률적이라는 의미이다.
변수
n = Learning Rate (Step Size) : 기울기 반대 방향으로 x를 얼만큼 움직일지, 기울기의 보폭을 의미한다. 기울기의 보폭만큼 손실 곡선의 다음 지점으로 이동한다.
Batch: 단일 반복에서 기울기를 계산하는 데 사용하는 data의 총 개수.
Gradient Descent 에서의 배치는 전체 데이터 셋라고 가정.
하지만 대규모의 작업에서는... 데이터 세트에서 예(data)를 무작위로 선택하면 (노이즈는 있겠지만) 훨씬 적은 데이터 세트로 중요한 평균값을 추정 가능하다. 확률적 경사하강법(SGD)은 이 아이디어를 더욱 확장한 것으로서, 반복당 하나의 예(배치 크기 1)만을 사용합니다.
'확률적(Stochastic)'이라는 용어는 각 배치를 포함하는 하나의 예가 무작위로 선택된다는 것을 의미.
방법
1. w1에 대한 시작점을 선택
2. 시작점에서 손실 곡선의 기울기(Gradient)를 계산.
여기서 기울기는 편미분의 벡터로, 어느 방향이 더 정확한지 혹은 더 부정확한지의 정도를 알려준다.
미분값=단일 가중치에 대한 손실의 기울기.
손실함수 곡선의 다음 지점을 결정하기 위해 단일 가중의 일부를 시작점에 더합니다. (어느 방향(+, -)으로 이동해야하는지를 결정함)
기울기의 보폭만큼 손실 곡선의 다음 지점으로(w축 방향으로) 이동한다.
3. 경사하강법은 위의 과정을 반복해 최소값에 점점 접근한다.
단점
반복이 충분하면 SGD가 효과는 있지만 노이즈가 매우 심하다.
확률적 경사하강법의 여러 변형 함수의 최저점에 가까운 점을 찾을 가능성이 높지만 항상 보장되지는 않는다. (최저점을 못 찾을 수 있음)
대안
미니 배치 확률적 경사하강법(미니 배치 SGD)는 전체 배치 반복과 SGD 의 절충안이다.
미니 배치는 일반적으로 무작위로 선택한 10개에서 1,000개 사이의 예로 구성,
미니 배치 SGD는 SGD의 노이즈를 줄이면서도 전체 배치보다는 더 효율적이다.
참고: https://developers.google.com/machine-learning/crash-course/reducing-loss/gradient-descent?hl=ko
'Python > Deep learning' 카테고리의 다른 글
CNN (0) | 2020.01.21 |
---|---|
다층 퍼셉트론을 향상시키는 방법 - 2 (0) | 2020.01.21 |
다층 퍼셉트론을 향상시키는 방법 - 1 (0) | 2020.01.21 |
케라스 회귀 (0) | 2020.01.20 |
DNN (Deep Neural Network) (0) | 2020.01.20 |