반응형
안녕하세요, 개인 공부한 내용을 정리하는 게시글입니다.
딥러닝 핵심 개념 요약 정리
1. 인공신경망 (ANN: Artificial Neural Network)
- 딥러닝의 시작: 인공신경망
- 로지스틱 회귀를 여러 개 쌓은 구조
- 이미지 등 입력값은 보통 입력 / 255.0으로 정규화
- 숫자 스케일링은 중요하지만, 이미지에서는 단순 나누기만 해도 충분함
2. 딥러닝 기본 구조 in Keras (TensorFlow 기반)
from tensorflow import keras
model = keras.Sequential() # 모델 구조 정의
model.add(keras.layers.Dense(units=100, activation='relu')) # 은닉층
model.add(keras.layers.Dense(units=10, activation='softmax')) # 출력층 (다중 분류)
3. 모델 구성 단계
단계 | 설명 |
Sequential() | 층을 순차적으로 쌓는 모델 |
compile() | 손실 함수, 최적화 함수, 평가 지표 지정 |
fit() | 모델 학습 (입력/타겟, 에포크 수) |
evaluate() | 성능 평가 |
summary() | 모델 구조, 파라미터 수 등 요약 |
- 손실 함수 선택 예시
문제 유형 | 손실 함수 |
이진 분류 | 'binary_crossentropy' |
다중 분류 | 'categorical_crossentropy' |
정수형 클래스 다중 분류 | 'sparse_categorical_crossentropy' |
회귀 | 'mean_squared_error' |
model.compile(
loss='sparse_categorical_crossentropy',
optimizer='adam',
metrics=['accuracy']
)
4. 심층 신경망 (DNN)
- 은닉층 추가로 모델 확장
model = keras.Sequential()
model.add(keras.layers.Flatten(input_shape=(28, 28))) # 2D → 1D 변환
model.add(keras.layers.Dense(100, activation='sigmoid'))
model.add(keras.layers.Dense(10, activation='softmax'))
model.summary()
- Flatten: 2D 이미지를 1D 벡터로 변환
- Dense: 완전 연결 계층
5. 옵티마이저 (Optimizer)
이름 | 특징 |
SGD | 고전적, 학습률 수동 지정 |
Adagrad | 희소 데이터에 유리, 학습률 자동 조정 |
RMSprop | RNN에 효과적, 최근 그래디언트 반영 |
Adam | 대부분의 상황에서 좋은 성능 제공 (기본값 추천) |
model.compile(optimizer='adam', loss='sparse_categorical_crossentropy', metrics=['accuracy'])
6. 활성화 함수 비교
함수 | 함수 |
sigmoid | 이진 분류용, 0~1 |
softmax | 다중 분류용, 전체 합이 1 |
relu | 은닉층 기본값, 음수는 0 처리 |
7. 과적합 방지 기법: 드롭아웃 (Dropout)
- 학습 중 일부 뉴런의 출력을 0으로 만들어 과적합 방지
keras.layers.Dropout(0.3) # 30% 드롭
8. 콜백 함수 (Callback)
종류 | 설명 |
ModelCheckpoint | 가장 성능 좋은 모델 저장 |
EarlyStopping | 성능 향상이 멈추면 조기 종료 |
checkpoint_cb = keras.callbacks.ModelCheckpoint('best-model.h5', save_best_only=True)
early_stopping_cb = keras.callbacks.EarlyStopping(patience=2, restore_best_weights=True)
model.fit(..., callbacks=[checkpoint_cb, early_stopping_cb])
9. CNN: 합성곱 신경망 (Convolutional Neural Network)
- CNN 전체 구조
입력 → 합성곱층(Conv2D) → 풀링층(MaxPooling2D) → 밀집층(Dense)
10. 합성곱(Conv2D) 레이어
keras.layers.Conv2D(10, kernel_size=(3,3), activation='relu', padding='same', strides=1)
개념
용어 | 설명 |
패딩 | 입력 테두리를 0으로 채움 |
same | 출력 크기 유지 |
valid | 패딩 없이 계산 |
스트라이드 | 필터 이동 거리 (기본 1칸) |
11. 풀링(Pooling) 레이어
- 차원 축소 + 위치 불변성 강화
- 최대풀링(MaxPooling2D) / 평균풀링(AveragePooling2D)
keras.layers.MaxPooling2D(pool_size=2)
12. RNN: 순환 신경망 (Recurrent Neural Network)
- 피드포워드 vs 순환신경망
구분 | 설명 |
피드포워드 | 입력 → 출력으로만 정보 전달 |
RNN | 이전 출력(상태)을 기억하고 다음에 전달 (타임스텝 활용) |
대표 예시: LLM 모델 (단어 예측)
- "나는 학교에" → "간다" 예측
13. RNN 내부 구조
- tanh 함수 사용: 출력 범위 -1 ~ 1
- 시그모이드와 유사하지만 대칭적
- 단어 표현은 원핫 인코딩 대신 임베딩 레이어 사용
keras.layers.Embedding(input_dim=10000, output_dim=16)
- LSTM과 GRU 셀
셀 종류 | 설명 |
LSTM | Long Short-Term Memory. 장기 기억 유지 |
GRU | Gated Recurrent Unit. LSTM보다 간단하면서도 효과적 |
- 전체 흐름
(train_input, train_target), (test_input, test_target) = keras.datasets.fashion_mnist.load_data()
train_scaled = train_input / 255.0
model = keras.Sequential()
model.add(keras.layers.Flatten(input_shape=(28, 28)))
model.add(keras.layers.Dense(100, activation='relu'))
model.add(keras.layers.Dropout(0.3))
model.add(keras.layers.Dense(10, activation='softmax'))
model.compile(optimizer='adam', loss='sparse_categorical_crossentropy', metrics=['accuracy'])
checkpoint_cb = keras.callbacks.ModelCheckpoint('best.h5', save_best_only=True)
early_stopping_cb = keras.callbacks.EarlyStopping(patience=2, restore_best_weights=True)
model.fit(train_scaled, train_target, epochs=20, validation_split=0.2, callbacks=[checkpoint_cb, early_stopping_cb])
- 딥러닝 구조 요약
┌────────────────────┐
│ 인공신경망 (ANN) │
└──────┬─────────────┘
↓
┌──────────────┬──────────────┐
↓ ↓
DNN (심층신경망) CNN (합성곱신경망)
↓
RNN (순환신경망)
↓
LSTM, GRU (기억 강화)
감사합니다.
반응형
'AI' 카테고리의 다른 글
PostgreSQL에서 vectorData를 저장하는법은? (0) | 2025.07.03 |
---|---|
[AI] LLM 핵심 개념 요약 정리 (4) | 2025.06.15 |
[AI] 머신러닝 핵심 개념 요약 정리 - Day_2 (1) | 2025.05.31 |
[AI] 머신러닝 핵심 개념 요약 정리 - Day_1 (0) | 2025.05.30 |
LangChain(랭체인)이란? (2) | 2025.03.22 |