| 일 | 월 | 화 | 수 | 목 | 금 | 토 |
|---|---|---|---|---|---|---|
| 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 |
- 데이터사이언티스트
- 데이터사시언티스트 #데이터 #모두의연구소
- 데이터전처리
- 모두의연구소
- GCP
- MongoDB
- 데이터분석환경
- 커널
- 아이펠톤
- 아나콘다3
- 가상환경만들기
- 데이터분석부트캠프
- nosql
- 데이터분석
- python
- 데이터사이언티스트 #데이터 #모두의연구소 #데이터분석부트캠프
- 아나콘다설치
- anaconda3
- jupyter
- 데이터싸이언티스트
- 가상환경설정
- 데이터
- Today
- Total
EH_dream
딥러닝 모델 성능 향상을 위한 실전 기법 정리_25.06.10 본문
오늘도 끝없는 딥러닝의 학습을 진행했다.
각 학습을 조금이라도 잘 기억하고 싶어서 직접 중요한 요약 정리본을 만들었다.
지난주 다이소에 들렸다가 코넬노트를 구매하게 되었는데 몇번 연습해보니 어떻게 요약해야할지 조금씩 알게되는 것 같다.
매일 노드 학습은 이런식으로 정리해서 기억에 남기고 싶다. 정리하다보면 요약하는 법도 잘 익힐 수 있을 것 같다.
오늘의 학습자료는 정리해서 Git에 올려두었다.
https://github.com/songNene/DeepLearning/tree/main/%EB%94%A5%EB%9F%AC%EB%8B%9D_%ED%95%99%EC%8A%B5_01
1. 모델 저장과 콜백
MNIST 데이터 셋을 사용해서 전처리를 하고 모델을 구성해서 확인해보고 최종적으로 모델을 만들어봤다.
위 모델을 또 사용하기 위해 save() 함수를 통해 저장하고 다시 로드해서 사용해 봤다.
모델을 저장하는 파일형식은 .h5, json, yaml 형식이 있다.
그리고 콜백 함수에 대해 학습했고 콜백에는 크게 문제가 발생할 때 복구하는데 사용할 수 있는ModelCheckpoint,
모델이 향상되지 않으면 학습이 자동으로 중지되고 최상의 가중치를 복원해주는 기능이 있는 EarlyStopping,
학습율을 동적으로 변경할 수 있는LearningRateScheduler, 모델의 경과를 모니터링 할 때 사용하는 Tensorboard 가 있다.
2. 모델 학습 기술
이번 노드에서는 모델 학습 기술 7가지에 대한 학습이였다.
- 학습단위는 전체 데이터를 한번에 학습하는 전체 배치와 일부 데이터만 묶어서 학습하는 미니배치가 있는데 딥러닝에서는 미니배치를 사용한다.
- 데이터 스케일링에서는 평균 0, 표준편차 1로하는 표준화와 0~1사이로 값을 압축하는 정규화를 사용한다.
- 학습률이 너무 큰 경우는 오버슈트가 발생할 수 있고 너무 작으면 학습전에 멈출 수 있다.
- 에폭의 경우 전체 데이터를 몇번 반복 학습할지 정하는 횟수로 과적합/과소적합 방지를 위해 조절할 필요가있다.
- 모델의 크기는 은닉층과 뉴런수에 따라 달라지고 학습 영향을 준다.
- 활성화함수는 가중치와 바이어스를 조정하여 선형적인 시그모이드 계열과 비선형적인 ReLU 계열로 구분합니다.
- 가중치 초기화는 적절한 가중치 최적값을 정할시 많은 신경망과 더 많은 가중치역전파가 가능해 비교적 많은 문제를 표현하게된다.
- 옵티마이저는 모델이 실제 결과와 예측 결과의 차이를 최소화하는 역할을 하며 현재는 Adam이 제일 많이 사용된다.
- IMDB 리뷰 데이터셋을 사용하여 과대적합된 모델을 확인해보았다.
3. 모델 크기 조절과 규제
과대적합을 막기 위해 모델 크기 조절, 규제 적용, 드롭아웃을 적용해 보았다.
모델 크기는 데이터에 비해 모델이 너무 크면 과대적합이 발생할 수있기 때문에 규모에 따라 조절해주는 과정이였다.
먼저 모델 크기를 증가/감소를 시켜보고 직접 설정까지 해보았고 Dense와 epochs를 이용해 조절하였다.
다음으로는 규제를 적용해 보았는데 L1, L2, L1_L2의 조합을 적용해보았다.
규제는 과대적합이 발생하는 경우를 방지하기 위해 큰 가중치 값은 큰 규제를 가하는 방법이 규제화이다.
마지막으로 드롭아웃을 적용해 보았는데 모델이 학습할 때 사용하는 노드의 수를 전체 노드 중에서 일부만을 사용하는 방법이였다.
이번 학습에서는 20%적용과 50%를 적용해 학습을 해 보았다.
50% 적용의 경우 과대적합을 잘 잡는듯 했지만 훈련도 잘 안되는것을 볼 수 있었다.
4. 가중치 초기화와 배치 정규화
모델에 필요한 가중치 초기화와 배치 정규화에 대해 학습했다.
가중치 초기화는 신경망 성능에 큰 영향을 주는 요소로 적절한 가중치 값이 주어지지 않을 경우
가중치 중 확성화 되는 부분이 매우 적거나 편향될 수 있기 때문에 모델의 활성화 값이 골고루 분포 되도록 사용한다.
가중치 초기화는 크게 활성화 함수와 비선형 함수로 나누어서 볼 수 있으며 여러개의 초기화 모델에 대해 학습을 했다.
배치 정규화는 모델에 입력되는 샘플을 균일하게 만드는 정규화 작업으로
가중치의 활성값이 퍼지게끔 '강제'로 적용시키는것을 의미한다.
Dense 레이어 이후 활성화 함수 이전에 활용되며 들어온 데이터를 배치 단위로
평균이 0, 표준편차가 1인 데이터로 조정해주는 일이며 학습 속도 증가와 과대적합을 방지할 수 있다.
'딥러닝' 카테고리의 다른 글
| 딥러닝학습 : 단어빈도와 벡터화 25.06.16 (0) | 2025.06.18 |
|---|---|
| 딥러닝실습정리: Boston, Reuters, CIFAR_25.06.11 (1) | 2025.06.11 |
| 딥러닝_텐서 , 모델, 학습 흐름 정리_25.06.09 (0) | 2025.06.09 |
| 딥러닝_개념의 발전 학습 흐름 정리_25.06.09 (0) | 2025.06.09 |
| 딥러닝 첫걸음 – MNIST 손글씨 분류 실습 정리_25.06.08 (0) | 2025.06.08 |