오늘은 CNN을 보다 실전적으로 활용하기 위한 세 가지 주제를 집중적으로 학습했다.
먼저, 기존에 학습된 모델을 재활용하는 전이학습(Transfer Learning) 의 원리를 이해하고, 이어서 딥러닝 모델의 예측 근거를 시각화하는 설명 가능한 CNN 기법을 살펴보았다. 마지막으로는 CNN의 한계를 넘어 비정형 데이터까지 처리할 수 있는 그래프 기반 CNN(GCN)의 개념을 처음 접하게 되었다.
각 개념 모두 딥러닝 실무에서 매우 중요한 도구이기 때문에, 단순 개념 암기를 넘어서 구체적인 사례와 활용 흐름을 중심으로 정리해보았다.
전이학습 (Transfer Learning)
전이학습은 말 그대로 이미 학습된 지식을 새로운 문제에 전이하는 것을 의미한다. 딥러닝에서는 특히 이미지 처리 분야에서 널리 사용된다. 왜냐하면 대규모 데이터셋을 학습한 CNN은 저수준 특징(선, 모서리, 질감 등)을 잘 포착할 수 있고, 이러한 특징은 다른 시각 문제에도 그대로 유용하기 때문이다.
왜 전이학습이 필요한가?
- 데이터가 적은 경우: 수천 장 이상 데이터를 확보하기 어려운 환경에서는 처음부터 학습하면 과적합에 빠지기 쉽다.
- 시간과 자원 절약: 대형 CNN 모델은 수백 시간 GPU 연산이 필요하지만, 전이학습은 몇 시간 안에 fine-tuning 가능
- 기존 모델의 일반화 능력 활용: ImageNet 등에서 학습된 모델은 일반적인 이미지 표현에 매우 강력함
전이학습의 방식
- Feature Extractor로 사용: 기존 모델의 합성곱층을 그대로 사용하고, 분류기만 새로 학습한다. 이 방식은 빠르고 간단하다.
- Fine-Tuning: 기존 모델 전체 또는 일부 레이어까지 함께 학습한다. 기존의 표현을 유지하면서 새로운 도메인에 적응시킨다.
실습 예시
from torchvision import models
import torch.nn as nn
model = models.resnet50(pretrained=True)
for param in model.parameters():
param.requires_grad = False # 기존 가중치 동결
model.fc = nn.Linear(2048, 10) # 새로운 분류기로 교체 (예: 10개 클래스)
이처럼 단 몇 줄 코드만으로도 복잡한 모델을 내 문제에 맞게 빠르게 재활용할 수 있다.
전이학습 시 주의할 점
- 데이터의 분포가 기존 학습 데이터와 너무 다를 경우 성능 저하가 발생할 수 있다.
- Fine-Tuning을 할 때는 학습률을 매우 작게 설정해 과잉 보정(overwrite)을 피해야 한다.
설명 가능한 CNN (Explainable CNN)
딥러닝 모델은 높은 성능을 자랑하지만, 그 내부 작동은 종종 블랙박스로 여겨진다. 특히 의료, 자율주행, 금융 같은 고신뢰 영역에서는 왜 이 예측이 나왔는가? 에 대한 설명이 중요하다.
설명 가능한 CNN은 모델이 내린 예측의 근거가 된 이미지의 영역을 시각화함으로써, 사용자가 신뢰하고 검토할 수 있는 기반을 제공한다.
Class Activation Map (CAM)의 원리
CAM은 CNN의 마지막 합성곱층에서 출력된 feature map과 가중치를 결합해 시각적인 히트맵을 생성하는 방식이다. 이 히트맵은 이미지의 어떤 부분이 최종 예측에 영향을 미쳤는지를 강조해준다.
예를 들어, '고양이'로 분류된 이미지에서 CAM을 그리면 고양이의 눈, 귀, 얼굴 같은 영역이 붉은색으로 강조된다.
CAM 생성 과정
- 이미지 입력 → CNN 통과 → 마지막 Conv Layer의 feature map 획득
- 예측 확률에 대한 기울기 계산 (gradient backprop)
- 이 기울기를 가중치로 사용해 feature map과 가중합
- 생성된 map을 원본 이미지에 Overlay하여 시각화
실제 사용 예시
- 의료 영상에서 종양 부위 강조
- 자율주행 영상에서 보행자/차량 인식 근거 확인
- 사용자에게 모델의 설명 가능성과 신뢰성 확보
시각적 예
- 이미지의 배경은 흐리게, 핵심 영역만 붉은색으로 강조된 히트맵이 생성됨
- OpenCV나 Matplotlib을 활용해 손쉽게 시각화 가능
그래프 기반 CNN (Graph-based CNN)
CNN은 강력하지만, 전제가 하나 있다: 입력이 격자 구조일 것.
그러나 현실에서 다루는 많은 데이터는 비정형적이고 불규칙한 연결 구조를 갖는다. 예를 들어 소셜 네트워크, 지식 그래프, 분자 구조, 추천 시스템 등은 모두 그래프로 표현되는 데이터다. 이럴 때는 기존 CNN으로는 한계가 있고, **그래프 신경망(GNN)**이 필요하다.
GCN(Graph Convolutional Network)이란?
GCN은 CNN의 핵심 개념인 “이웃 정보의 결합”을 그래프 구조에 맞게 확장한 것이다.
CNN에서는 픽셀 주변 영역을 보고 합성곱을 하듯, GCN은 노드의 이웃 노드 정보를 모아 새로운 표현으로 갱신한다.
GCN 연산 흐름
- 각 노드는 초기 특성 벡터(feature)를 가진다
- 자신의 이웃 노드에서 정보를 받아들여 갱신한다
- 이 과정을 여러 층에 걸쳐 반복하면, 멀리 있는 노드 정보도 점점 전달됨
- 마지막에 fully connected layer로 분류하거나 회귀 수행
수식
$$
H^{(l+1)} = \sigma(\tilde{D}^{-1/2} \tilde{A} \tilde{D}^{-1/2} H^{(l)} W^{(l)})
$$
- $$
\tilde{A}:\ \text{인접 행렬 (자기 자신 포함)}
$$ - $$
\tilde{D}:\ \text{정규화용 degree matrix}
$$ - $$
H^{(l)}:\ l\text{번째 층의 출력}
$$ - $$
W^{(l)}:\ \text{학습 가능한 가중치}
$$
실제 활용 예
- 추천 시스템: 사용자-아이템 그래프 기반
- 문서 분류: 논문 인용 그래프 기반
- 분자 특성 예측: 원자-결합 구조 그래프
오늘의 회고
오늘 다룬 세 가지 주제는 단순히 CNN을 아는 수준을 넘어, CNN을 실전에서 어떻게 더 잘 활용할 수 있을까에 대한 고민과 연결되어 있었다.
전이학습을 통해 사전학습 모델을 효율적으로 재활용하고, CAM을 통해 예측 결과의 근거를 설명하며, GCN을 통해 비정형 데이터까지 확장할 수 있게 되었다.
이제부터는 단순히 모델을 만드는 데서 그치지 않고, 어떤 상황에서 어떤 구조를 써야 할지 판단하는 감각을 키워야 할 시점인 것 같다.
'[kakao x goorm] 생성 AI 응용 서비스 개발자 양성 과정 > 회고록' 카테고리의 다른 글
[kakao x goorm] 텍스트 정제와 단어 임베딩, BoW부터 Word2Vec까지 (0) | 2025.05.16 |
---|---|
[kakao x goorm] 형태소 분석과 토큰화, 그리고 텍스트 전처리 (0) | 2025.05.15 |
[kakao x goorm] 합성곱 신경망(CNN)의 구조와 구현 맛보기 (0) | 2025.05.14 |
[kakao x goorm] PyTorch 핵심 문법 정리 (0) | 2025.05.11 |
[kakao x goorm] 실습 환경 설정과 파이토치 기초 (0) | 2025.05.07 |