Optimization
Optimization는 Loss Function의 결과값을 최소화하는 가중치를 찾아내는 것이 목적이다.
Random Search
주의! 정확도의 편차가 크기 때문에 실제로는 쓰이지 않는 개념이다.
임의로 샘플링한 W들을 많이 모아놓고 Loss를 계산해서 어떤 W가 좋은지를 살펴보는 방법이다.
Gradient Descent
1차 미분계수를 이용해 함수의 최소값을 찾아가는 방법이다. 함수 값이 낮아지는 방향으로 결과값을 변형시켜가면서 최종적으로 최소 함수 값을 갖도록 하는 값을 찾는 방법이다.
Stochastic Gradient Descent(SGD)
2-2에서 살펴본 방법을 Full Gradient Descent라고 하는데 모든 Data에 대하여 일일이 작업을 하기에는 연산량도 많기 때문에 오래걸린다. 그래서 실제로는 속도와 효율성을 높이기 위해 Train Data의 일부만 사용해서 Gradient을 계산하는데 이 중 대표적인 방법이 Stochastic Gradient Descent(SGD)다.
Minibatch라는 작은 트레이닝 샘플 집합으로 나눠서 반복 학습하여 Loss의 전체 합의 추정치와 실제 Gradient의 추정치를 계산한다.
이때 Minibatch의 값으로는 값을 주로 사용한다.
# 미니배치 경사하강법
while True:
data_batch = sample_training_data(data, 256) # 예시)배치개수 256개
weights_grad = evaluate_gradient(loss_fun, data_batch, weights)
weights += - step_size * weights_grad # 파라미터 업데이트
Python
복사