CNN(Convolutional Neural Network) - 합성곱 신경망
- CNN 에서 특별히 합성곱이 일어나는 층을 합성곱층, 풀링이 일어나는 층을 풀링층이라고 부름
합성곱층과 풀링층에서 만들어진 결과를 특성 맵(feature map)이라고 부른다.
- 입력이 합성곱층을 통과할 때 합성곱과 활성화 함수가 적용되어 특성 맵이 만들어짐, 그 다음 특성 맵이 풀링층을 통과하여 또 다른 특성 맵이 만들어짐
풀링이란?
- 특성맵을 스캔하여 최댓값을 고르거나 평균값을 계산하는 것
CNN의 구조
합성곱 층(Convolution Layer)
- 각각 합성곱 층의 뉴런은 입력 이미지의 모든 필에 연결되는 것이 아니라 합성곱 층 뉴런의 수용장에 있는 픽셀만 연결됨
- 두 번째 합성곱 층은 첫 번째 합성곱 층의 작은 사각 영역 안에 위치한 뉴런에만 연결
스트라이드(stride)
- 스트라이드가 2 이고, 수용장의 크기가 33으로 할 때 출력의 크기 33
- 만약 스트라이드가 1이라면 출력은 5*5 -> 스트라이드가 커지면 출력의 크기는 작아짐
패딩
- feature map이 작아지는 문제를 해결하기 위한 기법
- 패딩을 1로 설정 한 후 값을 0으로 넣는다
여러 가지 특성 맵
- 합성곱 층은 여러 가지 커널을 가지고 커널마다 하나의 특성 맵을 출력
- 실제로는 2D가 아니라 3D로 표현
- 각 특성 맵의 픽셀은 하나의 뉴런에 해당하고, 하나의 특성 맵 안에서는 모든 뉴런이 같은 파라미터(동일한 가중치와 편향, 즉 커널)를 공유하지만, 다른 특성 맵과는 다른 파라미터를 사용하여 파라미터 수를 급격히 감소 시킴
→ 하나의 합성곱 층이 입력에 여러 필터를 동시에 적용하여 입력에 있는 여러 특성을 감지
풀링 층(Pooling Layer)
- 과도한 계산량, 메모리 사용량, 파라미터 수를 줄이고 over fitting 위험을 줄여주는 축소본 생성
- 풀링 뉴런은 가중치 없이 최대나 평균만 계산
풀링 종류
- average pooling : 평균을 구하므로 max pooling 보다 정보 손실이 적음
- max pooling : 의미 없는 것들을 제거하고 큰 특징만 유지, 조금더 명확, 일반적으로 성능이 더 좋아서 max pooling 이용
CNN 기본 이론 요약
입력된 이미지를 Convolution Layer의 뉴런이 Kernel 이라는 특징을 통과해 특정한 특징만 가지고 있는 Feature Map 가짐, 이러한 Feature Map을 통해서 이미지 인식
Feature Map 작아지는 문제점이 있어 Padding 기법 활용, 계산 복잡도를 낮춰주기 위해 stride 설정
Convolution Layer만 있다면, 과대 적합이 심해질 수 있으므로, Pooling Layer 추가