딥러닝 - 개념과 구현방법

dumbbelldore·2025년 1월 6일
0

zero-base 33기

목록 보기
61/97

1. 딥러닝(Deep Learning; DL)

  • 인공신경망(Artificial Neural Network, ANN)에 기반한 머신러닝의 한 분야

  • 다층 신경망(Deep Neural Network)을 활용하여 데이터를 학습하고 복잡한 문제를 해결할 수 있음

  • 대량의 데이터를 기반으로 특징을 스스로 학습하거나, 이미지, 음성, 텍스트와 같은 복잡한 비정형 데이터도 처리할 수 있음
    ex) 이미지 인식, 자연어 처리(NLP), 음성 인식, 자율 주행 등

    DL의 대표적인 FFN(Feed Forward Network) 형태

2. 딥러닝(DL) vs. 머신러닝(ML)

구분머신러닝딥러닝
데이터 규모중소규모 데이터셋으로 구현 가능대규모 데이터셋 필요
학습 방식수동 Feature 추출 및 엔지니어링 과정 필요자동 Feature 학습 가능
하드웨어 요구사항CPU 기반 연산 처리 위주GPU 기반 병렬 처리 위주
해석 가능성일부 모델은 내재적 설명력 보유블랙박스 기법으로 설명 어려움
적용 분야통계 기반 예측, 분류, 군집화컴퓨터 비전, 자연어 처리, 패턴 인식
학습 시간상대적으로 학습 시간이 짧은학습 및 최적화 시간이 많이 소요됨

3. 대표적인 Python 기반 구현 방법

  • 대부분의 딥러닝 프레임워크는 Python 언어에 기반하고 있기에, Numpy, Pandas, Scikit-learn 등의 분석 라이브러리를 함께 활용할 수 있음

3-1. TensorFlow

  • 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)

3-2. PyTorch

  • 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()}")

3-3. FastAI

  • 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)

3-4. Hugging Face

  • 자연어 처리(NLP) 중심의 딥러닝 모델 및 도구를 제공하는 프레임워크

  • 편리하게 Pre-trained 모델을 사용할 수 있음

  • 예시 코드

    from transformers import pipeline
    
    classifier = pipeline('sentiment-analysis')
    print(classifier("I love using Python for deep learning!"))

*이 글은 제로베이스 데이터 취업 스쿨의 강의 자료 일부를 발췌하여 작성되었습니다.

profile
데이터 분석, 데이터 사이언스 학습 저장소

0개의 댓글