Boostcamper's TIL (6)

최현진·2021년 8월 10일
0

boostcamp

목록 보기
6/20

2021/08/10

학습한 내용

DL Basic

Optimization

최적화 문제는 다음과 같은 개념으로 분류할 수 있으며 통계학으로 부터 전해진 내용들이다.

  • Generalization
  • Under-fitting, Over-fitting
  • Cross validation
  • Bias-variance tradeoff
  • Bootstrapping
  • Bagging, Boosting
  • Generalization
    학습 Iteration이 반복될 수록 Train set에 대한 error는 줄어들게 된다. 하지만 Test set에 대한 error는 증가하게 되는데 Test set과 Train set의 error 차이를 Generalization gap이라고 한다. Generalization이 좋다는 말은 Train, Test 데이터 성능이 둘 다 좋다는 이야기 이다.

  • Under-fitting
    학습이 충분히 진행되지 않은 모델 or Network가 너무 간단한 모델

  • Over-fitting
    Test set에 대한 학습이 많이되어 새로운 데이터(Test set)에 대한 결과가 안좋은 모델

  • Cross-validation (K-fold)
    Train data를 K로 분할하고 K-1개로 학습, 나머지 1개로 Validation을 진행하는데 수많은 Hyperparameter들의 최적값을 찾기 위해 사용하거나 최대한 Train data를 사용하기 위해 사용하는 방법이다.

  • Bias-variance tradeoff
    Cost 함수를 최소화 하기 위해 bias, variance, noise를 줄일 수 있다. 하지만 동시에 줄이는 것은 불가능하다 (하나의 변수가 줄어들면 다른 하나는 증가) 이를 tradeoff라 한다.

  • Bootstrapping
    데이터 중에서 랜덤으로 일부만 사용해서 모델을 여러개 만들고 모델들의 결과들을 취합하는 방법이다.

  • Bagging, Boosting
    Bagging은 여러개의 모델을 만들어 결과들의 평균으로 output을 만든다. (여러개의 모델 사용)
    Boosting은 학습된 데이터중 제대로 결과가 나오지 않은 데이터를 모아 다시 학습시켜 모델의 성능을 올리는 방법이다. (결과적으로 모델 1개)

Gradient Descent Methods

경사하강 메소드에 적용하는 여러가지 알고리즘이 있다. 이 알고리즘들은 역전파 과정에서 gradient를 단순히 빼주는것 뿐만아니라 추가 연산을 해서 극소값에 도달하도록 도움을 주는 알고리즘이다.

  • Momentum : gradient를 통해 어느 방향으로 이동해야 하는지 알 수 있다. Momentum은 이동해야 하는 방향으로 관성을 더해 더 빨리 극소값에 도달할 수 있도록 해준다.
  • Nesterov Accelerated Gradient(NAG)
  • Adagrad(Adaptive gradient): neural net의 parampeter가 많이 변했는지 고려해 많이 변했으면 적게 변화시키고 조금 변했으면 더 많이 변화시키는 알고리즘이다. 지금까지 gradient가 얼마나 변했는지 저장하기위한 값(G)이 필요하다. 하지만 G가 계속 커지면 0에 가까워져 학습이 진행되지 않는다
  • Adadelta : Adagrad의 단점인 G가 계속 커지는 것을 보완한 방법으로 window 사이즈 만큼만 G를 저장한다.
  • RMSprop
  • Adam : gradient square와 momentum을 같이 사용한다. 가장 많이 사용된다.

Regularization

학습을 방해하도록 하는 방법이며 Test set에도 잘 동작하도록 한다.(Generalization이 잘 되게 하고 싶을 때 사용한다.)

  • Early stopping : 학습이 진행됨에 따라 Train set에 대한 error는 점점 줄어들지만 Test set에 대한 error는 일반적으로 증가한다. 이를 막기위해 Validation set을 이용하며 Validation에 대한 error가 증가할 때 학습을 멈춘다.

  • Parameter norm penalty : 완만한 함수일수혹 일반적으로 Generalization이 좋을 것이기 대문에 loss에 Parameter Norm Penalty를 더해준다.

  • Data augmentation : 일반적으로 Data set이 적을때 전통적인 ML보다 Deep Learning이 성능이 더 좋다고 할수 없다. (Data set이 많을 때 성능이 좋다) 따라서 label의 값이 변하지 않는 선에서 데이터에 변화(rotate, crop,...)를 주어 Data set을 늘리는 방법이다.

  • Noise robustness: input이나 weight에 noise를 준다.

  • Label smoothing

  • Dropout: 일부 노드에 무작위로 0을 곱해 학습속도와 결과를 향상시킬 수 있다.

  • Batch normalization


피어세션

Batch Normalization

각 Layer마다 Input 분포가 달라짐에 따라 학습 속도가 느려지는 현상인 Internal Covariance shift라는 현상이 있다. 이를 방지하기 위한 기법으로 Layer의 Input 분포를 정규화 하여 학습 속도를 빠르게 할 수 있다.

BN(h;γ,β)=β+γhE(h)(Var(h)+ϵ)B N(h ; \gamma, \beta)=\beta+\gamma \frac{h-E(h)}{\sqrt{(\operatorname{Var}(h)+\epsilon)}}

h는 input의 분포이며 β,γ\beta,\gamma가 없다면 정규화하는 수식과 일치한다. β,γ\beta,\gamma는 각각 분포를 shift시켜 scaling 하는 값이며 back propagation을 통해 학습한다.

Inductive Bias

학습 단계에서는 만나보지 않았던 상황에서 정확한 예측을 하기 위해 사용하는 추가적인 가정이다. 이 가정을 통해 훈련 데이터 뿐만아니라 학습 데이터에도 잘 동작하는 Generalization을 하기 위해 사용한다.


Reference

파이썬 딥러닝 파이토치(이경택 ISBN 978-89-5674-857-3)
https://velog.io/@euisuk-chung/Inductive-Bias%EB%9E%80 (inductive bias)


profile
Boostcamper!

0개의 댓글