- CNN에서 Padding의 역할에 대해 설명하시오.
이 문제에서 질문있습니다. 제로패딩은 더미와 같은 역할을 한다고 생각하는데 맞나요? 0이라는 더미를 만들어 주어 연산의 효율성을 높여준다고 생각하기 때문입니다.
- Padding이란 Data의 측면에 제로패딩을 해주어 input data의 size를 늘려주는 것이다.
- 역할
- Data의 Conv layer 연산을 수행하게 되면 필터와의 내적으로 인해 Data의 shape이 점점 줄어들게 된다. 따라서 출력층으로 갈 수록 점점 데이터 shape이 작아지게 되는데, 이러한 데이터 소실문제를 방지해준다
- 연산을 수행할때, 일일이 shape을 계산해주어야 하는데, padding을 수행함으로써 Conv 연산을 용이하게 하여 코딩할 때 오류가 날 가능성을 낮춰준다.(코딩의 편의성)
- CNN에서 receptive field에 대해 설명하시오
- Conv layer를 적용했을때, 필터로 연산을 진행했을때의 출력 값이 원래 담고 있던 데이터 영역의 크기를 말한다. 예를 들어, Conv layer에서는 필터의 사이즈 3 * 3있을 때, 데이터와 필터가 내적하여 3 * 3 데이터의 출력값이 1 * 1로 출력되므로 3* 3의 receptive field를 가지고 있다고 표현할 수 있다.
- 128 * 128 * 3 이미지가 있었다. 이때, 5 *5 필터 20개를 stride 1로 padding 없이 convolution 연산을 적용했다. 이때 1) 필터의 depth/channel 의 dimension은 몇일까요? 2) 아웃풋 텐서의 shape을 구하시오
-
- 5 * 5필터는 양쪽 2칸이 줄어드므로, output shape은 124 * 124 * 20이고 channel은 20 dimension이다.
- 2)124 * 124 * 20 이다
<aside>
💡 1) Depth = Channel = 3
2) $128\times 128 \times 20$
</aside>
- 128*128 * 3 임미지가 있었다. 이때 4 * 4 필터를 stride 4로 padding없이 pooling 연산을 적용하였다. 이때 아웃풋 텐서의 shape을 구하시오
- stride 4므로 4 * 4 구역을 pooling하는 것이기 때문에 32 * 32 * 3 tensor가 출력됨
<aside>
💡 $32\times 32 \times 3$ tensor
</aside>
-
VGGNet 의 핵심 아이디어를 서술하시오.
-
특정 이미지에 5 * 5 필터를 한번 씌울 때의 activation map의 size와 3 * 3 필터를 2번 씌우는 것의 activation map의 size가 같다 (receptive field가 같다)
-
하지만 5 * 5 필터는 parameter가 총 25가 필요하고, 3 * 3 필터 2번은 총 18개의 parameter가 필요하므로 3 * 3필터를 2번 씌우는것이 압도적으로 parameter를 아낄 수 있어 더욱 효율적이다.
-
같은 데이터 대비 parameter를 아낄 수 있으므로 overfitting이 일어날 가능성을 낮출 수 있다.
질문있습니다
-
“5 * 5 필터 1번 쓰는것보다 3 * 3필터를 2번쓰는것이 학습을 하기에 더 쉽다” 라는 표현이 뭐 때문에 쓸 수 있는 것일까요?
-
학습이 더 쉽다라는 말은 오버피팅이 날 가능성이 낮다는 말일까요 아니면 학습의 안정화가 잘된다는 말일까요?
-
input tensor의 channel in이 2배 커졌을떄, param개수가 늘어나는가?