👩‍💻LEARN : ML&Data/Lecture

[CS231n] Lecture5. Convolutional Neural Networks

쟈니유 2023. 5. 14. 16:11
728x90

복습 

[Neural Networks] 

  • 지난 시간엔 선형 score 함수(10개로 분류)를 2개 레이어인 신경망에 적용시키는 신경망을 학습함 (f= W_2*max(0,W_1*x)) 
  • NN을 통해서는 mode 문제(최빈값)를 해결할 수 있음 
    • 다양한 자동차 모양을 분류할 수 있게 하기 위해, 중간 단계의 템플릿을 학습하게 하는 것이 가능함. 여러개의 템플릿을 합산해서 최종 class score를 계산하면 한가지 색의 자동차 뿐 아니라 다양한 색, 모양의 자동차를 분류할 수 있게 됨 

 

 

Convolutional Neural Networks

 

(앞의 히스토리는 생략)

[ConvNet은 다양한 곳에 적용되고 있음]

- 이미지 분류, 이미지 검색, Detection, Segmentation, 자율 주행, Kinetic detection, 의료, 이미지 캡션,GAN 등에 사용

 

 

[Fully Connected Layer]

  • FC 레이어에서는 벡터를 가지고 연산하는 것
    • (1) 32*32*3과 같은 구조의 input 이미지를 1*3072 벡터로 변환
    • (2) 가중치 W와 연산 수행. 이 때 W는 10*3072의 가중치를 갖고 있으며 연산을 위해 전치시킴 
    • (3) 두 행렬의 곱을 통해 총 열개의 Scala를 가진 1*10 벡터가 나옴 

[Convolutional Layer]

  • Convolutional 레이어에서는 기존 이미지의 구조를 보존시킬 수 있음 
    • (1) 32*32*3과 같은 이미지 input을 그대로 입력 (물론 데이터 전처리 등은 있지만 여기에선 생략)
    • (2) 가중치w 역할을 하는 필터를 이미지의 좌상단끝부터 차례대로 슬라이딩하며 내적을 수행  → 필터와 이미지 일부 곱 당 하나의 scala
      • 이 때 필터의 depth는 이미지의 depth와 동일해야 함 (예시에선 3 채널) 
    • (3) (2)번을 전체 이미지에 적용 → 전체 이미지에 필터를 적용한 scala의 행렬이 도출됨(=activation map)
      • activation map의 크기는 전체 이미지 한변의 길이 N - Filter 한변의 길이 F / Stride + 1 로 예시에선 (32-5/1)+1 = 28
    • (4) 필터의 개수 만큼 activation map의 개수가 도출됨 

 

 

  • 하나의 input 이미지에, 필터를 통해 만든 activation map이 필터의 개수만큼 있는 Conv layer가 연속된 것이 Conv Net임 
  • 즉 하나의 이미지에 대해 필터들이 계층적으로 학습한 것임 

01

 

  • 앞부분의 레이어일수록 Low-level feature를 담게 되며 뒤의 레이어로 갈수록 High-level feature를 나타냄 
  • 아래 레이어에 있는 하나의 셀은, 하나의 필터(=뉴런)로 만들어진 activation map을 나타내며 이는 뉴런의 활성을 최대화 시키는 Input의 모양임. 예를 들어 edge 처럼 생긴 필터를 전체 이미지에 대해 슬라이딩하면 해당 필터와 유사한 값은 값이 더 커짐 

 

 

[A closer look at spatial dimension]

  • 출력 사이즈는 전체 이미지의 크기와 필터 크기, 그리고 필터가 움직이는 stride에 의해 결정됨
  • 필터 크기나 스트라이드 크기에 의해 출력 사이즈가 딱 떨어지지 않으면 안됨 

zero padding

  • ConvN을 수행할 때, 입력 이미지보다 출력 이미지가 작아지게 됨
  • 이미지 크기의 손실을 방지하거나, 원하는 출력사이즈에 맞게 하기 위해 제로패딩을 사용할 수 있음 
  • 일반적으로 제로패딩은 필터의 크기에 따라 적용하게 됨 

 

 

 

  • 예시 : 32*32*3 이미지에 10개의 5*5 필터를 적용하고 stride=1,pad=2일때 
    • 출력 이미지 사이즈는 얼마인가 
      • 기존 32 + 2패딩*2 (좌우 상하 적용되니까) -> 36
      • 36-5/1 +1 = 32 그러므로 32*32*10(필터 개수) 의 출력이 나옴 
    • 이 레이어에 해당되는 총 파라미터 개수는 얼마인가 
      • 파라미터는 필터에 있으므로
      • w : 5*5*3 -> 75개, 하나의 필터당 하나의 바이어스가 있으므로 하나의 필터엔 76개의 파라미터
      • 필터가 총 10개이므로 총 파라미터 수는 760  

[Pooling layer]

  • 이미지를 연산한 레이어들(Representation)을 더 작게, 더 관리하기 쉽게 만드는 것 (파라미터수가 작아지니까) 
  • 각 activation map에 독립적으로 적용되기 때문에 depth에는 영향을 주지 않음 
  • Pooling layer에는 제로패딩을 일반적으로 사용하지 않음 
  • 종류 : 맥스풀링, averagepooling...

 

 

 

요약 

 

  • Conv신경망은 Conv, Pool, FC레이어를 쌓아놓은 것이다
  • 주로 작은 필터와 깊은 아키텍쳐를 사용하는 트렌드가 있다 
  • 일반적인 구조는 Conv-relu 레이어를 N(~5)개 쌓은 다음 풀링을 하고, 이 단계를 여러번 반복한다. 그런 다음 FC-relu를 k(0~2)번 한 후 소프트맥스 함수를 통과시킨다. 하지만 ResNet, GoogLeNet이 이 패러다임에 도전하고 있음