전통적 패턴 인식 vs. 딥러닝 특징
전통적 패턴 인식
-
Feature Extractor
: 사람이 설계하거나, 고정된 알고리즘 사용
-
Trainable Classifier
: 추출된 특징을 분류기(SVM, 로지스틱 회귀 등)에 입력해 학습
딥러닝(Deep Learning)
- Representation Learning
: 저수준→중간수준→고수준 특징을 계층적으로 네트워크가 스스로 학습
- 마지막에는 Trainable Classifier로 연결해 최종 출력 예측
→ 특징 추출과 분류를 end-to-end 학습하여, 전체 파이프라인 최적화
딥러닝은 특징 추출도 하나의 학습 가능한 계층으로 봄
Deep Learning = Learning Hierarchical Representations
Deep = 하나 이상의 비선형(feature) 변환 단계(layer)를 거쳐 특징을 추출
Neural networks adapted for high-dimensional data
고차원 특성을 다룰 때 신경망이 갖추면 좋은 능력
-
고차원 입력 처리 능력
-
토폴로지 활용
: 2D/3D 픽셀·보폭 구조를 인식하여 패턴 추출
-
변형에 대한 불변성(Invariance)
: 위치 이동(translation), 조명 변화(illumination) 등에 강함
CNN이 활용하는 전략
대표 CNN 아키텍처
AlexNet, VGG, ResNet, DenseNet, GoogLeNet, etc.
Convolutional Neural Network (CNN)
Convolutional Stage (합성곱 계층)
ai,j=k,ℓ∑wk,ℓzi−k,j−ℓ
- Local connectivity
: 각 출력 픽셀은 입력의 작은 국소 영역(수용장, RF size)만 봄
- Weight sharing
: 같은 필터 wk,ℓ를 모든 위치에 반복 적용 → 파라미터 절감
Non-linear Stage (비선형 활성화)
yi,j=f(ai,j),f(a)=max(0,a)(ReLU)또는σ(a)
활성화 함수를 통해 비선형성 부여
Pooling Stage (풀링 계층)
- Max 또는 평균 풀링으로 위치 변화에 대한 불변성 강화
Fully-Connected Stage (완전연결 계층)
파라미터 절감 효과
Local connectivity + Weight sharing → 수십~수백 개 필터만 학습
커널(Kernel)
- 커널 = 작은 행렬(필터)로, 동일 가중치를 전체 입력에 공유
- 로컬한 영역(예: 3×3, 5×5)만 보며 국소 특징을 추출
- Weight sharing 덕분에 파라미터 수 크게 감소
효율적인 순전파 구현
각 계층별로 커널 적용 → 비선형 활성화 → (선택적) 풀링 단계를 거쳐
입력 전체를 반복하는 대신 커널 연산만 수행하면 되므로,
메모리·연산량을 줄이며 고차원 데이터에 특화된 학습·추론이 가능
Understanding kernel - edge detection
엣지(Edge)
- 이미지의 픽셀 강도 함수 f(x,y)에서,
물체 경계나 선이 있는 부분은 밝기 값이 급격히 변하는 곳
- 수학적으로는 기울기(gradient) 가 큰 곳 → 가파른 절벽처럼 보임
∇f=(∂x∂f∂y∂f),∥∇f∥=(∂x∂f)2+(∂y∂f)2
2D Convolution filter (kernel)
2D 합성곱 필터(커널)로 엣지 검출
커널
커널 적용 방식
-
3×3 윈도우를 이미지 위에서 슬라이딩
-
각 위치마다 대응 픽셀값 z1,…,z9과 커널 원소를 곱셈·합산
Gx(i,j)=k,ℓ∑Sx(k,ℓ)zi−k,j−ℓ,Gy(i,j)=k,ℓ∑Sy(k,ℓ)zi−k,j−ℓ
-
결과로 엣지 강도와 방향 정보를 얻음
그라디언트 및 방향
-
Gradient Vector
∇f=[∂x∂f,∂y∂f]≈[Gx,Gy]
-
Magnitude (엣지 강도)
∥∇f∥=Gx2+Gy2
-
Direction (엣지 방향)
θ=tan−1(GxGy)
Rule-based VS Learning-based
Rule-based Solution (전통적 방식)
Learning-based Solution (딥러닝 방식)
-
커널(필터) 학습을 통해,
이미지의 국소적 패턴(엣지·텍스처)부터 고차원 추상 특징까지
계층적으로 스스로 학습
-
Rule 설계 불필요, End-to-End로 입력→출력 최적화
End-to-End Learning
-
데이터 샘플
입력: 손 모양 이미지(32×32 등 고차원 배열)
-
레이어드 합성곱 필터 (Layered Convolution Filters)
여러 개의 커널(필터)이 채널 단위로 적용되어,
- 첫 번째 층: 저수준 엣지·선 특징
- 다음 층들: 점차 복잡한 모양·패턴
필터 개수(=채널 수)를 늘려 다양한 패턴을 병렬 학습
- Objective Function (목표 함수)
최종 추출된 고수준 특징을 완전연결·분류기로 연결
End-to-End 방식으로, 입력 이미지부터 최종 예측까지
하나의 손실 함수(ex. 크로스엔트로피)를 통해
전체 파라미터 (모든 필터, 분류기 가중치)를 통합 학습
-
객체 검출(Object Detection)
출력: 이미지 속 객체를 둘러싼 바운딩 박스
-
이미지 분류(Image Classification)
출력: 이미지 전체 또는 영역별 클래스 레이블
-
의미론적 분할(Semantic Segmentation)
출력: 이미지의 각 픽셀마다 카테고리 마스크
Weight sharing
fully connected DNN
: 입력의 각 뉴런과 출력의 모든 뉴런을 개별 가중치로 연결
→ 파라미터 수 급증, 과적합 우려
CNN (합성곱):
-
Local Receptive Field
: 각 출력 뉴런은 인접한 입력의 작은 영역만 관찰
-
Weight Sharing
: 같은 필터(커널) 가중치를 해당 영역 전체에 공유
-
Convolving
: 필터를 입력 전체에 슬라이딩하며 반복 적용
Early CNN Model
MNIST 손글씨 숫자 분류
- 여러 합성곱+풀링(subsampling) 레이어를 쌓아,
저수준→고수준 추상 표현 학습
- 서브샘플링으로 공간 해상도 축소, 파라미터 수·연산량 절감
- 최종 완전연결 단계로 분류 수행
2-D Convolution (Image)
Kernel K
: Sobel 수평 엣지 검출 필터
K=81⎣⎢⎡−1−2−1000+1+2+1⎦⎥⎤
합성곱 연산 (Convolution)
- 3×3 윈도우를 이미지 상에서 슬라이딩
- 각 위치에서 윈도우 내 픽셀값과 필터 원소를 곱한 뒤 합산
- 그 결과를 Destination Pixel에 저장 → Output Feature Map
Convolution Operation
Kernel
: 작은 가중치 행렬 (ex. 2×2 필터 {w,x,y,z}), 각 필터마다 하나의 출력 채널 생성
합성곱 단계 (Convolutional Stage)
hk(ℓ+1)(p,q)=σ((i,j)∈RF(p,q)∑wk,ij(ℓ)hij(ℓ)+bk(ℓ))
출력 픽셀 hk(ℓ+1)(p,q)을 계산할 때,
그 픽셀의 receptive field 내 입력값 hij(ℓ)를 곱해 모두 합산하고,
바이어스 bk(ℓ)를 더한 뒤 비선형 함수 σ 적용
Convolution Layer
→ 같은 depth로 맞춰줘야함
-
입력 볼륨 : 32×32×3 (높이, 너비, 채널(RGB))
-
필터(커널)
크기 : 5×5×3
파라미터: 5×5×3=75개의 가중치 w와 1개의 바이어스 b
-
Dot Product 연산
입력 볼륨의 작은 5×5×3 청크 x를 필터와 겹쳐 놓고,
원소별 곱셈 후 모두 더하고 바이어스 더함:
y=w⊤x+b=i=1∑75wixi+b
→ 이 하나의 숫자 y가 출력 맵의 한 픽셀이 됨
여러 필터(채널)를 쓰면 ⇒ 28×28×(필터 수) 크기의 출력
합성곱 신경망(ConvNet) 레이어 시퀀스
-
입력(Input)
크기: 32×32×3 (높이×너비×채널)
-
첫 번째 합성곱 계층 + 활성화
필터: 6개, 크기 5×5×3
출력: 28×28×6 활성화 맵
-
두 번째 합성곱 계층 + 활성화
필터: 10개, 크기 5×5×6
출력: 24×24×10 활성화 맵
이후에도 같은 형태로 Conv + ReLU 반복
→ 공간 해상도는 점차 줄이면서 채널(특징) 수를 늘림
A Closer Look (hyper-parameters)
- 필터 크기: 작은(3×3)일수록 더 깊게 쌓기 유리
- 스트라이드: 크면 축소가 빠름 → 정보를 잃을 수 있음
제로 패딩(Zero Padding)
패딩 1: 입력 가장자리에 1픽셀 두께의 0 채워넣기

이 상태에서 스트라이드 1, 필터 3×3 적용하면,
(7+2⋅1−3)+1=7 ⇒ 입력 크기 유지
filter size, stride, and zero padding
입력 크기: m×m
필터 크기: k×k
스트라이드: s
패딩 없음(padding=0) 가정
출력 크기 계산식
Output size=1+sm−k
Zero-padding
공간 축소 문제
ex. 32×32 영상에 5×5 필터, 스트라이드=1 적용 시
출력 크기: (32−5)+1=28 → 다음 층은 28×28
연속 적용하면 너무 빠르게 해상도 ↓
제로 패딩의 역할
테두리(pixel)에 0 채우기로 입력 크기를 임의로 조절
패딩 두께 P 만큼 추가하면 :
Output=s(m+2P)−k+1
Same Padding (출력=입력) 원할 때 : P=2k−1
1x1 convolution layers
1×1 합성곱 계층(1×1 Convolution)

1×1 필터
크기: 1×1 공간, 깊이=64 (→1×1×64),
필터 수: 32
연산
1×1 윈도우를 슬라이딩(stride=1, padding=0)해 56×56 위치마다 반복 적용
출력 활성화 맵
크기: 56×56 공간 크기 유지
채널 수: 필터 수만큼 → 32개
용도
공간 해상도 유지: 가로·세로 크기 변화 없이
깊이 축소: 채널(특징) 수를 줄임 → 계산ㆍ파라미터 감소
Behaviors
CNN의 핵심 동작: 복제된 특징 & 국소 연결
복제된 특징(Weight Sharing)
동일한 필터(커널)를 입력 이미지 전역에 반복 적용
- 파라미터 수 대폭 감소 → 과적합 위험 ↓
- Translation Invariance
: 같은 특징(ex. 엣지, 코너)을 위치에 상관없이 감지
국소 연결(Local Connectivity)
각 뉴런은 입력의 작은 범위(수용 영역)만 보고 판단
- 이미지 전체가 아니라 작은 덩어리 단위로
의미 있는 무늬(색 대비, 결)만 뽑아냄
다양한 필터 사용
여러 종류의 필터(ex. 엣지, 색 대비, 곡선 등)를 병렬로 사용해
각 이미지 패치를 다중 관점(다양한 특징 맵)으로 표현
Pooling layer
역할
- 공간 해상도 축소(downsampling)로 특징 맵 크기 작게 유지
- 계산량·파라미터 감소, 모델 복잡도 경감
- 스케일 불변성: 작은 위치 변화에도 대표값 유지
삽입 위치
일반적으로 여러 합성곱+ReLU 블록 사이에 주기적으로 추가
풀링 종류
- Max Pooling : 창 안의 최대값 선택
- Average Pooling : 창 안의 평균값 계산
Fully Connected (FC) Layer
완전 연결(Fully Connected, FC) 층
- 이전 층의 모든 뉴런과 완전하게 연결된(Dense) 형태
- 입력된 3차원 볼륨(높이×너비×채널)을 일렬로 펼쳐(flatten)
1차원 벡터로 변환한 뒤, 각 요소에 가중치를 적용

역할
- 분류(classification)나 회귀(regression) 같은 최종 결정 단계 담당
- 이 층 뒤에 시그모이드(sigmoid), 소프트맥스(softmax) 등을
붙여 출력값을 얻음
Training with BP
합성곱(conv)·풀링(pool)·완전연결(FC) 층 모두에 대해
오차를 뒤쪽으로 전파하여 가중치를 갱신
LeNet 5
5×5 합성곱과 2×2 풀링을 교차 배치한 뒤,
FC 층으로 분류 결과를 내는 CNN
AlexNet (Krizhevsky 2012)
핵심 아이디어
-
ReLU 활성화
tanh 대비 수렴 속도↑, gradient 소실 문제 완화
-
Dropout
과적합 방지 위해 FC 층에서 뉴런 절반 랜덤 제거
-
대규모 GPU 병렬 처리
모델을 2개의 GPU에 분할 배치하여 학습 시간 단축
VGGNet
핵심 아이디어
-
Small Filters & Deeper Network
모든 합성곱 층에서 3×3 커널, stride=1, padding=1 사용
-
깊이를 늘려(non-linearity 증가)
넓은 수용 영역(effective receptive field) 확보
연속 세 겹의 3×3 합성곱 = 단일 7×7 합성곱과 동일 receptive field
→ 깊이(layer) 증가로 더 많은 비선형 결합 학습
(더 다양하고 복잡한 특징(feature) 을 뽑아냄)
GoogLeNet
Inception 모듈 (핵심 구성요소)
각 Inception 모듈 :
한 번에 여러 크기의 필터를 병렬 처리 → 채널 방향으로 합치기
Naive
각 브랜치마다 원본 채널 수로 바로 연산 → 파라미터·연산량 과다
Bottleneck
How important is depth?
제거 실험(Remove top FC)
- 제거 대상: Layer 7 (두 번째 FC; 4096 → 4096)
- 절감 효과: 약 1,600만 개 파라미터 감소
파라미터 27% ↓ vs. 성능 ↓ 1.1%p
제거 실험 2
- 제거 층:
Conv3 (Layer 3), Conv4 (Layer 4)
FC6 (Layer 6), FC7 (Layer 7)
깊이(depth)의 결정적 역할
중간 Conv 층 하나만 제거해도 성능이 크게 떨어지며,
FC를 포함해 여러 층을 동시에 뺄 경우 성능 저하는 치명적
→ 모델의 깊이를 극단적으로 줄이면 파라미터 수는 대폭 줄지만, 성능 손실이 과도
ResNet
핵심 아이디어: Residual Connection
-
잔차 학습 : H(x) 대신 F(x)=H(x)−x을 학습
입력 x와의 차이만 모델이 배우고, 다시 더해 줌으로써 전체 함수를 완성
-
잔차 연결(Residual Connection)
: 스킵 경로로 입력 x를 블록 출력에 더해 줌
장점
- 기울기 소실(vanishing gradient) 완화
: shortcut 경로로 그래디언트 직접 전달
- 학습 안정성↑: 깊이가 깊어져도 수렴 어려움 감소
CNN의 문제 : 깊이의 저주(Degradation)
Plain CNN(20층) vs. 더 깊은 Plain CNN(56층) 비교 시
학습 오류(training error), 테스트 오류(test error)가 56층에서 오히려 높음
→ 과적합(overfitting)이 아닌, 최적화(optimization) 난이도 문제
해결책: Residual Learning & Skip Connection
잔차 학습(Residual Learning)
: 원래 학습하려던 출력 H(x) 대신
F(x)=H(x)−x
(입력 x와의 “차이” = residual)만 학습.
최종 출력은
y=F(x)+x=H(x)
잔차 연결(Residual Connection)
스킵 경로(skip/identity path)로 gradient가 블록을 우회해
깊은 층까지 손실 없이 전파
Training CNN
CNN 학습 기법
- Data augmentation, weight initialization
- Dropout: simple way to prevent the over-fitting problem
- Batch normalization
- Transfer learning
Data augmentation
원본 데이터를 다양한 방식으로 변형해 새로운 학습 샘플을 만들어내는 기법
- 데이터 부족 극복
: 학습 데이터 수를 사실상 늘려 과적합(over-fitting) 방지
- 모델 일반화 개선
: 다양한 변형에 노출시켜 실제 환경 변화에도 강건한 특징 학습
Data preprocessing
-
Zero-Centering
: 각 특성(feature)의 평균을 0으로 이동
-
Normalization (정규화)
: 특성별 표준편차를 1로 스케일링(또는 [0,1] 구간으로 변환)
-
Decorrelation (비상관화)
: 특성 간 상관관계를 제거해 공분산(covariance) 행렬을 대각행렬로 만듦
-
Whitening (백색화)
: Decorrelation 후,
모든 주성분의 분산을 1로 맞춰 공분산 행렬을 단위행렬로 변환
Weight initialization
목적
학습 초기에 각 층의 출력 분포가 적절히 유지되어야
- 기울기 소실/폭발 문제 방지
- 수렴 속도와 최종 성능 개선
효과
-
σ=0.10 (너무 작음)
: 출력 분포가 거의 0 부근에 몰려, 뉴런이 충분히 활성화되지 않음
→ 학습 지연
-
σ=0.14 (적정)
: 출력 분포가 유의미한 범위(0~약 8)로 유지
→ 정보 손실 없이 전파
-
σ=0.28 (너무 큼)
: 출력이 매우 큰 값으로 폭발
→ 그래디언트가 불안정해져 학습 어려움
Dropout regularization
학습 시 은닉 유닛(뉴런)을 확률적으로 생략(drop)하며 네트워크를 학습하는 기법
Batch normalization (BN)
미니배치 단위로 각 층 입력의 분포(평균·분산)를 정규화한 뒤,
학습 가능한 스케일(γ)·시프트(β) 파라미터를 적용하는 기법
Transfer Learning
이미 학습된(pre-trained) 모델의 지식(가중치·특징)을
새로운 과제에 재활용하는 기법
-
Source Task(A)에서 대규모 데이터로 CNN 학습 → 공유 가능한 특징 획득
-
학습된 모델의 앞쪽 합성곱(conv) 블록은
고정(Freeze) 혹은 미세조정(Fine-tune)
-
뒷단 완전연결(FC)·헤드(Head)를 새 과제(Task B)에 맞춰
재구성(클래스 수 변경 등)
-
Task B 데이터로 뒷단만 재학습 또는 전체 네트워크 약한 학습률로 미세조정
Use of CNN in Image Processing
이미지 처리에서 CNN의 활용
-
Feature Extraction
: 합성곱과 풀링 반복으로 입력에서 의미 있는 패턴(에지, 질감, 형태 등) 추출
-
Classification Head: 추출된 특징 맵을 1차원 벡터로 펼쳐(Flatten) 완전연결층(FC)으로 분류용 고수준 표현 생성
-
Probabilistic Distribution: 최종 Softmax로 각 클래스에 대한 확률값 반환