열정 실천

[AI] 합성곱 신경망 CNN 본문

CS/AI

[AI] 합성곱 신경망 CNN

구운오니 2024. 11. 25. 13:13
728x90

앞서 배운 다층 신경망은 되게 강력하고 많은 일을 할 수 있을 것 같다고 생각했지만 아니었다!

 

만약 3차원 이미지를 Muiti-Layer Perceptron에 넣으려고 일렬로 값들을 나열하게되면 원래 이미지가 갖고 있던 공간적 정보가 모두 사라지게 된다. 

 

이와같은 문제를 해결하기 위해 (주로 이미지와 같은 시각적 데이터를 처리하기 위해) 만들어진 모델이 합성곱 신경망 (Convolution Neural Network)이다. CNN여러 층의 합성곱(Convolution) 연산과 풀링(Pooling)연산을 사용하여 입력 데이터의 특징을 자동으로 추출한다. 

 

 

Convolution 합성곱 연산

입력데이터에 일정 간격으로 이동하면서 필터를 적용하고 이를 통해서 새로운 특징벡터를 추출한다. 

 

Kernel 커널

필터의 크기로 크기가 클수록 이미지에서 더 많은 영역을 참고한다. 동시에 연산량도 늘어난다. 

 

스트라이드 

필터를 적용하는 간격으로 이 값이 클수록 데이터의 크기가 작아진다. 

 

채널 

합성곱 연산에서 여러 개의 필터를 동시에 적용하는데 이 수를 채널이라고 부른다. 

 

패딩 

합성곱 연산을 하다보면 피쳐맵이 점점 작아지는데 이를 방지하고싶자면 패딩을 넣어서 크기를 키울 수 있다. 

 

풀링 

특정 영역으로부터 대표되는 값을 추출하는 방식으로 가중치 학습은 이뤄지지 않는다. 

- MaxPooling 

- AvgPooling 

- MinPooling

가 있다. 

 

 

 

 

 

 

CNN 종류

 

LeNet-5

 ▪ 1998년, 얀 르쿤이 개발한 CNN이 처음으로 사용된 모델 

 ▪ Convolution(합성곱)과 Pooling을 반복적으로 거침

 ▪ Fully Connected Layer를 통해 최종 결과를 도출 (활성화 함수를 사용하여 각 클래스에 대한 확률 점수 계산하는 역할)

 ▪ MSE, Cross Entropy 등 손실함수로 오차 계산 ➡ 역전파 알고리즘으로 가중치 업데이트 

 

 

AlexNet

 ▪ 과거 모델보다 error를 크게 줄여 Image Neural Network에서 이 AlexNet을 사용하기 시작 

 ▪ GPU를 활용한 병렬 처리를 통해 연산 속도를 크게 개선했다. 

 ▪ 5개의 Convolution 계층, 3개의 Fully Connected 계층으로 총 8 계층으로 이루어져 있다. 

 ▪ 활성화 함수로 Gradient 소실 문제를 크게 줄이는 ReLu 함수를 사용한다. 

 ▪ 드롭아웃 기법을 사용하여 OverFitting(과적합)을 방지한다. 

 

]출처 :https://medium.com/@karandeepdps/alexnet-vggnet-resnet-and-inception-11880a1ed3cd

 

 

 

VGG Net 

 ▪ 크기가 큰 필터 1번이 아닌 3X3 크기의 필터를 여러 번 적용하는 방식

 ▪ 일부 층 다음에는 2X2 크기의 Max Pooling이 적용되어 피쳐맵 크기를 줄인다. 

 ▪ 모든 은닉층은 ReLu 활성화 함수를 사용한다. ( Vanishing Gradient ⬇ )

 ▪ 마지막에 3개의 Fully Connected Layer와 Softmax 활성화 함수를 통해 최종 분류 결과를 제공한다. 

 

 

 

 

 

ResNet

 ▪ 기울기 소실(Vanishing Gradient) 문제를 해결하기 위해 개발된 모델

 ▪ 입력 값을 그대로 다음 계층으로 전달하는 Residual Block 으로 기울기 소실 문제 완화

 ▪ 이러한 구조를 통해 매우 깊은 네트워크도 높은 정확도로 학습이 가능

 

 

 

 

728x90