: 서로 다른 클래스들을 구분하는 결정 경계(Decision Boundary)를 학습하는 모델
: 데이터 자체의 분포를 학습하는 모델

: VAE, GAN, Normalizing Flow, Diffusion Models, Flow Matching

목표: 데이터를 기반으로 효율적인 data representation을 학습
: 입력 데이터 기반으로 잠재 표현(Latent Representation)을 인코딩

-> 잠재 표현 z의 차원은 입력 데이터 x의 차원보다 작아져 information bottleneck(정보 병목) 역할을 함
: 잠재 표현(Latent Representation)으로부터 데이터를 디코딩



-> 원본 데이터 x와 예측된(생성된) 데이터 x' 사이의 거리를 최소화하는 것이 목표!





: source speech의 내용 정보를 유지하면서, target voice의 스타일로 변환하는 기술


: 랜덤 변수 X를 요약할 때, 정확도(Accuracy)와 복잡도(Compression)의 최적 절충점(Tradeoff)을 찾기 위해 설계됨
: 이는 X와 관찰된 관련 변수(observed relevant variable) Y 사이의 결합 확률 분포(joint probability distribution) p(X,Y)를 기반으로 함
<적절한 information bottleneck 크기>
-> voice conversion을 위해서는 내용 정보만을 인코딩할 수 있는 적절한 병목 크기를 찾아야 함


Mel-Spectrogram에서 마지막 layer의 표현을 평균화해서 글로벌 스타일 표현(global style representation)을 추출
Pre-training the speaker encoder
: GE2E 손실(Generalized End-to-End loss)을 사용
GE2E loss: Metric learning을 위한 손실 함수
-> 서로 다른 화자의 문장에서 나온 representation 간의 거리를 최대화
-> 동일한 화자의 문장에서 나온 representation 간의 거리를 최소화






-> 손실 함수를 최소화하여
1) 입력 데이터의 재구성 품질을 향상
2) 원본 입력 데이터와 컨텐츠 정보의 보존
3) 스타일 정보와의 분리 및 손실 간의 균형 조절할 수 있게 학습
: 청취자가 변환 음성의 자연스러움을 평가
: 청취자가 변환된 음성과 목표 음성(Ground-Truth Target Speech)의 유사성을 평가


: Mel-spectrogram을 패치화하고, 오디오에 대한 풍부한 latent representation을 학습

1) Audio-MAE를 사용한 Pre-training
2) waveform generator를 추가한 Fine-tuning
-> waveform generator: 오디오 데이터를 최종적으로 고품질 원본 신호(waveform)로 변환하는 모듈
-> Mel-Spectrogram은 오디오의 주파수 정보를 포함하지만, 이를 다시 파형(waveform)으로 변환하려면 복원 작업이 필요

연속적인 잠재 변수와 계산이 불가능한 사후 분포(intractable posterior distributions)가 존재하는 상황에서, 유도 확률 모델(directed probabilistic models)에서 효율적인 추론과 학습을 수행하려면 어떻게 할까?
1) Latent space를 가우시안으로 정규화
-> 이는 사후 분포(posterior)가 대략적으로 가우시안이라고 가정하며, 알려진 데이터 포인트에서 샘플링하여 새로운 샘플을 생성할 수 있게함

2) 변분 하한(Variational Lower Bound)을 위한 재매개변수화 기법(Reparameterization Trick)
-> Standard Stochastic Gradient Methods을 사용하여 하한 추정값(Lower Bound Estimator)을 최적화할 수 있게함

: 복잡한 확률 모델에서 데이터 가능도(likelihood)를 효율적으로 최적화하기 위해 사용되는 접근 방식

데이터를 설명하는 모델을 학습하기 위해 데이터 가능도(likelihood)를 최대화하기 위해

를 계산해야 함
p(x)는 주변 분포(Marginal Distribution)로 표현됨


-> p(x)를 계산하려면 z를 적분해야 함(적분 과정에서 잠재 변수의 모든 가능한 값에 대해 확률을 합산해야 함)
<문제점>
-> z가 고차원일 경우: 계산 비용이 매우 큼(현실적으로 불가능할 수도 있음)
-> p(x,z)의 형태가 복잡할 경우: z에 대해 적분 수행 시 닫힌 형태의 해(analytical solution)가 존재하지 않을 수도 있음
<해결책>
-> 직접 계산이 어려운 p(x)를 간접적으로 계산하는 방법
-> 샘플링을 통한 근사 추정을 활용
-> q(z)라는 샘플링이 쉬운 임의의 분포를 도입하여 p(x)를 근사하기(ex. 가우시안 분포)

위 식은 다시 기대값(Expected Value)형태로 변환할 수 있음

즉, q(z)로부터 샘플링된 값들을 활용해 p(x)를 근사적으로 추정할 수 있음
< q(z)가 유용한 이유 >
- 샘플링이 쉬움: q(z)는 단순 형태(가우시안 분포)를 사용하므로 샘플링이 쉽고 효율적
- 복잡한 계산 회피: z에 대한 직접적인 적분 대신, q(z)로부터 샘플을 생성해 평균을 계산하는 방식으로 복잡한 계산을 피할 수 O
- 근사 정확도 조정 가능: q(z)를 잘 설계하면 p(x)를 더 정확하게 근사할 수 O
그래서 p(x)를 최대화하려면, q(z)로부터 샘플링된 z에 대해 다음값을 최대화하면 됨

But, 우리가 실제로 최대화하려는 것은 관찰 데이터 xn에 대한 로그 가능도(log-likelihood)

-> 직접적으로 계산은 어려우므로 이를 근사적으로 최적화하기 위해 ELBO 도입


-> 결합 확률 p(x,z)를 조건부 확률로 분리

-> 로그의 곱셈을 분리

-> 첫번째 항은 KL발산의 정의에 따라 다음처럼 나타낼 수 O


정리하면



-> ELBO를 최대화하면 logp(x)에 가까워짐
-> 즉, ELBO를 최대화하는 것 -> 로그 가능도를 최대화하는 간접적인 방법
-> KL 발산이 0에 가까워지면 ELBO는 logp(x)에 도달하고, q(z)와 p(z|x)가 더 가까워짐
-> 즉, q(z)는 latent 변수 z에 대한 사후 분포 p(z|x)를 잘 근사하게 됨
-> logp(x)를 직접 계산하기 어려우니 계산 가능한 ELBO를 도입하여 학습 가능하게 함
-> Lower Bound는 항상 실제 목표 값(logp(x))보다 작거나 같으므로, 최적화를 수행하면서 목표에서 멀어지지 않으므로 안전함
<ELBO를 최대화하면>
1) KL 발산 최소화: q(z)와 p(z|x)를 정렬(alignment)하여 두 분포를 더 가깝게 만듦
2) 로그 가능도 근사: KL 발산이 작아지면서, ELBO는 logp(x)에 더 가까워짐


-> 이제 모델의 파라미터 𝜽와 𝒒𝜶(𝒛|𝒙𝒏)의 파라미터 𝜶를 동시에 최적화함

1) 𝐥𝐨𝐠𝒑𝜽(𝒙𝒏) 최대화
2) 𝒒𝜶(𝒛|𝒙𝒏)를 𝒑𝜽(𝒛|𝒙𝒏)와 비슷하게 함
<파라미터화된 𝒒𝜶(𝒛|𝒙𝒏)의 이점>
- 더 유연한 근사 분포: 𝒒𝜶(𝒛|𝒙𝒏)를 신경망 같은 복잡한 함수로 파라미터화하면, 단순한 정규분포보다 훨씬 유연하게 𝒑𝜽(𝒛|𝒙𝒏)를 근사할 수 O
- 효율적 학습: 𝛼를 포함한 최적화는 𝒒𝜶(𝒛|𝒙𝒏)를 계속 업데이트하며, 데이터에 더 적합한 잠재 분포를 학습함
- 변분 추론 자동화: 복잡한 모델에서도 자동으로 근사 분포를 학습할 수 있어, 수작업으로 분포를 설계할 필요가 감소
<𝒒𝜶(𝒛|𝒙𝒏)의 역할 = 인코더와 유사함>
- 관찰 데이터 xn에서 잠재 변수 z를 추출하는 역할
-> 인코더와 마찬가지로, 𝒒𝜶(𝒛|𝒙𝒏)는 z가 xn로부터 잘 decoding될 가능성을 최대화해야 함


-> 계산이 간단, 효율적 + 분포가 연속적이라 latent space에서 샘플링이 용이












-> z의 샘플링을 평균(mean)과 표준편차(std)를 사용하여 구현하면, 확률적 변수의 샘플링을 미분 가능하게 만들어서 alpha or theta에 대한 gradient를 계산할 수 있음. 신경망의 학습에서 사용됨
: 확률적 모델(ex. VAE)에서 잠재 변수 z를 샘플링 시,

-> 이 방식은 샘플링이 확률적(랜덤)이므로 역전파를 통한 학습 과정에서 미분이 불가능함
: 확률적 샘플링을 분리하여 미분 가능하게 만드는 방법
1) 랜덤성은 고정된 분포(예: 표준 정규분포 N(0,1))에서 샘플링
2) 평균과 표준편차를 통해 샘플링된 값을 변환


-> 이 방식은 랜덤성(ϵ)을 분리하여, μ와 𝜎에 대한 경사 하강법을 적용할 수 있게 함!(학습 가능해짐)
-Pytorch 코드:



구조화된 잠재 공간 (Structured latent space)
: VAE는 연속적이고 구조화된 잠재 공간을 강제하여, 데이터 간의 부드러운 보간(smooth interpolation)을 가능하게 함
: 스타일 변환(style transfer)과 같은 응용 분야에서 유용
KL 발산을 통한 정규화 (Regularization via KL divergence)
: KL 발산은 더 일반화된 표현을 학습하도록 유도하여 과적합(overfitting)을 방지하고 모델의 견고성(robustness)을 향상
-> 잠재 공간(latent space)을 원하는 분포(일반적으로 표준 정규 분포 N(0,1))에 맞게 정렬(alignment)시키기 때문
1) VAE of Stable Diffusion
: VAE를 통한 이미지 representation 정규화

2) Stable Diffusion의 잠재 확산(Latent Diffusion)
: 조건부 정보를 기반으로 잠재 표현(latent representation)을 생성
-> 데이터를 직접 다루는 대신, 데이터를 잠재 공간(latent space)으로 변환하여 효율적으로 학습하고 생성 과정을 수행하는 방법

1) 인코더 (Encoder)
고차원 데이터를 저차원의 잠재 공간으로 변환
예: 512x512 크기의 이미지를 잠재 공간에서 64x64 크기의 표현으로 압축
2) Diffusion Model
잠재 공간에서 노이즈를 점진적으로 제거하거나 추가하며 데이터를 생성
학습 과정에서 잠재 표현이 노이즈로 오염된 후, 이를 원래 데이터에 가깝게 복원하도록 학습
3) 디코더 (Decoder)
잠재 표현을 다시 고차원 데이터(이미지, 오디오 등)로 복원
디코더는 데이터의 품질을 결정하는 중요한 요소


: 종단간 음성 합성에서 스타일 제어 및 전이에 대한 잠재 표현 학습


VAEs는 잠재 공간(latent space)에 구조를 부여하도록 설계되었으며, 이는 모델의 일반화 능력을 향상시키고 더 세밀한 표현을 생성할 수 있도록 도움
VAE는 모델의 제어 가능성(controllability)을 개선할 수 있음
VAE는 데이터의 계산 불가능한 주변 로그 가능성(marginal log-likelihood)을 근사하는 변분 하한(ELBO)을 최대화하도록 최적화됨
-> 모델을 학습시키려면 음의 ELBO(negative ELBO)를 최소화하면 됨
-> 손실(Reconstruction Loss와 KL Loss)을 최소화하여 학습