딥러닝/딥러닝: 이미지 분류

평탄화 레이어(Flatten Layer)와 완전 연결 레이어(Fully Connected Layer)

qordnswnd123 2025. 2. 11. 16:26

1.평탄화 레이어 (Flatten Layer)

 

1.1. 평탄화 레이어 (Flatten Layer)란?

CNN의 구조에서 평탄화 레이어는 신경망이 처리하는 다차원의 특징 맵을 일차원 벡터로 변환하는 역할을 하며, 이는 다음에 나오는 완전 연결 레이어(Fully Connected Layer)에 적합한 형태로 데이터를 준비하는 과정입니다. 평탄화는 구조적인 정보를 1차원 데이터로 단순화하여, 완전 연결 레이어가 이를 분석하고 학습할 수 있도록 합니다.

 

위 이미지에서 평탄화(Flatten)를 적용했더니 Max Pooling을 거친 후의 특징 맵을 일렬로 나열합니다. 이 과정은 특징 맵을 1차원 벡터로 변환하여, 완전 연결 레이어(Fully Connected Layer)가 처리할 수 있도록 준비합니다.
평탄화된 데이터는 이후의 다음 신경망 레이어(완전 연결 레이어)에서 사용될 수 있으며, 이는 최종적인 분류 또는 다른 결정을 내리는 데 사용됩니다.


1.2. 평탄화(Flatten)의 필요성

  • 데이터 전처리: 특징 맵을 1차원 벡터로 변환함으로써, 신경망의 다음 단계인 완전 연결층(Fully connected layer)이 처리할 수 있도록 데이터를 준비합니다.
  • 정보 통합: 다차원 특징 맵(Feature map)에서 추출된 정보를 하나의 벡터로 통합하여, 다양한 특징들이 갖는 정보가 완전 연결층에서 효과적으로 조합될 수 있도록 합니다.
  • 연산 단순화: 이미지 데이터의 공간적 배열을 제거하고 순차적인 데이터로 전환함으로써, 신경망이 공간적 위치보다는 특징의 존재 유무에 집중할 수 있도록 돕습니다.

정리하자면, 평탄화(Flatten) 레이어는 CNN 아키텍처에서 매우 중요한 연결고리 역할을 합니다. 이 레이어는 특징 추출(Feature extraction) 과정을 통해 생성된 다차원 특징 맵(Feature Map)을 완전 연결 레이어(Fully Connected Layer)에서 처리할 수 있는 형태로 변환합니다. 이 변환은 CNN에서 수행된 복잡한 특징 인식을 실제 응용 가능한 결과로 전환하는 과정에서 필수적인 과정입니다.
완전 연결 레이어는 각 이미지에서 추출된 특징들을 기반으로 최종적인 분류나 예측을 수행합니다. 그러나 완전 연결 레이어는 다차원 데이터를 직접 처리할 수 없기 때문에, 평탄화 과정을 통해 데이터를 1차원 벡터로 전환해야만 합니다. 이 일차원 벡터는 이미지의 특징을 선형 배열로 표현하며, 완전 연결 레이어는 이 배열에 있는 데이터를 바탕으로 각 클래스에 대한 예측 확률을 계산합니다.
평탄화는 단순히 형태 변환 이상의 의미를 가집니다. 이 과정을 통해, CNN에서 추출된 정보는 공간적 배열에서 벗어나 특징들의 집합으로 재구성됩니다. 이렇게 재구성된 데이터는 신경망이 패턴을 인식하고 학습하는 데 중요한 역할을 합니다.
결국, 평탄화 레이어는 특징 추출과 분류 사이의 필수적인 다리로서, 신경망이 이미지와 같은 복잡한 데이터에서 중요한 정보를 추출하고, 이를 바탕으로 구체적인 결정을 내릴 수 있도록 돕습니다. 이 과정 없이는 신경망이 효과적으로 학습하고 정확한 예측을 하는 것이 불가능하며, 이로 인해 CNN의 전체적인 구조와 기능이 완성됩니다.


2. 완전 연결 레이어 (Fully Connected Layer)

 

2.1. 완전 연결 레이어 (Fully Connected Layer)란?

완전 연결 레이어(Fully Connected Layer)는 신경망의 마지막 단계에서 주로 사용되며, 평탄화된 데이터를 입력으로 받아 최종 분류 또는 회귀 출력을 생성하는 역할을 합니다. 이 레이어에서는 모든 입력 뉴런이 다음 레이어의 모든 뉴런과 연결되어 있으며, 각 연결에는 가중치가 부여됩니다.


2.2. 완전 연결 레이어 (Fully Connected Layer)의 역할

완전 연결 레이어는 신경망의 핵심적인 결정 과정을 담당하는 곳으로, 신경망의 성능을 크게 향상시키는 여러 기능을 수행합니다.


"통합과 가중치 학습"
이 레이어는 입력된 특징들의 가중합을 계산하여 각 클래스에 대한 점수를 도출합니다. 이 점수는 네트워크를 통해 다음 층으로 전달되며, 소프트맥스와 같은 활성화 함수를 사용하여 최종적인 클래스 확률로 변환됩니다. 이 과정은 네트워크가 특징들 사이의 복잡한 관계를 학습하고, 특정 입력에 대한 적절한 반응을 생성하는 데 중요합니다.


"비선형 결합"
비선형 활성화 함수와 결합되어 사용되는 완전 연결 레이어는 ReLU, Sigmoid, Tanh 등의 함수를 포함합니다. 이러한 비선형 함수는 모델이 선형적이지 않은 복잡한 문제를 해결할 수 있도록 지원하며, 신경망이 다양한 데이터 패턴을 더 효과적으로 모델링하고, 실제 세계의 복잡한 함수를 더 정확하게 근사하도록 합니다.


"결정적 역할 수행"
완전 연결 레이어는 신경망의 마지막 단계에서 종종 소프트맥스 레이어로 구성됩니다. 이 레이어는 네트워크가 학습한 정보를 바탕으로 각 클래스에 대한 예측 확률을 계산하고, 가장 가능성 높은 클래스를 선택하여 최종 출력을 제공합니다. 이러한 결정적 역할은 신경망이 특정 분류 문제에 대한 정확한 예측을 내리는 데 필수적입니다.


2.3. 활성화 함수의 역할

활성화 함수는 완전 연결 레이어의 출력에 적용되어 결과값을 비선형적으로 변환합니다. 이는 신경망이 선형 문제뿐만 아니라 비선형 문제도 해결할 수 있게 해 줍니다. 일반적으로 사용되는 활성화 함수는 다음과 같습니다

  • ReLU (Rectified Linear Unit): 음수 값을 0으로 설정하고, 양수 값은 그대로 유지합니다. 이는 모델의 효율적인 학습과 빠른 수렴을 돕습니다.
  • Sigmoid: 출력 값을 0과 1 사이로 압축하여, 확률로 해석될 수 있는 형태를 제공합니다. 이는 주로 이진 분류 문제에서 사용됩니다.
  • Softmax: 다중 클래스 분류 문제에 주로 사용되며, 각 클래스에 대한 확률 분포를 출력합니다.

 

2.4. 완전 연결 레이어의 작동 방식

1) 입력: 평탄화 과정을 거친 일련의 특징들을 입력으로 받습니다.
2) 가중치 적용: 각 입력 뉴런은 해당 뉴런의 가중치와 곱해져 출력 뉴런에 전달됩니다. 이 과정에서 각 특징의 중요도가 반영됩니다.
3) 활성화 함수: 가중치가 적용된 값들은 활성화 함수를 통과하여, 최종 뉴런의 출력이 결정됩니다. 대표적인 활성화 함수로는 ReLU, 시그모이드, 소프트맥스 등이 있습니다.

 

2.5. 완전 연결 레이어의 중요성

완전 연결층은 입력 데이터의 다양한 형태와 패턴을 학습할 수 있도록 설계되어 있습니다. 이 레이어는 모델이 복잡한 데이터 속에서 관련성 있는 정보를 추출하고, 그 정보를 사용하여 특정 작업에 대한 결정을 내릴 수 있도록 돕습니다. 또한, 이 레이어는 필요에 따라 다른 신경망 구성 요소와 결합되어 더 복잡한 네트워크 아키텍처를 구성할 수 있으며, 신경망의 유연성을 제공합니다. 이를 통해 신경망은 보다 정밀한 예측과 분류를 수행할 수 있으며, 실제 세계의 다양한 문제를 해결하는 데 크게 기여합니다.


3. 소프트맥스 함수 (Softmax Function)

 

3.1. 소프트맥스 함수 (Softmax Function)란?

소프트맥스 함수는 주로 분류 문제에서 사용됩니다. 이 함수는 신경망의 마지막 완전 연결 레이어에서 생성된 점수(로짓)를 받아, 이를 정규화된 확률 분포로 변환합니다. 이 과정을 통해 각 클래스에 대한 예측 확률을 제공하며, 신경망이 다양한 클래스 중 하나를 선택할 수 있도록 돕습니다.


3.2.소프트맥스의 작동 원리

각 클래스의 로짓 값을 입력으로 받아, 이를 exp(로짓)으로 변환한 뒤 모든 클래스의 exp(로짓) 값의 합으로 각각을 나누어 줍니다. 이 과정은 로짓 값을 확률로 변환하며, 모든 확률의 합은 10이 됩니다. 이는 다음과 같은 공식으로 표현됩니다
[P(y = j\mid \mathbf{z}) = \frac{e^{z_j}}{\sum_{k=1}^K e^{z_k}} ]
여기서 (z_j )는 클래스 (j)의 로짓 값이고, (K)는 클래스의 총 개수입니다.


3.3.소프트맥스의 중요성

  • 확률적 해석: 소프트맥스는 신경망의 출력을 확률로 해석할 수 있게 하므로, 결과를 더 이해하기 쉽고 해석 가능하게 만듭니다. 예를 들어, 어떤 이미지가 주어진 클래스에 속할 확률을 수치로 쉽게 표현할 수 있습니다.
  • 다중 클래스 분류: 소프트맥스는 다중 클래스 분류 문제에 특히 유용합니다. 각 클래스에 대한 확률을 출력함으로써, 신경망이 다양한 가능성 중 가장 가능성 높은 클래스를 선택할 수 있도록 합니다.
  • 역전파 학습 지원: 소프트맥스 함수는 미분 가능하며, 이 특성은 신경망이 학습 과정에서 손실 함수를 통해 그래디언트를 역전파하는 데 필수적입니다. 이를 통해 신경망은 보다 효과적으로 최적화될 수 있습니다.