Processing math: 100%

산업공학/Deep Learning

[딥러닝] Loss Function

테드리 2024. 8. 18. 17:09

1. Loss Function

Loss(손실)란 정답값과 예측값의 오차를 의미한다

 

Loss Function의 정의:

  • Neural Network 모델이 예측한 값 ˆY와 실제 값 Y 간의 차이의 지표를 의미한다
  • 대표적으로 MSE가 있다. L(Y,ˆY)=1Nn1(yi^yi)2

따라서 이 L값이 낮아질수록 NN 모델의 성능은 좋아진다고 볼 수 있다. 즉, 손실함수의 값이 최소가 되도록 weight들의 값을 최적화하는 것이 모델 학습의 목적인 것이다.

 

2. Deep Learning의 Task

Loss Function은 풀고자 하는 Task에 따라 다르다.

 

1. Regession (회귀) : 어떤 연속적인 값을 예측하는 Task

2. Classification (분류) : 어떤 클래스의 라벨을 예측하는 Task

 

1. Regression의 Loss

(1) L2 Loss (MSE)

L(Y,ˆY)=1NNn=1(yi^yi)2

  • 장점 : Convergence가 더 빠르다
  • 단점 : Anomaly에 더 민감하다

 

(2) L1 Loss (MAE)

L(Y,ˆY)=1NNn=1|yi^yi|

  • 장점 : L2에 비해 anomaly에 비교적 robust하다.
  • 단점 : 0에서 미분가능하지 않다

 

(3) Huber Loss

{12(yi^yi)2if|(yi^yi)|<δδ×(|yi^yi|δ2) if otherwise

  • 장점 : L2의 fast convergence와 L1의 Robust의 장점을 모두 겸비하고 있다
  • 단점 : 한 번만 전구간 미분가능하다

 

(4) Log - Cosh Loss

log(cosh(^yiyi))

  • Huber Loss와 유사하지만 전구간 미분이 두 번 가능하다

 

2. Classification의 Loss

Ground Truth Label : Yi,c = i번째 데이터의 레이블이 class c일 확률

Predicted Label : ˆYi,c = i번째 data의 레이블이 class c라고 예측할 확률

 

(1) Cross Entropy Loss

Cc=1Yi,clogˆYi,c

 

(2) KL Divergence Loss

Cc=1Yi,clog(Yi,cˆYi,c)

  • 장점: 학습 속도가 빠르다
  • 단점: Outlier및 Noise에 더 취약, 민감하다.

 

(3) L1 Loss (MAE)

L(Y,ˆY)=1NNn=1|yi^yi|

  • 장점 : Outlier및 Noise에 비교적 robust하다.
  • 단점 : 학습 속도가 Cross Entropy나 KL Divergence에 비해 느리다

 

3. Pytorch로 구현하기

<pseudo code>

# initalize loss function

loss_fnc = nn.MSELoss(reduction = "mean")

for batch in dataloader:
    input, ground_truth = batch
    optimizer = zero.grad()
    predicted = model(input)
    
    #compute loss
    loss = loss_fnc(predicted, ground_truth)
    
    loss.backward()	#backward pass
    optimizer.step()	#step function

 

  • loss.backward(): loss에 대한 gradient wL 계산
  • optimizer.step(): gradient descent하여 다음 step의 gradient를 업데이트한다

 

reduction = 'mean'과 'none'의 차이

 

(1) reduction = "none"

  • 각 데이터 sample 별로 loss를 구한다. 주로 evaluation 단계에서 사용

L(Y,ˆY)Rb

 

(2) reduction = "mean"

  • 각 데이터 sample 별로 loss를 구해서 average를 취한다. 주로 Training 단계에서 사용 Bb=1L(Y,ˆY)Rb

Loss Function" target="_blank" rel="noopener" data-mce-href="http://Loss Function">http://Loss Function

 

GitHub - taekyounglee1224/Pytorch_DL: Hands-on deep learning models with Pytorch

Hands-on deep learning models with Pytorch . Contribute to taekyounglee1224/Pytorch_DL development by creating an account on GitHub.

github.com