반응형
지난 시간에 우리는 10줄의 코드로 첫 딥러닝 모델을 만들었습니다. 이번에는 그 모델을 더 정확하고 똑똑하게 만들기 위해 딥러닝의 필수 요소인 Dropout, BatchNormalization, Optimizer를 직접 실험해볼 거예요.
🔧 실습 목표
- Dropout이 과적합(overfitting)을 줄여주는 이유
- Optimizer(최적화 알고리즘)를 바꿨을 때 정확도 차이
- BatchNormalization의 역할 이해
1.Dropout 레이어로 과적합 방지하기
from tensorflow.keras.models import Sequential
from tensorflow.keras.layers import Dense, Dropout
from tensorflow.keras.datasets import mnist
from tensorflow.keras.utils import to_categorical
# 데이터 전처리
(x_train, y_train), (x_test, y_test) = mnist.load_data()
x_train = x_train.reshape(-1, 784) / 255.0
x_test = x_test.reshape(-1, 784) / 255.0
y_train = to_categorical(y_train)
y_test = to_categorical(y_test)
# Dropout이 있는 모델
model = Sequential([
Dense(512, activation='relu', input_shape=(784,)),
Dropout(0.3),
Dense(256, activation='relu'),
Dropout(0.3),
Dense(10, activation='softmax')
])
model.compile(optimizer='adam', loss='categorical_crossentropy', metrics=['accuracy'])
model.fit(x_train, y_train, epochs=10, batch_size=64, validation_split=0.2)
📌 Dropout(0.3)은 학습 중 무작위로 30%의 뉴런을 꺼서, 네트워크가 특정 패턴에만 의존하지 않도록 도와줘요.
2. Optimizer 바꿔보기 (SGD vs Adam vs RMSprop)
from tensorflow.keras.optimizers import SGD, RMSprop
# SGD 사용
model.compile(optimizer=SGD(learning_rate=0.01), loss='categorical_crossentropy', metrics=['accuracy'])
# 또는 RMSprop 사용
# model.compile(optimizer=RMSprop(), loss='categorical_crossentropy', metrics=['accuracy'])
📌 Adam은 보통 가장 무난하지만, SGD는 학습이 느리지만 일반화 성능이 더 좋을 수 있고, RMSprop은 RNN에서 주로 사용돼요.
3. BatchNormalization으로 학습 안정화
from tensorflow.keras.layers import BatchNormalization
model = Sequential([
Dense(512, activation='relu', input_shape=(784,)),
BatchNormalization(),
Dropout(0.3),
Dense(256, activation='relu'),
BatchNormalization(),
Dropout(0.3),
Dense(10, activation='softmax')
])
📌 BatchNormalization은 학습 속도를 빠르게 하고, 일반화 능력을 키워줘요.
정리
- Dropout은 과적합 방지용
- Optimizer는 모델의 학습 속도와 성능을 조절
- BatchNormalization은 모델의 안정성과 정확도 향상에 효과적
반응형
'데이터사이언스(Data Science) > ML & DL' 카테고리의 다른 글
[딥러닝] Keras 케라스 완전 기초 4편 - RNN과 LSTM으로 텍스트 감성 분석하기! (Keras로 쉽게 배우는 순환 신경망) (1) | 2025.04.16 |
---|---|
[딥러닝] Keras 케라스 완전 기초 1편 - 첫 번째 딥러닝 모델 만들기 (10줄) (0) | 2025.04.15 |
AI가 대규모 데이터 세트를 처리하는 방법: 모델 성능 최적화 🌟 (0) | 2025.01.20 |
🛠️ AI 프로젝트: AI를 활용한 자동 회계 어시스턴트 🤖💼 (3) | 2025.01.01 |
머신러닝 알고리즘 가이드: 종류와 강점, 약점 분석 📊 (3) | 2024.12.29 |