ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 머신러닝: Loss function이란? (Multiclass SVM loss, Softmax Classifier )
    머신러닝 2020. 10. 1. 20:40

    < 손실 함수(Loss function)이란? > 

     

     

    다음과 같이 이미 classifer가 된 결과물이 있다. 

     

    하지만 보시다시피 각각의 이미지 값에 대해서 해당 label(cat, car, frog)들은 최고의 값을 갖지 못한다. 

     

    이러한 문제점들을 개선하기 위해 만들어낸 개념이 loss function이다. 

     

    (Loss를 줄이는 Optimization에 대해서는 이번 포스팅에서 다루지 않는다)

     

     

     

    (수치가 높을수록 그 클래스와 같을확률이 높다)

     

    loss란 쉽게 말해서 들어온 인풋 이미지가 머신러닝 결과

     

    잘 들어 맞을수록 낮고, 반대로 잘 들어맞지 않는다면 높다. 

     

    즉, 현재 내가 판단하는게 얼마나 좋은 위치인가임을 알려준다.

     

     

     

    Loss function은 다음과 같이 나누어진다.

     

    - Multiclass SVM loss

    - Softmax Classifier

     

     

     

     

    <Multiclass SVM loss>

     

     

    위와 같이 세 종류의 인풋 이미지와 label이 있다. 

     

    그리고 이를 다음과 같은 데이터 셋으로 표현한다.

     

     

     

    여기서 xi 는 들어온 이미지(인풋)

    yi 는 label을 의미한다. 

     

     

     

    Loss function은 다음과 같이 정의된다. 

     

     

    여기서 s = f(xi, W),

     

    ( i = yi 일때, 자기 자신을 포함시켜 버리면 문제가 없어도 loss가 1로 측정된다)

     

     

     

    위 식을 이용해 직접 Loss를 계산해보자 

     

    첫번째 인풋 cat에 대해서 ( i = 1 )

     

    cat label에 대한 loss = 해당되지 않음  ( ∵ j = yi )

    car label에 대한 loss = car - cat + 1 = 5.1 - 3.2 + 1 = 2.9 

    frog label에 대한 loss = 0

     

    cat에 대한 총 loss (L1 loss)= 2.9 + 0 = 2.9

     

     

     

    두번째 인풋 car에 대한 loss ( i = 2 )

     

    cat label에 대한 loss = 0

    car label에 대한 loss = 해당되지 않음( ∵ j = yi )

    frog label에 대한 loss = 0

     

    cat에 대한 총 loss (L2 loss)= 0 + 0 = 0

     

     

     

    세번째 인풋 frog에 대한 loss ( i = 3 )

     

    cat label에 대한 loss = 2.2 + 3.1 + 1 = 6.3

    car label에 대한 loss = 2. 5 + 3.1 + 1 = 6.6

    frog label에 대한 loss = 해당되지 않음( ∵ j = yi )

     

    cat에 대한 총 loss (L3 loss)= 6.3 + 6.6 = 12.9

     

     

    ∴ L = (L1  + L2 + L3) / 3 = (2.9 + 0 + 12.9) / 3 = 5.27

     

     

     

     

     

    < W는 어떻게 설정하는게 가장 좋을까 >

     

    어떤 W를 써야 loss를 줄여서 가장 좋은 class 분류를 할 수 있을까?

     

     

    1) 만약 합 대신 평균을 쓴다면

     

    loss가 더 작아진다

     

    이는 의미상으론 크게다르지 않다.

     

     

     

    2) 만약 제곱을 쓴다면

     

     

    높은 값이 더 강조되고

     

    안 좋은 쪽이 더 좋아지도록 loss가 정해진다.

     

    좋은 쪽에 대한 개선은 없다.

     

     

    3) 만약 W대신 kW라 한다면

     

    W가 k배된다면, loss값들 또한 k배가 될 것이다.

     

    하지만 이 또한 어떤 W가 가장 좋은지 알 수 없다.

     

    그래서 이를 위해 Regularization이라는 개념이 도입된다.  

     

     

     

     

    < Regularization > 

     

     

    오버피팅(Over fitting)에 대한 해결 방안이다.

     

    ※ Overfitting: feature가 너무 많거나 지엽적인 데이터를 학습하여 새로운 데이터에 대해서는 예측을

    잘못하는 것

     

    다음과 같이 R(w)라는 정규화함수를 추가한다.

     

     

     

     

    ※ hyperparameter: 배울 수 없는 파라미터, 프로그래머가 정해주어야 하는 파라미터

     

     

     

     그리고 다음과 같은 R(W)들이 존재한다.

     

     

     

    예를 들어 L2 regularization을 사용하여 다음과 같은 경우를 비교해보자

     

    x = [1, 1, 1, 1]

    w1 = [1, 0, 0, 0]

    w2 = [0.25, 0.25, 0.25, 0.25]

     

     

     

    전자와 후자는 Wx가 같은 값을 갖지만

     

    전자의 L2 regularization의 경우 1 + 0 + 0 + 0  = 1

    후자의 L2 regularization의 경우 1/16 + 1/16 + 1/16 + 1/16  = 1/4

     

    후자가 더 작은 Loss를 갖는다는 것을 알 수 있다. 

     

     

     

     


     

    <Softmax classifier>

     

    SVM의 경우에는 조건만 만족하면 그 이상으로 더 좋아질 수 없다.

    (가장 좋은 경우가 0으로 정해져 있으므로)

     

    하지만 Softmax는 확률을 이용하기 때문에 

     

    지속적으로 좋아질 수 있는 가능성이 있다. 

     

    확률이 1이 될때까지 계속 노력한다. 

     

     

    Softmax classifier loss

     

     

    다음과 같은 경우가 있을 때  

     

    exponential해준 후에 probabilites를 구하면 다음과 같다.

     

    cat의 loss probablilty = 0.13

    car의 loss probablilty = 0.87

    frog의 loss probablilty = 0.00 이므로

     

    cat의 probability가 1, car의 probablity가 0이 될 수 있게

     

    optimization 또는 머신러닝 해준다면 좋은 결과를 얻을 수 있다. 

     

     

     

    반응형

    댓글

Designed by Tistory.