[네부캠] Week2 - Linear Classifier과 손실 함수

오홍석·2024년 8월 16일
0

네부캠

목록 보기
6/28

학습 내용


Linear Classifier

  • Linear Classifier은 말그대로 선형으로 어떤 대상을 분류하여 주는 알고리즘을 이야기한다.
  • input image의 모든 픽셀, 채널 값의 가중 합으로 클래스의 점수를 계산하는 방식을 이용한다.

매개변수적 접근 (Parametric Approach)

  • 모든 데이터를 저장하는 것이 아니라 파라미터 값만 저장하는 방식이다.
  • 해당 방식을 적용한 가장 간단한 모델의 형태가 Linear Classifier이다.
  • 반대로 모든 데이터를 저장하는 방식은 non parametric approach로 이전 포스트에서 다룬 NN Classifier 등이 있다.

Parameter들의 Shape

  • input image가 있을 때 10개의 클래스 중에서 알맞은 클래스로 분류하기로한다면, 10개의 클래스 각각에 해당하는 점수를 출력하여 가장 높은 점수를 받은 클래스가 input image의 class로 예측될 것이다.
  • input image는 (32,32,3)(32,32,3)의 shape을 가지고 있다. 해당 이미지를 (3072,1)(3072, 1)의 shape을 가진 하나의 열벡터로 재구성하여 준다.
  • f(x,W)=Wx+bf(x, W) = Wx + b의 함수에 넣어주면 10개의 클레스에 해당하는 점수가 (10, 1)의 shape을 가지는 결과값으로 출력되어야 한다.
  • WW(분류하고자 하는 클래스의 수, 입력 이미지의 픽셀수)의 shape를 가지는 가중치 행렬이 될 것이다. 즉, (10, 3072)의 shape를 가져야 한다.
  • WxWx의 연산 결과 (10, 1)의 shape을 가지는 결과값이 완성된다.
  • bb는 bias로 데이터 셋이 균형잡히지 않고 특정 클래스에 편향되어 있을 경우, 기존 데이터 셋과 무관하게 특정 클래스에 우선권을 부여하는 상수이다.
    • bias trick이라는 것은 bias를 W 가중치 행렬에 포함시켜 구조를 단수한게 만들어 이해를 돕는 것을 이야기한다. 하지만 CV에서는 잘 사용하지 않는 편이라고 한다.
      • Linear Classifier에서 Convolution 파트로 넘어갈 때 매끄럽지 않다.
      • 파라미터들을 초기화 혹은 정규화할 때 가중치와 bias를 따로 보는 것이 유리한 경우가 있다.

매개변수적 접근의 장점

  • 학습이 완료되면 가중치 WW만 있으면 된다. (bias Trick을 사용하지 않으면 W,bW, b 필요하다.)
    • 모든 데이터를 기억하고 저장하지 않고, 가중치 행렬만 있으면 되므로 공간 효율성이 높다.
  • 테스트 시에 행렬과 벡터 곱(WxWx)만으로 예측값 도출이 가능하다.
    • 모든 훈련 데이터와 비교하는 것보다 훨씬 빠르다.

Linear Classifier의 한계

  • 예측값으로 나오는 클래스에 대한 점수는 제한이 없다. -> 커질 수 있다.
  • 해석하기에 어렵다. 점수에 제한이 없기 때문에 예시로 437.9라는 점수가 해당 클래스가 이미지와 얼마나 일치하는지 알 수 없다.

Sigmoid, Softmax

  • Linear Classifier의 점수를 직관적인 해석이 힘든 실수 값으로 출력된다. 그렇기 때문에 이러한 점수를 확률로 변환하여 모델의 출력을 보다 직관적으로 해석할 수 있다.
  • Sigmoid 함수는 이진 분류 문제에서 자주 사용된다.
    σ(z)=11+ez\sigma(z) = \frac{1}{1 + e^{-z}}
  • Softmax 함수는 다중 클래스 분류 문제에서 자주 사용된다.
    softmax(zi)=ezijezj\text{softmax}(z_i) = \frac{e^{z_i}}{\sum_je^{z_j}}

손실 함수

  • 손실함수는 해당 머신 러닝 모델이 얼마나 좋은지, 혹은 나쁜지를 정량화한다.
  • 실제값과 예측값이 어떻게 다른지에 따라 모델에 패널티를 주는 양수를 출력한다.
    • 같은 경우 : 모델에 패널티를 주지 않으므로 손실은 약 0이 되어야 한다.
    • 유사한 경우 : 모델에 패널티를 주어 미세 조정이 가능해야 한다.
    • 격차가 큰 경우 : 크게 페널티가 주어져야지 조정이 가능하다.

차별적(Discriminative) 설정

  • 이진 분류의 경우, 예측값이 0보다 크면 positive class, 그렇지 않다면 negative class로 분류한다.
  • 손실은 yy^y\hat{y}에 따라 결정된다. 부호가 같으면 손실이 작거나 0이되고, 부호가 다르면 손실이 커진다.
  • yy^y\hat{y}의 절대값이 1에 갈까울 수록 자신있는 예측이며, 0에 가까울 수록 자신없는 예측이다.

0/1 손실

  • 모델이 잘못 분류하면 일정한 손실이 발생한다.
  • 제대로 분류하면 손실이 없다.
  • 가장 단순한 손실 함수이지만, 단점으로 yy^y\hat{y} 값이 0일때 미분이 불가능하다.
    Loss=yy^Loss = y\hat{y}

로그 손실

  • 예측이 정확할수록 패널티가 작아진다.
  • 로그 함수는 연속 함수이므로 어느 시점에서나 미분이 가능하다.
    Loss=log(1+eyy^)Loss = log(1 + e^{-y\hat{y}})

지수 손실

  • 로그 손실과 비슷하지만, 잘못된 경우에는 더 많은 패널티를 부여하고 올바른 경우에는 적게 부여한다.
  • 어느 지점에서나 미분이 가능하다.
    Loss=eyy^Loss = e^{-y\hat{y}}

Hinge 손실

  • 오류에 대한 패널티가 선형적으로 증가한다.
  • 오차 범위 내에서 정답인 경우에도 약간의 패널티를 받는다.
  • 더 자신있는 예측을 하는 모델을 만들기 위함이다.
    Loss=Max(0,1yy^)Loss = Max(0, 1 - y\hat{y})

비교

  • 지수 손실은 이상치에 매우 큰 패널티를 부여하기 때문에 이상치의 영향을 강하게 받는다.
    • 노이즈가 많은 데이터에 적합하지 않다.
  • 힌지 손실과 로그 손실을 자주 사용된다.
  • 힌지 손실(SVM)이 계산적으로 더 효율적이다.
  • 로그 손실(로지스틱 회귀)은 출력을 확률로 볼 수 있기 때문에 해석이 더 용이하다.
profile
기동코딩

0개의 댓글