부스트캠프 AI Tech 4기
(딥러닝) Convolutional Neural Networks
쉬엄쉬엄블로그
2023. 5. 30. 14:12
728x90
이 색깔은 주석이라 무시하셔도 됩니다.
Convolution
- Continuous convolution
$(f*g)(t)=\int f(\tau)g(t-\tau)d\tau=\int f(t-\tau)g(t)d\tau$ - Discrete convolution
$(f*g)(t) = \sum^{\infty}_{i=-\infty} f(i) g(t-i)= \sum^{\infty}_{i=-\infty} f(t-i)g(i)$ - 2D image convolution
$(I*K)(i,j)=\sum_m\sum_nI(m,n)K(i-m,j-n)=\sum_m\sum_nI(i-m,i-n)K(m,n)$
Convolutional Neural Networks
CNN은 convolution layer, pooling layer, fully connected layer로 구성된다.
- Convolution and pooling layers : feature extraction (특징 추출)
- Fully connected layer : decision making (의사 결정) - e.g., classification
Stride
Padding
Stride, Padding 예시
- 3x3 Kernel
- 출처 : https://github.com/vdumoulin/conv_arithmetic
![]() |
![]() |
![]() |
![]() |
Stride (1), Padding (0) | Stride (2), Padding (0) | Stride (1), Padding (1) | Stride (2), Padding (1) |
Convolution Arithmetic
- 모델의 파라미터 수를 계산하는 방법
- Padding (1), Stride (1), $3\times3$ Kernel
Exercise
- 빨간색 : convolution layer, 파란색 : dense layer
- dense layer(fully connected layer)가 convolution layer에 비해 파라미터 수가 1000배 가까이 늘어남
- convoultion layer는 kernel을 통해 같은 weight를 공유
- dense layer는 모든 node가 서로 다른 weight를 가짐
- 뉴럴 네트워크 성능을 올리기 위해서 파라미터 수를 줄이는 것이 중요한데 대부분의 파라미터가 fully connected layer에 들어가 있기 때문에 뒷단에 있는 fully connected layer를 최대한 줄이고 앞단에 있는 convolution layer를 깊게 쌓는 것이 일반적인 트렌드임
1x1 Convolution
- 1x1 Convolution을 사용하는 이유
- Dimension reduction
- 크기를 유지하면서 차원(channel)을 감소시킴
- To reduce the number of parameters while increasing the depth
- layer를 깊게 쌓으면서 파라미터 수를 감소시킴
- e.g., bottleneck architecture
- Dimension reduction
출처: 부스트캠프 AI Tech 4기(NAVER Connect Foundation)