CNN

예갈조·2024년 12월 10일

Tumor Track Project

목록 보기
12/25

  • 주로 이미지 처리와 컴퓨터 비전에 특화된 딥러닝 모델
  • 공간적 구조를 고려하여 연산 → 이미지, 시각적 데이터에서 유의미한 패턴 추출 가능



CNN 주요 하이퍼파라미터


  • 필터 크기: 3x3, 5x5
  • 필터 수: 각 합성곱 레이어에서 학습할 특징의 수를 결정
  • 스트라이드 (stride): 필터가 슬라이딩할 간격 (디폴트: 1)
  • 패딩 (Padding)
    • 출력 크기 조절을 위해 사용
    • 입력과 출력 크기를 동일하게 유지하기 위해 주변에 0과 같은 무의미한 데이터로 채워 넣는다.
    • 패딩을 수행할 경우 이미지의 중요한 특징이 가장자리에서 손실되지 않고 유지될 수 있다.
    • stride와 함께 사용하여 모델 크기를 유지하면서 연산량 줄이기 가능



CNN 구조


1. 입력 레이어 (Input Layer)

  • (높이, 너비, 채널수)를 입력으로 받음
    • RGB 이미지(3채널)의 크기가 224*224 → 입력은 (224, 224, 3)

2. 합성곱 레이어 (Convolutional Layer)

  • 이미지 특징 추출하는 부분
  • 작동 원리
    • 필터(커널)가 입력 이미지 위를 슬라이딩하면서 dot product를 수행함
    • 필터는 크기와 개수로 정의
      • 일반적으로 33 또는 55를 많이 사용
      • 필터의 개수가 많을수록 더 다양한 특징을 학습할 수 있다.
  • 결과
    • 이미지가 축소된다 (padding을 하지 않을 시)
    • feature map 생성 → 입력 이미지의 특징을 나타냄

3. 활성화 함수 (Activation Function)

  • 주로 ReLU를 사용하여 비선형성을 추가한다.
    • ReLU 공식
      f(x)=max(0,x)f(x)=max(0,x)
  • 활성화 함수는 모델이 복잡한 데이터 분포를 학습할 수 있도록 도와준다.

4. 풀링 레이어 (Pooling Layer)

  • 차원 축소 및 과적합 방지 역할

  • 종류

    • Max Pooling: 해당 영역에서 가장 큰 값을 선택
      • 일반적으로 최대 풀링 연산을 많이 사용함
    • Average Pooling: 해당 영역의 평균값을 선택
  • 효과
    • 다운샘플링 (Down Sampling): 데이터 크기는 감소시키지만 모델의 중요한 특징은 유지
    • 변이에 강함: 풀링 연산이 진행되는 영역 안에서 가장 두드러지는 특징만 추출 → 입력 이미지의 작은 변화나 왜곡에 대해서 안정성 유지시켜줌
    • 과적합 방지: 특징 개수 감소 → 모델 파라미터 줄임
    • 추상화 수준 증가: 이미지의 추상화 수준을 높여 더 고차원 특징을 추출할 수 있게 함
      • 추상화: 특정 사물이나 현상에서 핵심적인 요소나 본질만 뽑아내고 세부적인 부분은 생략하는 것을 의미
        • 즉, 복잡한 데이터를 단순화하여 중요한 특징만 다루겠다는 뜻
      • 저차원 특징: 엣지, 코너, 텍스처 등과 같은 세부적인 정보
      • 고차원 특징: 사물의 모양, 패턴, 구조 등과 같은 더 일반적이고 의미 있는 정보

5. 완전 연결 레이어 (Fully Connected Layer, FC Layer)

  • 추출된 특징을 기반으로 최종 분류 또는 회귀를 수행하는 단계
  • 모든 뉴런이 이전 레이어의 모든 뉴련과 연결됨
    • flatten 연산을 통해 1차원 벡터로 변환
      • 이전 레이어의 뉴런 각각에서 나오는 모든 출력 값이 현재 레이어의 뉴런 각각의 입력값으로 들어간다.
    • 해당 벡터 값이 FC Layer를 통과하면서 출력을 발생시킴
    • 해당 부분은 MLP와 작동 방식이 동일하다.
  • 일반적인 이미지 분류에서 마지막에 softmax 함수를 사용하여 클래스 확률을 출력한다.
    • softmax: 다중 클래스 분류 문제 시 사용 (이진 분류 시에는 시그모이드 함수 사용)

6. 드롭아웃 (Dropout)

  • 과적합 방지
  • 랜덤하게 뉴런을 비활성화하여 모델의 일반화 성능을 향상시킨다.
    • 뉴런을 0으로 설정하여 비활성화 진행
      • 뉴런의 출력값이 0으로 설정된다. (가중치는 변경되지 않음)
      • 비활성화된 뉴런은 해당 학습 단계에서 출력을 0으로 설정 → 이후 레이어로 정보를 전달하지 않는다.
  • 계산 방식
    • 드롭아웃 적용 전
      y=f(Wx+b)y=f(Wx+b)
      • W: 가중치, x: 입력값, b: bias, f: 활성화 함수
    • 드롭아웃 적용 후
      yi=rif(Wx+b)yi=ri⋅f(Wx+b)
    • 테스트 단계에서 보정
      y=f(Wx+b)(1p)y=f(Wx+b)⋅(1−p)
      • 드롭아웃 비율(p)에 따라 뉴런 출력 보정 → 학습 시와 테스트 시 출력 스케일 차이 조정



CNN의 대표적인 아키텍처


  • LeNet (1998): 최초의 CNN으로 손글씨 숫자 인식을 위해 설계.
  • AlexNet (2012): ImageNet 대회에서 혁신적인 성능을 보여줌.
  • VGGNet (2014): 작은 필터(3×3)를 사용하여 심층 네트워크 구성.
  • ResNet (2015): 잔차 학습(Residual Learning/Connection)을 도입하여 매우 깊은 네트워크 구현 가능.
  • Inception (GoogleNet): 다양한 크기의 필터를 병렬로 사용.
  • EfficientNet



CNN의 장점과 한계


  • 장점
    • 이미지 데이터의 지역적 정보와 공간적 관계를 효과적으로 학습.
    • 파라미터 수가 FC 레이어에 비해 적음.
    • 다양한 이미지 작업(분류, 물체 검출, 세분화 등)에 적용 가능.
  • 한계
    • 많은 데이터와 연산 자원이 필요.
    • 객체의 회전 및 변형에 민감.
    • 자연어 처리나 시계열 데이터에는 적합하지 않음(CNN-RNN 결합으로 해결 가능하긴 함).





추가 공부

  • 소프트맥스, 시그모이드 함수 작동 방식
  • fine-tuning
  • YOLO



참고링크

04. CNN(Convolution Neural Networks)

0개의 댓글