합성곱 신경망(Convolutional Neural Network, CNN)은 이미지, 음성, 텍스트 등과 같은 다양한 유형의 데이터에서 특징을 추출하고 분류하는 데 사용되는 딥러닝 모델 중 하나입니다.
CNN은 기본적으로 이미지 처리에서 주로 사용되며, 입력 데이터를 이미지의 픽셀로 구성된 2D 배열로 취급합니다.
합성곱 계층과 풀링 계층으로 구성되며, 합성곱 계층(convolutional layer)은 입력 이미지에서 특징을 추출하는데 사용되고, 풀링 계층(pooling layer)은 추출된 특징을 간소화하고, 데이터의 크기를 줄입니다.
이러한 합성곱 계층과 풀링 계층의 반복적인 구성으로 인해 CNN은 입력 데이터에서 다양한 수준의 추상화된 특징을 학습하여, 이러한 특징을 바탕으로 입력 이미지를 분류합니다.
CNN은 컴퓨터 비전 분야에서 이미지 인식, 객체 검출, 얼굴 인식 등의 다양한 응용 분야에서 활용됩니다.
합성곱 신경망(CNN)의 일반적인 구조는 다음과 같습니다.
- Input Layer (입력층)
- 이 층은 네트워크에 데이터를 입력하는 역할을 합니다.
- 이미지의 경우, 입력층은 이미지의 원시 픽셀 데이터를 받습니다.
-
Feature Extractor (특징 추출기)
- 이 부분은 하나 이상의 합성곱층(Convolutional Layers)과 풀링층(Pooling Layers)으로 구성됩니다.
- 합성곱층은 이미지에서 중요한 특징을 추출하고, 풀링층은 특징 맵의 크기를 줄이고 중요한 정보를 강조합니다.
-
Classifier (분류기 - 완전 연결층)
- 이 부분은 하나 이상의 완전 연결층(Fully Connected Layers)으로 구성됩니다.
- 완전 연결층은 특징 추출기 부분에서 추출된 특징을 기반으로 최종 분류 또는 예측을 수행합니다.
-
Output Layer (출력층)
- 이 층은 최종 분류 또는 예측 결과를 출력합니다.
- 예를 들어, 분류 문제에서는 각 클래스에 대한 확률을 출력하며, 회귀 문제에서는 연속적인 값을 출력합니다.
2. Feature Extractor (특징 추출기)
Feature Ectractor 부분은 주로 합성곱층(Convolutional Layers)과 풀링층(Pooling Layers)으로 구성됩니다.
1. 합성곱층(Convolution layer)
이 층들은 입력 이미지에서 중요한 특징을 자동으로 학습하고 추출합니다. 작은 필터(또는 커널)를 사용하여 이미지 전체에 걸쳐 이동시키며, 각 위치에서 필터와 이미지 간의 내적을 계산합니다. 이 과정을 통해 특징 맵(Feature Maps)이 생성되며, 이 맵은 이미지의 다양한 특성(예: 가장자리, 질감 등)을 나타냅니다.
[Deep learning] 합성곱층 - Filter(stride / padding) 링크
* 참고 : CNN에서 손실 함수의 값을 최소화하기 위해 가중치(Weight)뿐만 아니라, 컨볼루션 필터(Convolution Filter)의 값을 업데이트한다. 합성곱층(Convolution Layer)에서 사용되는 필터는 학습 가능한 파라미터로, 각 필터의 값을 조정하여 입력 이미지에서 특정한 패턴을 찾아낸다. 따라서, 손실 함수의 값을 최소화하기 위해서는 가중치와 함께 컨볼루션 필터의 값을 업데이트해야 한다.
2. 풀링층 (Pooling layer)
풀링층은 특징 맵(feature map)의 크기를 줄이고 중요한 정보를 유지하는 역할을 합니다. 가장 흔한 형태는 최대 풀링(Max Pooling)으로, 각 창(window) 내에서 최대값을 선택하여 크기를 줄입니다. 이 과정은 모델의 오버피팅을 줄이고, 계산량을 감소시키는 동시에 특징 맵의 중요한 정보를 유지합니다.
3. Classifier(분류기) : Feaute Extractor에서 추출된 특징을 바탕으로 입력 이미지를 분류하는 부분 전결합층(Fully connected layer), 출력층(output layer)으로 이루어져 있음
1. 완전연결층(Fully connected layer) : 합성곱층/ 풀링층을 거치면서 차원이 축소된 특성 맵은 최종적으로 완전연결층으로 전달됩니다. 추출된 특징을 일렬로 나열하여 분류 작업을 수행할 수 있는 형태로 변환합니다 (이미지를 3차원 벡터 -> 1차원 벡터)
2. 출력층(output layer) : 소프트맥스 활성화 함수가 사용되는데, 입력받은 값을 0-1 사이의 값으로 출력합니다. 따라서 마지막 출력층의 소프트맥스 함수를 사용하여 이미지가 각 레이블에 속할 확률 값이 출력되며, 이때 가장 높은 확률 값을 갖는 레이블리 최종 값으로 선정됩니다.
'pytorch' 카테고리의 다른 글
[pytorch] Deep Neural Network (DNN) 로 FashionMNIST 구현해보기 (0) | 2023.04.25 |
---|---|
[pytorch] 합성곱층 - Filter(stride / padding) (0) | 2023.04.09 |
[pytorch] Dropout (0) | 2023.04.06 |
[pytorch] 3. 모델 학습 (파이토치 학습 절차) (0) | 2023.04.05 |
[pytorch] 2. 모델 파라미터(손실 함수/ 옵티마이저 / 학습률 스케줄러) (0) | 2023.04.04 |