개인적으로 딥러닝 수강과목 퀴즈 준비를 위해 예상문제와 답안을 정리한 것입니다.
CNN(Convolutional Neural Network)
1. CNN과 기본 FNN의 차이점 3가지(장점)
1) 기본 FNN은 입력데이터가 3차원인 이미지 데이터를 처리하기 위해서는 많은 수의 파라미터가 필요하며 그 결과 오버피팅이 발생할 가능성이 높지만, CNN은 Weight Sharing(Parameter Sharing)을 통해 필요한 파라미터수가 감소하기 때문에 오버피팅을 방지할 수 있다.
2) 위치가 달라도 동일한 feature를 추출할 수 있다(translation invariant)
3) locally connected 되어있기 때문에 이미지의 공간 정보(위치 정보)를 유지하면서 인접 이미지와의 특징(local relationship)을 효과적으로 인식한다.
2. CNN의 단점
1) Pooling 과정에서 정보손실이 발생할 수 있다.
: 풀링을 통해 정보를 요약하면서 각 local feature의 상대적인 위치 정보나 방향을 잃는다.
2) 아키텍처의 깊이(depth)가 충분하지 않다면, 전체를 보고 feature를 추출할 수 없다.
3) 파라미터수 감소로 인한 연산량은 감소가 있지만, 촘촘한 convolution(합성곱) 연산 수행을 위한 큰 연산량이 요구된다.
3. 필터(filter)는 무엇인가? 왜 필요한가?
: 필터는 이미지의 특징을 찾아내기 위한 공용 파라미터이다. Filter를 Kernel이라고 하기도 한다. 필터는 일반적으로 (4, 4)이나 (3, 3)과 같은 정사각 행렬로 정의된다.
: local information을 추출해서 해당 지역의 feature를 표현하기 위해서이다.
4. 점점 작은 필터를 쓰는 이유는?
: 과거에는 데이터 양이 적고, 컴퓨터 성능이 좋지 않아서 아키텍처의 depth를 크게 갖지 못했기 때문에 filter size의 를 크게 설정할 수밖에 없었으나, 최근에는 그러한 제약이 사라져서 filter size를 작게 depth를 깊이하여 비선형성을 추가하고 high level의 feature를 추출하는것이 목표가 되었다.
5. 최근 연구에서 (3,1,1)필터를 쓰는 이유는? ( filter size 3, padding 1, stride 1)
: 레이어를 지나도 출력 데이터의 size가 일정하여 깊이가 깊어지더라도 size를 유지할 수 있기 때문에 많이 사용된다.
6. 패딩(padding)은 무엇인가? 왜 필요한가?
: Convolution 레이어에서 Filter와 Stride에 작용으로 Feature Map 크기는 입력데이터 보다 작아지는데, 이때 출력 데이터가 줄어드는 것을 방지하는 방법이 패딩이다. 패딩은 입력 데이터의 외각에 지정된 픽셀만큼 특정 값으로 채워 넣는 것을 의미하며, 보통 패딩 값으로 0으로 채워 넣는다.
: 가장 자리에 위치한 정보(feature)를 살리기 위해서 넣는다.
: 외각을 “0”값으로 둘러싸는 특징으로 부터 인공 신경망이 이미지의 외각을 인식하는 학습 효과도 있다.
7. 풀링(Pooling)은 무엇인가? 왜 필요한가?
: Convolution 레이어의 출력 데이터를 입력으로 받아서 출력 데이터(Activation Map)의 크기를 줄일 수 있다
: 중요한 feature를 강조하여 중요하지 않은 feature 또는 중복된 정보를 사라지게하여 넓은 범위의 정보를 축약해서 볼 수 있다
: 플링 레이어를 처리하는 방법으로는 Max Pooling과 Average Pooning, Min Pooling이 있다.
8. Convolutional 레이어 출력데이터 크기 공식
: (N-F+2P)/S+1 ( N: 기존 size , F: filter size 크기, P: padding 크기, S: stride크기)
9. Pooling 레이어 출력 데이터 크기 공식
: N-F'/S+1 (N: 기존 size, F': Pooling sizel, S:stride 크기)
: Convolutional 레이어 공식을 그대로 써도 된다
(차이는 1) padding은 없어서 0으로 놓는다 2) filter size 대신 pooling size를 넣는다)
10. VGG의 특징은?
: 기존 CNN 아키텍처들이 11x11, 7x7 필터를 사용했던것과 다르게 비교적 작은 크기인 3x3 필터를 깊게 쌓아 depth를 늘리며 성능을 높였다.
: (3,1,1) 법칙을 처음으로 제안하였다 (filter size 3x3, stride 1, padding 1) Pooling 레이어는 2x2를 사용한다.
: 처음으로 systematic하게 만들었으며, 최근까지도 사용된다.
11. GoogLeNet 의 특징
: 같이 크기가 다른 필터(와 풀링)를 여러 개 적용하여 그 결과를 결합하는 인셉션 구조를 하나의 빌딩 블록(구성요소)로 사용하는 것이 특징이다.
: 중간 중간에 보조 Classifier를 붙여주어 vanishing gradient를 완화시키고자 하였다.
: Fully-Connected Layer를 Global Average Pooling(GAP) 으로 대체하여 parameter 수를 크게 줄이는 효과를 얻었다.
12. ResNet 의 특징
: Skip connection적용하여 vanishing gradient 문제를 해결하면서, 매우 깊은 네트워크(152Layer) 학습하여 성능 상승
: 깊은 depth를 바탕으로, 기존의 출력값(H(x))에서 입력값(x)을 뺀 차이(F(x))인 잔차를 학습하는 residual block으로 구성되어 있다.
13. Convolutional 레이어의 학습 파라미터수를 구하시오
1) wieght 수 : (입력 채널 수)x (필터폭) x (필터 높이) x (출력 채널수)
2) bias 수 : (출력 채널수)
3) parameter 수 = weight 수 + bias 수 = (입력 채널 수)x (필터폭) x (필터 높이) x (출력 채널수) + (출력 채널수)
*아래 이미지(AlexNet)를 문제로 한 번 계산해보세요!
13-1.(예상 퀴즈) 입력 이미지가 227x227x3이며, Convolutional 레이어의 11x11의 filter 96개, stride =4, padding은 없다고 한다. 이 때, 출력 데이터의 shape과 발생하는 파라미터수를 적으시오
: (shape) 55x55x96, (parameter counts) 3x11x11x96+96
14. O/X 퀴즈
1) 입력 데이터는 채널 수와 상관없이 필터 별로 1개의 피처 맵이 만들어진다. (O)
: 입력 데이터가 여러 채널을 갖을 경우 필터는 각 채널을 순회하며 합성곱을 계산한 후, 채널별 피처 맵을 만듭니다. 그리고 각 채널의 피처 맵을 합산하여 최종 피처 맵으로 반환합니다.
2) Pooling 레이어는 학습대상 파라미터가 없다(O)
3) Pooling 레이어를 통과하면 행렬의 크기 감소한다.(O)
4) Pooling 레이어를 통과하면 채널 수가 변경되지 않는다(O)
5) Convolutional 레이어에서 filter의 수만큼 dimension이 정해진다
<참고>
- VGG, GoogLENet, ResNet 참고한 글입니다. 군더더기없이 이해하기 쉽게(디자인도이쁨) 쓰여져있습니다.
https://hoya012.github.io/blog/deeplearning-classification-guidebook-1/
'AI > 딥러닝 기초(Deep learning)' 카테고리의 다른 글
[딥러닝] 오토인코더(Autoencoder) (0) | 2021.05.20 |
---|---|
[딥러닝][퀴즈] RNN(Recurrent Neural Network) (0) | 2021.05.20 |
[NLP] Transformer(트랜스포머)_1) Warm up (0) | 2021.05.17 |
[NLP] Bahdanau Attention(바다나우 어텐션) (0) | 2021.05.16 |
[NLP] Attention Mechanism(어텐션) (0) | 2021.05.12 |
댓글