[딥러닝] 병목 (Bottleneck) 구조와 오토인코더 (Autoencoder)

문학소년·2026년 3월 25일

개념정리

목록 보기
2/2

'병목구조가 있으면 무조건 오토 인코더라고 봐도 될까?'라는 궁금증이 문득 생겼습니다.

결론부터 말씀드리면, 병목 구조 ≠ 오토인코더입니다.

오토인코더 (Autoencoder)의 핵심 구조가 바로 병목 (Bottleneck)인 것은 맞지만, 병목 구조가 있다고 해서 무조건 오토인코더는 아닙니다. 즉, 병목은 오토인코더의 필요조건이지 충분조건이 아닙니다. 오토인코더가 되려면 병목 외에도 두 가지 조건이 더 필요한데, 오토인코더의 3가지 조건은 아래와 같습니다.

오토인코더의 3가지 조건:

  • 병목 구조 (차원 압축)
  • 입력과 출력이 같은 도메인
  • 재구성 손실로 학습

병목만 있고 나머지가 없으면 전혀 다른 아키텍처가 됩니다.

병목 구조는 일종의 '설계 기법'이고, 오토인코더는 그 기법을 활용한 '모델의 종류'이기 때문입니다. 병목 구조를 사용하지만 오토인코더가 아닌 대표적인 사례들을 알아보겠습니다.

1. 병목 구조가 있지만 오토인코더가 아닌 경우

① CNN Classification (분류 모델)

우리가 흔히 쓰는 ResNet 같은 이미지 분류 모델에도 '병목 레이어(Bottleneck Layer)'가 존재합니다.

  • 구조: 입력 이미지 → 복잡한 연산 → 좁은 층(특징 압축) → 최종 분류(개/고양이 등)
  • 차이점: 오토인코더는 입력과 똑같은 이미지를 다시 '복원'하는 것이 목적이지만, 분류 모델은 압축된 정보로 '정답(Label)'을 맞히는 것이 목적입니다.

② ResNet의 Bottleneck Block

딥러닝 성능을 높이기 위해 연산량을 줄이려고 일부러 병목을 만듭니다.

  • 1x1 합성곱(Convolution)으로 채널 수를 확 줄였다가(병목), 다시 1x1로 늘리는 방식입니다. 이는 오토인코더처럼 데이터를 복원하려는 게 아니라, 연산 효율성을 극대화하기 위한 설계입니다.

③ 인코더(Encoder)만 있는 모델

데이터를 압축해서 특징(Feature)만 뽑아내고 끝나는 모델도 병목 구조를 가집니다. 하지만 뒤에 복원하는 '디코더'가 없다면 오토인코더라고 부르지 않습니다.

2. 오토인코더와 일반 병목 모델의 결정적 차이

가장 쉬운 구별 방법은 '출력이 무엇인가?'를 보는 것입니다.

구분오토인코더 (Autoencoder)일반 병목 모델 (예: 분류, 회귀)
목표입력 데이터를 그대로 재구성입력을 보고 정답을 예측
출력 형태입력과 똑같은 크기의 데이터클래스 번호, 확률, 혹은 특정 수치
병목의 위치모델의 한가운데 (모래시계 중심)주로 모델의 끝단 혹은 연산 효율화

결론적으로 병목은 '정보를 압축해서 중요한 것만 남긴다'는 범용 아이디어이고, 오토인코더는 그 아이디어를 재구성 학습에 특화해서 사용하는 한 가지 방식입니다.

0개의 댓글