🤖 Deep Learning

Score-based Generative Modeling (NCSN)

date
Jul 1, 2025
slug
ncsn
author
status
Public
tags
Deep Learning
Generative Models
summary
Noise가 추가된 다양한 데이터로부터 점수 함수(확률 밀도가 높아지는 방향으로 가는 함수)를 학습하여, 점차 nosie를 제거하며 새로운 데이터를 샘플링하는 모델
type
Post
thumbnail
category
🤖 Deep Learning
updatedAt
Jul 2, 2025 04:00 AM

Taxonomy of Generative Models

notion image
생성 모델들은 두 가지 방식으로 분류됩니다.
  • Explicit density (명시적 밀도): 데이터의 확률 밀도 함수 를 명시적으로 정의하고 직접적으로 계산할 수 있도록 설계됩니다. 즉, 주어진 데이터 가 얼마나 확률이 높은지를 수치적으로 정확히 계산할 수 있는 모델들입니다.
  • Implicit density (암시적 밀도): 데이터의 확률 밀도 함수 를 직접적으로 정의하거나 계산하지 않습니다. 대신, 모델이 주어진 샘플링 절차를 통해 학습 데이터와 유사한 새로운 샘플을 생성할 수 있도록 설계됩니다. 즉, 를 알 수는 없지만, 에서 샘플링하는 방법을 학습합니다.
    • ※ 참고 (GAN)
      • Cycle GAN이 Pix2Pix에서의 어떤 문제를 어떻게 해결했는가?
        • → 각 도메인(동물, 풍경 등)에서, pixel level에서의 각각이 매칭이 되는 같은 scene을 나타내는 2개의 이미지가 paired 된 형태로 존재해야만 전환이 가능했었는데, Cycle consistency loss를 활용해서 도메인이 갔다가 되돌아와서도 같아야 한다는 조건을 줘서 paired 이미지가 없어도 전환 가능.
      • Star GAN은 Cycle GAN의 어떤 문제를 해결했는가?
        • → 이전까지의 Pix2Pix 모델들은 도메인마다 모델이 새로 필요했었는데, 하나의 모델로 모든 도메인에 활용 가능하도록 만듦.
      • Style GAN에서 feature를 disentangle 시킨다는 말의 의미?
        • → 사람들이 인식하고 있는 중요한 attributes를 서로 간에 상관이 없는 것들끼리는 상관이 없게 embedding space 반영되도록 하는 것. (ex 머리가 길다고 여자가 아닌데 데이터에서는 correlation 이라고 믿는 경우 disentangle 필요) 8개의 FC layer로 이런 embedding space를 만들도록 상정하고 에서 거꾸로 매핑을 시켜서 control 했더니 style이 잘 적용됨.

Score-based Generative Modeling

notion image
 

Score-based Generative Modeling

notion image
  • 는 데이터의 분포를 의미하며, 이 데이터의 분포는 알 수 없음.
  • Score-based generative model의 핵심 아이디어, ‘확률 밀도의 기울기가 큰 쪽으로 가면 되지 않을까?’
    • 는 확률 값이 0~1사이 이므로 scale을 키우기 위해 로그를 취했을 뿐 기울기를 사용한다는 사실에는 변화 없음.
  • 입력 데이터가 차원이므로, 그 데이터 확률 밀도에 대한 기울기(score matching function)도 차원이므로 결국 이를 학습하는 모델 차원의 벡터를 출력함.
 
notion image
  • 왼쪽 이미지는 Data 분포를 나타냄.
  • 가운데 이미지는, 왼쪽 이미지의 데이터 점들 외에도 어딘지 모르는 상태의 모든 점들에 대해서, 어느 방향으로 가야 가장 데이터가 많이 있을 것인지 그 gradient를 score matching으로 계산한 것을 나타냄.
    • 그래서 (확률 밀도 기울기)와 비슷해 지도록 modeling
  • 오른쪽 이미지는 Langevin dynamics를 활용하여 sampling.
 
notion image
  • Loss function은 모델 가 예측한 값이, target 값인 를 따라가도록 l2 norm을 씌워서 전체 데이터에 대해 기대값을 구함.
    • Implicit density 모델이기 때문에 는 모름.
    • 기대값의 정의를 가지고 적분()으로 변경.
      • 왼쪽 항은 학습 해야 할 가 들어가 있지 않으므로 결국 상수 항 ⇒ 무시.
      • 오른쪽 항은 적용
        • 부분 적분 적용 후, 왼쪽 항은 전체에 대해서 적분하게 되면 분포가 올라간 곳도 있고 내려간 곳도 있고 해서 0이 됨.
        • 부분 적분 적용 후, 오른쪽 항만 남음.
      • 다시 기대값으로 변경
⇒ 결국 기대값의 likelihood를 maximize하게 만들면 됨.
 

Challenge 1: Limited Support

notion image
  • 그런데 몇 가지 문제가 있음.
    • 대부분의 데이터 분포가 몰려있다는 점. → 빨간 원에서는 support가 없기 때문에 미분을 할 수 없어 어느 방향으로 가야 하는지 알 수가 없음. Diffusion에서 매우 중요한 문제!
 

Proposed Solution: Denoising Score Matching

notion image
  • AutoEncoder에게 복원 작업 시킬 때, noise를 좀 추가해 가지고 시키면 복원 시키는 것도 배우지만 noise를 없애는 것도 같이 배우면서 좀 더 robust 해진다.”는 아이디어를 활용함.
    • 원본 데이터 를 받아서, noise를 더해서 만든 데이터 를 만들고 그 분포를 perturbed data distribution 라고 함.
      • 대신에 를 사용함.
 
notion image
  • 에다가 특성을 가진 정규 분포를 가지고 noise를 추가해서 를 만들면, 특성을 갖는 정규 분포를 따르게 됨.
    • 는 정규 분포이기 때문에 에 대해서 미분하게 되면 최종 오른쪽 항이 됨.
      • ※ 참고 (정규 분포의 확률 밀도 함수, PDF)
        그런데 는 상수이므로 로 놓고 로 놓겠음.
        먼저 에 대해 미분하면
        잠깐 상수는 그대로 두고 미분 해보면
        즉, 가 됨.
        따라서 임.
        이제 이를 원래 미분 공식에 대입.
        정리하면, 가 됨.
         
        그런데 이므로
        위에서 구한 를 대입하여 정리하면,
        이 됨.
         
        여기에 대신에 , 대신에 가 들어가서 위의 식이 됨.
         
         
 

Sampling with Langevin Dynamics

notion image
  • 분자 시스템 운동 역학 방법으로 샘플링함.
    • 외력에 의해 정해지는 방향을 의미하는 첫 번째 항과 random하게 돌아다니는 분자를 나타내는 두 번째 항의 합.
      • 마찬가지로, 확률 분포를 따르는 score function, noise 2가지로 구성됨.
 

Challenge 3: Incorrect Relative Density

notion image
  • 비율과 비슷하게 분포를 따르도록 의도해야 하는데 지금은 그게 아님.
 

Proposed Solution: Multiple Noise Levels

notion image
  • 현재 까지 정리: perturbing data를 만들어 놨기 때문에 분포가 거의 없는 곳에서도 방향을 찾을 수 있지만, 데이터가 따라야 하는 방향의 비율이 적용이 안 됨.
  • Noise에 다변화를 주는 방법 사용.
 

Annealed Langevin Dynamics

notion image
  • 처음엔 가장 오른쪽의 noise가 가장 큰 에서 시작함.
    • 데이터 분포가 없는 곳까지 아예 흩뿌려 놓은 상태. (처음부터 아예 각 원본 분포에 가깝게 배치하면 noise 크기로 인해 그 주변 분포로만 따라가게 되므로)
  • 다음으로 좀 더 작은 크기의 noise로 줄여나가면서 데이터 분포를 학습해 나가게 함.
 

(NCSN) Noise Conditional Score Networks: Training

notion image
  • 자리에 를 대입을 시키게 되면 3번 째 식이 됨.
  • 그리고 마지막으로 sampling 할 때 multi level noise 사용해서 합산하는 게 마지막 식이 됨.
 

Noise Conditional Score Networks: Inference

notion image
  • Score로 방향()을 대략적으로 정하고, noise( )와 함께 원래 있던 방향()에 더해서 다음 방향()을 정하고
  • T가 충분히 크면 어디에서 시작하든 실제로 데이터가 제일 많은 곳으로 흘러 들어갈 것임.