모도리는 공부중

21.03.02. 딥러닝 - 본문

728x90
반응형

CNN (Convolution Neural Network)의 구조

  • CNN( 합성곱 은 입력된 이미지에서 특징을 추출하기 위해 마스크 필터를 도입하는 방법
  • 이미지 전체 영역에 대해 서로 동일한 연관성 중요도 로 처리하는 대신 특정 범위에 한정해 처리한다면 훨씬 효과적일 것이라는 아이디어 제시
  • Convolution 은 비전에서 주로 filter 연산을 뜻하며 이미지의 특징(feature)를 찾기 위해 filtering을 수행

CNN (Convolution Neural Network ) 과정

  • 특성맵 feature map ) : 합성곱 계층의 입출력 데이터
  • 특성맵은 평면을 구성하는 2차원로 구성 → 채널
  • 흑백으로 코딩된 경우 흑백의 그레이 스케일만 나타내면 되므로 깊이는 1
  • 입력신호가 RGB 신호로 코딩된 경우, 깊이는 3

Convolution : 다양한 필터 위아래선 , 좌우선 , 대각선 , 질감 1 , 질감 2 , 동그라미 , 세모 , 네모 등 를 조각
필터로 해당 패턴이 이미지 위에 있는지 확인하여 마킹하는 작업

원영상에 대해 , 다양한 3*3 filter 연산을 한 경우이며 , 필터의 종류에 따라 각기 다른 특징을 끄집어 낼
수 있음

Convolution 의 멋진점은 간단한 필터를 쌓아가면서 엄청나게 복잡한 필터를 만들어가는 것

우리가 일일히 하지 않아도 알아서 직접 찾아준다는 것이 가장 멋있고 편리한 점이다.

  • Locality(Local Connectivity)
    • CNN 은 Local 정보를 활용하여 인접한 값들에 대한 correlation 관계를 비선형 필터를 적용하여 추출
    • 필터를 여러 개 적용하면 다양한 local 특징 추출 가능
    • 이러한 과정을 거치면서 영상의 크기는 줄어들며 global feature 를 추출
  • Shared weights
    • Filter 를 반복적으로 적용함으로써 변수를 획기적으로 줄일 수 있음
    • Topology( 형상 ) 변화에 무관한 항상성 ( 를 얻을 수 있음

우리는 categorical이 아닌 get_dummies를 활용하여 사용했었다.

inpur_shape를 이용하여 3차원 데이터를 그대로 넣어줄 수 있었다. 두번째 층으로 넘어갈 때는 input_shape를 굳이 써주지 않아도 따라가므로 Conv2D와 activation만 입력해주었다.

Flatten은 다시 1차원으로 바꿔주는 역할을 도왔다.

 

CNN(Convolution Neural Network) 파라미터

이게 흑백이었기 때문에 320개이며, 컬러였으면 또 3을 곱해서 값을 구해야할 것이다.

입력 * 출력 + 출력의 값이 18,496개.

 

CNN의 오차 역전파 (Error Backpropagation)

 

 

Padding

층을 지나면서 컨버션할 때마다 이미지 크기가 줄어드는 문제가 발생한다. 이것을 해결하기 위해 나온 것이 바로 padding. 그 중에서 zero padding을 사용하는데 zero padding이란 테투리 부분을 컨볼루션 전에 0으로 채우는 작업을 말한다.

  • 필터의 크기는 5 x5 나 7x7 등 임의의 크기로 정할 수 있다 .
  • 필터의 크기로 인해 가장자리 부분의 데이터가 부족해서 입력과 출력의 크기가 달라지게 되는데
  • 이를 보정하기 위해서 입력신호의 가장자리 부분에 0 을 미리 채워넣는 것을 패딩 padding)이라고 한다.
  • Conv2D 계층에서는 padding 인자를 사용하여 패딩을 지정할 수 있다 . valid 로 설정하면 패딩을 사용하지 말라는 뜻이다.
    • same을 지정하면 출력의 차원이 입력과 같아지도록 적절한 수의 패딩을 자동으로 입력하라는 것이다

 

원 이미지의 값을 바꾸지 않기 위해 1이 아닌 0을 곱해준다.

왜 1이 아닌 0인가요? 1이어야하지 않나요? 라는 질문을 할 수도 있다. 생각해보자. 0인 부분은 원래 이미지가 없는 곳이다. 이미지가 원래 없는 부분에 이미지 크기가 층을 지날때마다 작아지는 문제를 없애기 위해 zero padding을 하는건데 만약 1이라는 값을 곱해주면 해당 부분에 이미지가 있다고 인식하여 값이 달라지는 문제를 초래하게 될것이다. 이런 문제로 1이 아닌 0을 곱해주는 제로 패딩을 통해 값손실이나 변경이 일어나지 않게끔 하는 것이다.

 

Stride

  • Stride : 입력 데이터에 필터를 적용할 때 이동할 간격을 조절하는 것 필터가 이동할 간격
  • 스트라이드는 합성곱 필터링을 수행할 때 패치를 예를 들면 3 x3 크기를 한 픽셀씩 옆으로 이동하면서 출력을 얻지 않고, 2픽셀씩 또는 3픽셀씩 건너 뛰면서 합성곱을 수행하는 방법이다.
  • 이를 스트라이드 2 또는 스트라이드 3이라고 하는데, 이렇게 하면 출력 특성맵의 크기를 1/4 또는
    1/9 로 줄일 수 있다.

zero padding과 Stride를 1로 적용한 경우 컨볼루션

 

Subsampling

  • Pooling (Sub Sampling) : 처리할 데이터의 크기를 줄이는 작업 (Max Pooling, Average Pooling)
  • Max Pooling : 최대값을 대표값으로 설정
  • Average Pooling : 평균값을 대표값으로 설정
  • L2 norm pooling : L2 규제에 의한 값을 대표값으로 설정

 

  • 단순히 데이터의 사이즈를 줄여주며, 노이즈를 상쇄시키고, 미세한 부분에서 일관적인 특징을 제공

  • 보통은 Convolution과정에서 만들어진 feature들의 가장 큰 값들만 가져와 사이즈를 줄임 → Max pooling

좋은 특성을 추출하기 위한 형태. 오히려 정확도가 올라간다고 볼 수 있다.

 

Subsampling의 단점

  • 메모리 관점에서 일반적인 다층 퍼셉트론보다 더 많은 용량을 차지 많은 파라미터
  • 실행 시간 관점에서 컨볼루션 과정이 많은 계산을 필요로 하고 전체 실행 시간 중 약 60% 이상을 차지
  • 같은 개수의 파라미터를 갖는 신경망보다 약 3배 가까이 실행 시간이 느림

맥스풀링을 하면 과대적합이 줄어드는 것을 직접 확인할 수 있다.

728x90
반응형
Comments