머신러닝 및 딥러닝/자연어처리

오토인코더(Auto Encoder) ・ Variational 오토인코더

viamemine 2024. 6. 27. 12:45
728x90
반응형

오토인코더란 ? 

오토인코더(AutoEncoder)란 입력이 들어왔을 때, 해당 입력 데이터를 최대한 compression 시킨 후, compressed data를 다시 본래의 입력 형태로 복원 시키는 신경망입니다. 이때, 데이터를 압축하는 부분을 Encoder라고 하고, 복원하는 부분을 Decoder라고 부릅니다. 압축 과정에서 추출한 의미 있는 데이터 Z를 보통 latent vector라고 부릅니다.

 

왜 이름이 오토인코더일까요 ? 

다음 그림을 예시로 설명드리겠습니다.

 

위의 그림은 Auto Encoder의 결과를 시각화한 이미지입니다. 자세히보면 y축으로 두께가 변하고, x축으로는 기울기가 변하는 것을 확인할 수 있습니다. 이를 통해 이 모델의 latent vector는 두께, 회전, Class로 정의되어 있다는 것을 알 수 있습니다. 

여기서 중요한 점은 오토 인코더가 출력하는 latent vector를 미리 알 수 없다는 사실입니다. 우리는 단지 3차원으로 데이터를 압축하는 명령을 내렸을 뿐, 이후에는 모델이 알아서 중요한 latent vector를 찾아준 것 입니다. 즉, 인코더 모델이 학습을 통해 자동적으로(automatically) latent vector를 찾아준 것이죠. 그래서 우리는 고차원 데이터를 잘 표현해주는 latent vector를 자동으로 추출해주는 모델을 오토 인코더라고 부릅니다.  ('오토'는 오토-코릴레이션에서 유래한 말입니다. 즉 입력과 출력에 같은 이미지가 들어간다는 의미입니다.)

오토인코더에서 디코더는 latent vector를 잘 찾기 위한 도우미 역할을 합니다. 다시 말해서 디코더는 거둘 뿐, 인코더에 초점이 맞춰져 있습니다. 우리의 목적은 의미 있는 latent vector를  찾는 것이니까요 ! (= 데이터의 특성을 파악하는 것)

 

 

오토인코더의 다양한 관점

오토인코더는 다양한 관점에서 해석이 가능합니다. 다시 말해, 다양한 분야에서 사용될 수 있습니다. 일반적으로 4가지 관점이 있습니다.

 

1. unsupervised learning

2. maximum likelihood density estimation

3. manifold learning

4. generative model learning 

 

 

1. unsupervised learning

unsupervised learning은 supervised learning과 다르게 label 데이터가 없이 인공지능 모델을 학습합니다. 이를 통해 데이터 그 자체에 숨겨져 있는 패턴을 발견하는 것이 목표입니다.

 

supervised learning: 입력 데이터와 정답이 주어진 상태에서 모델을 학습시키는 방법. 모델은 입력과 출력 간의 관계를 학습하여, 새로운 입력에 대해 올바른 출력을 예측할 수 있게 함
unsupervised learning: 입력 데이터만 주어지고 정답이 없는 상태에서 모델을 학습시키는 방법. 모델은 데이터의 구조나 패턴을 스스로 학습하여 유용한 정보를 추출
semi-supervised learning: 일부 데이터에만 정답이 있고 나머지 데이터는 정답이 없는 상태에서 모델을 학습시키는 방법. 정답이 있는 데이터로 모델을 초기 학습시키고, 정답이 없는 데이터를 사용하여 추가 학습함
self-supervised learning: 데이터에서 스스로 정답을 생성하여 학습하는 방법. 일반적으로 입력 데이터의 일부를 변형하거나 가공하여 생성된 문제를 푸는 방식으로 학습. 대량의 정답이 없는 데이터에서 유용한 표현을 학습하는데 많이 사용됨

 

2. maximum likelihood density estimation

 

오토인코더는 입력 x값을 축소시킨 뒤, 다시 복원해내는 기능을 가지고 있습니다. 이때 디코더가 얼마나 복원을 잘했는지 알기 위해서는 입력된 7과 재현된 7의 사진의 차이를 보면 됩니다. 하지만 이럴 경우 오차가 매우 클 것으로 예상됩니다. 픽셀 단위로 재현된 숫자를 분석하면 그 차이가 매우 심하기 때문입니다. 이는 단순히 생각해도 비효율적인 학습 방법이 됩니다. 사람의 시각에서는 같은 7이라는 숫자가 컴퓨터의 관점에서는 완전히 다른 숫자로 인식하기 때문입니다. 이를 해결하기 위한 방식 중 하나가 MLE(Maximum Likelihood density estimation)입니다. 

이전 예시는 단순히 입력과 출력이 같기를 바라는 관점이었고, MLE는 입력과 출력이 같아질 확률이 최대가 되길 바라는 관점입니다. 관측된 샘플들을 존재하게 할만한 가능성(확률)을 최대화 시키는 값을 찾는 것을 목적으로 합니다. 즉, 최적의 파라미터를 찾는 과정이라고 이해하면 됩니다. 

 

3. manifold learning 

manifold learning의 한 가지 역할 중 차원 축소가 있습니다. 굉장히 큰 차원을 저차원으로 줄일 수 있는 역할을 합니다. manifold learning을 이용하면 숫자 2의 이미지를 latent vector는 두께, 회전, class로 차원 축소를 할 수 있습니다. 숫자 2 이미지가 MNIST 데이터(28x28)라고 가정할 때, 784 차원으로 표현 될 수 있습니다. 이를 두께, 회전, Class로 총 3개의 차원으로 축소할 수 있는 것도 데이터를 잘 표현할 수 있는 서브 스페이스를 찾았기 때문입니다. 

 

매니폴드 러닝을 많이 사용하는 이유는 가장 중요한 feature를 찾을 수 있다는 장점이 있기 때문입니다. 위의 그림의 경우 모델은 골프를 치는 사람의 중간 모습을 찾고 싶어 합니다. 하지만 사람의 직관에서 가깝다고 생각되는 샘플(A,B)의 실제 Euclidean distance는 멀기 때문에 부자연스러운 이미지가 생성됩니다. 이를 해결하기 위해, 매니폴드 러닝으로 아래 고차원 공간을 잘 표현해 줄 수 있는 저차원 공간을 찾아 Euclidean distance를 구하면 원하는 interpolation 결과를 얻을 수 있습니다.

 

4. generative model learning

generative model의 목적은 학습 데이터와 동일한 distribution으로부터 새로운 샘플을 만드는 것입니다. 즉, 학습 데이터의 density를 학습한다는 것입니다. 

오토인코더는 입력 데이터를 효율적으로 인코딩하고 이를 다시 디코딩하여 원래 입력 데이터를 복원하는 신경망 모델입니다. 즉, 오토인코더의 목적은 입력과 출력을 같게 만들기 위해 입력 데이터의 중요한 특성을 학습하는 것입니다. (잡음이나 불필요한 정보를 필터링) 

반면, VAE(Variational Auto Encoder)는 생성 모델으로, 입력 데이터로 부터 평균과 분산을 통해 정규 분포를 따르는 latent vector를 만들고 원래의 데이터로 복원합니다. 

728x90

'머신러닝 및 딥러닝 > 자연어처리' 카테고리의 다른 글

Fast Tokenizer  (0) 2024.06.27
난수 ・ random seed  (0) 2024.05.13
In-Context Learning ・PEFT  (0) 2024.05.08
Batch size와 Learning rate의 상관 관계  (0) 2023.11.18
Transfer Learning & Fine-tuning  (2) 2023.11.18