본문 바로가기
AI 및 데이터 분석

신경망 훈련과 역전파: 모델 최적화의 핵심 메커니즘

by riML 2023. 12. 12.

1. 신경망 훈련

입력데이터를 신경망에 넣었을 때,  활성화 함수인 ReLU를 적용한 출력을 나타내는 식은 아래와 같습니다.

 

output = relu(dot(W, input) + b)

 

위의 식에서 텐서 W와 b는 신경망의 층에서 사용되는 가중치(weight)와 편향(bias)을 나타냅니다. 이들은 모델이 훈련되는 동안 학습되는 파라미터(parameters)로서, 초기에는 작은 난수로 초기화됩니다.

처음에는 가중치 행렬 W가 난수로 초기화되어 있기 때문에 출력인 output은 의미 있는 패턴을 갖지 않을 수 있습니다. 그러나 이후에 모델이 훈련 데이터를 기반으로 예측을 수행하고, 예측 결과와 실제 결과 간의 차이에 대한 피드백 신호를 받으면서 가중치 W와 편향 b가 점진적으로 조정됩니다.

훈련은 아래와 같은 훈련 반복 루프에서 이루어집니다. 손실이 충분히 낮아질 때까지 이 단계들이 반복됩니다.
1) 데이터 추출 단계: 훈련 샘플 x와 해당하는 타깃 y_true의 배치를 추출합니다.
2) 모델 실행 단계: x를 사용하여 모델을 실행하고, 예측 y_pred를 얻습니다.
3) 손실 계산 단계: y_pred와 y_true의 차이를 측정하여 해당 배치에 대한 모델 손실을 계산합니다.
4) 가중치 업데이트 단계: 배치에 대한 손실이 조금 감소하도록 모델의 모든 가중치를 업데이트합니다.

최종적으로, 훈련 데이터에서 모델의 손실, 즉 y_pred와 타깃 y_true의 오차가 매우 감소할 것입니다. 모델은 입력에 대해 정확한 타깃을 매핑하는 데 학습되었습니다.

위에서 언급한 4단계 중에서 어려운 부분은 모델의 가중치를 업데이트하는 4단계입니다. 각각의 가중치 값이 증가해야 할지, 감소해야 할지, 그리고 얼마나 업데이트해야 할지를 어떻게 판단할 수 있을까요? 이러한 문제를 해결하기 위해 경사하강법이라는 최적화 기술이 도입되었습니다. 

 

2. SGD와 미니배치 SGD 

확률적 경사하강법(SGD)과 미니 배치 경사하강법은 둘 다 경사하강법의 변형으로, 모델의 가중치를 업데이트하는 방식에서 차이가 있습니다.

확률적 경사하강법(SGD)은 각 훈련 데이터 포인트마다 가중치를 업데이트합니다. 데이터를 하나씩 처리하므로 메모리 사용이 효율적이며 빠르게 수렴할 수 있습니다. 그러나 노이즈가 많이 포함될 수 있고, 업데이트가 매번 발생하여 수렴이 불안정할 수 있습니다.

미니 배치 경사하강법은 미니 배치 단위로 가중치를 업데이트합니다. 미니 배치는 전체 데이터셋의 작은 부분집합입니다. SGD보다는 노이즈가 적고 안정적으로 수렴할 가능성이 높으며, 병렬처리에 유리하며 계산 효율이 좋습니다. 다만 메모리 사용이 더 많을 수 있고, SGD보다는 조금 느릴 수 있습니다.

요약하면, SGD는 각 데이터 포인트마다 빠르게 수렴할 수 있지만 노이즈가 많을 수 있습니다. 미니 배치 경사하강법은 SGD와 배치 경사하강법의 절충안으로, 미니 배치 단위로 가중치를 업데이트하므로 더 안정적이고 효율적입니다. 데이터셋의 크기, 계산 자원의 여유, 모델의 특성 등을 고려하여 적절한 경사하강법을 선택해야 합니다.

 

3. 역전파 알고리즘

함수가 미분 가능하다는 전제하에, 단일 층이 아닌 여러 층으로 이뤄진 모델에서는 가중치에 대한 손실 함수의 그레이디언트를 계산하는 것이 중요합니다. 이를 위해 사용되는 것이 역전파 알고리즘입니다.

 

역전파 알고리즘은 연쇄법칙(Chain Rule)을 기반으로 합니다. 연쇄법칙은 여러 함수로 이루어진 복잡한 함수의 도함수(미분)를 각 함수의 도함수의 곱으로 나타내는 원리입니다.

1. 순전파 (Forward Propagation)
- 먼저 입력 데이터를 모델에 통과시켜 예측값을 얻습니다.
- 입력부터 출력까지의 각 층에서는 선형 변환(가중치 곱과 덧셈)과 활성화 함수를 거칩니다.

 

2. 역전파 (Backward Propagation)
- 손실 함수의 그레이디언트(도함수)를 구합니다. 이 그레이디언트는 모델의 출력에서부터 거꾸로 역방향으로 전파됩니다.
- 각 층에서 그레이디언트를 사용하여 가중치와 편향에 대한 미분값을 계산합니다.
- 이때, 연쇄법칙을 사용하여 각 층의 그레이디언트를 계산합니다.

 

3. 가중치 업데이트
- 계산된 미분값을 사용하여 경사하강법이나 다른 최적화 알고리즘을 적용하여 가중치를 업데이트합니다.

 

간단히 말하면, 역전파는 먼저 순전파로 예측을 만들고, 그 예측과 실제 값 간의 차이를 측정한 후, 그 차이를 각 층과 가중치에 거꾸로 전파하면서 가중치를 조정하는 과정입니다. 이때, 연쇄법칙을 사용하여 각 층의 그레이디언트를 효과적으로 계산합니다.