반응형
1. 딥러닝이란 무엇인가?
딥러닝(Deep Learning)은 다층 인공신경망(Artificial Neural Network) 을 기반으로 한 머신러닝 기법입니다.
머신러닝의 한 분야이지만, 복잡한 데이터(이미지·음성·텍스트 등) 를 처리하는 데 특히 강력합니다.
1.1 인공신경망의 기본 구조
인공신경망은 사람의 뇌 구조에서 영감을 받아 뉴런(Neuron) 과 층(Layer) 으로 구성됩니다.
- 입력층(Input Layer): 데이터가 들어오는 부분
- 은닉층(Hidden Layer): 뉴런들이 데이터를 가공·변환
- 출력층(Output Layer): 최종 예측값 산출
예시: 사진(입력) → 여러 층을 거쳐 특징 추출 → ‘고양이’ 예측(출력)
2. 딥러닝과 머신러닝의 차이
구분 | 머신러닝 | 딥러닝 |
---|---|---|
특징 추출 | 사람이 직접 정의 | 모델이 자동으로 학습 |
데이터량 | 적은 데이터로도 가능 | 대규모 데이터 필요 |
연산 자원 | CPU 중심 | GPU 필수(대규모 학습) |
예시 | 의사결정트리, SVM | CNN, RNN, Transformer |
3. CNN과 RNN의 차이
3.1 CNN (Convolutional Neural Network)
- 이미지 처리에 특화된 딥러닝 구조
- 합성곱(Convolution) 연산으로 이미지의 특징(가장자리, 색, 패턴)을 자동 추출
- 구조: 합성곱층 → 풀링층 → 완전연결층
활용 사례
- 이미지 분류(고양이/강아지 구분)
- 얼굴 인식
- 자율주행 자동차의 도로 인식
3.2 RNN (Recurrent Neural Network)
- 순차 데이터(시간·문장 등)를 처리하는 데 특화
- 이전 단계의 출력이 다음 단계의 입력으로 들어감 → 메모리 기능
- 변형 구조: LSTM, GRU (장기 의존성 문제 해결)
활용 사례
- 자연어 처리(번역, 챗봇)
- 주가 예측
- 음성 인식
4. 딥러닝 개발 기본 과정
- 데이터 준비: 이미지·텍스트·음성 등
- 전처리: 정규화, 토큰화 등
- 모델 설계: CNN, RNN, Transformer 등 선택
- 학습: GPU 환경에서 파라미터 최적화
- 평가: 정확도, 손실값(loss) 측정
- 배포: 실서비스 환경에 적용
5. 실습 – CNN으로 MNIST 손글씨 숫자 분류하기
이번 실습에서는 TensorFlow/Keras를 활용해 간단한 CNN 모델을 구현합니다.
MNIST 데이터셋은 0~9 손글씨 이미지(28x28 픽셀)로 구성되어 있습니다.
환경 준비
pip install tensorflow
import tensorflow as tf
from tensorflow.keras import layers, models
# 1. 데이터 로드
mnist = tf.keras.datasets.mnist
(X_train, y_train), (X_test, y_test) = mnist.load_data()
# 2. 데이터 전처리
X_train = X_train.reshape(-1, 28, 28, 1).astype("float32") / 255.0
X_test = X_test.reshape(-1, 28, 28, 1).astype("float32") / 255.0
# 3. 모델 구성
model = models.Sequential([
layers.Conv2D(32, (3, 3), activation="relu", input_shape=(28, 28, 1)),
layers.MaxPooling2D((2, 2)),
layers.Conv2D(64, (3, 3), activation="relu"),
layers.MaxPooling2D((2, 2)),
layers.Flatten(),
layers.Dense(64, activation="relu"),
layers.Dense(10, activation="softmax")
])
# 4. 모델 컴파일
model.compile(optimizer="adam",
loss="sparse_categorical_crossentropy",
metrics=["accuracy"])
# 5. 학습
model.fit(X_train, y_train, epochs=3, validation_data=(X_test, y_test))
# 6. 평가
test_loss, test_acc = model.evaluate(X_test, y_test)
print("테스트 정확도:", f"{test_acc*100:.2f}%")
예상 출력 예시
Epoch 1/3
1875/1875 [==============================] - 12s 6ms/step - loss: 0.1389 - accuracy: 0.9587 - val_loss: 0.0464 - val_accuracy: 0.9858
Epoch 2/3
...
테스트 정확도: 98.60%
6. 오늘의 핵심 요약
- 딥러닝은 다층 인공신경망 기반 머신러닝 기법
- CNN은 이미지, RNN은 순차 데이터 처리에 강점
- MNIST 예제에서 CNN으로 높은 정확도 달성 가능
반응형
'개발 창고 > AI' 카테고리의 다른 글
지도학습 실습: 분류(Classification)와 회귀(Regression) (2) | 2025.08.16 |
---|---|
데이터 전처리와 시각화: AI 모델 학습을 위한 필수 단계 (2) | 2025.08.14 |
AI 입문 가이드: 개념부터 이미지 분류 실습까지 (8) | 2025.08.10 |
DQN으로 CartPole 정복하기: 딥러닝 기반 강화학습 입문 (5) | 2025.07.11 |
Q-Learning 기초부터 CartPole 적용까지: 강화학습 첫 번째 알고리즘 배우기 (6) | 2025.07.10 |