[Boostcamp AI Tech] 2주차 Day 2 학습 기록

bluegun·2021년 8월 10일
0

AI Tech 2기 활동

목록 보기
7/87

학습 내용

Optimization(최적화)

  • Optimization 관련 용어가 많으므로 이를 정확히 이해하고 넘어가는게 중요하다.

  • Gradient Descent : 1차 편미분한 값을 빼 loss function을 줄인다.

  • Generalization

    • 일반적으로 Training error가 우하향 곡선을 그리더라도, Test error는 일정 학습량을 기준으로 우상향 할 수 있다.
    • Generalization gap : Training error와 Test error의 차이
      • 기본적으로 gap이 크면 성능이 안 좋고, Training error가 높은 경우에는 gap이 작아도 안 좋다.
  • Overfitting vs Underfitting

    • Overfitting

      • Training data에 대해 잘 동작하지만 Test data에는 잘 동작하지 않는다.
      • 데이터 수에 비해 학습을 너무 많이 하면 발생
    • Underfitting

      • Training data에 대해서 잘 동작하지 않는다.
      • 데이터 수에 비해 학습을 조금 하면 발생
    • 둘의 중간 지점을 잘 찾아야 적절한 결과를 얻을 수 있다.

  • Cross-validation

    • 학습할 때 training data과 test data를 나누는데, 이를 적절한 비율로 나누는 것이 중요하다.

    • cross-validation

      • training data를 epoch마다 k개의 fold로 나누어, 1개의 fold는 validation, 나머지는 training에 사용한다.
      • 다음 epoch때는, 다른 fold를 validation에 쓰고 나머지를 training에 쓴다.
    • cross-validation을 해서 최적의 parameter set을 찾고, 이를 고정시키고 학습 때는 모든 data를 다 사용한다. ???

  • Bias, Variance

    • Bias

      • 출력의 평균과 target과의 거리
      • target에 잘 접근하면 Bias가 낮다, 영점이 잘 안잡히면 Bias가 높다
    • Variance

      • 입력에 대해 출력의 일관성
      • 출력이 잘 모여있으면 Variance가 낮다, 출력이 분산돼있으면 Variance가 높다
    • Bias, Variance tradeoff

      • bias, variance는 하나가 높아지면 하나가 낮아질 수 밖에 없다.
  • Bootstrapping

    • 학습 데이터에 대해 subsampling으로 학습 데이터를 여러 개 만들고, 그걸 가지고 여러 model(metric)을 만들어서 무언갈 하겠다.
  • Bagging, Boosting

    • Bagging

      • random subsampling을 통해(전체 data 수가 100이면 80만 활용하는 식) model을 여러 개 만들고, output들을 종합하여 예측
      • ensemble이 bagging에 속할 때가 많다.
    • Boosting

      • model을 만들어서 예측했을 때, 예측이 안 된 데이터가 있으면, 다음 번엔 예측이 안 된 데이터를 맞추는 모델을 만든다.
      • 이를 반복해 나간 후, 만든 model들 (weak learner)를 Sequential하게 합쳐서 하나의 strong learner를 만든다.

      Bagging, Boosting 이미지

  • Gradient Descent Methods : SGD, Mini-batch, batch

  • Batch-size : 일반적으로 작게 잡는게 성능이 좋다.

    • Flat minimum : 완만함, Training function에서 조금 멀어져도 Test function에서 적당히 낮은 값을 가진다.
    • Sharp minimum : Training function에서 조금만 멀어져도 높은 값을 갖는다.
  • Pytorch나 tensorflow 등에서 자동으로 미분을 계산해준다(automatic differentiation)

  • 미분은 알아서 해주지만 Optimizer는 상황에 맞게 내가 잘 골라야 한다.

  • Optimizer

    • (Stochastic) Gradient Descent

      • Wt+1 = Wt - ngt(n: learning rate)
      • learning rate(step size)를 잡기가 너무 어렵다
        • 너무 커도, 작아도 학습이 잘 안된다.
    • Momentum(관성)

      • 한 번 Gradient가 이쪽 방향으로 흐르면, 이 방향을 다음 Gradient 때도 활용하자
      • Gradient가 방향이 막 바뀌어도 어느정도 잘 학습이 된다.
    • Nestrov Accelerated Gradient

      • Lookahead gradient를 활용
      • 좀 더 봉우리에 빨리 간다...? 조사 필요
    • Adagard

      • neural network의 파라미터가 지금까지 얼마나 변해왔는지를 봄
      • 지금까지 많이 변한 파라미터는 조금, 조금 변화한 파라미터는 많이 변화시킴
    • Adadelta

    • learning rate가 없다.

    • 바꿀 수 있는 요소가 많이 없어서 잘 활용되지는 않는다.

    • RMSprop

    • Adam

      • 일반적으로 제일 잘되는 편
      • Adaptive Moment Estimation
  • Regularization

    • Generalization을 잘 되게 하기 위해 사용(학습에 반대되게 함, 학습을 방해함)

    • 학습을 방해함으로서 얻는 이점 : 학습데이터에만 잘 작동하는 것이 아닌, 실제 test data에도 잘 동작하게 함.

    • 학습을 위한 도구 같은거라 하나씩 직접 해봐야 잘 되는지 안 되는지 알지만, 보통은 잘 된다.

    • Early stopping

      • 학습을 일찍 멈춘다
      • Training error, Validation error를 가지고, loss가 줄어들다가 커지기 시작하는 시점에서 멈춤
    • Parameter norm penalty

      • 파라미터가 너무 커지지 않게 한다.
      • Weight decay
      • 공간적으로 보면, 함수가 최대한 부드럽게 나오도록 해준다.
    • Data Augmentation

      • 딥러닝은 데이터가 많으면 웬만하면 잘 된다.
      • 따라서 가능하다면, 데이터를 회전시키거나 뒤집거나 해서 데이터 수를 늘리는 것이 도움이 된다.
      • 단, MNIST처럼 뒤집거나 회전시키면 원래 의미를 잃어버리는 경우도 있으니 주의해서 써야한다.(label이 변화됨)
    • Noise Robustness

      • input data와 weight에 noise를 집어넣음.
      • 실험적으로 잘 나온다는 결과가 있음.
    • Label smoothing

      • Mixup, cutout등의 기법으로 input에 변형을 줌.
      • 왜 잘되는지는 모르지만 성능이 많이 오른다.
    • Dropout

      • Neural network의 일부 weight를 0으로 만듬.
      • 수학적으로 엄밀히 증명된건 아니지만, model을 좀 더 robust하게 만든다고 함.
    • Batch normalization

피어 세션

  • 필수 과제의 코드 구조에 대해 발표했다.
    • Pytorch에 익숙하지 않은 사람이 많아서, 기능들도 같이 설명하는 데 중점을 두었다.
  • 선택 과제에 대해 현재까지 이해한 만큼 설명하는 시간을 가졌다.
    • 아직 이해가 부족해 더 공부해야 한다.

마스터 클래스

  • CV, NLP 가이드 클래스
    • CV, NLP 분야의 기술들을 일부 설명하고, 특징들을 들을 수 있었다.
    • 어디를 공부하든 나중엔 다 배우게 될 가능성이 높으며, 시장에 신경쓰기 보단 관심있는 내용을 신경 쓰는 편이 좋다.
  • 데이터 시각화

느낀 점

  • 현재까진 CV쪽 기술이 친숙하고, CV로 간다고 해서 관심있는 분야가 없거나 취업에 불리하진 않을 것 같다는 생각이 들기 시작했다. 조금 더 관련 일자리에 대해 조사해보고 최종적으로 어느 파트를 공부할 지 결론을 내려야겠다.

  • 선택 과제를 하루종일 준비했는데, 완전히 이해도 못하고 코드도 못 적고 있다. 일단 통계학에 대한 복습이 많이 필요한 것 같다.(확률분포 관련)

유용한 사이트

0개의 댓글