오토 인코더 (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층의 계층 모형으로 생성한 고해상도 얼굴 사진