Loss Function (손실 함수)
* Loss Function (손실 함수)
- 출력층에서 얻어진 예측 값과 실제 값(레이블) 사이의 차이를 계산
- 모델의 예측 정확도를 수치적으로 표현
- Model 학습 시, Loss 를 최소화 하는 방향으로 Weight 와 Bias 를 업데이트 함
- 회귀에서는 MSE, MAE 등을 사용
- 분류 문세에서는 주로 Cross-Entropy 사용
* MSE (Mean Squared Error; 평균 제곱 오차)
- 예측 값과 실제 값의 차이 (= 오차, 잔차) 를 제곱 후 평균 계산
- 오차의 절댓값이 클 수록 더 큰 페널티 반영
- 회귀 문제에서 널리 사용
* MAE (Mean Absolute Error; 평균 절대 오차)
- 예측 값과 실제 값의 차이의 절댓값의 평균 계산
- 오차의 크기를 축소, 확대 없이 그대로 반영
: MSE 보다 이상치에 덜 민감하다
- 예측 오차가 균일하게 분포되어 있을때 유용
* Cross Entropy (교차 엔트로피)
- 다중 클래스 분류 문제에서 각 클래스에 대한 예측 확률과 실제 클래스 간의 차이를 측정
: 주로 확률 분포 간의 차이를 확인
* Binary Cross-Entropy (이진 교차 엔트로피)
* Gradient Descent (경사 하강법)
- 정확한 파라미터(W, B) 가 아닌 최적의 파라미터의 근사치를 찾는 기법
: 임의의 파라미터를 대입하여 예측 값을 생성하고, Loss 를 확인한 후 파라미터 조정
- 미분 값이 작은 곳(극솟값, local minimum) 으로 수렴하는 특징이 있음
: 이 값은 Loss Function 의 변화율을 나타냄
* Gradient (기울기)
- 각 파라미터(W, B) 에 대한 편미분 값으로, 특정 파라미터가 Loss Function 에 얼마나 영향을 미치는지 나타냄
* Batch Gradient Descent (배치 경사 하강법)
- 전체 Training 데이터 셋을 사용하여 한 번의 기울기를 계산하고 이를 통해 파라미터(W, B)를 Epoch 당 1회 업데이트
- 안정적이고 정확하지만, 데이터 셋이 큰 경우에는 계산 비용이 증가하여, 큰 메모리 가용량이 요구됨
* SGD (Stochastic Gradient Descent; 확률적 경사 하강법)
- 매 반복마다 1개의 데이터 Point 를 사용하여 기울기를 계산하고, 파라미터(W, B)를 Epoch 당 N회 업데이트
- 계산이 빠르고, 적은 메모리로도 수행 가능
- 최적화 과정에서 지역 최솟값을 벗어날 가능성이 높지만, 기울기의 변동이 커서 Loss Function 의 수렴이 불안정
* Mini-batch Gradient Descent (미니배치 경사 하강법)
- Traing 데이터 셋을 작은 Batch 로 나누어 각 배치에 대해 기울기를 계산하고 파라미터(W, B)를 Epoch 당 N/B 회 업데이트
- 계산 효율성과 안정성을 모두 제공하지만 Batch Size 를 잘 설정해야됨
* 모멘텀을 추가한 경사하강법
- 기울기의 누척치를 사용하여 진동을 줄이고, 더 빠르게 최적점에 도달하는 기법
- Momentum, Nesterov Momentum 을 적용한 Optimizer가 사용
- PyTorch 에서는 SGD 옵티마이저에 Momentum 매개변수를 설정하여 사용
* Adaptive Learning Rate 를 사용하는 경사하강법
- 각 매개변수에 대해 학습률을 동적으로 저정하는 방식
- 데이터 규모에 맞춰 학습률을 조정하여 더 빠르고 효율적인 학습 지원
- AdaGrad, RMSpro, Adam 등의 Optimizer 가 이에 해당