
CNN(Convolutional Neural Network)은 주로 이미지 및 비디오와 같은 시각적 데이터를 처리하는 데 사용됩니다. 이유는 다음과 같습니다.
공간적 구조: 이미지 및 비디오는 공간적 구조를 가지며, CNN은 이러한 구조를 이해하고 활용할 수 있습니다. 이를 통해 이미지에서 특징을 추출하고 분류하는 데 사용됩니다.
가중치 공유: CNN은 가중치를 공유하여 모델의 학습을 효율적으로 만듭니다. 이미지의 작은 부분에서 추출한 특징이 다른 부분에서도 동일한 패턴으로 작동하기 때문입니다.
특징 추출: CNN은 이미지에서 특징을 추출하기 위해 Convolutional Layer, Pooling Layer 등의 계층을 사용합니다. 이러한 계층은 이미지의 다양한 특징, 예를 들어 선, 모서리, 질감 등을 식별합니다.
분류: CNN은 분류 작업을 수행하는 데 사용됩니다. 분류는 마지막 Fully Connected Layer에서 이루어지며, 이미지가 특정 범주에 속하는지 여부를 결정합니다.
Convolutional Layer는 CNN에서 가장 중요한 계층 중 하나입니다. 이 계층에서 입력 이미지와 일련의 작은 필터(kernel)를 사용하여 특징 맵(feature map)을 생성합니다. 이렇게 생성된 특징 맵은 다음 계층에서 처리되고, 최종적으로 분류 및 예측에 사용됩니다. Convolutional Layer의 동작 원리는 다음과 같습니다.
입력 이미지의 특징 추출: Convolutional Layer는 입력 이미지의 특징을 추출하기 위해 작은 필터(kernel)를 사용합니다. 필터는 입력 이미지 위를 이동하면서, 각 위치에서 일부분의 이미지를 추출하여 연산을 수행합니다.
필터 연산: 필터와 입력 이미지의 작은 부분을 곱한 다음, 결과를 더합니다. 이러한 연산을 스트라이드(stride)를 조절하여 이미지 위를 이동하며 반복합니다.
특징 맵 생성: 연산 결과는 새로운 특징 맵(feature map)에 저장됩니다. 이 특징 맵은 입력 이미지에서 추출한 특정한 특징을 나타냅니다. 필터의 개수에 따라서 여러 개의 특징 맵이 생성될 수 있습니다.
특징 맵의 크기 조정: 입력 이미지와 필터의 크기에 따라서, 특징 맵의 크기가 크게 줄어들 수 있습니다. 이를 방지하기 위해, 풀링(pooling) 연산을 수행하여 특징 맵의 크기를 줄이는 경우가 많습니다.
Pooling Layer는 Convolutional Layer에서 생성된 특징 맵(feature map)의 크기를 줄이는 역할을 합니다. 이를 통해, 계산 비용을 줄이고, 불필요한 정보를 제거하여 모델의 일반화 성능을 향상시킵니다. Pooling Layer의 동작 원리는 다음과 같습니다.
입력 특징 맵 분할: Pooling Layer는 입력 특징 맵을 일정한 크기의 영역으로 분할합니다. 이때, 영역의 크기는 하이퍼파라미터(hyperparameter)로 정의됩니다.
영역에서 대표값 추출: 각 영역에서 하나의 대표값을 추출합니다. 일반적으로는 최대값(max)을 추출하는 Max Pooling, 평균값(mean)을 추출하는 Average Pooling 등의 방법이 사용됩니다.
특징 맵 생성: 추출된 대표값들은 새로운 특징 맵(feature map)을 생성합니다. 이때, 특징 맵의 크기는 입력 특징 맵의 크기에 따라서 달라집니다.
위치 불변성: Pooling Layer는 입력 특징 맵의 작은 변화에 대해 불변성(invariance)을 보장합니다. 이는 입력 이미지에서 추출한 특징이 조금씩 이동해도 동일한 특징 맵이 생성되기 때문입니다.
Flatten은 Neural Network에서 일반적으로 사용되는 계층 중 하나로, 다차원 텐서를 1차원 텐서로 변환합니다. 이를 통해, Convolutional Layer와 같은 다차원 특징 맵(feature map)에서 추출한 정보를 1차원 벡터로 변환하여, 다음 계층에서 처리할 수 있습니다.
Flatten 계층의 동작 원리는 매우 간단합니다. 입력으로 들어온 다차원 텐서를 1차원으로 평탄화(flatten)합니다. 예를 들어, 3x3 크기의 이미지를 입력으로 받았다면, Flatten 계층은 이를 9차원 벡터로 변환합니다. 이렇게 변환된 벡터는 다음 계층에서 처리될 수 있습니다.
Flatten 계층은 Dense Layer와 함께 사용되어, 이미지와 같은 다차원 데이터를 분류 및 예측에 활용할 수 있습니다. 이를 통해, 입력 데이터를 효과적으로 처리하고, 모델의 성능을 향상시킬 수 있습니다.