[My IT : Article] CNN Layer, AutoEncoder

2026. 3. 23. 15:23·My IT/Article

1. CNN 레이어

 

 

1) CNN이란 ? 

딥러닝의 학습에 사용되는 신경망들은 사용되는 용도에 따라 다른 신경망들을 활용하여 학습할 데이터셋에 알맞은 신경망 레이어을 조합하는 형태로 학습이 이루어진다. 이중 오늘 기술할 CNN레이어는, 주로 시각적 이미지 분석에 사용되는 인공신경망의 한 종류이다. 기존의 인공신경망은 이미지 데이터를 처리하기에는 데이터의 차원이 매우 커지고, 이미지의 공간 정보를 알맞게 처리하는데 어렵다는 단점이 있었다. 이때 CNN이 등장하는데, CNN(Convolutional Neural Network)은, 인간의 시신경 구조를 모방하여 만들어진 신경망으로, 여러 계층을 통해서 이미지를 처리하는데, 각각의 레이어는 특정한 역할을 수행한다. 크게 Convolution Layer, Activation Layer(활성화 계층), Pooling Layer(풀링 계층), Flatten Layer(평탄화 계층), FC Layer(완전 연결 계층) 으로 구성된다.

 

CNN의 기본적인 계층구조.

 

2) Convoluion Layer(합성곱 계층)

 

- 역할 : 입력 이미지로 부터 다양한 특징을 추출

- 작동 방식 : 작은 크기의 커널(필터라고도 지칭, 보통 3x3 or 5x5)를 이미지를 순회시키며 컨볼루션 연산(합성곱 연산) 을 수행하는데, 이 과정에서 커널은 이미지의 특정한 feature을 추출

 

 

위의 그림에서 볼 수 있듯이, 이미지에서 커널과 같은 크기 만큼의 부분을 떼어와, 합성곱 연산을 수행하여 Output에 feature map을 결과로 반환하는 것을 볼 수 있고, 위와 같은 연산이 이미지의 모든 부분에 수행된다고 볼 수 있다.

 

 

3) Activation Layer(활성화 계층)

- 역할 : 위의 컨볼루션 연산을 진행한 output에 비선형성을 도입

- 종류 : Sigmoid, tanh, ReLU, Leaky ReLU, 등등

- 작동방식 : ReLU의 경우, 음수값을 0으로 변환하고 양수값의 경우 비선형성을 부여 -> 네트워크가 복잡한 데이터의 패턴을 학습 가능

 

 

Convolution 연산을 진행하게 되면 결과값이 선형적으로 나오게 되는데, 이미지 같이 비선형적인 관계를 띄고 있는 학습의 경우 선형적 데이터는 학습의 성능이 떨어지게 된다. 따라서 위같은 ReLU 함수 레이어를 이용하여 비선형적인 형상을 띄게 하여 네트워크가 복잡한 데이터의 패턴을 학습할 수 있게 해준다.

 

 

4) Pooling Layer(풀링 계층)

- 역할 : 컨볼루션 연산을 진행한 출력의 크기를 압축하여 모델의 효율을 높임, 과적합 방지

- 작동방식 :

-> MaxPooling : 지정해준 커널의 차원, 크기 만큼의 입력데이터 중 가장 큰 값을 1개의 픽셀로 설정하여 출력

-> Average Pooling : 지정해준 커널의 차원, 크기 만큼의 입력데이터의 평균을 1개의 픽셀로 출력

 

 

 

풀링 연산을 쉽게 말하자면, 가로, 세로 방향의 공간을 줄이는 연산으로, 그냥 줄이는 것이 아니라 최대값을 뽑거나 평균을 구하는 등 데이터를 보존하는 방향으로 데이터의 크기를 줄인다. 최근에는 컨볼루션 연산에서 stride를 높여서 풀링 레이어를 대체하는 방법으로도 사용하곤 한다. 풀링을 이용하면 입력 데이터를 간결하게 만들어 모델의 효율성을 높일 수 있게 된다.

 

 

5) FC Layer(완전 연결 계층)

- 역할 : 위의 레이어들에서 연산을 마친 고차원의 특징 맵을 최종 출력으로 변환하는데, 연산의 결과를 출력층의 형태로 반환한다.

 

- 작동 방식 : 모든 입력 노드와 출력 노드를 연결하여, 원래는 3차원, 4차원 이상의 특징 맵을 가지고 있었지만, FC레이어를 통하여 불연속적인 데이터로부터 회귀/분류의 결론을 내릴 수 있게 된다.

 

 

FC Layer의 구조

 

FC Layer은 쉽게 우리가 결과로 원하는 값으로 변환을 시켜주는 계층이다. 회귀라면 특정 값, 분류라면 특정 클래스의 형태를 띄게 되고, 연산을 진행하게 되면 고차원의 특징 벡터가 결과로 나오게 되는데, 마지막으로 FC Layer를 추가하여 이를 1차원 벡터로 바꿔주고, output을 도출하게 된다.

 

 

 

 

 

2. AutoEncoder

 

1) AutoEncoder란 ?

기존 인공신경망의 경우에는 입력된 데이터를 압축하여 데이터의 핵심 특징을 뽑아내고, 이를 통해서 특정한 클래스로 분류하거나, 특정 값을 예측하는 방식으로 진행되었다면, AutoEncoder(이하 AE)는 입력된 데이터를 압축했다가 다시 복원하는 과정을 통해서 데이터의 핵심 특징을 학습하는 신경망으로, 딥러닝에서의 새로운 개념이 생겨나게 되었다. AE는 이상탐지에 강점을 가지고 있어 차원 축소, 이미지의 노이즈 제거, 이상탐지 등에서 활용된다. AE의 구조로는 크게 3가지의 부분으로 나뉘는데, 인코더(Encoder), 잠재 공간(Latent Space), 디코더(Decoder)이다. 이 구조들을 살펴보자

 

 

오토인코더의 구조.

 

2) 인코더(Encoder) 

인코더는 입력으로 들어온 데이터를 점점 더 작은 공간으로 변환하여(고차원 -> 저차원) 잠재 공간 표현을 생성하는데, 이를 통해서 데이터의 불필요한 노이즈를 버리게 되고, 데이터의 본질적인 특징만 남게 된다. 즉, 데이터의 중요한 특징을 뽑아내어 저차원으로 데이터를 압축시키는 과정이라고 할 수 있다.

 

3) 잠재 공간(Latent Space ≒ BottleNeck)

 

인코더를 통해서 들어온 데이터의 압축된 표현이 포함된 벡터가 머무는 공간으로, 데이터의 대표적인 특성을 보존하는 역할을 한다. BottleNectk과 Latent Space를 거의 비슷한 표현으로 사용하긴 하지만, BottleNeck은 AE에서 인코더와 디코더 사이 좁은 층을 의미하며, BottleNeck을 통해 데이터가 Latent Space로 진입하게 되는데, Latent Space가 압축된 표현이 머무는 저차원 공간을 의미한다. 잠재공간을 이용하여 데이터의 내재된 패턴을 학습하거나, 데이터 생성에 이용되기도 한다.

 

4) 디코더(Decoder)

인코더를 통해서 데이터를 잠재공간으로 압축하고, 그 이후에 사용되는 것이 디코더로, 압축된 표현을 다시 원래 데이터로 복원하는 역할을 하게된다. 인코더의 반대 과정이라고 볼 수 있는데, 손실함수(주로 MSE)를 활용하여 인코더에서 학습한 특징으로 디코더가 복원하게 된다. 따라서 디코더를 설계할 때에는 인코더의 대칭구조로 주로 설계하게 된다.

 

 

오토인코더를 이용해 노이즈 제거를 실행한 모습.

 

 

 

 

 

'My IT > Article' 카테고리의 다른 글

[My IT : Article] 전이학습 - 사전학습 모델, Feature Extraction, Fine-Tuning, Full-Fine Tuning  (0) 2026.04.01
[My IT : Article] 이미지 데이터 전처리 - 표준 전처리, 데이터 증강  (0) 2026.03.30
[My IT : Article] PyTorch vs TensorFlow, Tensor(PyTorch) vs Array(Numpy)  (1) 2026.03.17
[My IT : Article] 딥러닝 vs 머신러닝, 딥러닝 하이퍼파라미터  (0) 2026.03.10
[My IT : Article] 결정 트리, 앙상블 기법, 차원 축소 기법  (2) 2026.03.04
'My IT/Article' 카테고리의 다른 글
  • [My IT : Article] 전이학습 - 사전학습 모델, Feature Extraction, Fine-Tuning, Full-Fine Tuning
  • [My IT : Article] 이미지 데이터 전처리 - 표준 전처리, 데이터 증강
  • [My IT : Article] PyTorch vs TensorFlow, Tensor(PyTorch) vs Array(Numpy)
  • [My IT : Article] 딥러닝 vs 머신러닝, 딥러닝 하이퍼파라미터
uj07096
uj07096
개발블로그 시작 !
  • uj07096
    김재헌 님의 블로그
    uj07096
  • 전체
    오늘
    어제
    • 분류 전체보기 N
      • Algorithm
      • My IT
        • Article
        • Codes
      • TIL
      • My Projects N
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    딥러닝
    optuna
    LSTM
    GAN
    코테
    EDA
    YOLO
    Faster R-CNN
    이상치
    파이썬
    LeetCode
    EfficientNet
    프로그래머스
    python
    kaggle
    PyTorch
    ResNet
    Stack
    머신러닝
    데이터전처리
    transfer learning
    convolution
    AI
    autoencoder
    til
    DeepLearning
    코딩테스트
    DenseNet
    Algorithm
    Tensor
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.6
uj07096
[My IT : Article] CNN Layer, AutoEncoder
상단으로

티스토리툴바