MACHINE LEARNING/Artificial Neural Network

Autoencoder VS Seq2Seq 차이 비교

24_bean 2023. 4. 13. 15:40

개요

 

Autoencoder와 Seq2Seq 모두 encoder-decoder 구조로 되어있다는 점이 유사하지만 차이점이 명확한 서로 다른 두 구조이다.

 

가장 큰 차이점으로는 목적과 구조적인 차이가 있다.

 

Autoencoder는 데이터를 압축하고 재구성하는데 중점을 둔 unsupervised learning model이다.

입력데이터를 encoder로 압축하고, decoder를 통해 원래의 입력 데이터를 재구성(reconstruction)한다.

이 때 압축된 표현을 latent variable이라고 할 수 있다.

 

이 과정에서 모델은 input을 가능한 한 재구성(reconstruction)하는 방법을 학습하게된다.

 

즉,  사실상 Input을 적절하게 재구성해서 reconstructed input을 output으로 뱉어내는 구조인셈이다.


반면 Seq2Seq는 시계열 데이터(time-series)와 같은 입력 시퀀스를 다른 시퀀스로 변환하는데 중점을 둔 supervised learning model이다.

encoder는 입력 시퀀스를 fixed-length vector로 변환하는데 이때 변환된 vector를 Context vector C라고 부른다.

decoder는 이 Context vector C에서 출력 시퀀스를 생성하게된다.

 

이때, C가 fixed-length 라는 점이 long-term dependency를 방해하는 요소가 될 여지가 있기 떄문에 attention mechanism이 등장하는 배경이 되기도 한다. (Input length 와 output length가 같다는 의미가 아니라, context vector C가 고정된 길이라는 뜻)

해당 글에서는 attention을 다루지는 않을 예정이며 다음 포스트를 참고바란다.

 

https://24bean.tistory.com/entry/Attention-어텐션이란-무엇인가-분량-주의

 

Attention / 어텐션이란 무엇인가? (분량 주의)

선행 지식 (Pre-requirement) RNN https://wikidocs.net/22886 - (딥러닝을 이용한 자연어 처리 입문) https://arxiv.org/abs/1808.03314 - (RNN paper) LSTM https://wikidocs.net/22888 - (딥러닝을 이용한 자연어 처리 입문) http://www.b

24bean.tistory.com

 


목적

 

애초에 Autoencoder는 input을 잘 표현하기 위함이고

Seq2Seq는 input을 잘 이용해서 output을 잘 만들어내기 위함이다.

 

autoencoder는 주어진 input을 압축(encoding)하고 다시 복원(decoding)하는 과정을 거친다.

이때 input의 잘못된 부분, 혹은 잡음 등을 제거하여 더 나은 표현을 생성한다.

이런 과정을 통해 모델은 잠재적(latent) 구조를 학습하게 된다.

 


Seq2Seq은 시퀀스(sequence) 데이터를 다루는데 주로 사용된다.

가령, machine translation같은 작업에서 주로 사용되는데 영어를 불어로 바꾼다는 등의 task를 수행하기도 한다.

이를 위해 모델은 입력과 출력 간의 sequence mapping을 학습한다.

이 때 위에서 간단히 언급한 바와 같이 모델은 시간적인 의존성(Temporal dependency)을 학습해야 하기 때문에, decoder의 출력을 생성할 때 이전 생성된 출력 정보에 대한 고려가 필요한데 이를 위해 Attention이 등장한다.

 

즉, Context vector C가 fixed-length 였던 것을 감안하여 C(t)를 attention score를 계산함으로써 다르게 표현하여 시간적 의존성을 학습한다.

 

 

basic autoencoder architecture
seq2seq model architecture of machine translation

 


구조

encoder는 일반적으로 RNN(Recurrent Neural Network)을 사용하여 구현된다.

 

RNN에서는 input sequence를 time step에 따라 한 번에 하나씩 처리하며, 각 step에 대한 hidden state를 생성한다.

이렇게 생성된 hidden state를 다음 time step으로 보내주며 최종적으로 마지막 하나의 vector로 변환된다.

이 vector가 input sequence에 해당하는 의미(semantic)를 가지고 있는 lossy summary가 된다.

이를 context vector 혹은 thought vector라고도 부른다.

 

decoder는 encoder의 inverse라고 생각하면 된다.

 


이전 시점(last time step)에서 생성한 단어를 다음 시점(next time step)에서 입력으로 받아 처리한다.

이전 시점에 생성한 hidden state와 입력으로 들어온 단어를 기반으로 현재 시점에서의 hidden state를 생성하고, 이를 다시 다음 시점에서의 입력으로 사용한다.

이렇게 생성된 hidden state를 바탕으로 다음 단어를 생성한다.

 

기본적으로 autoencoder는 unsupervised learning

Seq2Seq는 supervised learning이라는 점이 학습에 있어 큰 차이로 볼 수 있다.

 

하지만 목적이 다르다는 것을 명확히 이해하면, 구조가 다를 수 밖에 없다는 것도 이해할 수 있을 것이다.