Pooling layer (sampling)

이미지가 있고 이미지에서 filter를 통해 conv layer를 만들었다. 거기에서 한 layer 씩 뽑아내 sampling을 하고 다시 모아 다른 형태로 만들어 넘기는 것을 pooling이라고 한다(size는 변하지만 depth는 변하지 않는다).

 

Max Pooling

Max Pooling 적용후 6, 8, 3, 4가 들어가게 된다.

  • Pooling 기법 중 하나로 여러 개의 값 중 가장 큰 값을 선택하는 방법이다.
  • 4 x 4로 이루어진 output에 2 x 2 filter, stride 2를 적용했으므로 결과는 2 x 2가 된다.
  • Sampling 이라고 부르는 이유는 전체의 값 중 하나를 뽑는 것이기 때문이다.

'Deep Learning' 카테고리의 다른 글

CNN - Convolutional Neural Network  (0) 2019.06.24
ReLu(Rectified Linear Unit)  (0) 2019.06.23

CNN은 고양이가 물체를 인식할 때 감각이 하나씩 깨어나면서 물체를 인식하는 걸 보고 아이디어를 얻었다고 한다.

즉, 이미지 전체를 하나의 입력으로 받는 것이 아니라, 이미지의 일부분 입력으로 받아 처리하는 것을 말한다(filter).

 

빨간색 네모 박스가 filter

  • Filter는 항상 하나의 값을 만들어낸다. 즉, X를 입력 받아 어떤 처리를 한 후 하나의 값을 뽑아낸다.
  • RGB에 해당하는 3은 항상 같아야한다. (만약 1로 지정되어 있다면 한가지 RGB에 해당하는 요소만 처리하겠다는 뜻)
  • W(weight)가 입력이 있을 때 어떤 숫자로 만들어내는 Filter의 값
  • Stride는 필터를 움직이는 단위를 말한다. (Stride가 1일 경우 필터를 1칸씩 움직인다는 뜻)

Filter를 거치면 Output이 나오는 공식

만약 7x7 이미지에 3x3 Filter를 1 Stride를 적용할 경우 5x5가 나오게 된다. (stride가 2라면 3x3 output이 생겨난다.)

이미지 사이즈를 7로 입력했는데 필터를 적용하게 되면 5x5, 3x3 이렇게 이미지가 작아지게 된다. 이미지가 작아질수록 어떤 정보를 잃어버리게 되기 때문에 보통 실제로 CNN을 사용할 때는 Padding을 사용한다.(이미지 손실을 없애기 위함)

 

Padding을 사용하게 되면 원래 이미지와 출력 이미지 사이즈를 같게 해줄 수 있다.

Padding 사용 이유

  • 그림이 급격하게 작아지는 것을 방지하기 위해
  • 이 부분이 모서리다 라는 것을 알려주기 위해
  • 이미지 손실을 최소화 하기 위해

* Padding을 하게 되면 이미지 손실을 막아주지만, 필요 없는 부분인 0이 붙은 만큼 noise가 발생하게 된다.

하지만 데이터 손실보다는 더 나으니 padding을 사용함

6개, 10개의 filter를 사용

필터를 적용해서 만들어진 새로운 출력 결과를 activation map이라고 한다. 각각의 filter의 Weight는 다르기 때문에 나오는 Output은 조금씩 다르다. 그리고 n개의 filter를 적용하게 되면 n개의filter를 사용했기 때문에 depth는 n이 된다.(depth = filter의 개수)

 

Stride가 1일 때 계산 값

(32-5) / 1 + 1 = 28 

(28-5) / 1 + 1 = 24 

 

Weight에 사용된 Variables 수

  • 5 x 5 x 3 x 6
  • 5 x 5 x 6 x 10

 

'Deep Learning' 카테고리의 다른 글

ConvNet Max pooling 과 Full Network  (1) 2019.06.24
ReLu(Rectified Linear Unit)  (0) 2019.06.23

Acitivation 함수란 ?

-  각 Layer의 말단에서 일정 값 기준으로 classification 해주는 것

 

Sigmoid function의 단점

   Backpropagation에서 Layer가 많아질수록 정확성이 매우 떨어진다. (Sigmoid를 통과하기 때문에 항상 1보다 작은 값이고 0에 가까운 값이 된다.) 결국은 입력이 크게 영향을 미치지 않고 0에 가까워져버리게된다. 

Vanishing gradient 문제가 발생하여 gradient가 아주 작아지는 앞쪽 Layer에서는 제대로 된 학습이 이루어 질 수 없다. local minimum에 정착되업린다.

 

ReLu : Rectified Linear Unit

  • 0보다 작을 경우 버리고 0보다 클 경우 값에 비례해서 커진다. 
  • 마지막 Layer의 출력은 반드시 Sigmoid를 사용해야한다. (마지막 Layer의 출력은 0~1 사이의 값이여야 하므로)

'Deep Learning' 카테고리의 다른 글

ConvNet Max pooling 과 Full Network  (1) 2019.06.24
CNN - Convolutional Neural Network  (0) 2019.06.24

+ Recent posts