호로록 빨리 지식을 머리에 마구마구 집어 넣어보쟈
딥러닝을 포함한 머신러닝 분야에서 중요한 과적합에 대해서 알아보쟈
과적합이란?
- 맨 왼쪽 그래프에서는 우리가 알고자 하는 값을 전혀 예측하지 못함 - 과소적합
- 가운데 그래프는 학습 데이터로 학습 후 예측 값이 잘 되고 있음 - 적정, 좋은 모델
- 학습 데이터로 학습을 했는데, 학습을 너무 잘해서 학습 데이터에 너무 잘 맞춰진 예측식을 만들다 보니까 학습 데이터가 보지 못한 시험 데이터에 대해서는 제대로 예측하지 못하는 경우가 있음 - 과적합
과적합 해결
- 학습 데이터를 많이 확보
- 학습 데이터 생성에는 돈과 시간이 많이 들어가기 때문에 학습 데이터를 많이 만드는데 어려움이 있을 수 있음
- 그래서 학습 데이터를 확보하기 위해 아래와 같은 방법을 사용함
- 데이터 증식(Data Augmentation)
- 기존 데이터 10개를 가지고 평행이동이나 대칭 이동을 해서 새로운 데이터 10개를 생성함
- 그래서 훈련 시 기존 데이터 10개와 새로 생성한 데이터 10개를 합친 20개를 사용함
- 조기 종료(Early Stopping)
- 학습을 하면 입력 값을 모델에 넣고 출력 값을 뽑아내고, 뽑아낸 예측 값을 실제 값과 비교를 해서 Loss를 계산해서 최적화를 진행함
- 학습 반복 횟수가 늘어날수록 기존에 있던 학습 데이터를 맞출 확률이 높아짐
- 기존에 있던 학습 데이터는 잘 배워지기 때문에 Loss가 작아짐
- 시험 데이터는 학습에는 관여하지 않고 평가하는데 쓰이기 때문에 잘 맞추다가 과적합이 있다면 학습 반복 횟수가 늘어날 수록 Loss가 높아짐
- 조기 종료 시점을 확인하여 과적합을 방지함
- 굴곡이 2개가 생길 수도 있기 때문에 학습 반복 횟수인 epoch를 크게 해서 어떻게 그래프가 나오는지 확인해야 함
- L1, L2 정규화(L1, L2 Regularization)
- Loss function에서 가장 아랫부분인 w*까지 간다면 train data에 최적화가 되었다는 것을 알 수 있음
- 최소점까지 가지 못하게 방해물을 줌
- 바운더리 경계를 만들어서 그 안에서만 처리하도록 함
- Loss function 뒤에 정규화 텀(바운더리)을 붙여줌
- L1 : 절댓값 미분이기 때문에 V 형태의 그래프, 0 기준 왼쪽은 -1, 0기준 오른쪽은 1 , 0 기준에서는 subgradient를 이용하면 됨
- L2 : weight decay라고도 함
- 드롭아웃(Dropout)
- 계산할 때 랜덤으로 노드를 제거하여 계산을 하지 못하도록 하는 방법
- 들어오는 값에 0을 곱해서 노드를 없애는 것처럼 함
- 드롭커넥트(DropConnect)
- 드롭아웃은 노드를 없애는 반면, 드롭커넥트는 일부 가중치를 0으로 만드는 것
- 교란라벨(DisturbLabel)
- 과적합을 방지하기 위해 일부 실제 값을 틀린 라벨로 바꿔치기하는 것
- 배치 정규화(Batch Normalization)
- 층과 층 사이에 배치 정규화를 넣어줌으로써 과적합을 해결함
- 데이터에 대해서 항상 같은 분포에서 계산이 되도록 해줌
- 각 배치마다 정규화된 정도가 다를 수 있어서, 감마와 베타를 곱하고 더해서 shift를 해줌
- 라벨 스무딩(Label Smoothing)
- Loss를 계산할 때 어떤 특정 비율로 실제 값을 조정해주는 것
- 노이즈 주입(Noise Injection)
- 입력값 자체나 레이어 중간의 임의의 노이즈를 주입
- train data 자체에 노이즈를 추가함
- 계산 과정에 노이즈를 추가함
- 교차 검증(Cross Validation)
- 과적합을 직접적으로 해결하는 방법은 아님
- 과적합이 됐는지 안됐는지 판단하는 척도
- Train data, Validataion data, Test data로 나눔
- Test data는 오로지 검증할 때만 사용함
- 교차 검증은 Train data를 kfold 한 후 순차적으로 Validation data를 두는 것
- 위 이미지는 3fold 예시
- 예를 들어, 5fold일 경우 TTTTV, TTTVT, TTVTT, TVTTT, VTTTT 이런 식으로 할 수 있음
- 단점 : 평균 loss 또는 평균 accuracy로 모델을 판단하기 때문에, k가 3일 경우 3번을 학습시켜야 하기 때문에 시간이 오래 걸린다는 단점이 있음
- 데이터 증식(Data Augmentation)
내용에 문제가 있으면 댓글로 알려주세요!
출처 : 인프런 - 실전 인공지능으로 이어지는 딥러닝 개념 잡기(딥러닝 호형)
'딥러닝 공부' 카테고리의 다른 글
인공 신경망의 성능 개선 - 모델 튜닝(Model Tuning) (0) | 2021.09.28 |
---|---|
인공 신경망의 성능 개선 - 데이터 불균형(Data Imbalance) (0) | 2021.09.28 |
오토인코더(Autoencoder) (1) | 2021.09.28 |
장단기 메모리와 게이트 순환 유닛(LSTM and GRU) (0) | 2021.09.28 |
순환 신경망(Recurrent Neural Networks) (0) | 2021.09.23 |