Skip to article frontmatterSkip to article content
Site not loading correctly?

This may be due to an incorrect BASE_URL configuration. See the MyST Documentation for reference.

1 딥러닝 소개

Updated: 23 aug 2026

이 강의에서는 딥러닝 알고리즘을 많이 아는 것보다 다음 세 가지를 중요하게 다룬다.

이해 → 활용 → 판단

  • 딥러닝 모델이 무엇을 하는지 이해한다.

  • Keras와 PyTorch를 이용해 실제 문제에 활용한다.

  • 훈련 결과와 오류, 일반화 성능을 보고 모델의 타당성을 판단한다.

이 장에서는 먼저 딥러닝이 무엇인지 살펴보고, 앞으로 사용할 Keras와 PyTorch가 어떤 역할을 하는지 확인한다.

1.1인공지능, 머신러닝, 딥러닝

세 용어는 서로 관련되어 있지만 같은 뜻은 아니다.

  • 인공지능(artificial intelligence): 인간의 지적 활동이 필요한 작업을 컴퓨터가 수행하도록 하는 기술과 연구 분야

  • 머신러닝(machine learning): 데이터에서 관계나 구조를 학습하여 새로운 데이터의 예측이나 판단에 활용하는 방법

  • 딥러닝(deep learning): 여러 층으로 구성된 신경망을 이용하는 머신러닝의 한 분야

<그림 출처: NVIDIA 블로그>

1.2딥러닝에서 deep은 무엇을 뜻할까?

딥러닝의 deep여러 층(layer)을 연속적으로 사용한다는 뜻이다.

신경망에서 각 층은 입력 데이터를 다른 형태로 변환하여 다음 층에 전달한다.

입력 → 변환 → ... → 변환 → 예측

층이 여러 단계로 이어진 신경망을 심층 신경망(deep neural network)이라고 한다.

1.2.1층은 무엇을 하는가?

층은

입력 데이터를 다음 단계에서 더 유용한 표현으로 변환하는 장치

라고 이해하는 것이 좋다.

예를 들어 손글씨 숫자 이미지를 분류하는 신경망에서는 원래 픽셀값이 여러 층을 지나면서 점차 분류에 유용한 표현으로 바뀐다.

최종 층에서는 그 표현을 이용해 숫자 0부터 9까지 가운데 어떤 숫자인지를 예측한다.

<그림 출처: Deep Learning with Python(2판)>

1.2.2왜 딥러닝을 사용할까?

머신러닝에서는 문제에 따라 사람이 예측에 유용한 특성을 선택하거나 가공하는 과정이 중요할 수 있다.

딥러닝은 여러 층을 이용하여 원래 데이터로부터 예측에 유용한 표현을 단계적으로 학습할 수 있다.

특히 이미지, 음성, 텍스트처럼 입력 데이터가 복잡한 문제에서 이러한 방식이 널리 활용된다.

딥러닝의 핵심은 여러 층을 통해 데이터의 표현을 단계적으로 학습하는 데 있다.

이 강의에서는 먼저 간단한 신경망에서 이 원리를 확인한 뒤, CNN과 Transformer로 확장한다.

1.3하나의 신경망을 먼저 보자

앞으로 자세히 배우기 전에, 신경망 프로젝트의 전체 모습을 먼저 확인한다.

MNIST는 28×28 픽셀의 손글씨 숫자 이미지 데이터셋이다.

  • 훈련 이미지: 60,000개

  • 테스트 이미지: 10,000개

  • 타깃: 0부터 9까지의 숫자

이 문제는 이미지가 나타내는 숫자를 예측하므로 다중분류(multiclass classification) 문제다.

1.3.1Keras에서는 이렇게 표현한다

기존 강의노트의 첫 신경망은 두 개의 Dense 층을 순서대로 연결한다.

지금은 코드를 외울 필요가 없다. 다음 세 가지만 확인한다.

  1. 여러 층을 연결해 모델을 만든다.

  2. 훈련 방법을 설정한다.

  3. 훈련 데이터를 이용해 모델을 훈련한다.

from tensorflow import keras
from tensorflow.keras import layers

model = keras.Sequential([
    layers.Dense(512, activation="relu"),
    layers.Dense(10, activation="softmax")
])

model.compile(
    optimizer="rmsprop",
    loss="sparse_categorical_crossentropy",
    metrics=["accuracy"]
)

Keras에서는 모델 구성과 훈련에 필요한 많은 과정이 높은 수준의 API로 정리되어 있다.

실제 훈련은 다음처럼 fit()으로 실행한다.

model.fit(train_images, train_labels, epochs=5, batch_size=128)

이 짧은 코드 안에서는 앞으로 배울 여러 과정이 반복된다.

예측 → 손실 계산 → 그레이디언트 계산 → 파라미터 갱신

1.3.2같은 신경망을 PyTorch에서는 어떻게 표현할까?

PyTorch에서도 같은 신경망 개념을 사용한다.

다만 Keras보다 모델의 구조와 훈련 과정을 좀 더 명시적으로 작성하는 경우가 많다.

import torch
from torch import nn

model = nn.Sequential(
    nn.Linear(28 * 28, 512),
    nn.ReLU(),
    nn.Linear(512, 10)
)

두 코드의 표현은 다르지만 모델의 기본 구조는 같다.

개념KerasPyTorch
모델 구성Sequentialnn.Sequential 또는 nn.Module
완전연결층Densenn.Linear
활성화 함수activation="relu"nn.ReLU()
훈련fit()training loop (차후 상세 설명)
예측predict()model(x)

Keras와 PyTorch는 서로 다른 딥러닝을 배우는 것이 아니다.
같은 딥러닝 원리를 서로 다른 방식으로 표현하는 도구다.

1.3.3왜 두 프레임워크를 함께 사용할까?

Keras는 신경망을 비교적 짧은 코드로 구성하고 훈련하기 쉽다.

PyTorch는 모델과 훈련 과정을 보다 명시적으로 작성할 수 있어서 신경망이 실제로 어떻게 훈련되는지 확인하기 좋다.

이 강의에서는

  • Keras를 이용해 딥러닝 모델을 빠르게 구성하고 활용하는 방법을 보고,

  • PyTorch를 통해 같은 과정의 내부 구조를 좀 더 분명하게 확인한다.

1.4앞으로 무엇을 배우게 될까?

학기 전반부에서는 신경망의 기본 원리와 훈련을 배운다.

MLP → 손실함수 → 그레이디언트 → 역전파 → 일반화

중간시험 이후에는 CNN과 Attention·Transformer를 중심으로 현대 딥러닝 구조를 살펴본다.

CNN → Attention → Transformer

모든 내용을 동일한 깊이로 배우지는 않는다.

프로젝트를 수행하는 데 필요한 개념을 필요한 시점에 배우고, 실제 데이터에서 다시 확인한다.

1.5실습 환경

이 강의의 실습은 Jupyter Notebook 형식으로 제공하며, Google Colab에서도 실행할 수 있다.

주요 도구는 다음과 같다.

  • Python

  • Jupyter Notebook / Google Colab

  • TensorFlow / Keras

  • PyTorch

1.6수업은 프로젝트를 중심으로 진행한다

이 강의에서는 네 개의 프로젝트를 진행한다.

각 프로젝트는 3주 동안 진행하며,

  • 90분 강의 3회

  • 90분 프로젝트 실습 3회

로 구성한다.

프로젝트에서는 다음 과정을 반복한다.

문제 이해 → 데이터 이해 → 모델 구성 → 훈련 → 평가 → 오류 분석 → 해석과 판단

가장 높은 성능만 얻는 것이 목표는 아니다.

왜 그런 모델과 방법을 선택했는지 설명하고, 결과를 어디까지 믿을 수 있는지 판단하는 것

이 더 중요하다.

1.6.1프로젝트에서 학생이 결정해야 할 것은?

AI가 코드를 작성해 주더라도 다음은 학생이 판단해야 한다.

  • 무엇을 예측하려는가?

  • 입력과 타깃은 무엇인가?

  • 어떤 모델 구조를 사용할 것인가?

  • 어떤 손실함수와 평가 지표가 적절한가?

  • 훈련 데이터와 평가 데이터는 적절히 구분되었는가?

  • 모델이 과대적합되고 있지는 않은가?

  • 어떤 데이터에서 모델이 실패하는가?

  • 분석 결과로 어떤 결론을 내릴 수 있는가?

1.6.2프로젝트에서는 무엇을 평가할까?

프로젝트에서는 코드의 양이나 가장 높은 성능보다 문제 이해, 방법 선택의 근거, 모델 평가, 오류 분석, 결과 해석, AI 활용 결과의 검증을 중요하게 평가한다.

좋은 프로젝트는 단순히 높은 성능을 얻는 프로젝트가 아니라, 왜 그런 결과가 나왔는지 설명하고 그 결과를 어디까지 믿을 수 있는지 판단하는 프로젝트다.

1.7생성형 AI는 어떻게 사용할까?

생성형 AI는 다음과 같은 작업에 적극 활용할 수 있다.

  • Keras 또는 PyTorch 코드 작성

  • 한 프레임워크의 코드를 다른 프레임워크로 변환

  • 코드 오류 수정

  • 모델 구조 제안

  • 그래프 작성

  • 결과 설명 초안 작성

그러나 AI가 작성한 코드가 정상적으로 실행된다는 사실만으로 분석이 타당한 것은 아니다.

**코드가 맞는가?**보다
**이 분석이 맞는가?**를 확인하는 것이 더 중요하다.

1.8기억할 것

첫 주에 많은 용어나 코드를 외울 필요는 없다.

다음 네 가지를 기억하면 충분하다.

  1. 딥러닝은 머신러닝의 한 분야다.

  2. 심층 신경망은 여러 층을 이용해 데이터를 연속적으로 변환한다.

  3. 신경망은 훈련을 통해 신경망의 파라미터를 결정한다.

  4. Keras와 PyTorch는 같은 딥러닝 원리를 서로 다른 방식으로 구현한다.

앞으로의 수업에서는 이 네 가지가 실제 코드와 프로젝트에서 어떻게 나타나는지 하나씩 확인한다.

1.9확인 문제

1.9.1문제 1

인공지능, 머신러닝, 딥러닝의 관계를 설명하라.

해설 보기

딥러닝은 머신러닝의 한 분야이고, 머신러닝은 인공지능에서 활용되는 핵심 방법 가운데 하나다.

1.9.2문제 2

딥러닝에서 deep이 의미하는 것은 무엇인가?

해설 보기

여러 층을 연속적으로 사용하여 입력 데이터를 단계적으로 변환하는 신경망 구조를 의미한다.

1.9.3문제 3

Keras와 PyTorch를 함께 배우는 이유를 설명하라.

해설 보기

두 프레임워크는 같은 딥러닝 원리를 서로 다른 방식으로 표현한다. Keras를 통해 모델을 간단하게 구성·활용하고, PyTorch를 통해 모델과 훈련 과정을 보다 명시적으로 확인할 수 있다.

1.9.4문제 4

생성형 AI가 신경망 코드를 완벽하게 작성했다면 학생이 추가로 판단해야 하는 것은 무엇인가? 두 가지 이상 설명하라.

해설 보기

입력과 타깃의 설정, 모델 구조의 적절성, 손실함수와 평가 지표의 선택, 훈련/평가 데이터의 구분, 과대적합 여부, 오류가 발생하는 데이터, 결과의 해석과 한계 등을 확인해야 한다.