경사 하강법(Gradient Desent)
-
모델이 데이터를 잘 나타내도록 변화율을 사용해 모델을 조금씩 조정하는 최적화 알고리즘
= 반복적인 계산을 통해 Weight값을 업데이트하면서 오차가 최소가 되는 W를 구하는 방식
= 산의 정상에서 출발지점까지 내려가는 방향으로 조금씩 이동하면 언젠가 도달한다는 사고방식
경사하강법 작동 방식 및 기본 개념
- 일정 배치를 랜덤으로 선택해 훈련하면서 W값을 업데이트하는 방식
- 에포크(epoch) : 비복원 추출을 통해 훈련세트를 모두 사용한 경우 1 에포크를 진행했다고 말한다.
- 스텝(step) : 모델의 가중치를 1번 업데이트 하는 것
ex) 데이터의 크기 = 200, 미니배치의 크기 = 10 인 경우 20스텝을 진행해야 1에포크가 진행된 것
경사하강법의 종류(Sort of Gradient Descent)
- 확률적 경사하강법(Stochastic GD) - 전체 훈련데이터 중 1개 임의로 선택해 경사하강
- 미니배치 경사하강법(Mini-Batch GD) - 전체 훈련데이터 중 특정 크기만큼 임의로 선택
- 배치 경사하강법(Batch GD) - 전체 학습 데이터를 사용해 경사하강
처음에는 배치 경사하강법을 사용했지만 입력데이터의 크기가 크고 레이어가 많을 수록 많은 Computing 자원 (메모리 부족, 많은 시간)이 필요하다.
⇒ 이를 극복하기 위해 확률적, 미니배치 경사하강법이 도입됐다.
대부분의 딥러닝 Framework에서는 미니배치 경사하강법(Mini-Batch GD)이 사용된다.
손실함수의 미분
- 손실함수(Loss function) - 예측값과 실제값의 차이를 함수로 정의한 것
,
- Loss 산출 과정
- Layer를 통과하며 f(x, W)를 계산해 Output을 산출한다.
- 예측값과 실제값을 통해 Loss를 구하고 평균을 산출한다. (이미지를 처리할 때는 픽셀 단위로 손실값을 산출하기 때문에 픽셀단위로 계산하여 전체 픽셀에 대한 손실 평균을 산출한다.)
- 손실함수 일반화를 위한 규제를 추가한다.
-
딥러닝 모델의 목표는 예측값이 실제값을 가장 잘 나타낼 수 있도록 하는 것이고 두 값의 차이를 손실함수를 통해 정의한다. 이는 손실함수가 가장 작은 것이 예측값이 실제값을 가장 잘 나타낸다는 것을 의미한다.
⇒ 손실함수의 값이 가장 작은 부분(Global Minima)에 위치할 수 있도록 W를 업데이트 해야한다.
-
제곱오차 함수(Square Error, SE)를 예로 들어 보자.
, (
), (세로축 - SE, 가로축 - w)
- 개형을 봤을 때 이차함수로 표현되고 함수가 갖는 가장 작은 값을 가져야 한다.
인 값 중 최솟값을 찾아야 한다.
미분 → 순간변화율
손실함수의 미분 → 편미분을 통해 수행한다.
손실함수의 미분값이 (-)음수인 경우 그만큼 더 증가시켜야 하고 (+)양수인 경우 더 감소시켜야 한다.
(손실함수 미분값) - (
= 학습률, Learning Rate) - 학습률을 통해서 어느 정도 가중치를 조정할 것인지를 조절할 수 있다.
학습률을 통해 가중치의 변동 정도를 조절하기 때문에 학습률을 조정하는 것이 중요하다.
학습률이 너무 크다면 요동치며 최솟값을 잘 찾지 못한다.
학습률이 너무 작다면 최솟값까지 잘 이동하지를 못한다.
요약 및 정리
경사하강법과 손실함수의 편미분을 적용해 최적의 가중치를 학습한다.
- 배치크기 만큼 훈련데이터에서 데이터를 뽑아낸다.
- 예측값을 계산하고 손실값을 계산한다. ⇒ 손실함수를 정의
- 손실함수의 편미분을 통해서 W 가중치를 업데이트한다.
- 1~3을 해당 에포크만큼 반복하여 최적의 가중치를 얻어낸다.