Q. CNN에서 stride, channel, feature map 이 무엇을 의미하는지 설명해주세요
(실제로 면접질문이었음)
1. CNN은 convolutional neural network이며 필터를 옮겨가며 입력 매트릭스를 학습하는 방식
필터가 2d 즉 좌우상하로 움직이는 경우는 데이터가 이미지 일때 그렇게 사용하고
필터가 1d 즉 상하로만 움직이는 경우는 데이터가 텍스트 일때다
그림을 통해 보자면 !
일단 문제에서 물어본 stride, channel, featuremap 을 살펴보기 위해 이미지의 예를 들어 설명해보겠음.
filter (= kernel) : 저 움직이는 네모박스 ! , 이미지의 특징을 잡아내는 학습 파라미터
stride : 필터의 이동량 (1칸씩 움직이는지 2칸씩 움직이는지 )
channel : 입력되는 매트릭스의 너비? 라고 이해를 하면되는데,
입력되는 이미지 데이터가 단일 색상이라면, 채널은 1이고
입력되는 이미지 데이터가 세가지 색상 (RGB)로 나뉘는 컬러 라면, 채널은 3이다.
이때 입력되는 데이터의 채널이 3이면 필터 또한 이 각각의 채널을 탐색해야하므로 필터의 채널도 3개다
Feature map :
인풋 데이터 * 필터의 연산 결과
이 때 피쳐맵의 채널(너비)은 필터의 채널 수 가 아니라, 필터의 개수에 따라 달라진다
즉 3채널을 가진 한개의 필터의 결과 피쳐맵은 (n*n*1)이고 / 즉 3채널을 가진 6개의 필터의 결과 피쳐맵 (n*n*6)이고
위에서 필터가 3개인것 처럼 보이지만 저기선 각 인풋 데이터 채널 3개에 상응하는 필터 채널 3개를 의미하고
저 3채널은 결국 분홍색 상자 1개의 필터로 묶이기 때문에,
결과적으로 피쳐맵은 1채널을 가지게 된다 ! 피쳐맵의 채널은 필터의 갯수라는 것 잊지마용
여기선 필터가 6개니까 피쳐맵의 채널이 6
zero - padding :
구석탱이 모탱이에 0 으로 패딩씌우기 --> 이미지의 외곽도 제대로 학습시키기 위해서
pooling : 평균값 또는 맥스 값만 뽑아 행렬의 크기를 감소시킴 --> 연산양 줄이고 오버피팅 막음
댓글