과대적합을 방지할 수 있는 방법
- 예방책일 뿐 100% 해결해주지 않음
- 규제화 함수
- 드롭아웃
- 배치 정규화
규제화 함수
- tensorflow.keras.regularizers
- 케라스에서 제공
- L1, L2, ElasticNet
- 규제화함수는 기능에 맞게 가중치의 합을 구해 손실함수에 더해줌
- 안정적인 그래프가 그려짐
드롭아웃
- 학습이 진행되는 동안 신경망의 일부 유닛을 제외(드롭)
- 일부 유닛의 가중치를 학습에서 제외시킴 -> 학습 데이터에 대한 모델의 예측 성능을 저하시켜서 과적합을 방지함
- 테스트 시에는 드롭아웃이 작동하지 않고 모든 유닛이 활성화되는 대신, 출력값을 드롭아웃 비율만큼 줄여줌
- Dropout rate는 일반적으로 0.2~0.5 사용
- 과적합 해소
- 정확도 역시 개선됨
배치 정규화
- 드롭아웃과 비교되어 사용되는 기법
- 내부 공선성(Internal Covariance Shift)을 해결하기 위해 고안된 방법
- 공선성 : 하나의 독립변수가 다른 하나의 독립변수로 잘 예측되는 경우 혹은 서로 상관이 높은 경우 -> 과대적합의 위험
- 다중 공선성 : https://dacon.io/codeshare/4443?page&dtype&ptype
- 신경망의 층의 출력값은 다양한 입력 데이터에 따라 쉽게 변할 수 있는데, 매우 큰 범위의 출력값은 신경망을 불안정하게 할 수 있음
- ->이 범위를 제한시켜 불확실성을 감소시킴
- 그래디언트 손실/폭방 없이 높은 학습률을 사용할 수 있음
- 자체적인 규제효과가 표함되어 있음
배치 정규화 사용 순서
- Dense or Conv2D -> BatchNormalization() -> Activation()
- loss의 범위가 기존 1.75에서 1.6으로 줄어들긴 했으나 과적합은 일어남
- 과적합 방법론은 아니지만 어느정도 효과는 있다
전체 결과
- 그래프가 벌어지지 않는 것 : 드롭 아웃
- 배치정규화는 과대적합이 발생했지만 가장 높은 성능을 보여줌
- 하지만 과대적합에 매우 강력하거나 항상 높은 성능을 얻을 수 있는 건 아님
전이 학습(VGG16)
- 전이 학습 Transfer Learning
- 해결하려는 문제에서 빠른 속도로 일정 수준의 베이스라인 성능을 얻고 싶을 때 가장 빠른 방법
- 만들어진 층과 가중치를 가져와 개조시켜서 사용
- 사전 학습(Pre-trained)된 네트워크의 가중치를 사용하는 것
- 대표적인 세 가지 전이 학습 방법
- 모델을 변형하지 않고 사용 = 학습된 모델의 층과 가중치를 그대로 사용. 학습시켰던 클래스만 분류 가능. 거의 사용되지 않음
- 모델 분류기를 재학습(가장 대표적) = 출력단의 분류기(Classifier)만 수정해서 모델에 부착. 분류기에 새로운 클래스를 추가하면 학습할 때 사용하지 않았던 클래스도 분류 가능
- 모델 일부를 동결 해제하여 재학습 = 모델의 일부 층(혹은 모델 전체 층)과 분류기만 재학습
- 주로 ImageNet 데이터를 학습시킨 가중치를 사용하거나 보유한 데이터셋을 활용해 재학습 시킴
- Fine Tuning. 미세 조정
- 어떤 구조의 모델이 최고 성능을 낼 지 모르므로 다양한 모델을 사용하는 것도 중요함
- 이미지넷 클래스 : https://deeplearning.cms.waikato.ac.nz/user-guide/class-maps/IMAGENET/
- 케라스 api : https://keras.io/api/applications/
- 사전 학습 모델 사용 시 주요 세 가지 인자를 사용
- weights : ImageNet 데이터를 학습시킨 가중치의 사용 여부 결정. 기본값은 None. 가중치 사용할 경우 'imagenet' 전달
- input_shape : 입력 데이터의 형태를 전달
- include_top : 모델의 분류기를 포함해서 구성할 건지 결정. False를 전달할 경우 데이터셋에 적합한 분류기를 직접 정의해야 됨
동결 해제하는 방법
- 사용하는 데이터셋 특성이 고유하다면 모델의 일부분만 동결을 해제시키고 재학습시킬 필요가 있다
- 모델 끝에 존재하는 층을 동결 해제하는 이유?
- 모델은 상위층(출력과 가까운층)에서 데이터의 구체적인 특성을 학습하고
- 하위층(입력과 가까운 층)에서 단순한(일반적인) 특징을 학습하기 때문
- 상위층-> 눈코입 모양 학습 / 하위층-> 얼굴 모양 학습
- 출력과 가까워질 수록 디테일한 특성을 찾는다
'데이터분석 공부 > DSBA 4기' 카테고리의 다른 글
파이썬 pip install 에러 해결 : 윈도우 환경변수 PATH 설정 (0) | 2024.04.28 |
---|---|
순환 신경망(Recurrent Neural Network, RNN) (0) | 2024.04.22 |
26/03/2024 TIL (파이썬 머신러닝, 회귀 모델, 규제 선형 모델, 다항 회귀, 회귀 트리, Ridge, Lasso, ElasticNet) (0) | 2024.03.26 |
21/03/24 TIL (앙상블 학습, Voting, Bagging, Boosting, Random Forest, GBM, XGBoost, LightGBM) (0) | 2024.03.22 |
20/03/24 TIL(KNN 알고리즘, 서포트 벡터 머신) (0) | 2024.03.20 |