본문 바로가기
인공지능 (AI)

Encoder-Decoder 네트워크의 개념, 정의

by worldproblemsolver 2025. 1. 4.

 

약 2년 전부터 우리의 삶을 바꿔놓고 있는 ChatGPT는 자연어 처리하는 기술로 만들어진 서비스입니다. 이 서비스에서는 사용자가 문장을 입력하면 기술을 통해 그에 알맞은 문장을 출력함으로써 답합니다. 한 예를 들어보자면 영어 문장을 주면 한국어 문장으로 번역해서 알려줍니다.

 

오늘은 이렇게 데이터 열을 입력받고 그에 상응하는 데이터 열을 출력하는 모델에 대해서 자세히 알아보겠습니다. 워낙 세부적인 부분으로 들어가다 보니 조금 기술적인 부분이 많이 나오게 될 예정입니다.


Encoder-Decoder 네트워크란

Encoder-Decoder 네트워크란 오토 인코더 이후의 딥 뉴럴 네트워크에서 자주 이용되는 '입출력을 양 끝으로 하여, 중앙부의 차원을 낮추고, 그 중앙부의 좌우에서 대칭형을 이루는 네트워크 구조'입니다.

화상 대 화상 변환이나 시맨틱 세그먼테이션에 인물 자세 추정 등을 위한 화상 입출력용의 Encoder-Decoder 네트워크의 경우는 이하의 2개의 서브 네트워크로 구성됩니다.

 

  • Encoder 네트워크
    입력 화상을 해석·부호화합니다. 부호회를 화상 인식으로 말하면 특징을 추출한다라고 말할 수 있습니다.
  • Decoder 네트워크:
    중간 표현을 업 샘플링해 나가, 원래의 공간 사이즈까지 되돌려 화상(또는 이차원적인 맵)을 생성합니다.

이때, 화상 Encoder-Decoder 네트워크에서는 각층에서 이하의 처리를 실시합니다.

 

  1. 이 이미지 Encoder-Decoder 처리 절차를 쪼개보면 아래와 같습니다.
    전반의 Encoder 각 층: 원시 입력부터 (바텀업) Encoding을 순서대로 실시합니다.
  2. 가운데 병목층: 표현의 차원 수나 공간 크기가 가장 낮은 채로 처리합니다. 아무것도 처리하지 않은 채, Decoder에게 그대로 받아 주는 일도 많습니다.
  3. 후반의 Decoder 각 층: 압축된 저차원의 코드로부터 (톱 다운) Encoding을 실행합니다.


또, 기계 번역, Text-to-Speech나 음성 인식 등, 계열끼리를 변환하는 계열 대 계열 변환이 목적인 Encoder-Decoder에서도 마찬가지로 '입력 계열을 해석하는 Encoder'와, 출력 계열을 생성하는 'Decoder'의, 2개의 서브 네트워크로 구성됩니다.

이 Encoder와 Decoder가 대칭구조를 이루며, 원래의 정보를 변환·복원하는 네트워크를, 흔히 Encoder-Decoder 모델이나 Encoder-Decoder 네트워크라고 부르는 경우가 많습니다.

 

Encoder 모델 예시

그럼 Encoder에 대해서 조금 더 깊게 알아보겠습니다. 

이미지용 모래시계형

Encoder-Decoder 네트워크 중 모래시계형 모델로서 각 작업을 풀기 위해 처음 제안된 대표적인 Encoder-Decoder 구조로서는 다음과 같은 것들을 들 수 있습니다:

 

  • 오토 인코더(Autoendoder): 특징 벡터나 화상 특징 맵의 차원 삭감을 실시합니다.
  • Denoising AutoEncoder: 잡음 있는 데이터와 깨끗한 데이터 사이에서 학습함으로써 잡음에 강한 중간 표현을 자동 인코딩 할 수 있습니다.
  • 변분 오토 엔코더(VAE): 가우스 잠재 변수를 학습할 수 있는 오토 엔코더 진화판의 심층 생성 모델입니다.
  • SegNet:RGB 장면 이미지용 시맨틱 세그먼테이션 네트워크입니다.
  • U-Net: 흑백 의료용 이미지용 시맨틱 세그먼테이션 네트워크입니다.
  • pix2pix:화상 대 화상 변환. 각 화소의 의미는 유지하면서 화상 스타일을 변환합니다.
  • 화상 보간이나 초해상도 등의 역문 제계나 단안 화상으로부터의 뎁스 추정 등의 문제를 위한 심층 네트워크입니다.

토큰 계열용

또 계열 대 계열 변환 모델에서도 Encoder-Decoder 모델이 표준적으로 이용됩니다. 계열 데이터 간의 Encoder-Decoder는 당초 seq2seq로 명명되었고, 그 후, 어텐션 중심으로 구성된 Transformer로 발전했습니다.

계열 대 계열변의 각 태스크에서는 입력 계열도 출력 계열도 모두 계열 길이가 가변 하기 때문에 가변 계열에 대응할 수 있는 RNN 모델이나 Transformer 디코더/Transformer 디코더 등이 Encoder와 Decoder에 이용됩니다. 이들 계열 대 계열 문제의 각종 문제를 위한 Encoder-Decoder에서는 어텐션 기구를 동시에 이용하는 것이 표준적입니다.

 

Encoder 이름의 유래

예로부터 전자회로/정보이론에서 이용되어 온 부호화에서는 '부호기(Encoder)'와 '복호기(Decoder)'의 조합을 짝지어서 이용해 왔습니다.


먼저 계산기가 다루기 쉽고, 게다가 원래의 정보량이 되도록 유지된 채 압축된 '부호(code)'를 중간적으로 사용하기 위해서, 우선 '부호화'를 실시합니다.

 

예를 들면, 동영상 부호화에서는, H264 등의 부호화된 코드가, 전기적 전송이나 네트워크 전송 효율을 향상시키기 위해서 원래의 데이터를 압축하는 목적으로 이용되고 있습니다.

 

예를 들면, 동영상의 경우는 전송 후에 그 부호화된 데이터를 복합기로 동영상으로서 복원해 표시 재생합니다. 이 부호기/복합기의 페어 구성을 뉴럴 네트워크로 구성하는 경우도 상기의 옛 이름에서 따와서 Encoder라고 지칭하기 시작했습니다.

단, 허프만 부호화 등과 같이, Encoder-Decoder 모델의 신경망으로 부호화도 실행하는 것은 아닙니다. Encoder로 접은 후에는 가운데의 층에서 차원이 압축된 벡터가 손에 들어갈 뿐인 경우가 일반적입니다. 그래서 엔트로피를 고려한 부호화가 반드시 행해지고 있는 것은 아닙니다.


이번 포스팅에서는 Encoder의 정의와 개념에 대해서 알아보았습니다.

 

다음 포스팅에서는 오토 엔코더, 화상 대 화상 변환 모델에서의 활용 등, 이 Encoder들이 어떻게 활용이 되고 있는지 알아보도록 하겠습니다.