본문 바로가기
카테고리 없음

[Tensorflow] Reguralization

by 별토끼. 2019. 8. 22.
반응형
Reguralization
  • 기계학습 문제를 풀 때, 과적합 문제를 해결하기 위한 방법. 
Overfitting

학습 데이터를 과하게 잘 학습하여 실제의 오차는 증가하는 것을 말한다. 위 그래프에서 처럼 Training Error는 감소하지만, Test Error는 증가하는 지점을 말한다.

Batch
  • 사전적 의미 : 집단
  • 한번에 여러 개의 데이터를 묶어서 입력하는 것.
  • GPU의 병렬 연산 기능을 최대한 효율적으로 사용하기 위해 쓰는 방법.
  • GPU의 병렬 연산 기능을 최대한 효율적으로 사용하기 위한 방법.
Batch Gradient Descent
  • 전체 데이터 셋에 대한 에러를 구한 뒤 기울기를 한번만 계산하여 모델의 parameter를 업데이트 하는 방법.
  • 여기서 사용한 Batch는 total training dataset을 말한다. 데이터를 분할해서 다루는 것을 말함.
  • 장 점 :
    • 병렬 처리에 유리
    • 전체 데이터에 대해 업데이트가 한번에 이루어져 전체 계산 횟수가 적다.
  • 단 점 : 
    • 한 스텝에 모든 학습 데이터 셋을 사용하여 학습이 오래 걸린다.
    • 모델 업데이트 전까지 축적해야 해서 많은 메모리가 필요.
Stochastic gradient descent(SGD)
  • 추출된 데이터 한 개에 대해 error gradient 계산하고,  Gradient descent 알고리즘을 적용하는 방법.
  • 장 점 :
    • step에 걸리는 시간이 짧아 수렴 속도가 상대적으로 빠름
  • 단 점 :
    • 데이터를 한개씩 처리하여 GPU 성능 전부 활용할 수 없음
Batch Normalization
  • 딥러닝의 가장 골치아픈 문제인 Vanishing/exploding gradient문제를 해결할 획기적인 방법.
  • whitening의 단점과 Internal covariance shift를 줄이기 위함.
  • 학습의 효율을 높이기 위해 도입
  • 과적합의 위험을 줄일 수 있다.
  • 각 hidden layer에서 정규화를 통해 입력 분포가 일정하게 된다.

  • 딥러닝 모델의 구조 : 입력층 -> 은닉층 -> 출력층 
  • 입력층의 데이터는 쉽게 normalization 가능하나, 이후 레이어들의 입력은 쉽지 않음.
  • 이를 해결해 주는 것이 Batch Normalization
  • 각 feature 별로 평균과 표준편차를 구해준 다음 normalize 해주고,  scale factor와 shift factor를 이용하여 새로운 값을 만들어준다.
Dropout
  • hidden Layer 갯수가 많아지면 학습능력은 좋아지나, overfitting에 빠질 가능성 높고, 학습시간 길어짐.
  • 학습 성능 개선을 위해 모델을 결합하고, 각각 무작위로 선정한 네트웍의 일부를 생략하는 것.
  • 생략한 네트웍은 학습의 영향을 끼치지 않게 된다.
  • weight들이 서로 동조화 되는 현상이 발생할 수 있는데 무작위로 생략을 하면서 동조화 현상을 피할 수 있다.
  • hidden unit의 활성도가 조절되어 독립적으로 feature를 얻을 수 있고, 서로 간의 correlation이 낮은 feature를 얻을 수 있게 된다.

 

반응형

댓글