Lecture5: Introduction to Neural Networks
- CS231n 강의 [1]를 듣고 공부한 내용을 나름대로 정리했다.
- 글에 있는 모든 그림, 표, 예시는 [2]에서 가져왔다.
~ 목차 ~
1. ConvNet이란?
2. ConvNet 역사
3. ConvNet 구조3.1 Convolution Layer
3.1.1 원리
3.1.2 Stride
3.1.3 Zero Padding
3.1.4 1x1 conv layer
3.1.5 Torch 구현
3.2 Pooling Layer
3.3 Fully Connected Layer
4. ConvNet 활용
1. ConvNet이란?
- ConvNet는 Convolutional Neural Networs의 줄임말로, 합성곱 신경망을 의미한다.
이미지를 conv layer, pooling layer, activation function, fc layer 등에 통과시켜서 이미지 특징을 추출한다.
아래는 32x32x3 크기의 이미지를 ConvNet에 통과시켰을 때의 과정을 보여준다. (+필터 개수 3,6,10은 그냥 설정해준거임)
- ConvNet은 이미지의 특징을 추출할 때 단순한 특징에서부터 복잡한 특징까지 순차적으로 추출한다. 시각화해서 보면 아래와 같다.
이는 다음 파트(ConvNet의 역사)에서 나오는 Hubel & Wiesel의 연구를 바탕으로 고안된 방법이다.
2. ConvNet 역사
- Frank Rosenblatt, ~1957: Perceptron을 처음 도입했다.
- Widrow and Hoff, ~1960: Adaline/Madaline을 통해 multi layer perceptron의 초기 형태를 제시했다.
- Rumelhart et al., 1986: Back prop이 등장했다.
- Hinton and Salakhutdinov, 2006: Deep neural network를 훈련시킬 수 있다는 가능성을 제시했다.
- Krizhevsky, Sutskever, Hinton, 2012: AlexNet을 통해 deep neural network로 성능을 냈다.
CNN의 시초: Hubel & Wiesel의 연구
- 고양이 실험을 통해서 뇌가 시각정보를 처리하는 방법에 대해서 연구했다.
① Topographical mapping in the cortex: 가까이 있는 시각정보를 가까이 있는 뇌세포가 처리함 → 공간정보 보존
② Hierarchical organization: 특징을 학습할 때 단순한 특징에서부터 복잡한 특징까지 계층적으로 학습함
- 이 계층적 학습을 적용해서 Neocognitron, LeNet-5, AlexNet이 등장했다.
3. ConvNet 구조
- ConvNet은 크게 conv layer, pooling layer, fc layer로 구성된다. ReLU는 활성화함수이므로 설명은 생략하겠다.
아래와 같은 image classification task에서 자동차 이미지가 입력되면 여러 layer들을 통과한 다음 예측 결과값 car이 출력된다.
3.1 Convolution Layer
3.1.1 원리
- Convolution Layer에서는 이미지 위로 필터가 이동하면서 이미지의 특징을 추출한다.
아래 그림에서는 32x32x3 이미지 위로 5x5 필터가 이동하면서 28x28x1 크기의 activation map을 추출했다.
여러 개의 필터가 이동하면 여러 개의 activation map이 추출된다.
3.1.2 Stride
- Stride는 이미지에서 필터가 한 번에 이동하는 거리를 나타낸다.
왼쪽 그림과 같은 7x7 크기의 이미지 위에 3x3필터가 움직일 때,
이미지의 출력 크기는
(i) stride=1: 5x5
(ii) stride=2: 3x3
(iii) stride=3: 불가능! 이다.
- 즉 이미지 크기를 N, 필터 크기를 F라고 할 때,
출력되는 이미지 크기를 공식으로 표현하면 $\frac{(N-F)}{stride} + 1$이 된다.
3.1.3 Zero Padding
- Zero padding은 이미지의 가장자리에 0픽셀을 둘러주는 것이다.
- 이를 사용하면 출력 크기를 유지할 수 있고, 가장자리 정보를 더 반영할 수 있다.
- 아래 그림과 같이 0픽셀이 둘러지고, 필터가 0픽셀을 포함한 부분 안에서 움직인다.
- 이해를 위해서 질문 2개를 던진다. 입력 이미지 크기가 32x32x3이고 5x5 필터 10개를 stride=1, pad=2로 움직일 때,
- Q1: Output volume size는?
→ 32x32x10 (∵{(32+2+2-5)/1 + 1}^2 * 10)
- Q2: Number of parameters in this layer는?
→ 760 (∵(5*5*3 + 1)*10, 1은 편향때매 더해준다.)
3.1.4 1x1 conv layer
- 1x1 conv layer도 사용한다. 무의미 할 것 같지만 의미가 있다!
→ 비선형성을 추가할 수 있다. 끝에 활성화함수만 붙기 때문이다.
→ 이미지 크기를 유지하면서 채널 수만 바꿀 수 있다. 아래 그림이 이와 같은 예시이다.
3.1.5 Torch 구현
- Torch에는 conv layer가 아래와 같이 SpatialConvolution으로 구현되어 있다.
3.2 Pooling Layer
- Pooling layer는 입력 데이터의 크기를 줄여서 정보를 요약하는 역할을 한다.
- Conv layer 다음에 무조건 위치하지는 않고, 정보 요약이 필요할 때 간헐적으로 conv layer 뒤에 위치한다.
- 아래 그림과 같이 pooling을 통과하면 크기가 줄어들면서 downsampling이 된다.
- 여러 종류가 있지만, 주로 max pooling 또는 average pooling이 사용된다.
이름 그대로 max pooling은 각 풀링 영역에서 최댓값을 선택하고, average pooling은 각 풀링 영역에서 평균값을 계산한다.
- 강의에서는 아래와 같은 max pooling의 예시를 보여준다.
- 4x4 크기의 이미지에 stride=2로 2x2 max풀링을 해주면 오른쪽과 같은 2x2 이미지로 줄어들게 된다.
3.3 Fully Connected Layer
- Fully Connected Layer는 conv layer에서 추출한 이미지의 특징들을 바탕으로 최종 결과를 계산한다
- Conv layer와 pooling layer들을 다 통과한 다음 막바지에 위치한다.
- 아래 그림은 32x32x3 크기의 이미지가 들어왔을 때 fc layer에서 일어나는 연산 단계이다.
① 먼저 이미지를 1x3072로 flatten시킨다.
② 10x3072 크기의 가중치를 내적한다. (∵CIFAR-10의 클래스 수(10개)를 맞추기 위해 )
③ 1x10 크기의 출력을 얻는다
(+④ softmax에 통과시킨 후 1x10 크기의 activation값을 얻어서 최종 클래스를 예측한다.)
- 지금까지 구조를 살펴보면서 ConvNet이 어떻게 작동하는지 알아봤다.
4. ConvNet 활용
- 이러한 ConvNet은 다양한 곳에 활용될 수 있다.
- Classification, Retrieval
- Detection, Segmentation, Self-driving cars
- Face recognition, Pose recognition, Whale recognition, Map segmetation
- Interpretation and diagnosis of medical images, Classification of galaxies,
Street sign recognition, Image Captioning, Image rerendering
- 이렇게 다양한 영역에서 ConvNet이 활용되고 있다.
- 다음 시간에는 Neural Network를 학습시켜볼 것이다.
참고문헌
[1] Stanford University, "Lecture5, Convolutional Neural Networks," YouTube, Aug. 12, 2017. [Online]. Available:
https://www.youtube.com/watch?v=bNb2fEVKeEo&t=115s
[2] F. Li, J. Johnson, and S. Yeung, "CS231n Convolutional Neural Networks for Visual Recognition: Lecture 5-Convolutional Neural Networks," Stanford Univ., 2017. [Online]. Available:
https://cs231n.stanford.edu/slides/2017/cs231n_2017_lecture5.pdf
'CS231n' 카테고리의 다른 글
[CS231n] Lecture7: Training Neural Networks II (1) | 2024.11.22 |
---|---|
[CS231n] Lecture6: Training Neural Networks I (0) | 2024.11.21 |
[CS231n] Lecture4: Introduction to Neural Networks (0) | 2024.11.19 |
[CS231n] Lecture3: Loss Functions and Optimization (0) | 2024.11.18 |
[CS231n] Lecture2: Image Classification (2) | 2024.11.17 |