본문 바로가기
Deep Learning (AI)/이론 및 기술면접 정리

[DL] 오토인코더(Autoncoder)

by 스프링섬머 2023. 8. 23.
728x90

본 포스팅은 DMQA 오픈 세미나 자료 및 영상을 참고하여 정리하였습니다.

http://dmqm.korea.ac.kr/activity/seminar/330

 

고려대학교 DMQA 연구실

고려대학교 산업경영공학부 데이터마이닝 및 품질애널리틱스 연구실

dmqa.korea.ac.kr

 

1. 오토인코더란 무엇일까?
  • 정의 : 레이블이 없는 비지도학습에 주로 사용되는 신경망 형태이다.
  • 구조 : Encoder와 Decoder가 bottleneck 구조를 이룸
  • Encoder : 입력 데이터를 의미있게 함축된 representation한다. 
  • Decoder : Encoding 된 representation을 다시 원본 데이터로 복원
  • reconstruction loss : 입력 데이터와 복원 데이터의 차이를 학습하여, loss를 최소화 하도록 함

 

2. 오토인코더의 사용 목적은 무엇일까?
  1. Manifold learning
    - 입력 데이터를 함축된 representation으로 mapping해주는 encoder 학습이 목적
  2. Generative model
    - 어떤 latent variable을 실제 data distribution으로 mapping 해주는 decoder 학습이 목적

TMI) 학습된 모델을 어떤 목적으로 사용하는지에 따라서 나뉘는 것 같다. 학습 관점에서는 encoder-decoder 둘 다 중요하다. 레이블이 없기 때문에 decoder에서 잘 복원해야 올바른 latent vector의 생성이 가능하고, encoder에서 특징들을 latent vector로 잘 매핑해요 올바른 복원이 가능하다. 추후에 이러한 매핑과 복원 관련해서 bias-variance trade off을 다루게 되고, 해당 강의에서는 manifold learning을 중점으로 오토인코더의 사용 사례를 다룬다.

 

3. Manifold Learning
  • Manifold란?
    - 매니폴드란 고차원에는 가까운 거리를 가지지만, 저차원에서는 먼 거리를 가지는 공간으로, 데이터 관점에서 고차원 공간에서의 실제세계 데이터는 고차원 공간에 내재한 훨씬 저차원 공간인 매니폴드에 집중된다고 할 수 있음. 
    예를 들어 아래 그림에서와 같이 왼쪽처럼 고차원과 저차원의 직선거리가 다르며, 오른쪽 그림처럼 차들은 주로 도로 위에 밀집되어 있는 것을 말함. (근데 이게 뭔 소리지?)

 

  • 매니폴드란 무엇일까? https://junstar92.tistory.com/157
    - 매니폴드란 고차원의 데이터, 즉 training DB의 데이터 그 자체를 error 없이 잘 표현하는 subspace를 의미함.
    - 고차원의 데이터를 공간상에 표현하면 각 데이터들은 점의 형태로 찍혀지는데, 이러한 점들을 잘 아우르는         subspace를 매니폴드라고 할 수 있음. 
    - 이러한 매니폴드를 잘 찾는 것을 매니폴드 학습(manifold learning)이라고 할 수 있고, 잘 찾은 매니폴드에서         projection시키면 데이터의 차원이 축소될 수 있다.
    - 즉, 정리하면 고차원에 데이터를 잘 표현할 수 있는 저차원의 임베딩 공간을 매니폴드 공간이라고 하는 것인가?
      따라서, 오토인코더의 인코더를 거친 latent vector(압축된 표현)이 분포하는 저차원 공간을 매니폴드 공간이라고 하는 것 같다.

  • 그렇다면 고차원의 데이터란 무엇일까? https://velog.io/@chulhongsung/HDandCD
    - 흔히 말하는 고차원의 데이터는 변수(혹은 feature)의 수가 매우 큰 데이터를 의미함
    - 변수의 수가 많다는 것은 데이터에 대한 정보량이 많다는 의미로 볼 수 있고, 다양한 정보의 양은 분석에 용이함.
    - 하지만, 고차원 데이터는 시각화를 통한 중요한 의미나 관계를 파악하기 쉽지 않으며, 저차원의 데이터 분석방법을 그대로 적용하기에는 부적합함.
    - 고차원 데이터의 예시는 다음과 같다.
    Microarray dataset : feature의 수가 데이터의 수보다 많은 경우가 많다.
    Text dataset : 작업마다 다르지만 단어가 변수가 되어 차원을 가지도록 구성된 데이터
    Image dataset : 하나의 pixel이 변수가 되어 (height x width x channel) 차원의 데이터

  • 차원이 커지면서 생기는 문제는 무엇일까?
    1. 0 또는 1을 가지는 이진변수의 경우 고려해야 하는 경우의 수는 {0,1} 2개이다.
    2. 이진변수가 하나 추가되면 고려해야 하는 경우의 수는 {(0,0), (1,0), (0,1), (1,1)}로 총 4개이다.
    3. 이진변수가 d개 추가되면
    개의 2^d경우가 존재하며, 결과적으로 차원이 커짐에 따라 지수적으로 경우의 수 증가한다.

    지수적으로 증가하는 것은 변수가 많아지면 고려해야 하는 경우가 매우 빠르게 많아짐. 이를 combination explosion이라고 한다. 이러한 문제의 발생 예로 Multi-label classification이 있음. 

  • 차원의 저주(고차원 데이터를 다룰 때 발생하는 문제) https://devarchive.tistory.com/2
    - 차원의 저주란, 데이터의 차원이 증가하면서 학습할 데이터의 양이 차원보다 적어져 성능이 저하되는 현상을 말함
    - 즉, Data Sparsity 때문이다. 
      - 다시말해, data가 정의될 수 있는 전체 domain에 비해 실제 데이터가 너무나도 희박하게(sparse) 분포되어 있음
      - 이로 인해, model training을 진행하더라도 희박한 data point들에 상당히 편향된 정보만을 얻게 됨
      - 테스트에서 unseen data에 대한 심각한 성능저하, 즉 오버피팅이 발생할 가능성이 높다. 

1차원과 2차운에서의 동일 개수의 데이터의 분포를 시각화한다. 2차원에 데이터 간의 빈 공간이 더 넓다(sparse)

 

  • 왜 Data Saprsity가 문제일까?
    1. Decision boundary in classification

    - 1차원의 경우에는 위와 같이 decision boudnary의 경우의 수가 그리 많지 않다. data가 sparse하지 않기 때문에, 아직 보지 못한 데이가 존재할 수 있는 영역이 넓지 않음

 

   - 하지만 2차원으로 확장되면 결정경계의 경우의 수가 지수적으로 많기 떄문에 일반화(generalizatoin)이 좋은 모델을 찾기가 매우 어려움
   - 데이터의 분포에 비해 사용되는 공간이 너무 크기 때문이다. = 차원의 저주

   - 따라서, 이로인해 테스트에서 보지 못한 데이터에 대해서 오분류를 낼 확률이 매우 높다 (다음 그림처럼)

   2. Distance Concentration

    - 데이터의 차원이 증가하면서 data point간의 distance가 거의 일정해지는 현상을 말한다. 
   

다양한 차원에서 data point 간 distance 분포를 나타낸 것이다. 각 차원에서 100개의 data point를 임의로 생성하고 이들 간의 유클리안 거리를 구해 히스토그램으로 나타냄

    - 위의 그림처럼 차원이 증가할수록 분포가 한곳에 집중되는 현상을 볼 수 있음.
    - 그러한 이유는 차원이 높아질수록 대부분의 data point가 공간의 외곽에 존재하기 때문
    - 그로인해, 이들 간의 거리고 공간의 지름과 비슷한 수치로 서로 유사해지는 현상이 발생(수학적으로 검증됨)

 

정리하면, 차원의 저주가 발생하는 원인은 고차원 공간에 데이터가 너무 희박하게 분포 되어 있기 때문에, 모델은 특정 포인트들에 국한되어 편향된 학습을 하게 된다.이로 인해 테스트에서 보지 않은 데이터에 대해서 성능이 떨어져, 고차원 공간에 너무나도 빈 공간이 많아 결정경계를 나누기 쉽지 않음. 

 

다시 오토인코더로 돌아오면,

  • Manifold Learning은 고차원 공간의 데이터를 저차원 manifold 공간으로 매핑시키는 함수를 찾는 과정이다. .
  • 학습이 끝난 오토인코더의 인코더를 매핑함수로 사용한다. 
  • 데이터를 매니폴드 공간으로 매핑함으로써 feature extraction, representation learning, dimensionality reduction 등을 수행한다. 

 

4. Generative Model
  • 데이터를 생성하는 모델로써 Adversarial Networks (GAN)과 Variational Autoencoder (VAE)가 있음.
  • Latent variable을 실제 데이터 분포로 매핑시키는 함수를 찾는 것이 목적이므로 Decoder를 매핑함수로 사용한다. 

생성모델에 대해서는 다루지 않음

5. Bias-variance tradeoff in autoencoder
  • Bias : 모델의 예측치와 실제 정답과의 차이
  • Variance : 모델의 예측치의 변동성

  • 모델의 복잡도가 늘어날수록 bias는 줄어들고 variance는 증가한다. 
  • 하지만, 훈련 집합에 대한 bias가 너무 작아지면 검증집합에 대한 variance가 커져 다른 표본집합에 대한 일반화 성능이 떨어지는 과적합이 발생함
  • 따라서, bias와 variance가 모두 최소가 되는 즉, 둘의 합이 최소가 되는 모델을 찾아야 한다. 하지만 데이터에 적절한 복잡도를 찾는 것은 매우 어려운 일이다. 
  • 딥러닝은 모델의 복잡도를 높인 뒤에 다양한 규제를 통해 bias를 높이고 variance를 낮추는 방향으로 발전함. 
    규제 예시 : L1,L2-regularization, data augmentation, focal loss, cross-entropy smooth loss, batch normalization, dropout, etc.
  • 이러한 모델들은 다양한 규제를 저용하여 일반화 성능을 높이는데, 모델에 제약을 주어서 복잡도를 모두 사용하지 못하도록 학습함. 오버피팅을 줄이도록.

  • 이러한 bias-variance trade off를 오토인코더 관점에서 생각해보자
  • 오토인코더는 입력 데이터를 잘 복원하기를 바라면서(low bias), 처음 보는 데이터도 강인하게 표현(low variance)할 수 있게 학습하길 바란다. 하지만, 이는 입력 데이터에 민감하게 반응함과 동시에 둔감하게 반응해야 하기 때문에 trade-off 관계임. 
  • 오토인코더도 마찬가지로 모델의 복잡도를 높이고 규제 기법을 적용하는 다양한 형태의 파생 인코더가 개발 됨.

 

6. Sparse Autoencoder

  • Dropout으로 은닉층을 규제하는 것 같은데, 정확히 무엇인지 모르겠음. 어떤 목적에 어떤 의미가 있는지?

7. Denoising Autoencoder

  • 입력 데이터에 noise 같이 손상을 주고, decoder로 복원된 이미지는 noise가 없는 원본 데이터를 출력하도록 하는 구조, 이는 noise에 강인한 representation을 하는 목적이다.

 

8. Contractive Autoencoder

  • 당췌 flow를 모르겠음. 나중에 찾아보자

9. Autoencoder의 활용
  1. Classification
    1) 오토인코더가 비지도 학습인 점을 이용하여, 학습된 encdoer를 사용하는 방법

 

   2) 일반적인 classification termdecoder를 달고 reconstruction loss를 추가한다
          recon loss는 입력과 디코더의 출력이 같도록 하는 loss이다.

 

   3) self-supervised vision transformer : 트랜스포머를 오토인코더처럼 사용하는 기법

 

  2. Clustering

   - unlabled data를 오토인코더로 학습하면, row-dimensional laten representation(manifold)가 존재할 것이라는 가정으로, 아래 그림에서의 인코더의 출력, , 압축된 백터(laten vector)의 임베딩 공간에서는 비슷한 클래스는 clustering이 될 것이라는 말이다. latent vector가 각각의 label은 비슷하게 표현된다는 것임.

   - 학습된 인코더로 unlabeled data를 넣어서 기존 군집화 알고리즘(k-means clustering)을 수행하면 비슷한 클래스는 인접할 것임.

 

  3. Anomaly detection

   - 정상 관측치와 이상 관측치 간에 latent structure가 다를 것이라 가정

   - 정상 관측치만을 학습 데이터로 사용함으로써 오토인코더가 이상 관측치는 잘 복원하지 못할 것이라는 기대

   - , 학습에서는 정상 관측치만 사용, 검증 과정에서는 이상 관측치를 사용하여 재대로 복원하지 못해 reconstruction loss가 크다는 것을 이용해 이상치를 탐지함.

 

  4. Dimensionality reduction

   - 실제 데이터(이미지, 텍스트)들은 매우 높은 차원의 sparse한 벡터로 표현되는 경우가 많다.

   - 이런 고차원 벡터들을 통해 학습을 하면 차원의 저주에 빠지게 될 수 있음.

   - 이러한 데이터들을 훨씬 낮은 차원의 “intrinsic dimensionality(본질적 차원)”으로 mapping시키는 것이 목적

   - 고전적인 방법으로 관측치를 낮은 차원으로 linear projection하는 PCA가 있으며 여기에 비선형 변환을 추가한 것이 오토인코더로 해석할 수 있음.

   - 오토인코더의 인코더를 mapping function으로 사용.

 

10. Summary
  • Autoencoder는 Manifold learning, Generative learning으로 나뉘어짐
  • Manifold learning을 통해 representation을 학습할때 여러 규제 기법을 사용한 autoencoder 등장
    - Sparse AE : Sparse parameter를 이용, 노트의 활성화 확류를 제어
    - Denosing AE : Noise를 추가한 손상된 입력데이터를 복원, noise에 강인한 모델 학습
    - Contractive AE : Jacobian matrix 활용, 중요하지 않은 입력의 변화를 버려 강인한 모델 학습
  • Autoencoder의 활용
    - Classification : Semi or self-supervised learning에서 data의 latent structure를 찾는데 사용
    - Clustering : Data를 row-dimensional latent representaion로 mapping 시키는데 이용
    - Anomaly detection : 정상만을 학습시킨 AE가 이상치를 잘 복원하지 못할 것이라는 가정으로 이용
    - Dimensionality reduction : 고차원의 Sparse data를 intrinsic dimension으로 mapping 시키는데 이용
728x90