ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • CS231n_Lecture3_Loss Function and Optimization
    Machine learning, Deep learning 2020. 6. 28. 21:33

    회사에서 머신러닝/딥러닝 스터디에 합류를 자청했다. 뭔가 데이터를 공부한다고 해서 이쪽 분야에 대한 공부의 필요성을 느꼈기 때문이다. 앞으로 매주 들은 강의와 수업 내용을 간략하게 정리해서 업데이트 해보려 한다. 다만, 나중에 내가 복습을 할 때, 정말 짧고 간략하게 쓰면서 쉽고 빠르게 내용을 복기하는데 도움이 되는 방향으로 글을 적으려 한다.

     

    다른 기본 코딩은 깃허브를 활용하려 한다. 데이터 파이프라인 설계와 같은 쪽도 공부를 고려 중인데, 너무 급할 일은 아니기 때문에 텐서플로우 자격증 취득과 클라우드 자격증 취득 후 시작하지 않을까 싶다.

     

    2강 복습

    • 컴퓨터가 이미지 인식에는 카메라가 어떤 각도에 있냐, 조면, 변형, 은폐/은닉, 배경과의 구별 모호, 클래스 내의 variation의 장애물이 있다.

     

    Linear Classifer 해석은 두 가지 가 있다. 1. 템플릿들을 매치해 가는 과정, 매칭 템플릿 2. 고차원 공간에 있는 이미지들 사이에서 클래스 스코어 기반해서 구분해내는 과정을 생각해볼 수 있다.

     

     

    Loss function: 스코어에 대해서 뭔가 만족하지 못하겠다!! 하는 정도를 나타내는게 바로 loss funtions이네?

    그럼 optimization은? → loss function을 줄여주는 파라미터를 찾는 여행을 optimization이라고 한다.

    SVM을 통한 hinge loss

     





     

    모든 클래스에 sum을 한다면? → loss값들이 1씩 증가하고, 평균값까지 1 증가한다.

     

     

    sum대신 mean을 하면 어떨까? →  loss 를 줄이는 파라미터를 찾는것이기때문에, 그렇게 큰 의미는 없다.

     

    제곱을 사용한다면?(squared hinge loss) → 제곱을 해준다라는 말은 non-linear하다는 의미이기 때문에 어느정도 차이는 있다.

     SVM loss에서 최저값, 최대값은 무엇인가? → 최저값은 0, 최대값은 무한대이다. 

      

     코드 구현

    x: 이미지 싱글 컬럼 벡터

    y: 레이블 나타내는 integer 값

    W: Weight metrics

    스코어를 W와 x의 dot연산을 통해 구한다. → margins을 SVM loss 모델에 맞게 구한다. → markings[y]가 실제 ground truth label값이 되기에 0으로 처리해준다.(j와 yi가 같은 경우는 0으로 처리해준다는 의미)

     

    • loos을 0으로 만들어 주는 W 값은 특별한 것일까? → 딱히 뭐 특별하지 않고, 의미 없다. (답 아래)

      W를 2배로 해보니 loss값이 동일하게 0이고, loss을 0으로 만드는 W는 그렇게 특별한 존재가 아니다

    유니크한 W값을 결정해주기 위해서 정규화작업을 한다. 

    data loss는 학습용 데이터들의 최대한의 최적화를 하려고 하는 것이고.

    regularization loss는 테스트 데이터를 최대한의 최적화(일반화)를 하려는 것이다.

    결론:

    • data loss와 regularization loss를 서로 낮출려고 노력하다보면, 데이터에도 가장 적합하고, 가장 작은 W값을 찾아낼 수 있다.
    • regularization이 들어가면 training 에러는 커진다(정확도는 떨어진다), 하지만 우리의 목적인 test set에 대한 performance는 향상
    • regularization 시각에서는 W가 0에 가깝길 바란다. why? w가 0에 가까우면 loss가 0에 가까워진다.
    • data loss 시각에서는 w가 0일 수 는 없다. why? 분류를 해야하기 때문이다.

    x 벡터에 각각 다른 w 가중치를 활용하여 data loss 계산해보면 1로 똑같이 나온다. 이때, regularization 은 어떤 w를 더 선호할까?

    → w2이다.

    → why? w2는 x벡터의 모든 요소를 고려한다. 즉, L2 regularization은 w를 최대로 spread out해서 모든 input feature를 고려하는걸 좋아한다.(옆으로 쫘악 더 길게 이쁘게 펼치기)

    Softmax Classifier

    → 이항에 대한 logistic regression을 다차원으로 일반화하는 것

    • log에 대한 확률을 최대화 하려 한다. 정확한 클래스의 -log확률을 최소화하자는 것

    • Unnormalized log probabilities: 비정규화된 log 확률
    • Unnormalized probabilities: 확률로 나타낸 것.(2의 3.2성, 2의 5.1성, 2의 -1.7성)
    • probabilities: 정규화됨

    loss의 최대값: 무한대

    loss의 최소값: 0 why? 확률은 0보다 작을 수가 없어.

       

     

     

    W = 0일 때?

    • Unnormalized log probabilities는 0이 되고, 
    • Unnormalized probabilities는 각각 1이 된다.
    • 결과적으로 probabilities는 3개 클래스를 나눠서 평균내면 -log(1/3)이 되는데, 이거는 클래스가 3개인 경우이고, 클래스가 7개이면 -log(1/7)이 되겠지? 그러면 x가 0으로 더 가까워지닌 loss값이 무한대로 점점 가는거 같다.

     

    • 데이터들의 수치를 바꿔줬을 때, Softmax와 SVM에서의 변화가 어떻게 나타나는가?
      SVM같은 경우는 뒤에 1과같은 Safety Margin때문에 사실상 loss값이 변하기 힘들고, softmax는 모든 인자를 고려하기 때문에 조금 더 variable하다.


    • Regularization loss는 데이터랑 무관, 즉 데이터만의 함수가 아니고 Weight만을 위한 함수이기 때문에, W에만 영향을 받는다.

     

    • Numerical gradient 는 미분을 통해 loss값을 구하는것 → 근사치이고, 느리다는 단점, 하지만 코딩 작성은 쉽다.
    • Analytic gradient: 정확하고 빠른 장점, 하지만 코딩 작성이 에러날 수 있다.
    • 언제나 Analytic gradient을 사용하지만, Numerical gradient도 함께 써주면서 계산이 정확하게 이뤄지는지 체크를 한다 → gradient check

    • loss function과 data, weight을 전달해서 gradient를 구하고, 구한 gradient와 step_size를 곱해줘서, 이걸 기존 weights에서 뺴주면서 파라미터를 업데이트 한다.
    • step_size는 learning rate나 알파로 일컬어진다. gradient값만큼 weight를 감소시켜줘야 하기 떄문에, 앞에 -부호가 붙는다. 

    • Original W가 어느 지점에 위치하고 있을 때, negative gradient 방향으로 이동하며 최적화해나가는게 바로
      Gradient Descent이다.

     

     

Designed by Tistory.