week1

활동 일자: 2024.07.07

목표 : Pytorch와 CNN에 대해 알아보기

파이토치(Pytorch)란?

  • Python 기반의 과학 연산 패키지
  • NumPy를 대체하면서 GPU를 이용한 연산이 필요한 경우 사용
  • 최대한 유연성과 속도를 제공하는 딥러닝 연구 플랫폼이 필요한 경우 사용

파이토치의 장점

  • 텐서플로보다 간결해서 쉽게 사용할 수 있음.
  • 학습 및 추론 속도가 빠르고 다루기 쉬움.
  • Define-by-Run 프레임워크.
    -Define by Run: 동적 계산 그래프를 생성하는 방법.
    딥러닝 프레임워크가 순방향 패스(forward pass)를 실행하는 동안 계산 그래프를 생성하게 되는데, 이는 각 반복마다 그래프를 동적으로 변경할 수 있게 함. 이는 정적 계산 그래프(Define and Run)에 비해 더 직관적이며 유연성이 뛰어남.
    ex) 재귀 신경망(RNN)
  • 많은 논문들이 파이토치로 구현.

파이토치 패키지의 기본 구성

  • 1. torch

    메인 네임스페이스. 텐서 등의 다양한 수학 함수가 포함되어져 있으며 Numpy와 유사한 구조를 가짐.

  • 2. torch.autograd

    자동 미분을 위한 함수들이 포함되어져 있음. 자동 미분의 on/off를 제어하는 콘텍스트 매니저(enable_grad/no_grad)나 자체 미분 가능 함수를 정의할 때 사용하는 기반 클래스인 'Function' 등이 포함되어져 있음.

  • 3. torch.nn

    신경망을 구축하기 위한 다양한 데이터 구조나 레이어 등이 정의되어져 있음. 예를 들어 RNN, LSTM과 같은 레이어, ReLU와 같은 활성화 함수, MSELoss와 같은 손실 함수들이 있음.

  • 4. torch.optim

    확률적 경사 하강법(Stochastic Gradient Descent, SGD)를 중심으로 한 파라미터 최적화 알고리즘이 구현되어져 있음.

  • 5. torch.utils.data

    SGD의 반복 연산을 실행할 때 사용하는 미니 배치용 유틸리티 함수가 포함되어져 있음.

  • 6. torch.onnx

    ONNX(Open Neural Network Exchange)의 포맷으로 모델을 익스포트(export)할 때 사용. ONNX는 서로 다른 딥 러닝 프레임워크 간에 모델을 공유할 때 사용하는 포맷.

합성곱 신경망(Convolutional Neural Network, CNN)이란?

  • 딥러닝의 한 종류.
  • 일반적인 신경망 구조에 합성곱 계층(Convolutional Layer)과 풀링 계층(Pooling Layer)을 추가함으로써 공간적인 구조 정보를 유지함.
  • 고차원의 복잡한 데이터를 더욱 간결하게 표현할 수 있게 함.
  • 영상 및 시계열 데이터에서 주요 특징을 찾아내고 학습하기 위한 최적의 아키텍처를 제공함.

CNN 계층 구조

  • 합성곱 계층(Convolutional Layer): 입력 영상을 일련의 컨벌루션 필터에 통과시킴. 각 필터는 영상에서 특정 특징을 활성화함.
  • ReLU(Rectified Linear Unit)계층: 음수 값은 0에 매핑, 양수 값은 그대로 두어 더 빠르고 효과적인 훈련이 이루어지도록 함. 이 때 활성화된 특징만 다음 계층으로 전달되므로 이를 활성화라고도 함.
  • 풀링 계층(Pooling Layer): 비성형 다운샘플링을 수행하여 신경망이 학습해야 하는 파라미터의 개수를 줄임으로써 출력을 단순화함.
    -위와 같은 연산이 수십 또는 수백 개의 계층에 대해 반복되며, 각 계층은 서로 다른 특징을 식별하도록 학습함. 그 후 분류 계층으로 넘어감.
  • 분류 계층
    -마지막에서 두 번째 계층은 k 차원의 벡터를 출력하는 완전 연결 계층이며 분류되는 영상의 각 클래스에 대한 확률을 포함함.
    -마지막 계층은 분류 계층을 사용하여 최종 분류 출력을 제공함.

CNN이 사용 되는 분야

  • 의료 영상: cnn은 수천 건의 병리학 보고서를 검토하여 영상에서 암 세포의 유무를 시각적으로 검출할 수 있음.
  • 오디오 처리: 마이크가 있는 모든 기기에서 키워드 검출을 사용하여 특정 단어나 문구("Hey Siri!")가 발화 되었을 때 이를 검출할 수 있음.
  • 객체 검출: 자율 주행에서 표지판이나 다른 객체의 존재 여부를 정확하게 검출하고 출력을 바탕으로 결정을 내리는 데 사용.
  • 합성 데이터 생성: GAN을 사용하여 얼굴 인식 및 자율 주행을 비롯한 딥 러닝 응용 분야에서 사용할 새로운 영상을 생성할 수 있음.