합성곱 신경망 기초(CNN, Convolution Neural Network)
CNN 강좌는 여러 절로 구성되어 있습니다.
- 합성곱 신경망 기초(CNN, Convolution Neural Network)
- 합성곱 신경망 기초 2(역전파, Backpropagation)
- 합성곱 신경망 기초 3(배치정규화, Batch Normalization)
- 합성곱 신경망 기초 4(가중치 초기화, Weight Initialization)
- 합성곱 신경망 기초 5(VGGNet, Very Deep Convolutional Network)
- 합성곱 신경망 기초 6(ResNet, Residual Learning for Image Recognition)
- 합성곱 신경망 기초 7(EfficientNet, Rethinking Model Scaling for Convolutional Neural Networks)
- 합성곱 신경망 기초 8(Data Augmentation, 데이터 증강)
CNN이란?
- Convolution을 이용한 이미지 처리에 탁월한 성능을 보이는 인공신경망
- 이미지 경우 이동되었거나, 방향이 뒤틀렸거나 등 다양한 변형이 존재한다. 기존 MLP는 픽셀 값이 약간 달라져도 민감하게 영향을 받는다는 단점
- 데이터의 공간적 정보를 유지하면서 배열 데이터 정보를 다음 레이어로 보낼 수 있어서 이미지(RGB 채널의 3차원 배열) 분야에서 적극 활용
- 이미지의 특징을 뚜렷하게 검출하기 때문에 이미지 분류에서 높은 성능
CNN에서는 필터를 이용한 Convolution연산을 반복적으로 진행하면서 이미지의 특징을 검출하기 때문에 생각보다 구조가 간단합니다. 다음의 세 가지 layer를 기억하시면 됩니다.
- Convolution layer : 특징 추출(feature extraction)
- Pooling layer : 특징 추출(feature extraction)
- Fully-connected layer : 분류(classificaiton)
[ 학습 내용 ]
- 필터 (커널)
- 패딩, 스트라이드
- Pooling
- ReLu 활성화 함수
- Fully-Connected layer
필터(커널)
- 커널(kernel)이라고도 불리며 이미지의 특징을 찾아내기 위한 공용 파라미터
- 필터 통과 이미지는 특성값을 가지고 있어 feature map 또는 activation map 라고함
- 이미지 픽셀 값은 Convolution 연산에 의해 변환되고 이 과정에서 색상, 선, 형태, 경계 등의 특징(feature)이 뚜렷해짐
- 필터가 많을수록 더 많은 이미지 특성을 추출하며, 컨볼루션 연산이 진행하면 할수록 이미지 크기는 작아지고 채널 수는 증가
패딩, 스트라이드
컨볼루션 연산을 계속할 경우, 이미지 크기가 작아져 어떻게 될까요? 연산할 수 있는 픽셀이 없어 더 이상 훈련할 수 없게 됩니다.
패딩 (Padding)
- Network가 깊어지면 이미지 크기가 무한정 작아지는 것을 막기 위해 패딩이 존재
- 이미지 테두리에 일정 값(0 또는 1)을 넣어주는 작업
▶ 패딩 효과
① 합성곱 연산을 할 때마다 이미지 축소 문제 발생 → 연산 결과 실제 입력된 이미지와 같은 크기 출력
② 테두리에 위치한 픽셀은 필터 결과 단 한번만 사용 → 패딩으로 연산 두번 진행(테두리 이미지 정보 가져옴)
스트라이드 (Stride)
- 이미지에 필터를 적용하는 간격
- 스트라이드 값을 크게 주면 이동 간격이 넓어져 출력 데이터의 크기가 작아짐
- 패딩과 다르게 스트라이드는 출력데이터의 크기를 축소시키는 역할
풀링
- Pooling layer는 대부분 convolutional layer 바로 다음에 위치해 공간(spatial size)을 축소
- 채널 크기는 고정되며 입력 데이터의 크기가 축소되고 학습하지 않기 때문에 파라미터 수가 줄어들어 오버피팅(Overfitting) 방지
오버피팅(Overfitting) : 모델이 훈련 데이터에만 잘 맞춰진 경우로 결과가 훈련 데이터 정확도는 높지만 새롭게 입력 받는 테스트 데이터의 정확도는 낮아 모델 성능이 떨어지는 현상
풀링(Pooling)에는 맥스 풀링(Max Pooing)과 평균 풀링(Average Pooling)이 존재
① 맥스 풀링(Max Pooing) : 대상 이미지 영역에서 최대값을 구함
② 평균 풀링(Average Pooling) : 대상 이미지 영역에서 평균값을 구함
※ stride =2 를 특징으로 함
[CNN 배열 공식]
ReLu
- ReLu(Rectified Linear Unit) 활성화 함수는 비선형성 함수로 기본 선형 특성을 나타내는 layer에 비선형성을 증가
- ReLu 함수의 범위는 R(z)=max(0, z) 양수이기 때문에 vanishing gradient 문제점을 극복하고 학습 속도와 성능을 향상시켜 CNN에서 주로 사용되는 활성화 함수
Fully-Connected layer
- CNN 마지막에서 분류(Classification)를 결정하는 단계
- flatten : 각 레이어를 1차원 벡터로 변환
- fully-conneced layer : 1차원 벡터로 변환된 레이어를 하나의 벡터로 연결 (각 층의 노드들은 하나로 연결)
마지막으로 Softmax 함수를 이용해 가장 확률이 높은 class를 output으로 분류
참조 문헌
https://stanford.edu/~shervine/teaching/cs-230/cheatsheet-convolutional-neural-networks#layer
https://seongkyun.github.io/study/2019/01/25/num_of_parameters/
http://taewan.kim/post/cnn/