CS231n Lec5. Convolutional Neural Network
1. Fully Connected Neural Network vs CNN
- 기존 NN모델은 모든 노드가 서로 연결되어 있다.
- 하지만 CNN의 특징은 모든 노드를 결합하지 않음으로써 연산량을 줄이고 효율성을 높이는 방식을 사용한다. → 기존의 ‘공간적 구조’를 보존시킨다.
- CNN 모델의 목적 : 입력된 이미지 분류
- 최종 분류를 위해서는 ‘주어진 목록에서 어떤 Label을 선택해야 하는가’ 가 핵심이다.
- 최종 결과를 분류하기 위한 기반 정보를 모두 가지고 있어야 분류를 위한 Softmax 함수를 사용할 수 있다.
- 지금까지 처리된 결과 데이터를 가진 모든 노드를 연결시켜 1차원 배열로 풀어서 표시한다.
- 이 정보들을 이용해 분류를 수행한다.
2. Convolution Layer
- Convolution Layer는 기존의 ‘공간적 구조’를 보존시킨다.
1) Convolution? 합성곱?
Conv2D(32, (5,5), padding='same', input_shape=(28,28,3), activation='relu')
2) Filter(Kernel)
- 첫 번째 인자 : Convolution filter의 수
- 두 번째 인자 : Convolution filter의 (행, 열)
- 이미지의 특징을 찾아내기 위한 파라미터
- 앞서 살펴 본 F(x) = WX + b 형태에서 W에 해당한다고 볼 수 있다.
- 즉, Filter는 W와 같이 학습해야 할 대상이다.
- 보통 Convolution Layer에서는 여러 개의 필터를 사용한다. → 필터마다 다른 특징을 추출하고 싶기 때문
- 한 Layer에서 원하는 만큼 여러 개의 필터를 사용할 수 있다.
3) Feature map(Activation map)
- 필터가 이미지를 순회하며 계산한 특징값들을 각 위치에 맞게 표현한 하나의 행렬
- 예를 들면 이미지의 edges나 corner 등을 추출해 하나의 행렬을 만드는 것
4) stride
- 필터가 이미지를 순회하는 간격을 설정해주는 파라미터
- stride 값에 따라 feature map의 크기가 달라지고, 그만큼 특성을 추출하는 정도가 달라진다.
- 주의
5) padding
- padding이란? Conv Layer에서는 Filter와 Stride로 인해 Feature Map의 크기가 입력데이터보다 작다. Conv Layer의 출력 데이터가 작아지는 것을 방지하는 방법이 Padding 또한 외곽의 특징을 추출하기 위해서도 많이 사용된다.
3. Pooling Layer
- Conv Layer의 Output을 입력으로 받아서 Feature map의 크기를 줄이거나 특정 데이터를 강조하는 용도로 사용된다.
- Pooling Layer를 통해 Downsampling을 하지 않는다면..
- 더 많은 수의 파라미터를 사용하게 된다 → 학습 시간이 길어진다 → Overfitting이 발생할 가능성이 높아진다.
4. Fully-Connected Layer
- Fully-Connected?
- Flatten() 함수를 통해 2차원 배열 형태의 이미지를 1차원 배열로 평탄화
- 활성화 함수를 통해 최종적으로 추출된 모든 특징들을 학습
- 학습된 결과를 Softmax 함수나 Sigmoid 함수와 같은 activation function을 통해 분류