SK플래닛 ai활용 데이터엔지니어 과정 2기/ML & DL

DL 1 - 딥러닝 개요

dev-lee 2026. 5. 26. 16:39

1. 딥러닝 개요

딥러닝은 인공신경망을 깊게 쌓아 데이터의 복잡한 패턴을 학습하는 머신러닝의 한 분야임. 회귀의 수식 `y = w1x1 + w2x2 + ... + wnxn + bias`가 그대로 퍼셉트론으로 확장된 것이 출발점이며, 층(layer)을 깊게 쌓아 표현력을 확보하는 방식으로 발전함.

1.1 의사결정 과정과 퍼셉트론

  • 배경 비유 — 맥북프로 M5 구매 결정 시 검토 요소(필요성, 노트북 성능, 프로젝트 부합, 예산 등)들이 동등하지 않음
  • 가중치 개념 — 더 중요한 요소와 덜 중요한 요소가 존재 → 가중치(파라미터)로 조정
  • 수식 표현 — y = w1x1 + w2x2 + ... + wnxn + bias > 임계값 → 구매/비구매 결정
  • 학습의 정의 — 최적의 bias, w1, w2, ..., wn 값을 찾아가는 과정

회귀에서의 회귀계수, 퍼셉트론의 가중치, 딥러닝의 파라미터는 모두 같은 개념을 부르는 다른 이름임. 머신러닝과 딥러닝의 연결고리가 바로 이 수식 구조에 있음.

1.2 딥러닝 역사

연도  사건
1943 인공지능 논문 제안
1957 퍼셉트론 제안 (인간 뉴런을 본딴 실물 장비)
1960s 아달라인 등장, GD(경사하강법) 제안
1969 XOR 문제 발생 → 1차 AI 겨울
1986 오차 역전파(Backpropagation) 제안
2009 CNN 논문 발표, 딥러닝 명칭 본격 등장
2010~2017 이미지넷 경연대회 → 딥러닝 패러다임 전환
2015 알파고 → 강화학습 + 딥러닝 + TPU
2017 어텐션, 트랜스포머 논문 발표 (구글)
2022~2023 LLM 특이점

2. 단일 퍼셉트론

인공신경망의 가장 단순한 형태로, 입력층과 출력층만으로 구성됨. 회귀 수식 그 자체임.

2.1 구조

  • 인공신경망 정의 — 입력층(x) + 출력층(y)
  • 기본 수식 — y = w1x1 + w2x2
  • 확장 수식 — output = w0x0 + w1x1 + w2x2 + ... + wnxn
  • 연산 방식 — 입력 x가 많아질수록 최적의 w도 많아져야 하므로 행렬 연산으로 처리

2.2 한계 — XOR 문제

  • 선형 분리 불가능 — AND, OR은 직선 하나로 분리 가능하지만 XOR은 불가능
  • 결과 — 단일 퍼셉트론으로는 비선형 문제를 풀 수 없음 → 1차 AI 겨울의 직접적 원인

단일 퍼셉트론의 한계가 곧 다중 퍼셉트론 등장의 동기가 됨. "층을 더 깊게 쌓으면 풀 수 있지 않을까?"라는 발상이 딥러닝의 시작점임.


3. 다중 퍼셉트론

XOR 문제를 해결하기 위해 입력층과 출력층 사이에 은닉층(hidden layer)을 추가한 구조. DL의 방향성을 결정지은 사건임.

3.1 구조 확장

  • 인공신경망 = 입력층(input layer) + 은닉층(hidden layer) + 출력층(output layer)
  • 검증 결과 — 은닉층 추가로 XOR 문제 해결 → 다중 퍼셉트론으로 비선형 문제 해결 가능 증명
  • 파급 효과 — 깊이, 방향성, 구조 변화, 하이브리드 등 논문이 쏟아지게 됨

3.2 ANN과 DNN의 구분

구분  은닉층 수 명칭
ANN (Artificial Neural Network) 1개 인공신경망
DNN (Deep Neural Network) 2개 이상 심층신경망

은닉층이 1개면 ANN, 2개 이상이면 DNN으로 부름. "Deep"이라는 표현은 은닉층이 깊게 쌓였다는 의미에서 나옴.


4. 다중 퍼셉트론 이후의 발전

4.1 오차 역전파 (Backpropagation)

1986년 제안된 최적화 기법으로, 모든 DL 프레임워크가 기본으로 지원함. 학습의 핵심 메커니즘임.
  • 순전파(Forward) — x → 인공신경망 → y 방향으로 데이터 이동하며 학습 → 평가 → 보정
  • 역전파(Backward) — y → 인공신경망 → x 방향으로 거꾸로 이동
  • 목적 — 최적의 파라미터를 찾기 위해 미분 등을 동원하여 미세조정 수행
  • 적용 범위 — 모든 DL 프레임워크가 오차 역전파를 기본 지원

4.2 활성화 함수

값을 전체적으로 보정하여 학습 효율을 향상시키는 비선형 함수임. 기존 시그모이드의 한계를 극복하기 위해 다양한 함수가 개발됨.
  • 시그모이드(Sigmoid) — 로지스틱 회귀 기반, 초기 활성화 함수
  • tanh — 시그모이드 개선형, -1 ~ 1 범위
  • ReLU — 가장 널리 쓰이는 함수, 음수는 0으로 처리
  • PReLU — ReLU 개선형
  • Softmax — 다중 분류 출력층용

4.3 최적화 기법 계보

기법  특징
GD (경사하강법) 최초의 최적화 기법, 아달라인 구성 시 제안
SGD (확률적 경사하강법) 데이터를 무작위 샘플링하여 효율 개선
Momentum 이전 그래디언트의 관성 활용
AdaGrad 학습률을 파라미터별로 조정
Adam 모멘텀 + AdaGrad의 결합, 사실상 표준

Adam은 여러 최적화 계보가 만나는 종착역임. 별도 이유가 없다면 Adam을 기본으로 사용하면 됨.


5. 딥러닝 구현 필요 요소

5.1 프레임워크 비교

항목  TensorFlow (with Keras)  PyTorch
개발사 구글 메타
점유율 1위 (과거) 2위 (R&D/LLM 분야 강세)
개발 스타일 Define By Run (세션 획득 후 실행) Define And Run (정의 즉시 실행)
추상화 수준 Keras로 high-level 인터페이스 제공 파이썬과 유사한 스타일
실행 환경 학습 행위는 C++에서 진행 파이썬 친화적
디버깅 텐서보드 필요, 다소 번거로움 즉시 결과 확인 가능
import tensorflow as tf
tf.__version__   # '2.20.0'

import torch
torch.__version__   # GPU: '2.10.0+cu128', CPU: '2.10.0+cpu'

R&D나 LLM 연구는 PyTorch가 우세함. 메타가 LLM 생태계 장악을 위해 LLaMA 기반 모델을 오픈소스로 개방하면서 PyTorch 영향력이 더 커짐.

5.2 상호 호환

  • 컨버팅 지원 — 딥러닝 엔진 간 모델 변환 가능
  • 허깅페이스 — 주력은 PyTorch지만 TensorFlow 변환도 지원, 모든 기능을 API로 제공

5.3 하드웨어

장비 제조사 특징
GPU 엔비디아 CUDA 아키텍처로 AI 생태계 장악, 피지컬 AI, 양자역학 진입
GPU AMD ROCm 아키텍처, 추론/CPU 경쟁
GPU 애플 애플 실리콘, 에이전트 활용
TPU 구글 AI 수직 계열화 (제미나이, GoogleCloud, 딥마인드)

엔비디아의 대안으로 세레브라스(2026.05 상장)가 부상 중임. 구글은 TPU를 자체 활용하면서 메타에도 사용 허가하는 방식으로 수직 계열화 진행 중.


6. 베이스라인 구축 — 흉부외과 데이터 이진 분류

6.1 요구사항 분석

  • 배경 — 흉부외과 CT 촬영 이미지에서 추출한 데이터를 CSV로 제공
  • 목표 — CT 데이터를 보고 종양이 양성/악성인지 판별 (이진 분류)
  • 태스크 유형 — 머신러닝 / 지도학습 / 딥러닝 / 이진 분류
  • 모델 — DNN (은닉층 2개 이상)

6.2 데이터 종류별 모델 매핑

데이터 종류 주요 모델
이미지/영상 CNN, YOLO, FastCNN, 하이브리드
자연어(NLP) RNN → LightGBM → 트랜스포머 → BERT/BART/GPT → LLM
시계열 RNN 계열 (스마트팩토리 이상장비 탐지 등)
일반 데이터 ANN, DNN
생성형 GAN → 확산모델 → 스테이블디퓨전 → LLM 생성형

7. 데이터 수집 및 준비

7.1 데이터 로드

import numpy as np
import pandas as pd

raw_data = np.loadtxt('/content/drive/MyDrive/6. ML_DL/ThoraricSurgery.csv', delimiter=',')
raw_data.shape   # (470, 18)
17개 피처 + 1개 타겟 = 총 18컬럼. 모든 데이터는 이미 수치화되어 있음.

7.2 피처/레이블 분리

X = raw_data[:, :-1]   # (470, 17) 피처 데이터, 2차원
Y = raw_data[:, -1]    # 레이블 데이터, 1차원
  • X — 2차원 배열, 모델 입력으로 사용
  • Y — 1차원 배열, 정답(0 또는 1)

8. 모델 구축

8.1 데이터 분할

from sklearn.model_selection import train_test_split

X_train, X_test, Y_train, Y_test = train_test_split(
    X, Y, random_state=10, stratify=Y
)
  • stratify=Y — y값 고유값별 비율을 유지하여 분할 (층화 추출)
  • 목적 — 훈련/테스트 데이터 모두에서 양성/악성 비율을 동일하게 유지

이진 분류에서 클래스 불균형이 있는 경우 stratify는 필수임. 빠뜨리면 한쪽 클래스가 과대/과소 표현되어 모델 성능 평가가 왜곡됨.

8.2 인공신경망 구조 설계

입력층 : (?, 17)
------------------------------
은닉층 : (?, 30)   # 17 입력 → 30개 방향으로 확대
------------------------------
출력층 : (?, 1)    # 한 점으로 수렴 (양성/악성)
  • 확대 → 수렴 — 17개 특성을 30개 경로로 확대 후 1개 출력으로 수렴
  • 학습의 의미 — 17×30개의 경로 중 정답에 가까운 파라미터 조합을 찾는 과정

8.3 신경망 구현

from tensorflow.keras.models import Sequential
from tensorflow.keras.layers import Dense

model = Sequential()
# 은닉층: 17*30 + 30(bias) = 540 파라미터
model.add(Dense(30, input_dim=17, activation='relu'))
# 출력층: 30*1 + 1(bias) = 31 파라미터
model.add(Dense(1, activation='sigmoid'))

model.summary()
  • Sequential — 층을 순차적으로 쌓는 가장 기본 모델 구성 틀
  • Dense — 완전연결 선형 층
  • activation='relu' — 은닉층 활성화 함수, 비선형성 부여
  • activation='sigmoid' — 출력층 활성화 함수, 이진 분류용 (0~1 확률값)

파라미터 수 계산: (입력 수 × 출력 수) + 출력 수(bias). 17×30 + 30 = 540, 30×1 + 1 = 31. 총 571개 파라미터를 학습으로 조정함.


9. 학습 전략 수립

9.1 학습 반영 주기

방식  특징  리스크
온라인 학습 실시간 모델 학습/반영 데이터 훼손 시 성능 저하 즉시 반영
오프라인 학습 학습과 서비스 반영 분리 보수적, 안정적 (일반적 방식)

9.2 학습 스타일

  • 일반 학습 — 신경망 새로 구성 → 데이터 주입 → 학습 → 최적화 → 에포크 반복
  • 전이 학습 (Transfer Learning) — 사전학습 모델(pre-trained model)을 재활용

9.3 전이 학습 세부 방법

방법  설명
파인튜닝 파라미터 초기화 후 본인 데이터로 재학습. 특화 모델 구축 가능, 시간 소요 큼
제로샷 러닝 사전학습 모델을 그대로 추론/생성에 사용
원샷 러닝 데이터 1개로 학습 → 파라미터 미세 조정
퓨샷 러닝 데이터 몇 개로 학습 → 퓨샷 프롬프트 엔지니어링 발전

LLaMA 같은 오픈소스 LLM을 가져와 신경망 수정 + 신규 데이터로 재학습하는 것이 자사 모델 구축의 정석 방식임. 트랜스포머(전이학습 지원)에서 발전한 것이 LLM의 기본 구조.

9.4 데이터 사이즈

방식  설명  문제점
배치 학습 1회 학습 시 전체 데이터 사용 OOM, 메모리 부족
미니배치 학습 batch_size 단위로 분할 학습 횟수 증가로 시간/전력 비용 상승
  • 에포크(Epoch) — batch_size로 진행되어 모든 데이터가 학습에 한 번씩 동원된 시점 → "1세대 학습 종료"

10. 학습 도구 설정과 실행

10.1 컴파일 — 도구 3종 설정

model.compile(
    optimizer='adam',
    loss='binary_crossentropy',
    metrics=['accuracy']
)
설정  선택 이유
최적화 도구 Adam 방향성·간격 모두 잡는 표준 옵티마이저
손실 함수 binary_crossentropy 이진 분류용 크로스엔트로피
평가 지표 accuracy 정확도, 1에 가까울수록 좋음

10.2 손실 함수 선택 기준

  • 이진 분류 — binary_crossentropy
  • 다중 분류 — categorical_crossentropy
  • 회귀 — MSE, MAE 등

10.3 학습 실행

%%time
history = model.fit(X_train, Y_train, batch_size=16, epochs=20)
  • batch_size=16 — 1회 학습 시 16개 데이터 사용 (미니배치)
  • epochs=20 — 전체 데이터를 20세대 학습
  • history — 매 에포크별 정확도/손실값 로그 기록

정확도는 1에 가까울수록, 손실값은 0에 가까울수록 좋음. 두 지표가 함께 개선되는지 확인해야 함.


11. 학습 결과 시각화

11.1 dual-axis 차트 구성

import matplotlib.pyplot as plt

_, ax = plt.subplots()
acc_ax = ax.twinx()   # x축 공유, y축 2개

ax.plot(history.history['loss'], 'r', label='loss')
acc_ax.plot(history.history['accuracy'], 'g', label='acc')

ax.set_xlabel('loss')
acc_ax.set_xlabel('acc')
plt.show()
  • ax.twinx() — 동일 x축에 두 번째 y축을 추가. 스케일이 다른 두 지표를 한 차트에 표시할 때 사용
  • 시각화 목적 — 손실과 정확도의 추이를 한눈에 비교 → 학습 전략 수립

매 에포크의 손실 변동폭이 특정 값 이하로 떨어지면 학습을 중단하는 것이 조기 종료(Early Stopping) 임. 과적합 방지와 시간 절약의 핵심 기법.


12. 예측 및 평가

model.evaluate(X_test, Y_test)
# 테스트 정확도: 약 83.9%
테스트 데이터에서 약 83.9% 정확도 달성. 베이스라인 모델로는 양호하지만 실서비스 기준으로는 부족함. 데이터 증강, 피처 엔지니어링, 하이퍼파라미터 튜닝, 신경망 구조 변경 등으로 개선 여지 있음.

13. 요약

단계  핵심 도구 출력
1. 역사 이해 퍼셉트론 → DNN → CNN → 트랜스포머 딥러닝 발전 흐름
2. 구조 이해 입력층 + 은닉층 + 출력층 ANN/DNN 구분
3. 최적화 메커니즘 오차 역전파 + Adam 파라미터 조정
4. 프레임워크 선택 TensorFlow(Keras) / PyTorch 모델 구현 환경
5. 데이터 분할 train_test_split + stratify 층화 분할
6. 신경망 구성 Sequential + Dense DNN 모델
7. 컴파일 Adam + binary_crossentropy 학습 도구 설정
8. 학습 실행 fit + 미니배치 + 에포크 history 로그
9. 시각화 matplotlib twinx 손실/정확도 추이
10. 평가 evaluate 정확도 83.9%

딥러닝의 본질은 회귀의 수식 구조를 깊게 쌓아 비선형 문제를 푸는 것임. 회귀계수 = 가중치 = 파라미터는 같은 개념이며, 학습은 결국 오차 최소화 파라미터 탐색 과정임. XOR로 멈췄던 단일 퍼셉트론이 은닉층 추가와 오차 역전파로 부활했고, 트랜스포머와 LLM까지 이어진 흐름의 출발점이 바로 이 수식 하나라는 점을 이해하면 ML/DL의 연결이 자연스러워짐.

'SK플래닛 ai활용 데이터엔지니어 과정 2기 > ML & DL' 카테고리의 다른 글

DL 3 - CNN  (0) 2026.05.26
DL 2 - 전이학습  (0) 2026.05.26
ML 3 - 머신러닝 지도학습 (회귀)  (0) 2026.05.25
ML 2 - 간단한 구현  (1) 2026.05.21
ML 1 - 개념 정리  (0) 2026.05.20