인공신경망(Artificial Neural Network, ANN)에 기반한 머신러닝의 한 분야
다층 신경망(Deep Neural Network)을 활용하여 데이터를 학습하고 복잡한 문제를 해결할 수 있음
대량의 데이터를 기반으로 특징을 스스로 학습하거나, 이미지, 음성, 텍스트와 같은 복잡한 비정형 데이터도 처리할 수 있음
ex) 이미지 인식, 자연어 처리(NLP), 음성 인식, 자율 주행 등
| DL의 대표적인 FFN(Feed Forward Network) 형태 |
|---|
![]() |
| 구분 | 머신러닝 | 딥러닝 |
|---|---|---|
| 데이터 규모 | 중소규모 데이터셋으로 구현 가능 | 대규모 데이터셋 필요 |
| 학습 방식 | 수동 Feature 추출 및 엔지니어링 과정 필요 | 자동 Feature 학습 가능 |
| 하드웨어 요구사항 | CPU 기반 연산 처리 위주 | GPU 기반 병렬 처리 위주 |
| 해석 가능성 | 일부 모델은 내재적 설명력 보유 | 블랙박스 기법으로 설명 어려움 |
| 적용 분야 | 통계 기반 예측, 분류, 군집화 | 컴퓨터 비전, 자연어 처리, 패턴 인식 |
| 학습 시간 | 상대적으로 학습 시간이 짧은 | 학습 및 최적화 시간이 많이 소요됨 |
Google에서 개발한 오픈소스 딥러닝 프레임워크
높은 안정성으로 엔터프라이즈 서비스(MLOps, Edge Device) 환경에 많이 활용됨
예시 코드
import tensorflow as tf
from tensorflow.keras import layers, models
# 데이터 불러오기 (MNIST 데이터)
(x_train, y_train), (x_test, y_test) = tf.keras.datasets.mnist.load_data()
x_train, x_test = x_train / 255.0, x_test / 255.0
# 모델 정의
model = models.Sequential([
layers.Flatten(input_shape=(28, 28)),
layers.Dense(128, activation='relu'),
layers.Dropout(0.2),
layers.Dense(10, activation='softmax')
])
# 모델 컴파일, 학습 및 평가
model.compile(optimizer='adam',
loss='sparse_categorical_crossentropy',
metrics=['accuracy'])
model.fit(x_train, y_train, epochs=5)
model.evaluate(x_test, y_test)
Meta(구 Facebook)에서 개발한 딥러닝 프레임워크
스타일이 직관적이며 디버깅이 용이하여 연구/실험에 적합한 특징을 지님
예시 코드
import torch
import torch.nn as nn
import torch.optim as optim
from torchvision import datasets, transforms
# 데이터 불러오기 (MNIST 데이터)
transform = transforms.ToTensor()
train_data = datasets.MNIST(root='data', train=True, transform=transform, download=True)
train_loader = torch.utils.data.DataLoader(train_data, batch_size=64, shuffle=True)
# 모델 정의
class SimpleModel(nn.Module):
def __init__(self):
super(SimpleModel, self).__init__()
self.flatten = nn.Flatten()
self.fc1 = nn.Linear(28*28, 128)
self.relu = nn.ReLU()
self.fc2 = nn.Linear(128, 10)
def forward(self, x):
x = self.flatten(x)
x = self.relu(self.fc1(x))
x = self.fc2(x)
return x
# 모델 컴파일
model = SimpleModel()
criterion = nn.CrossEntropyLoss()
optimizer = optim.Adam(model.parameters())
# 모델 학습
for epoch in range(5):
for images, labels in train_loader:
optimizer.zero_grad()
output = model(images)
loss = criterion(output, labels)
loss.backward()
optimizer.step()
print(f"Epoch {epoch+1}, Loss: {loss.item()}")
PyTorch에 기반하며 복잡한 모델 정의 과정 없이도 딥러닝 수행 가능
사전 학습된 모델을 편하게 활용하여 시간과 자원을 절약할 수 있음
예시 코드
from fastai.vision.all import *
# 데이터셋 불러오기 (애완동물 데이터)
path = untar_data(URLs.PETS)
dls = ImageDataLoaders.from_name_re(path, get_image_files(path/"images"), pat=r'(.+)_\d+\.jpg$', item_tfms=Resize(224))
# 모델 학습
learn = cnn_learner(dls, resnet34, metrics=error_rate)
learn.fine_tune(3)
자연어 처리(NLP) 중심의 딥러닝 모델 및 도구를 제공하는 프레임워크
편리하게 Pre-trained 모델을 사용할 수 있음
예시 코드
from transformers import pipeline
classifier = pipeline('sentiment-analysis')
print(classifier("I love using Python for deep learning!"))
*이 글은 제로베이스 데이터 취업 스쿨의 강의 자료 일부를 발췌하여 작성되었습니다.