ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • cs236 15장 Evaluating Generative Models
    논문 리뷰/cs236 2024. 8. 2. 16:08

    Generative model 복습을 위해 CS236 강의를 듣고 정리해보고자 한다.

    피피티는 아래 페이지를 참고하면 된다.

    https://deepgenerativemodels.github.io/

     

    ※ PPT의 내용 정리와 더불어 같이 보면 좋을 자료들을 정리했습니다. 강의를 보고 이해한대로 작성했기 때문에 부정확한 내용이 포함되어 있을 수 있음을 알려드립니다. 또한 참고한 모든 블로그와 유튜브는 출처(Reference)에 있습니다.

     

    summary

    3장 Autoregressive Model

    4장 Maximum Likelihood Learning

    5-6장 Latent Variable Models(VAEs)

    7-8장 Normalizing Flow Models

    9-10장 Generative Adversarial Networks(GAN)

    11-12장 Energy-based Models(EBM)

    13-14장 Score-based Models

     

    지금까지 배운 내용을 정리하면 다음과 같다.

    오늘은 배운 모델들의 성능을 비교하는 지표에 대해 배워보고자 한다. 우리는 생성형 모델을 어떻게 평가할까?

    판별자를 평가하는 것은 쉽다. 한번도 학습하지 않은 새로운 데이터 셋을 통해 성능을 실험해보면 되기 때문이다. 그런데 생성자를 평가하는 것은 어렵다. 생성자를 학습하는 목적도 가지각색이고, 각각의 목적에 따라 비교하는 것 역시 쉽지 않다.

    • Density estimation
    • Compression
    • Sampling / generation
    • Latent representation learning
    • Custom downstream task(Semisupervised learning, image translation, compressive sensing, few shot / zero shot performance ...)

    Density Estimation or Compression

    density estimation이 얼마나 잘 되었는지를 확인하기 위해서는 학습된 모델 $p_{\theta}(x)$에 대해 $E_{p_{data}}[\log{p_{\theta}(x)}]$를 계산하면 된다.

     

    Shannon coding에서는 정보를 압축할 때 codeword의 길이를 각각의 데이터 포인트 $x$에 대해 $\log{\frac{1}{p_{\theta}(x)}}$가 되도록 결정하라고 제시한다.이 말은 나올 확률이 높은 문자를 짧은 길이의 문자로 압축하고, 자주 나오지 않는 문자는 긴 길이의 문자로 압축하라는 의미로, 모스 부호에서 자주 쓰이는 알파벳  E나 A는 한두문자로,Q는 네 개의 문자로 encode하는 것과 같은 이치이다.

    또한 자연어 처리에서도 언어 모델의 성능을 평가하는 지표로 perplexity metric를 사용하기도 한다.

    Compression을 비교하는 것은 tractable한 likelihood를 가진 모델들에게는 직관적인 척도이지만, VAE, GAN, EBM 등의 모델을은 density가 intractable하기 때문에 적절하지 못하다.그래도 VAE는 ELBO를 비교할 수 있다. 그렇다면 다른 모델에 대해서는 또 어떤 방식으로 성능을 비교할 수 있을까?

     

    Kernel Density Estimation

    모델 $p_{\theta}(x)$가 intractable하다고 하자. 우리에게 6개의 샘플이 있이 아래와 같이 주어져 있을 때 $p_{\theta}(-0.5)$를 추정하는 방법은 세가지가 있다.

    1. 확률 0 : -0.5가 샘플에 포함되어 있지 않으므로 확률 0을 부여한다
    2. 확률 1/6 : bin의 가로폭이 2이도록 히스토그램을 그린다
    3. 확률 ? : Kernel density estimate(KDE)을 통해 $\hat{p}(x)$를 추정한다. 다음 식에서 $\sigma$는 bandwidth parameter이고, K는 Kernel function이며, n은 S의 샘플 갯수이다.

    왼쪽은 히스토그램, 오른쪽은 가우시안 커널을 통해 KDE한 결과물

    더보기

    Kernel이란?

    A kernel K is any non-negative function satisfying two properties
    Normalization: 적분값이 1 (ensures KDE is also normalized)
    Symmetric: K(u) = K(−u) for all u

     

    $\sigma$는 smoothness를 결정하며 $\sigma$값이 작으면 undersmoothed, $\sigma$가 크면 oversmoothed curve를 얻는다.

     

    단점) KDE는 차원이 높아지만 정확도가 떨어진다.

    HYPE

    HYPE(Human eYe Perceptual Evaluation (Zhou et al., 2019))는 생성된 이미지를 사람에게 보여주고, 사람이 true data와 fake data를 구분하는 정도를 정량적으로 측정한 지표다. HYPE은 아래와 같이 두 가지 종류를 생각해볼 수 있다.

    하지만 사람의 평가는 비싸며, 편향되어 있고, 다시 재구현하기가 상당히 어렵다는 단점이 있다. 또한 training data set에 포함된 샘플을 그대로 기억해서 베끼는 생성자가 만든 샘플 역시 골라내기 어렵다.

     

    위와 같은 문제점을 극복하기 위해 다양한 정량적 지표들이 개발되었으며, 이 강의에서는 Inception Score, Frechet Inception Distance, Kernel Inception Distance 등을 배워볼 것이다.

     

    Inception Score(IS)

    가정1) 샘플의 품질 평가는 라벨이 지정된 데이터셋을 사용해 샘플의 품질을 평가한다

    가정2) 어떤 데이터 포인트 $x$에 대해 라벨 $y$를 예측할 수 있는 좋은 확률적 분류기 $c(y|x)$를 가지고 있다.

    좋은 생성자는 sharpness와 diversity를 갖추고 있으며, Inception Score = sharpness(S) X diversity(D)로 표현된다.

    Sharpness - 생성된 샘플이 다양한 라벨과 표현을 가지는지 평가

    S가 크면 분류기 $c(y|x)$가 예측에 자신감이 있음을 의미하며, 이는 $c(y|x)$의 출력 분포가 낮은 엔트로피를 가지고 있다는 의미다. 

    Diversity - 생성 모델이 다양한 샘플을 생성하는 능력을 평가

    생성 모델이 다양한 클래스에 걸쳐 고르게 분포된 샘플을 생성할 경우 $c(y)$의 엔트로피가 높아지며, 이는 높은 다양성을 의미한다. 

     

    * 만약 Classifier가 없는 경우 Inception Net과 같은 대형 데이터 셋으로 학습된 분류기 사용 가능

     

    Frechet Inception Distance(FID)

    Inception Score는 $p_{\theta}$로부터의 샘플만을 요구할 뿐, $p_{data}$를 고려하지 않는다. FID는 생성된 샘플과 데이터 테스트 셋의 feature representation의 유사도를 측정하는 지표로 FID가 낮을수록 샘플 퀄리티는 더 좋다.

    multivariate Gaussian을 사용한 이유는 Wasserstein-2 distane가 analytic하게 계산되기 때문

    Kernel Inception Distance(KID)

    Maximum Mean Discrepancy(MMD)는 두 분포 $p$와 $q$에서 샘플을 비교하여 두 분포간의 차이를 측정하는 통계적 방법으로 주로 분포 간의 모멘트(평균, 분산 등)의 차이를 비교하여 분포 간의 유사성을 평가한다. 이 때 적절한 커널을 골라 아래와 같이 계산한다.

    여기서 첫번째 기댓값은 분포 $p$ 내의 샘플 간 유사성의 기대값을, 두번째 기대값은 분포 $q$내의 샘플 간 유사성의 기대값을, 마지막 기대값은 분포 $p$와 $q$의 혼합 샘플 간의 유사성의 기대값을 나타낸다. 즉, MMD가 클수록 두 분포 간의 차이가 크다는 것을 의미한다.

     

    Kernel Inception Distance(KID)는 MMD를 사전에 학습된 Classifier의 latent space에서 계산한다.

    KID를 FID와 비교하면

    (1) FID는 biased되어 있지만FID의 값은 항상 양수), KID는 unbiased되어 있고(KID는 양수일 필요가 없음)

    (2) FID는 $O(n)$으로 계산 가능하지만 KID는 $O(n^2)$으로 계산 가능하다는 차이점이 있다.

     

    Evaluating unsupervised latent representations - Clustering, Compression, Disentanglement

    Clustering

    위 두 개의 클러스터링 결과 중 어느 것이 더 나은가? 클러스터링을 통해 성능을 비교하기 위해서는 다음과 같은 점수들을 이용할 수 있다.

    • Completeness score 
    • Homogeneity Score
    • V measure score

    Compression

    laten representations는 원본 데이터의 중요한 특징은 유지하면서도 데이터의 차원을 줄이는 방식으로 학습되는데, 이 떄 latent representation을 평가하는 한 가지 방법은 최대 압축을 통해 얻을 수 있은 reconstruction sample의 정확도를 측정하는 것이다.

     

    위 그림에서 자세히 보면 JPEG는 21배로 축소 후 복원했을 때 이미지가 선명하지 못한 것을 알 수 있다. 이에 비해 NCode는 90배로 축소 후 복원했을 때도 매우 선명한 이미지를 나타내고 있다.

    Disentanglement

    ※ Disentanglement 관련 내용은 StyleGAN 논문 리뷰에서 자세히 볼 수 있다.

    우리는 각각의 특징이 독립적이고 이해 가능한 방식으로 학습되기를 바란다. 예를 들어 만약 우리가 어떤 이미지에 안경을 씌우고 싶다고 생각해보자. 많은 모델들은 안경을 씌우는 과정에서 본래 이미지가 가지고 있던 특성들이 같이 변하게 되는데, 이는 특징들이 entangle되어 있기 때문이다.

     

    disentanglement를 측정하는 metric는 다음과 같다.

    • Beta-VAE Metric
    • Factor-VAE Metric
    • Mutual Information Gap(MIG)
    • SAP score
    • DCI disentanglement
    • Modularity

    Solving tasks through prompting

    언어 모델을 사용해 자연어 처리 과제를 직접 해결하는 방법은 언어 모델이 다음 단어를 예측하는 능력을 활용해서 다양한 일을 수행하도록 한다. 여기서 중요한 개념은 "promp engineering"와 "Finetuning"이다.

     

    Promp engineering은 언어 모델이 특정 task를 잘 수행할 수 있도록 적절한 문구나 예시를 제공하는 기술이다.

    Finetuning은 특정 과제에 대한 모델의 성능을 향상시키기 위해 기존 언어 모델을 추가 데이터나 특정 task에 맞춰 미세조정한다는 의미다.

    더보기

    GPT가 알려줌

    "Solving tasks through prompting"은 인공지능(AI) 모델, 특히 GPT-3와 같은 대규모 언어 모델을 이용해 특정 작업을 해결하는 방법론을 의미합니다. 이 방법론은 주로 "프롬프트(prompt)"라는 입력 텍스트를 사용하여 모델에게 원하는 작업을 수행하도록 하는 기술을 지칭합니다.

    주요 개념:

    1. 프롬프트(prompt):
      • 프롬프트는 AI 모델에 주어지는 입력 텍스트로, 모델이 특정 작업을 수행하도록 유도하는 역할을 합니다.
      • 프롬프트의 형식이나 내용에 따라 모델의 응답이 달라지며, 이를 잘 설계하는 것이 프롬프트 기반 학습의 핵심입니다.
    2. 작업 해결:
      • 특정 질문에 답하거나, 텍스트를 생성하거나, 번역, 요약, 코드 작성 등의 다양한 작업을 수행할 수 있습니다.
      • 예를 들어, "Translate the following English sentence to French: 'Hello, how are you?'"라는 프롬프트를 사용하여 번역 작업을 수행할 수 있습니다.
    3. Few-shot, One-shot, Zero-shot learning:
      • Few-shot, One-shot, Zero-shot 학습과도 연관이 있습니다. 예를 들어, Zero-shot 학습에서는 모델에게 작업에 대한 예제나 추가적인 학습 없이 바로 작업을 수행하도록 프롬프트만 제공하고, Few-shot 학습에서는 몇 개의 예제와 함께 프롬프트를 제공합니다.
    4. 응용:
      • 자연어 처리(NLP) 작업에서 주로 사용되며, 모델이 학습한 사전 지식을 활용해 다양한 작업을 수행하도록 합니다.
      • 응답의 품질은 프롬프트의 설계에 따라 크게 좌우되므로, 좋은 프롬프트를 설계하는 것이 매우 중요합니다.

    목적:

    "Solving tasks through prompting"은 AI 모델을 특정 작업에 맞게 조정하거나 훈련시키지 않고도, 기존의 학습된 정보를 활용하여 다양한 작업을 수행할 수 있도록 하는 접근법입니다. 이는 모델이 학습한 지식을 새로운 작업에 유연하게 적용할 수 있도록 하며, 사용자는 다양한 작업을 수행할 수 있습니다.

    댓글

Designed by Tistory.