CNN은 고양이가 물체를 인식할 때 감각이 하나씩 깨어나면서 물체를 인식하는 걸 보고 아이디어를 얻었다고 한다.
즉, 이미지 전체를 하나의 입력으로 받는 것이 아니라, 이미지의 일부분 입력으로 받아 처리하는 것을 말한다(filter).
Filter는 항상 하나의 값을 만들어낸다. 즉, X를 입력 받아 어떤 처리를 한 후 하나의 값을 뽑아낸다.
RGB에 해당하는 3은 항상 같아야한다. (만약 1로 지정되어 있다면 한가지 RGB에 해당하는 요소만 처리하겠다는 뜻)
W(weight)가 입력이 있을 때 어떤 숫자로 만들어내는 Filter의 값
Stride는 필터를 움직이는 단위를 말한다. (Stride가 1일 경우 필터를 1칸씩 움직인다는 뜻)
만약 7x7 이미지에 3x3 Filter를 1 Stride를 적용할 경우 5x5가 나오게 된다. (stride가 2라면 3x3 output이 생겨난다.)
이미지 사이즈를 7로 입력했는데 필터를 적용하게 되면 5x5, 3x3 이렇게 이미지가 작아지게 된다. 이미지가 작아질수록 어떤 정보를 잃어버리게 되기 때문에 보통 실제로 CNN을 사용할 때는 Padding을 사용한다.(이미지 손실을 없애기 위함)
Padding 사용 이유
그림이 급격하게 작아지는 것을 방지하기 위해
이 부분이 모서리다 라는 것을 알려주기 위해
이미지 손실을 최소화 하기 위해
* Padding을 하게 되면 이미지 손실을 막아주지만, 필요 없는 부분인 0이 붙은 만큼 noise가 발생하게 된다.
하지만 데이터 손실보다는 더 나으니 padding을 사용함
필터를 적용해서 만들어진 새로운 출력 결과를 activation map이라고 한다. 각각의 filter의 Weight는 다르기 때문에 나오는 Output은 조금씩 다르다. 그리고 n개의 filter를 적용하게 되면 n개의filter를 사용했기 때문에 depth는 n이 된다.(depth = filter의 개수)