티스토리 뷰

728x90

오버피팅을 해결하는 방법


1. 더 많은 훈련 데이터 모으기

2. 모델의 학습 파라미터 수 감소시키기(그렇다고 너무 적으면 과소적합이 일어남, 많은 용량과 적은 용량 사이 절충점을 찾는게 중요!)

3. 가중치 규제(가중치가 작은 값 갖도록 강제함)[L1규제-가중치의 절대값 비례 비용 추가, L2규제(=가중치 감소)-가중치 제곱 비례 비용 추가]

3-1 : model.add(layers.Dense(number, kernel_regularizer=regularizers.l2(0.001), activation='',inut_shape=())) 

3-2 : regularizers.l2(0.001) : 가중치 행렬의 모든 원소를 제곱하고 0.001 곱하여 네트워크 전체 손실에 더함

3-3 : 코드 예시 - regularizers.l1(0.001), regularizers.l1_l2(l1=0.001, l2=0.001)

4. 드롭아웃(층의 출력 값에 노이즈를 추가해 중요하지 않은 패턴을 없앰)

4-1 : 코드 예시model.add(layers.Dropout(0.5))

요약  :  훈련 데이터 추가, 네트워크 용량 감소시키기, 가중치 규제 추가, 드롭아웃 추가

 


머신 러닝의 작업 흐름


1. 문제 정의와 데이터셋 수집하기(뭘 예측하려고 하지? 입력 데이터는 무엇이지? 당면한 문제가 어떤 종류지?)

2. 성공이 무엇인지 정의하기(정확도? 정밀도? 가격?)

3. 평가 방법 선택하기(홀드아웃? K-겹 교차 검증?)

4. 데이터 준비하기

5. 더 좋은 모델을 위한 중요한 선택(1.마지막 층의 활성화 함수, 2.손실 함수, 3.최적화 설정-옵티마이저,학습률)

6. 과대적합 모델 구축(과소적합과 과대적합 사이를 찾아보기[검증 데이터에서 모델 성능이 감소하기 시작했을 때])

6-1.층 추가, 층 크기 키우기, 더 많은 에포크

7. 모델 규제, 하이퍼파라미터 튜닝

7-1.드롭아웃 추가, 층 추가or제거, L1 or L2 추가, 층의 유닛 수나 옵티마이저의 학습률 변경, 새로운 특성 공학


인상 깊은 구절

"머신 러닝은 최적화와 일반화 사이의 줄다리기라는 점을 기억하세요."

 

 

*해당 내용은 '케라스 창시자에게 배우는 딥러닝' 책을 읽고 필자가 공부한 내용을 서술한 글입니다. 틀린 부분이 포함되어 있을 수 있습니다.*

 

댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2025/01   »
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31
글 보관함