AI/딥러닝

[딥러닝] CNN(Convolutional Neural Networks) - 합성곱 인공 신경망

caramel-bottle 2024. 1. 10.

인공 신경망(Neural Networks)은 생물학적 뉴런을 기반으로 한 수학적 모델입니다.

 

인공 신경망으로는

 

  • 다층 퍼셉트론 (Multilayer Perceptron, MLP)
  • 합성곱 신경망 (Convolutional Neural Network, CNN)
  • 순환 신경망 (Recurrent Neural Network, RNN) 
  • ...

등이 있습니다.

 

이번 포스팅에선 합성곱 인공 신경망인 CNN에 대해 알아보도록 하겠습니다!


1. CNN(Convolutional Neural Networks)

CNN 합성곱 인경 신경망으로 Neural Networks에 Convolutional Layer를 더한 형태입니다.

 

주로 이미지를 분류하는 데 사용됩니다.

위 그림은 전형적인 CNN의 단계를 나타내는 그림입니다.

 

CNN 전체 과정을 크게 나누면

 

  • Feature Extraction ( 특징 추출 )
  • Classification ( 분류 )
  • Probabilistic distribution ( 확률 분배 )

입력 이미지의 특징을 합성곱, 풀링 등을 사용하여 추출합니다. ( Feature Maps )

 

최종 feature map을 1차원 배열로 만듭니다. ( Flatten layer )

 

여기까지의 과정을 Convolutional Layer라고 할 수 있습니다.

 

그 이후의 과정은 Fully connected layer(FC)로 일반적인 딥러닝 모델 학습 과정을 거쳐 모델을 완성합니다.


2. CNN을 사용하는 이유

DNN(Deep Neural Network)은 이미지를 분류하는데 한계가 있습니다.

 

이미지는 2차원인데 일반적인 DNN은 1차원 형태의 데이터를 사용합니다.

 

2차원 데이터를 1차원으로 변환하기 위해 flatten시키면 이미지의 공간적, 지역적 정보가 손실됩니다.

 

CNN은 이를 해결하기 위해 이미지를 그대로(Raw Input) 받음으로 공간적, 지역적 정보를 최대한 유지합니다.


3. Convolution 연산

2차원에서의 컨볼루션 연산을 그림을 통해 쉽게 이해할 수 있습니다.


4. Pooling

풀링이란 이미지의 중요한 특징을 추출하고 차원을 축소하기 위한 연산입니다.

 

풀링의 종류로는 최대값을 추출하는 MaxPool, 평균값을 추출하는 AvgPool 등이 있습니다.

 

 


5. 드롭아웃(Dropout) 레이어

드롭아웃(Dropout)은 입력 텐서의 일부 요소를 무작위로 0으로 만들어 줍니다.

 

이는 학습을 고의적으로 방해하여 학습용 데이터에 오버피팅 되는 것을 방지합니다.


끝내며 🎲

CNN의 전반적인 흐름과 개념에 대해 알아보았습니다.

 

PyTorch로 CNN을 구현하기 위한 최소한의 개념을 알아보는 것이기 때문에 설명이 부족할 수 있습니다.

 

새로 알게 되는 내용이나 깊게 탐구한 내용은 추후에 따로 올려보도록 하겠습니다.

 

감사합니다!

 

'AI > 딥러닝' 카테고리의 다른 글

[딥러닝] 퍼셉트론(Perceptron)  (0) 2024.01.10
[딥러닝] 비선형 활성화 함수(Activation Functions)  (2) 2024.01.09

댓글