학부 수업 내용 정리/인공지능심화

#16 Convolutional Neural Network (1)

supersumin 2024. 11. 25. 23:59

1. 왜 CNN(Convolutional Neural Network)을 사용할까?

매우 큰 parameter 수로 인한 overfitting을 해결하기 위해 딥러닝에서 이미지 데이터를 처리하기 위해 CNN을 사용한다.

1.1. Full Connectivity의 비효율성

기존의 Fully Connected Neural Network(완전 연결 신경망)에서는 이미지의 모든 픽셀이 하나의 뉴런에 연결된다. 이는 다음과 같은 문제가 발생한다.

  • 매우 많은 parameters
    예를 들어, 200×200×3 크기의 이미지(3채널 RGB 이미지)를 입력으로 사용하는 경우, 하나의 뉴런은 개의 weight(가중치)를 학습해야 한다. 이는 너무 많은 계산 비용을 요구한다.

    더 큰 이미지를 생각해본다면,  크기의 이미지를 입력으로 사용하고 hidden layer에 200개의 뉴런이 있다

1920×720×200=276,480,000 개의 weight

이처럼 가중치가 폭발적으로 증가해 실질적으로 구현이 어렵고, 연산 자원이 많이 소모된다.

  • Overfitting 위험 파라미터 수가 지나치게 많아지면 모델이 훈련 데이터에 과적합(overfitting)되어 새로운 데이터에 대해 일반화 능력을 잃게 된다.

1.2. Convolution의 효과

로컬 연결(Local Connectivity)

Convolution은 입력 이미지의 일부분(작은 지역)에만 연결되므로 weight의 수가 크게 줄어든다. 예를 들어,  픽셀 크기의 이미지를 처리한다고 가정해보자.

  • Fully Connected Neural Network에서는 하나의 뉴런이 개의 weight를 학습해야 한다.
  • CNN에서는 10x10 크기의 필터(Filter)를 사용한다고 가정하면, 하나의 필터는 100개의 weight를 학습한다. 100개의 필터를 사용한다면, 전체 weight의 수는

10×10×100=10,000

이처럼 CNN은 연산량을 크게 줄이고 더 효율적으로 학습한다.

high level feature 학습

CNN은 계층적으로 동작하며, 초기 레이어에서는 엣지(edge)와 같은 저수준 특징을 학습하고, 이후 레이어에서는 점점 더 복잡한 하이레벨 특징을 학습한다.

 

2. Layer의 구성: 딥러닝 모델의 주요 구성 요소

2.1. 주요 layer 종류

  1. Convolution Layers: 이미지를 처리하며, 공간적 정보(위치, 패턴)를 기반으로 특징(feature)을 추출
  2. Pooling Layers: Convolution Layer의 출력 크기를 줄이며, 주요 특징만 유지하여 연산량을 줄이고 과적합(overfitting)을 방지
  3. Fully Connected Layers (FC Layer): 이전 레이어에서 추출된 특징을 결합하고 최종 예측(분류나 회귀 등)을 생성

추가적으로 몇몇 딥러닝 모델에서는 Local Contrast Normalization (LCN)을 활용하여 이미지 대비를 조정해 모델 학습을 돕기도 한다.

2.2. 예시: CIFAR-10 데이터셋

CIFAR-10은 3 크기의 컬러 이미지를 입력으로 사용한다. 여기서 모델이 처리하는 과정을 알아보자

1단계: Convolution Layer

  • 입력:  (가로, 세로, 채널)
  • 출력: 12개의 필터(filter)가 사용되었다면, 출력의 크기는 가 된다.
  • 활성화 함수 ReLU(Rectified Linear Unit)를 통과하면 크기는 그대로 유지된다.

2단계: Pooling Layer

  •  크기의 Max Pooling을 적용하면 출력 크기가 절반으로 줄어든다.
  • 새로운 출력 크기: 

3단계: Fully Connected Layer

  • FC Layer는 최종적으로 모든 특징을 결합하여 CIFAR-10 데이터셋의 10개의 클래스(레이블)를 예측한다.
  • 출력 크기:  (10개의 클래스 확률).

 

여기서 알아둘 것!

한 filter의 크기: (filter size)x(filter size)x(이전 channel의 수)

filter의 tensor: (filter size)x(filter size)x(이전 channel의 수)x(filter의 개수)

 

 

'학부 수업 내용 정리 > 인공지능심화' 카테고리의 다른 글

#18 CNN Architecture (1)  (0) 2024.11.26
#17 Convolutional Neural Network (2)  (0) 2024.11.26
#15 Neural Network (4)  (0) 2024.11.25
#13 Neural Network (2)  (0) 2024.11.25
#12 Neural Network (1)  (0) 2024.11.25