Study/머신러닝

Generation-오토 인코더

김 도경 2025. 1. 9. 17:12
오토 인코더
  • 오토 인코더 (Autoencoder, 1987)
    - 입력 데이터의 패턴을 학습하여 데이터를 재건하는 모델
        - 비선형 차원 축소 기법으로 활용 가능

    오토 인코더의 구조
    - 인코더(Encoder): 데이터를 저차원 잠재 표현으로 요약
    - 디코더(Decoder): 저차원 잠재 표현으로부터 데이터를 재구성(Reconstruction)
    - 손실 함수: 잠재 표현으로부터 복구한 데이터와 입력 데이터의 평균제곱오차(MSE)


  • 디노이징 오토 인코더
    - 입력 데이터에 랜덤 노이즈를 주입하거나 Dropout 레이어를 적용
    - 노이즈가 없는 원래 데이터로 재구성

    - 디노이징 오토 인코더의 원리
          - 안개 속에서 멀리 있는 물체를 구별하려면? 데이터의 특성들을 더욱 정확히 학습함
          - 노이즈에 강건한 잠재 표현 (미세하게 변형된 데이터도 같은 잠재 벡터로 표현되도록)

  • 오토 인코더의 활용
    - 특징 추출기로의 활용
         - 학습한 오토 인코더의 인코더 부분을 특징 추출기로 활용
         - 잠재 벡터로부터 분류, 클러스터링 문제 해결
    - 이상치 탐지 (Anomaly Detection)
         - 이상치는 재구성 했을 때 평균제곱오차가 크게 나올 것!
         - 특정 임계값을 넘으면 이상치로 판단
변분 오토 인코더
  • 변분 오토 인코더(Variational Autoencoder, VAE, 2014)
    - 오토 인코더와 동일한 구조(Encoder + Decoder)를 가지는 생성 모델
    - 잠재 변수 모델: 데이터는 저차원의 잠재 변수로부터 생성됨

    - Autoencoder와 동일한 구조를 갖지만 새로운 데이터를 생성할 수 있음
    - 가능도 (Likelihood) 와 동치인 ELBO를 최대화하여 학습
    - 경우에 따라 흐릿한 영상이 생성되는 경향이 있음

  • VAE의 구조
    - 오토 인코더의 구조를 가짐 (인코더 + 디코더)
    - 잠재 벡터의 분포: 표준정규분포
       - 잠재 변수(z) 가 표준정규분포를 따른다고 가정 (사전 분포 → p(z))
       - 조건부 분포 p(x|z) (=확률적 디코더)는 일반적으로 정규분포 또는 베르누이 분포로 모델링

  • VAE의 학습
    - 잠재 변수(z) 가 표준정규분포를 따른다고 가정 (사전 분포 → p(z))
        - 각 특징을 확률 분포로 정의, 이로부터 샘플링을 수행함

  • 알아내고자 하는 것 = p(x)
        - 데이터 분포 자체는 알고 싶은 것인데 이를 직접 계산하는 것은 불가능함
        - 주어진 데이터를 기준으로 우리가 알아내고 싶은 p(x)는 “현재 데이터를 잘 설명하는 분포” 를 의미함
              - 동전의 예시로, “앞면이 나올 확률” 을 알아내고 싶음 (모델링)

  • Evidence of Lower BOund (ELBO)
    - 현재 모델이 우리가 가진 현상을 얼마나 잘 설명하는가 = 가능도 (Likelihood)
        - 직접 계산이 어려우니, 간접적으로 계산하여 최대화함

  • ELBO의 계산

  • ELBO의 의미
    - 가능도 (Likelihood) 대신 계산 가능한 ELBO를 최대화하자!
    - 복원 오차 (Reconstruction error)와 정규화 항 (Regularization term)으로 구성
  • VAE의 손실 함수
    - MLE 대신 ELBO의 합을 최대화 → -ELBO의 합을 최소화
    - 손실 함수 계산 시 샘플링이 필요 → 미분 불가능!

  • 재매개변수화 방법
    - 정규 분포의 특성: z ~ N(𝜇, 𝜎 2 )와 𝜇 + 𝜎⋅𝜀 (𝜀 ~ N(0, 1))는 분포가 같다
    - 표준정규분포에서 샘플링 해서 변환한다면 미분 가능!

  • 변분 오토 인코더의 활용
    - VAE의 생성 결과
       - 생성 과정:  잠재 벡터(z)를 표준정규분포에서 샘플링, 디코더의 분포 p(x|z)로부터 새로운 데이터를 생성
    - 𝛽-VAE (2017)
       - VAE의 손실 함수에서 regularization term에 가중치를 줌
       - 각 차원 별로 독립적인 정보를 가지도록 함 → 의미있는 잠재 표현 학습

  • VAE의 장단점
    - 장점 : q(z|x)로부터 데이터를 요약하는 유용한 잠재 표현을 찾을 수 있음
    - 단점 : 가능도가 아닌 가능도의 하한을 최대화, 흐릿한 이미지를 생성

  • 변분 추론 (Variational Inference)
    - p(z)로부터 z를 샘플링 하는 것은 문제

    - ELBO를 인코더 파라미터 𝜙에 대해 최대화 하는 것은 q𝜙 (z|x)가 p(z|x)와 비슷해지도록 함 (변분 추론)

  • ELBO의 유도

 

벡터 양자화 변분 오토 인코더 (VQVAE)

 

  • VQVAE & VQVAE-2
    - 유한한 표현형으로 데이터를 표현할 수 있다는 관측을 활용
    - 벡터 양자화 기법을 활용한 고성능 VAE
    - 다른 모델에서 자주 활용됨
  • 벡터 양자화 변분 오토 인코더 (Vector Quantized Variational Autoencoder, VQVAE, 2017)
    - 유한한 잠재 표현을 활용하는 변분 오토 인코더
    - 실제 이미지나 텍스트는 유한한 특성으로 표현할 수 있음!

  • 이산(Discrete) 잠재 변수
    - 범주: K개의 D차원 임베딩(Embedding) 벡터 (e1 , …, eK )
    = Codeword in Codebook

  • VQVAE의 Evidence of Lower BOund (ELBO)

- 사전 분포 p(z): 균등 분포로 가정; p(z) = 1 / K
-> K개의 임베딩 벡터도 학습! : 데이터 특성을 표현하는 단어를 학습하고 수정할 수 있게 함

- 손실 함수 : -ELBO: 재구성 오차 항만 최소화
    - 벡터 양자화 항: 임베딩 벡터가 인코딩 출력 방향으로 가까워짐
    - 약속 손실 (Commitment Loss): 인코딩 출력이 너무 커지지 않도록 임베딩 벡터 근처로 가까워짐
        - sg = stop gradient → 역전파 시 입력에 대한 기울기를 0으로 계산
        - 𝛽 > 0는 하이퍼파라미터

  • VQVAE의 학습
    - 잠재 변수(zq (x), 디코더 입력)는 인코더 출력(ze (x))에 대해 미분 불가능!
    - 잠재 변수에 대한 기울기( )를 인코더 출력에 전달 → 역전파 가능해짐
    - 실험에서는 잠재 변수를 여러 개 사용 (ex. 128 x 128 x 3 이미지 → 잠재 변수 32 x 32 x 1)
    - K = 512 개의 임베딩 벡터

  • VQVAE의 생성 과정 ( 예) 잠재 변수 4 x 4개, 임베딩 벡터 512개)
    - 가능한 잠재 변수의 가짓수: 512^4 x 4 = 512^16 → 엄청 큼!
    - 관측치 개수 만큼의 잠재 변수의 조합만 확인 가능 → 단순 사전 분포에서의 샘플링은 의미 X
       -> 잠재 변수의 조합을 PixelCNN으로 학습한 후 샘플링하자! 

  • PixelCNN (2016)
    - 이미지 픽셀 값(0~255)들의 결합 분포를 마스크된 합성곱(Masked Convolution) 신경망으로 모델링
    - 좌상단에서부터 순차적으로 이미지의 픽셀값을 생성 (행 별, 왼쪽에서 오른쪽, RGB 순서)

  • VQVAE-2
    - 계층 구조 : 고해상도 이미지를 다루기 위해 계층 구조 사용
    - 위층(Top level): 전역적인(Global) 특징
    - 아래층(Bottom level): 국소적인(Local) 특징

  • VQVAE-2 생성
    - 사전 분포 학습
       - 위층: Self-attention 사용 (PixelSNAIL) → 전역적인 정보를 활용
       - 아래층: 위층의 잠재 벡터를 추가로 입력으로 받음
    - 생성된 데이터 기각 샘플링(Rejection Sampling)
       - 사전 학습된 분류기를 활용
       - 생성된 데이터가 실제 데이터와 유사하다면 정답 레이블 예측 확률이 높을 것!
       - 예측 확률이 낮은 것은 제외
    - 3층의 계층 모형으로 생성한 고해상도 얼굴 사진

'Study > 머신러닝' 카테고리의 다른 글

Generation-확산모델  (0) 2025.01.10
적대적 생성 신경망(Generative Adversarial Networks)  (0) 2025.01.09
Generation-생성 모델 평가지표  (0) 2025.01.09
Generation-생성 모델  (2) 2025.01.09
PyTorch Hydra  (0) 2024.12.17