Abstract

 이 연구는 확산 모델이 현재 최첨단 생성 모델보다 우수한 이미지 샘플 품질을 달성할 수 있음을 보여준다. 무조건적인 이미지 합성에서는 일련의 실험을 통해 더 나은 아키텍처를 찾아냈으며, 조건부 이미지 합성에서는 classifier guidance를 사용하여 샘플 품질을 향상시켰다. 이 방법은 classifier의 기울기를 사용하여 다양성과 충실도 간의 균형을 조정하는 간단하고 효율적인 방법이다. ImageNet 데이터셋에서 FID 점수는 128×128 해상도에서 2.97, 256×256 해상도에서 4.59, 512×512 해상도에서 7.72를 기록했으며, BigGAN-deep 모델과 유사한 성능을 25회의 순방향 패스만으로 달성하면서도 분포를 더 잘 포괄했다. 마지막으로, classifier guidance는 업샘플링 확산 모델과 잘 결합되어 FID를 256×256 해상도에서 3.94, 512×512 해상도에서 3.85로 더욱 향상시켰다.

1. Introduction

 지난 몇 년 동안, 생성 모델들은 인간과 유사한 자연어를 생성하고, 무한한 고품질의 합성 이미지를 만들며, 다양한 인간 음성 및 음악을 생성할 수 있는 능력을 갖추게 되었다. 이러한 모델들은 텍스트 프롬프트로부터 이미지를 생성하거나 유용한 특징 표현을 학습하는 등 다양한 방식으로 사용될 수 있다. 현재 이러한 모델들이 이미 현실적인 이미지와 소리를 생성할 수 있지만, 현 상태보다 더 나아질 여지가 많으며, 더 나은 생성 모델은 그래픽 디자인, 게임, 음악 제작 등 수많은 분야에 광범위한 영향을 미칠 수 있다.

 

 현재 GANs는 FID, Inception Score 및 Precision과 같은 샘플 품질 지표에서 대부분의 이미지 생성 작업에서 최첨단 성능을 보여주고 있다. 그러나 일부 지표는 다양성을 충분히 포착하지 못하며, GANs는 최신 확률 기반 모델들보다 다양성을 덜 포착하는 것으로 나타났다. 또한, GANs는 훈련하기 어려우며, 신중하게 선택된 하이퍼파라미터와 정규화 기법 없이는 종종 학습이 실패한다.

 

 GANs가 최첨단을 유지하고 있지만, 그 단점으로 인해 새로운 도메인에 확장하고 적용하기 어렵다. 이에 따라 GAN과 같은 샘플 품질을 달성하기 위해 확률 기반 모델에 대한 많은 연구가 진행되어 왔다. 이러한 모델들은 더 많은 다양성을 포착하고 GANs보다 훈련 및 확장이 용이하지만, 여전히 시각적 샘플 품질에서는 뒤처진다. 또한, VAEs를 제외하면 이러한 모델들은 샘플링 시간이 GANs보다 느리다.

 

 확산 모델은 최근 고품질 이미지를 생성할 수 있는 것으로 입증된 확률 기반 모델의 한 종류로, distribution coverage(생성 모델이 데이터의 전체 분포를 얼마나 잘 포착하고 표현하는가 = 훈련된 데이터셋의 다양한 사례들을 잘 반영하고 있는가), stationary training objective(학습하는 동안 목표함수가 변하지 않음), 용이한 확장성 등의 바람직한 특성을 제공한다. 이 모델들은 신호에서 점진적으로 노이즈를 제거하여 샘플을 생성하며, 그 훈련 목표는 재가중된 변분 하한으로 표현될 수 있다. 이 모델들은 이미 CIFAR-10에서 최첨단 성능을 보유하고 있지만, LSUN과 ImageNet과 같은 어려운 생성 데이터셋에서는 여전히 GANs에 뒤처진다. Nichol과 Dhariwal은 이러한 모델들이 계산량이 증가할수록 성능이 안정적으로 향상되며, 업샘플링 스택을 사용하여 ImageNet 256×256 데이터셋에서도 고품질 샘플을 생성할 수 있다고 밝혔다. 그러나 이 모델의 FID는 여전히 이 데이터셋의 최첨단인 BigGAN-deep과 경쟁하기에 부족하다.

 

 우리는 확산 모델과 GANs 간의 격차가 적어도 두 가지 요인에서 비롯된다고 가정한다: 첫째, 최근의 GAN 연구에서 사용된 모델 아키텍처가 많이 탐색되어 최적의 설계를 정제해았다는 점; 둘째, GANs는 다양성을 희생하여 충실도(생성된 샘플이 실제 데이터와 유사한 정도) 높이는 방식으로 높은 품질의 샘플을 생성할 수 있지만, 전체 분포를 커버하지는 않는다는 점이다. 우리는 이러한 이점을 확산 모델에 도입하기 위해 먼저 모델 아키텍처를 개선하고, 다양성과 충실도 간의 균형을 조정하는 방식을 고안했다. 이러한 개선을 통해 우리는 여러 지표와 데이터셋에서 새로운 최첨단 성능을 달성하였다.

 

 이 논문의 나머지 부분은 다음과 같이 구성된다. 2장에서는 Ho et al.와 Nichol 및 Dhariwal, Song et al.의 연구에 기반한 확산 모델의 배경과 평가 설정을 설명한다. 3장에서는 FID를 크게 향상시키는 간단한 아키텍처 개선 사항을 소개한다. 4장에서는 샘플링 중 분류기의 기울기(확률을 높이거나 낮추기 위해 필요한 변화 방향)를 사용하여 확산 모델을 guide하는 방법을 설명한다. 우리는 단일 하이퍼파라미터인 분류기 기울기의 크기를 조정하여 다양성과 충실도 간의 균형을 맞출 수 있음을 발견했으며, 이 기울기 스케일 인자를 대폭 증가시켜도 적대적 예제(분류기와 같은 모델을 속이기 위해 고의적으로 조작된 입력)를 얻지 않는다. 마지막으로 5장에서는 우리의 개선된 아키텍처를 통해 unconditional 이미지 합성 작업에서 최첨단 성능을 달성하였으며, 분류기 가이던스를 사용하여 조건부 이미지 합성에서도 최첨단 성능을 달성했음을 보여준다. 분류기 가이던스를 사용할 때, 우리는 단 25번의 순방향 패스만으로도 BigGAN과 유사한 FID를 유지할 수 있음을 발견했다. 또한, 우리의 개선된 모델과 업샘플링 스택을 비교한 결과, 두 접근 방식이 상호 보완적인 개선을 제공하며, 이를 결합하면 ImageNet 256×256 및 512×512에서 최상의 결과를 얻을 수 있음을 알 수 있었다.

2. Background

 이 절에서는 확산 모델에 대한 간략한 개요를 제공한다. 보다 자세한 수학적 설명은 부록 B를 참고하기 바란다.

 

 고수준에서 보면, 확산 모델은 점진적인 노이즈 추가 과정을 역으로 수행하여 분포에서 샘플을 추출한다. 구체적으로, 샘플링은 노이즈 x_T에서 시작하여 점차 노이즈가 적은 샘플 x_{T-1}, x_{T-2},...을 생성하며 최종 샘플 x_0에 도달한다. 각 시점 는 특정 노이즈 수준에 대응하며, x_t는 시점 t에 따라 신호 x_0와 일부 노이즈 ϵ의 혼합으로 생각할 수 있다. 이 논문에서는 노이즈 ϵ이 자연 이미지에 잘 작동하고 다양한 유도 과정을 단순화하는 대각 가우시안 분포에서 나오는 것으로 가정한다.

 

 확산 모델은 x_t에서 x_{t-1}로 약간 더 "노이즈가 제거된" 샘플을 생성하도록 학습된다. Ho et al. [25]는 이 모델을 함수 ϵ_θ(x_t,t)로 매개변수화하여, 노이즈가 섞인 샘플 x_t의 노이즈 성분을 예측한다고 설명한다. 이 모델을 훈련시키기 위해, 미니배치의 각 샘플은 데이터 샘플 x_0, 시점 t및 노이즈 ϵ을 무작위로 선택하여 생성된 노이즈가 추가된 샘플 x_t (식 17)를 사용한다. 훈련 목표는 단순한 평균 제곱 오차 손실로, 실제 노이즈와 예측된 노이즈 간의 차이 ∣∣ϵ_θ(x_t,t)−ϵ∣∣^2를 최소화하는 것이다 (식 26).

 

 노이즈 예측기 ϵ_θ(x_t,t)로부터 샘플을 생성하는 방법은 즉각적으로 명확하지 않다. 확산 샘플링은 x_T에서 시작하여 x_t에서 x_{t-1}을 반복적으로 예측하는 방식으로 진행된다. Ho et al. [25]는 합리적인 가정 하에서 x_t가 주어졌을 때 x_{t-1}의 분포 p_θ(x_{t−1}∣x_t)를 대각 가우시안 N(x_{t−1};μ_θ(x_t,t),Σ_θ(x_t,t))로 모델링할 수 있으며, 이때 평균 μ_θ(x_t,t)ϵ_θ(x_t, t)의 함수로 계산될 수 있음을 보여준다 (식 27). 이 가우시안 분포의 분산 Σ_θ(x_t,t)는 고정된 상수로 설정하거나 별도의 신경망 헤드로 학습할 수 있으며, 두 접근법 모두 총 확산 단계 수 T가 충분히 클 때 고품질 샘플을 생성할 수 있다.

 

 Ho et al. [25]는 실제 변분 하한 L_vlb보다 단순한 평균 제곱 오차 목표 L_simple가 실무적으로 더 잘 작동한다고 언급한다. 또한, 이 목표로 훈련하고 해당 샘플링 절차를 사용하는 것이 Song과 Ermon [58]의 논문에서 다중 노이즈 수준으로 훈련된 모델에서 샘플링하는 데 사용하는 Langevin dynamics 기반의 비슷한 절차와 동등하다고 언급한다. 우리는 종종 "확산 모델"이라는 용어를 이러한 모델들의 양쪽 클래스를 지칭하는 약어로 사용한다.

2.1 Improvements

 최근 연구들로 diffusion model이 개선되었는데 다음과 같다.

 1. reverse process variance의 매개변수화

 Ho et al. [25]에서는 역 과정(reverse process)에서 사용하는 분산 Σ_θ(x_t,t)을 고정된 상수로 설정했다. 그러나 Nichol과 Dhariwal [43]은 이를 신경망의 출력으로 매개변수화하여 더 나은 샘플링 성능을 얻을 수 있음을 발견했다. 이들은 분산 Σ_θ(x_t,t)을 다음과 같이 정의한다:

 여기서 β_t와 β~_t는 Ho et al. [25]에서 정의된 상한과 하한 분산 값을 나타낸다. v는 신경망의 출력으로, 이 두 값 사이를 보간한다. 이 방법은 샘플링 단계가 적을 때에도 샘플 품질을 유지하면서 성능을 향상시다.

 

2. 하이브리드 목표

 Nichol과 Dhariwal [43]은 ϵ_θ(x_t, t)와 Σ_θ(x_t,t)를 훈련하기 위한 혼합 손실 함수를 제안했다. 이들은 단순 손실 L_simple과 변분 하한 L_vlb를 가중합하여 사용한다. 이를 통해 reverse process에서의 분산을 학습하게 되며, 샘플링 단계 수를 줄여도 샘플 품질의 큰 저하 없이 샘플링이 가능하다.  연구에서는 이 목표함수와 매개변수화를 채택하였다.

 

 3. DDIM

 Song et al.은 DDPM의 대안으로 DDIM을 제안했다. DDIM은 동일한 forward marginals를 가지면서 비마르코브 노이즈 추가 과정을 사용한다. 이 과정은 역 노이즈의 분산을 조정하여 다양한 역 샘플러를 생성할 수 있다. 특히 노이즈를 0으로 설정하면 임의의 모델 ϵ_θ(x_t, t)를 결정론적인 mapping으로 전환할 수 있어 샘플링 단계를 줄이면서도 고품질의 이미지를 생성할 수 있다. Nichol과 Dhariwal [43]은 50단계 이하의 샘플링 시 이 방법이 유리하다고 밝혔으며, 본 연구에서도 이 접근 방식을 사용함.

2.2 Sample Quality Metrics

 모델 간의 샘플 품질 비교를 위해 다음과 같은 지표를 사용하여 정량적 평가를 수행한다. 이러한 지표는 실무에서 자주 사용되며 인간의 판단과 잘 일치하지만, 샘플 품질 평가의 완벽한 대체물은 아니며, 더 나은 평가 지표를 찾는 것은 여전히 해결되지 않은 문제이다.

 

 Inception Score (IS)는 Salimans et al. [54]에 의해 제안되었으며, 모델이 전체 ImageNet 클래스 분포를 얼마나 잘 포착하는지와 동시에 개별 샘플이 단일 클래스의 설득력 있는 예제를 생성하는지를 측정한다. 이 지표의 단점은 전체 분포를 포괄하거나 클래스 내 다양성을 포착하는 것을 보상하지 않으며, 데이터셋의 일부 하위 집합만 기억하는 모델도 높은 IS를 가질 수 있다는 점이다 [3]. IS보다 더 나은 다양성 포착을 위해 Fréchet Inception Distance (FID)는 Heusel et al. [23]에 의해 제안되었으며, 이는 Inception Score보다 인간의 판단과 더 일치한다고 주장했다. FID는 Inception-V3 [62] 잠재 공간에서 두 이미지 분포 간의 거리를 대칭적으로 측정한다. 최근에, sFID는 Nash et al. [42]에 의해 제안되었으며, 표준 합성 특징 대신 공간적 특징을 사용하는 FID의 버전이다. 이들은 이 지표가 공간적 관계를 더 잘 포착하며, 일관된 고수준 구조를 가진 이미지 분포에 보상을 준다고 밝혔다. 마지막으로, Kynkäänniemi et al. [32]는 향상된 Precision과 Recall 지표를 제안하여, 샘플 충실도를 모델 샘플이 데이터 매니폴드에 속하는 비율(Precision)과 다양성을 데이터 샘플이 샘플 매니폴드에 속하는 비율(Recall)로 각각 측정한다.

 

 우리는 FID를 기본 지표로 사용하여 전체 샘플 품질을 비교한다. 이는 다양성과 충실도를 모두 포착하며, 최첨단 생성 모델 연구에서 사실상 표준 지표로 사용되어 왔다 [27, 28, 5, 25]. 우리는 충실도를 측정하기 위해 Precision 또는 IS를 사용하고, 다양성 또는 분포 커버리지를 측정하기 위해 Recall을 사용한다. 다른 방법과 비교할 때는 가능한 경우 공개 샘플이나 모델을 사용하여 이 지표들을 다시 계산한다. 이는 두 가지 이유 때문이다: 첫째, 일부 논문 [27, 28, 25]은 쉽게 접근할 수 없는 훈련 세트의 임의 하위 집합과 비교하고, 둘째, 미세한 구현 차이가 FID 값에 영향을 줄 수 있기 때문이다 [45]. 일관된 비교를 위해, 우리는 reference batch로 전체 훈련 세트를 사용하고 [23, 5], 모든 모델에 대해 동일한 코드베이스를 사용하여 지표를 평가한다.

3. Architecture Improvements

 이 섹션에서는 확산 모델의 샘플 품질을 개선하기 위해 여러 아키텍처 변형을 실험적으로 조사하였다.

 

 Ho et al. [25]는 확산 모델을 위한 U-Net 아키텍처를 도입하였으며, Jolicoeur-Martineau et al. [26]은 이전의 아키텍처 [58, 33]에 비해 샘플 품질이 상당히 향상된 것을 발견하였다. U-Net 모델은 residual layers와 다운샘플링 합성곱 스택을 사용하고, 이어서 residual layers와 업샘플링 합성곱로 동일한 공간 크기를 가진 레이어를 연결하는 스킵 연결을 포함한다. 또한, 이들은 16×16 해상도에서 단일 헤드를 사용하는 글로벌 어텐션 레이어를 사용하고, 각 residual 블록에 타임스텝 임베딩을 투영하였다. Song et al. [60]은 U-Net 아키텍처의 추가적인 변경이 CIFAR-10 [31]과 CelebA-64 [34] 데이터셋에서 성능을 향상시켰음을 발견하였다. 우리는 ImageNet 128×128에서 동일한 결과를 보이며, 더 큰 해상도의 더 크고 다양한 데이터셋에서도 아키텍처가 샘플 품질에 큰 영향을 미칠 수 있음을 확인하였다.

 

다음과 같은 아키텍처 변경 사항을 탐구하였다

 

  • 깊이 증가 vs. 너비 증가: 모델 크기는 일정하게 유지하며 깊이와 너비를 조절함.
  • 어텐션 헤드 수 증가.
  • 16×16 해상도뿐만 아니라 32×32, 16×16, 8×8 해상도에서도 어텐션 사용.
  • BigGAN의 잔여 블록을 사용하여 업샘플링 및 다운샘플링 수행.
  • 잔여 연결을 √1/2로 스케일링.

 이 섹션의 모든 비교에서, 우리는 ImageNet 128×128 데이터셋에 대해 배치 크기 256으로 모델을 훈련하고, 250 샘플링 단계를 사용하여 샘플링을 수행하였다. 우리는 위의 아키텍처 변경 사항을 적용하여 모델을 훈련시키고, 훈련 중 두 개의 다른 지점에서 FID를 평가하여 성능을 비교하였다(Table 1).

iterations = 미니배치를 모델에 입력하고 학습을 진행한 횟수

 Residual connections 재스케일링을 제외한 모든 다른 수정 사항이 성능을 향상시키며 긍정적인 복합 효과를 나타냈다. Figure 2에서 볼 수 있듯이, 깊이를 증가시키는 것이 성능에 도움이 되지만, 훈련 시간이 증가하여 동일한 성능에 도달하는 데 더 오랜 시간이 걸리므로 후속 실험에서는 이 변경을 사용하지 않기로 결정하였다.

 우리는 또한 Transformer 아키텍처 [66]에 더 잘 맞는 다른 어텐션 구성을 연구하였다. 이를 위해, 어텐션 헤드를 고정하거나 각 헤드당 채널 수를 고정하는 실험을 수행하였다. 나머지 아키텍처로는 128 기본 채널, 해상도당 2개의 잔여 블록, 다중 해상도 어텐션, BigGAN 업/다운샘플링을 사용하였으며, 모델을 700K 반복 동안 훈련시켰다. Table 2는 우리의 결과를 보여주며, 더 많은 헤드나 헤드당 적은 채널 수가 FID를 개선함을 나타낸다. Figure 2에서 볼 수 있듯이, wall-clock time 측면에서 64 채널이 최적이므로, 우리는 기본값으로 64 채널을 사용하기로 결정하였다.

3.1 Adaptive Group Normalization

 이 절에서는 적응형 그룹 정규화(AdaGN) 레이어에 대해 실험한다. 이 레이어는 그룹 정규화 작업 후 각 잔여 블록에 타임스텝과 클래스 임베딩을 포함하며, 이는 adaptive instance norm [27] 및 FiLM [48]과 유사하다. 우리는 이 레이어를 다음과 같이 정의한다: AdaGN(h, y) = y_s * GroupNorm(h) + y_b, 여기서 h는 첫 번째 합성곱 이후 잔여 블록의 중간 활성화이고, y = [y_s, y_b]는 타임스텝과 클래스 임베딩의 linear projection으로부터 얻어진다.

 초기 확산 모델에서 AdaGN이 성능을 향상시키는 것을 확인하였고, 따라서 모든 실험에서 기본적으로 포함되었다. Table 3에서 이 선택을 제거하여 실험한 결과, 적응형 그룹 정규화 레이어가 FID를 향상시키는 것으로 나타났다. 두 모델 모두 기본 채널 128개, 해상도당 2개의 잔여 블록, 헤드당 64채널을 갖는 다중 해상도 어텐션, 그리고 BigGAN 업/다운샘플링을 사용하였으며, 700K 반복 동안 훈련되었다.

 

 이 논문의 나머지 부분에서는 다음과 같은 최종 개선된 모델 아키텍처를 기본 설정으로 사용한다:

  1. Resolution당 2개의 residual block
  2. 가변 너비
  3. Head당 64개 채널이 있는 multiple head
  4. 32, 16, 8 resoltion에서의 attention
  5. BIGAN의 residual block으로 up/downsampling
  6. Residual block에 timestep embedding과 class embedding을 주입하기 위한 AdaGN

4. Classifier Guidance

 잘 설계된 아키텍처를 사용하는 것 외에도, 조건부 이미지 합성을 위한 GANs [39, 5]는 클래스 레이블을 많이 활용한다. 이는 종종 클래스-조건부 정규화 통계 [16, 11]와 분류기처럼 작동하도록 설계된 헤드를 가진 판별기 [40]의 형태로 나타난다. 이러한 모델의 성공에 클래스 정보가 중요한 또 다른 증거로, Lucic et al. [36]은 레이블이 제한된 상황에서 합성 레이블을 생성하는 것이 도움이 된다는 것을 발견했다.

 

 GANs에 대한 이러한 관찰을 바탕으로, 우리는 확산 모델을 클래스 레이블에 조건화하는 다양한 방법을 탐구하는 것이 합리적이다. 우리는 이미 AdaGN에 클래스 정보를 통합하고 있다(3.1절). 여기에서는 다른 접근 방식을 탐구한다: 분류기 p(y|x)를 활용하여 diffusion generator를 개선하는 방법이다. Sohl-Dickstein et al. [56]과 Song et al. [60]은 사전 훈련된 확산 모델을 분류기의 기울기를 사용하여 조건화할 수 있는 한 가지 방법을 제시한다. 구체적으로, 우리는 노이즈가 포함된 이미지 x_t에 대해 분류기 p_ϕ(y∣x_t,t)를 훈련하고, 그런 다음 기울기 ∇_{x_t}log⁡p_ϕ(y∣x_t,t)를 사용하여 확산 샘플링 과정을 임의의 클래스 레이블 y로 안내할 수 있다.

 

 이 절에서는 먼저 분류기를 사용하여 조건부 샘플링 프로세스를 도출하는 두 가지 방법을 검토한다. 그런 다음, 이러한 분류기를 실제로 사용하여 샘플 품질을 개선하는 방법을 설명한다. 우리는 간결함을 위해 p_ϕ(y∣x_t,t)=p_ϕ(y∣x_t)ϵ_θ(x_t,t)=ϵθ(x_t)를 표기하지만, 이는 각 타임스텝 에 대해 별도의 함수를 나타내며, 훈련 시 모델은 입력 t에 대해 조건화되어야 함을 유의해야 한다.

4.1 Conditional Reverse Noising Process

 Unconditional reverse noising process가 pθ(xt|xt+1)인 diffusion model을 레이블 로 컨디셔닝하면 다음과 같이 샘플링하는 것으로 충분하다.

 여기서 Z는 정규화 상수이다(증명은 부록 H에 있다). 이 분포에서 정확하게 샘플링하는 것은 일반적으로 실행 불가능하지만, Sohl-Dickstein et al. [56]은 이를 약간 왜곡된 가우시안 분포로 근사할 수 있음을 보여준다. 여기서는 이 유도를 검토한다.

 

 우리의 확산 모델은 가우시안 분포를 사용하여 타임스텝 xt_1에서 이전 타임스텝 x_t를 예측한다:

 우리는 log⁡p_ϕ(y∣x_t)의 곡률이 Σ−1에 비해 낮다고 가정할 수 있다. 이 가정은 무한한 확산 단계에서 ∥Σ∥→0일 때 합리적이다. 이 경우, log⁡p_ϕ(y∣x_t)를 x_t=μ 주변에서 테일러 전개를 사용하여 다음과 같이 근사할 수 있다:

여기서 이고 은 상수이다. 이를 대입하면 다음과 같다.

는 정규화 상수 Z에 해당하기 때문에 무시할 수 있다. 따라서 conditional transition operator를 unconditional transition operator와 유사한 가우시안 분포로 근사할 수 있으며, 이 때 평균이 만큼 이동한다. Algorithm 1은 해당 샘플링 알고리즘을 요약한다. 뒤의 섹션에서 기울기에 대한 scale factor 를 포함하며 자세히 설명한다.

4.2 Conditional Sampling for DDIM

 위의 조건부 샘플링 유도는 확률적 확산 샘플링 과정에만 유효하며, DDIM [57]과 같은 결정적 샘플링 방법에는 적용할 수 없다. 이를 위해, 우리는 Song et al. [60]에서 제안한 점수 기반 조건화 기법을 사용한다. 이 기법은 확산 모델과 점수 매칭 [59] 간의 관계를 활용한다. 특히, 샘플에 추가된 노이즈를 예측하는 모델 ϵ_θ(x_t)가 주어지면, 다음과 같이 점수 함수를 유도할 수 있다:

이를 p(x_t)p(y∣x_t)의 점수 함수에 대입하면 다음과 같다:


마지막으로, 결합 분포의 점수에 해당하는 새로운 epsilon 예측 ϵ^(x_t)을 다음과 같이 정의할 수 있다:

이후, 수정된 노이즈 예측 ϵ^(x_t)을 사용하여 일반 DDIM에서 사용하는 것과 동일한 샘플링 절차를 사용할 수 있다. 알고리즘 2는 해당 샘플링 알고리즘을 요약한다.

4.3 Scaling Classifier Gradients

 분류기 가이던스를 대규모 생성 작업에 적용하기 위해, 우리는 ImageNet에서 분류 모델을 훈련시켰다. 분류기 아키텍처는 UNet 모델의 다운샘플링 부분에 8x8 레이어에서 최종 출력을 생성하기 위한 어텐션 풀링을 추가한 것이다. 이러한 분류기는 대응하는 확산 모델과 동일한 노이즈 분포에서 훈련되며, 오버피팅을 줄이기 위해 랜덤 크롭을 추가한다. 훈련이 완료된 후, 우리는 알고리즘 1에 따라 식 (10)을 사용하여 분류기를 확산 모델의 샘플링 과정에 통합하였다.

 

초기 실험에서는 무조건적 ImageNet 모델에서 분류기 기울기를 1보다 큰 상수로 스케일링하는 것이 필요함을 발견하였다. 스케일 1을 사용할 때, 최종 샘플에 대해 분류기가 합리적인 확률(약 50%)을 할당하였으나, 시각적으로 샘플이 의도된 클래스와 일치하지 않았다. 분류기 기울기를 증가시키면 이 문제가 해결되었으며, 분류기의 클래스 확률이 거의 100%로 증가하였다. Figure 3은 이 효과의 예를 보여준다.

분류기 기울기 스케일링의 효과를 이해하기 위해, s⋅∇_xlog⁡p(y∣x)=∇_xlog⁡1/Zp(y∣x)^s를 고려하자. 여기서 는 임의의 상수이다. 결과적으로, 조건화 과정은 p(y∣x)^s에 비례하는 재정규화된 분류기 분포에 이론적으로 기반을 두고 있다. s>1일 때, 이 분포는 p(y∣x)보다 더 날카로워지며, 이는 더 높은 충실도(하지만 덜 다양한) 샘플을 생성하는 데 유리할 수 있다.

 

 위의 유도에서는 기본 확산 모델이 무조건적인 모델 p(x)이라고 가정했다. 조건부 확산 모델 p(x∣y)을 훈련시키고 동일한 방식으로 분류기 가이던스를 사용할 수도 있다. Table 4는 분류기 가이던스가 무조건적 모델과 조건부 모델 모두의 샘플 품질을 크게 향상시킬 수 있음을 보여준다.

 충분히 높은 스케일을 사용하면, 가이던스를 받은 unconditional 모델이 가이던스를 받지 않은 조건부 모델의 FID에 가까워질 수 있지만, 클래스 레이블을 직접 사용하여 훈련하는 것이 여전히 도움이 된다. 조건부 모델에 가이던스를 추가하면 FID가 더욱 개선된다.

 

Table 4는 또한 분류기 가이던스가 정밀도를 향상시키는 반면, 리콜은 감소시키는 효과가 있음을 보여준다. 이는 샘플의 충실도와 다양성 간의 절충을 야기한다. Figure 4에서는 기울기 스케일에 따라 이러한 절충이 어떻게 변하는지 명확하게 평가하였다.

기울기 스케일을 1.0 이상으로 조정하면, 리콜(다양성의 측정치)은 점차 감소하고, 정밀도와 IS(충실도의 측정치)는 증가하는 경향을 보인다. FID와 sFID는 다양성과 충실도 모두에 의존하므로, 최적의 값은 중간 지점에서 얻어진다.

또한, Figure 5에서는 BigGAN의 트렁케이션 기법과 우리의 가이던스를 비교하였다.

그 결과, FID와 Inception Score 사이의 절충에서 분류기 가이던스가 BigGAN-deep보다 일관되게 더 나은 성능을 보임을 확인하였다. 그러나 정밀도/리콜 절충에 있어서는, 분류기 가이던스가 특정 정밀도 임계값까지는 더 나은 선택이지만, 그 이후로는 더 나은 정밀도를 달성할 수 없다는 점이 명확하지 않다.

Abstract

 Denoising Diffusion Probabilistic Models (DDPMs)는 적대적 훈련 없이도 고품질의 이미지 생성을 달성했지만, 샘플을 생성하기 위해 많은 단계에서 마르코프 연쇄를 시뮬레이션해야 한다. 샘플링 속도를 높이기 위해 우리는 DDPMs와 동일한 훈련 절차를 가진 더 효율적인 반복적 암시적 확률 모델 클래스인 Denoising Diffusion Implicit Models (DDIMs)을 제안한다. DDPMs에서는 생성 과정이 특정 마르코프 확산 과정의 역방향으로 정의된다. 우리는 동일한 훈련 목표를 달성하는 비마르코프 확산 과정 클래스를 통해 DDPMs를 일반화한다. 이러한 비마르코프 과정은 결정론적인 생성 과정에 해당할 수 있으며, 이는 훨씬 더 빠르게 고품질 샘플을 생성하는 암시적 모델을 만든다. 우리는 실험적으로 DDIMs가 DDPMs에 비해 10배에서 50배 빠르게 고품질 샘플을 생성하고, 계산과 샘플 품질을 맞바꾸고, 잠재 공간에서 직접 의미 있는 이미지 보간을 수행하며, 매우 낮은 오류로 관찰값을 재구성할 수 있음을 보여준다.

1. Introduction

 Deep Generative 모델은 여러 도메인에서 고품질 샘플을 생성하는 능력을 입증했다(Karras et al., 2020; van den Oord et al., 2016a). 이미지 생성 측면에서, generative adversarial networks (GANs, Goodfellow et al. (2014))는 현재 variational autoencoders (Kingma & Welling, 2013), autoregressive models (van den Oord et al., 2016b), normalizing flows (Rezende & Mohamed, 2015; Dinh et al., 2016)과 같은 likelihood 기반 방법보다 더 높은 샘플 품질을 보인다. 그러나 GANs는 훈련을 안정화하기 위해 매우 특정한 최적화와 아키텍처 선택을 요구하며(Arjovsky et al., 2017; Gulrajani et al., 2017; Karras et al., 2018; Brock et al., 2018), 데이터의 다양한 유형을 잘 생성하지 못할 수도 있다.(Zhao et al., 2018).

 

반면, iterative generative models (Bengio et al., 2014)인 denoising diffusion probabilistic models (DDPM, Ho et al. (2020))와 noise conditional score networks (NCSN, Song & Ermon (2019))는 적대적 훈련 없이도 GANs와 비교할 만한 샘플을 생성할 수 있음을 입증했다. 이를 위해, 다양한 수준의 Gaussian noise로 손상된 샘플을 잡음 제거하는 여러 오토인코딩 모델이 훈련된다. 샘플은 white noise에서 시작하여 점진적으로 이미지를 생성하는 Markov chain에 의해 생성된다. 이 generative Markov Chain 과정은 Langevin dynamics (Song & Ermon, 2019)을 기반으로 하거나, 이미지를 점진적으로 잡음으로 변환하는 forward diffusion 과정을 역으로 수행하여 얻어진다(Sohl-Dickstein et al., 2015).

 

이 모델들의 중요한 단점은 고품질 샘플을 생성하는 데 많은 반복이 필요하다는 점이다. DDPMs의 경우, 생성 과정(noise에서 data로)은 전방 확산 과정(data에서 noise로)의 역을 근사하기 때문에 수천 단계가 필요하다. 모든 단계를 반복해야 단일 샘플을 생성할 수 있어, 네트워크를 한 번 통과하면 되는 GANs에 비해 훨씬 느리다. 예를 들어, Nvidia 2080 Ti GPU에서 32 × 32 크기의 이미지를 5만 개 샘플링하는 데 DDPM은 약 20시간이 걸리지만, GAN은 1분 이내에 가능하다. 더 큰 이미지의 경우 문제가 더 심각해져, 동일한 GPU에서 256 × 256 크기의 이미지를 5만 개 샘플링하는 데 거의 1000시간이 걸릴 수 있다.

 

 DDPMs와 GANs 사이의 효율성 격차를 해소하기 위해, 우리는 denoising diffusion implicit models (DDIMs)을 제안한다. DDIMs는 implicit probabilistic models (Mohamed & Lakshminarayanan, 2016)이며, 동일한 목적 함수로 훈련된다는 점에서 DDPMs와 밀접한 관련이 있다.

 

 

 제3절에서는 DDPMs가 사용하는 마르코프 확산 과정을 비마르코프 과정으로 일반화하며, 이를 통해 여전히 적절한 역생성 마르코프 연쇄를 설계할 수 있음을 보인다. 그 결과로 도출된 variational training objectives는 DDPM을 훈련시키는 데 사용된 목표와 정확히 일치한다. 따라서 동일한 신경망을 사용하여 다른 비마르코프 확산 과정을 선택하고 이에 상응하는 역생성 마르코프 연쇄를 선택함으로써 큰 범주의 생성 모델을 자유롭게 선택할 수 있다(4.1절). 특히, 짧은 생성 마르코프 연쇄를 도출하는 비마르코프 확산 과정을 사용할 수 있으며(4.2절), 이는 적은 단계로 시뮬레이션할 수 있어 샘플 효율성을 크게 높이지만 샘플 품질에는 거의 영향을 미치지 않는다.

 

 제5절에서는 DDIMs의 DDPMs 대비 여러 실증적 이점을 보여준다. 첫째, 제안된 방법을 사용하여 샘플링 속도를 10배에서 100배까지 가속할 때 DDIMs는 DDPMs보다 우수한 샘플 생성 품질을 보인다. 둘째, DDIM 샘플은 동일한 초기 잠재 변수를 사용하여 다양한 길이의 마르코프 연쇄로 여러 샘플을 생성할 때 유사한 고수준 특징을 가지는 "일관성" 속성을 가진다. 셋째, DDIMs의 "일관성" 덕분에 DDPMs와 달리 초기 잠재 변수를 조작하여 의미있는 이미지 보간을 수행할 수 있다. 이는 확률적 생성 과정으로 인해 이미지 공간 근처에서 보간하는 DDPMs와는 다르다.

2. Background

 q(x_0)를 따르는 x_0에 대해 q(x_0)를 근사하는 p(x_0)를 학습하여 쉽게 샘플링하는 것에 관심이 있다. 아래 식은 DDPM에서 확인할 수 있음.

 파라미터 θ는 variational lower bound를 maximizing하면서 q(x_0)를 학습한다.

 VAE와 달리 DDPM은 fixend inference procedure q(x_{1:T}|x_0)를 사용하고 latent variables의 크기가 원본 이미지와 같아 상대적으로 차원이 높다. DDPM 논문에서 사용한 Markov chain with Gaussain transitions는 다음과 같음.

여기 중요한점: α에 대한 notation이 DDPM과 다르다.
DDPM

 위 과정을 forward process라 하고 p(x_{0:T})가 generative process로 intractable한 q(x_{t-1}|x_0)를 근사하여 samling 하는 process임. 직관적으로 forawrd process는 점진적으로 noise를 첨가하고 generative process는 점진적으로 noise를 제거한다.

 forward pprocess의 놀라운 성질은 x_0에서 x_t를 한번에 구할 수 있다.

 만약 α_T가 작다면 q(X_T|x_0)는 standard Gaussian for all x_0에 가까워져 p(x_T)를 N(0, I)로 잡는 것이 자연스럽다. 마만약 모든 p(x_{t-1}|x_t)가 학습되는 mean functions와 고정된 variances를 가지면 (2)에서 얻은 objectives는 다음의 식으로 간단해진다.

여기서 ε_θ는 ε _t를 예측하는데 쓰인 함수이고 γ는 α에 의존하는 positive 계수들이다. DDPM의 초기 논문에서는 이 γ를 1로 두었고 이 objective는 score matching을 기반으로 하는 noise conditional score networks의 objective와 동일하다. 이렇게 학습된 모델이 x_0는 x_T가 먼저 sampling 되고 x_{t-1}이 하나씩 sampling되면서 최종적으로 만들어진다.
 DDPM에서 forward process의 lengh를 결정하는 hyperparameter인 T는 매우 중요하다. Variational 관전에서 large T는 reverse process가 Gaussian에 가깝도록 만들어준다. 따라서 DDPM에서는 T를 큰 값인 1000을 사용하지만 이 때문에 sampling process가 다른 모델들에 비해서 느리다.

3. Variational Inference for non-Markovian forward process

 Generative model에서 reverse process를 inference process로 근사하기 때문에 이 과정에서 iterations의 숫자를 줄일 수 있는 방법을 생각해보았다. 우리의 중요한 관찰을 DDPM의 obejctive인 L_γ는 모든 latent variable의 joint인 q(x_{1:T}|x_0)에 직접적으로 의존하는 것이 아니라 오직 marginals인 q(x_t|x_0)에 의존한다는 점이다. 
 그런데 이 marginal 분포를 만드는 다양한 inference distribution이 있으므로 inference process(=sampling process)에 다른 non-Markovian 분포를 찾아볼 것이고 이를 통해 새로운 generative process를 유도해볼 것이다. 이 새로운 non-Markovian inference process는 똑같은 surrogate objective function을 만족하고 Gaussian case가 아닌 경우에도 non-Markovian 관점을 적용해볼 것이다.

3.1 Non-Markovian Forward Process

 Inference distribution인 Q를 생각해보면 

다음의 식이 성립한다. q(x_{t-1}|x_t, x_0)의 평균과 분산은 이 분포의 marginal인 q(x_{t-1}|x_0)가

t만 t-1로 바꿔서 생각

위를 만족시키기 위해 만들어짐. 따라서 이 (7)에 해당하는 분포는 위에서 말한 요구사항이었던 marginals를 만족한다. 이 분포로부터 새로 만든 forward process는 베이즈 정리에 의해

이 되고 이 역시 가우시안이다.

이 분포와 달리 (8)의 분포는 더 이상 Markovian이 아니고 파라미터 σ는 forward process의 stochastic한 정도를 다룬다. σ가 0이면 전혀 노이즈가 추가되지 않는 경우인데 이 경우에 x_0와 x_t를 안다면 x_{t-1} 역시 fixed한 값으로 정해진다.

3.2 Generative Process and Unified Variationl Inference Objective

  다음은 trainable generative process인 p_θ(x_{0:T})인데 p_ θ^t(x_{t-1}|x_t)는 q(x_{t-1]|x_t,x_0)에 대한 지식으로 만들어진다. 직관적으로 noisy observation인 x_t가 주어졌을 때 먼저 대응되는 x_0를 예측하고 이를 사용해 x_t-1을 우리가 정의한 분포인 q(x_{t-1]|x_t,x_0)로 sampling하는 방식이다.
 먼저 q(x_0)를 따르는 x_0에 대해 x_t를 (4)를 통해 얻으면 다음과 같다.

역으로 x_t로부터 x_0를 예측해야하기 때문에 x_0로부터 더해진 noise인 ε을 예측해야한다.(ε_θ(x_t)가 그 역할) 따라서 아래 식인 denoised observation을 얻을 수 있다.

 그럼 우린 generative process를 정의할 수 있고 p(x_T) = N(0, I)를 따른다고 하면

가 된다.(DDPM과 달리 x_1에서 x_0를 생성하는 과정에도 Gaussian noise를 첨가함.)
우리는 아래의 variational inference objective를 minimize하는 θ를 구한다.

q는 (6)에서 p는 (1)에서 얻는다.

 J의 정의를 보면 마치 σ가 달라짐에 따라 여러 model을 훈련해야 하는 것처럼 보인다. 하지만 특정 가중치 γ에 대해 J_σ와 L_γ가 동일하다고 알려져있다.
 

 Variational objective L_γ는 모델의 파라미터 θ가 다른 t에 걸쳐 공유되지 않는다면 θ의 최적해가 weights인 γ에 의존하지 않는다는 점에서 특별하다.(합계에서 t에 의존하는 각 항을 별도로 최적화하여 전역 최적해를 달성하기 때문) 이러한 L의 성질은 두 가지 의미를 가진다. 첫째는 DDPM에서 variational lower bound로 L_1을 사용하는 것을 정당화하고 둘째는 J가 어떤 L과 동일하므로 J의 최적해는 L_1의 최적해와 동일하다는 것이다.
 따라서  모델의 파라미터 θ가 t에 걸쳐 공유되지 않는다면 L_1을 J의 surrogate objective로 사용할 수 있다.
(θ가 t에 걸쳐 공유된다는 것은 모든 시점 t에 대해 동일한 θ를 사용한다는 것을 의미)

4. Sampling from generalized generative process

 목적 함수로 L_1을 사용함으로써, 우리는 Markovian inference process뿐만 아니라, 우리가 설명한 σ로 매개변수화된 많은 non-Markovian forward process에 대한 생성 과정도 학습하고 있다. 따라서 사전 훈련된 DDPM을 새로운 objectives의 해결책으로 보아 σ를 변경하여 우리의 필요에 맞는 샘플을 생성하는데 더 나은 generative process를 찾는 것에 집중할 수 있다.

4.1 Denoising Diffusion Implicit Models

 Eq.(10)을 통해 x_{t-1}을 x_t로부터 sampling하면 다음과 같다.

α_0는 1로 정의

 σ를 달리하면 generative process가 달라지지만 동일한 모델의 θ를 사용하므로 re-training은 필요하지 않다. 만약

라면 forward process는 Markovian이 되고 DDPM의 generative process가 된다.
 우리는 σ가 모든 t에 대해 0인 special한 상황에 주목하였는데 이 상황의 경우 forward process가 given x_{t-1} and x_0에 대해 deterministic해진다. 이렇게 얻어지는 모델은 implicit 모델(fixed procedure과 latent varaibles를 통해 samples가 만들어짐)인데 우리의 모델은 implicit model이면서 DDPM objective로 훈련되므로 denoising diffusion implicit model(DDIM)으로 명하였다. (그런데 이제 forward process는 더 이상 diffusion이 아님)

4.2 Accelerated Generation Process

 Generative process는 reverse process의 근사이다. 이 때 forward process가 T step을 거쳐야하기 때문에 generative process역시 T steps를 거쳐야했다. 그러나 denoising objective L_1은 q(x_t|x_0)가 고정되어 있는 한 특정한 forward procedure에 의존하지 않으므로 우리는T보다 짧은 길이의 forward procedure만 고려할 수 있었다. -> 이를 통해 generative process에서 다른 모델을 훈련할 필요없이 가속화할 수 있음.
  Forward process의 모든 잠제변수를 고려하는 것이 아니라 [1, ... , T]의 sub-sequence이면서 길이가 S인 τ에서 {x_ τ1, ..., x_ τS}를 생각하면 

q(x_ τi|x_rj, x_0)의 marginal이 q(x_ri|x_0) = N((α_ τi)**0.5*x_0, (1- α_ τi)I)가 되도록 잡아 sampling 과정의 반복되는 특성을 사용해 계산 효율성을 늘릴 수 있따.
 DDIM 역시 trainin에서는 section 3에서 언급한 대로 L_1을 목적 함수로 훈련할 수 있기 때문에 training은 변화가 필요하지 않다. 다만 생성시

α_0는 1로 정의

에 약간의 변경을 추가하여 새로운, 더 빠른 생성 과정을 얻는다. 

5. Experiments

 이 section에서는 적은 iterations로 image generation을 수행할 때 DDIM이 DDPM보다 우수함을 보여주며 DDPM generation process에 비해 10배에서 100배의 속도 향상을 보인다고 한다. 게다가 DDPM과 달리 초기 잠재 변수인 x_T가 고정되면 DDIM은 generation trajectoryy에 관계없이 high-level image features를 유지하므로 latent space에서 직접적으로 보간을 수행할 수 있다. DDIM은 또한 latent code에서 재구성할 수 있기에 sample을 인코딩하는 데 사용할 수 있지만 DDPM은 확률적 샘플링 과정으로 이를 수행할 수 없다.
 
 각 데이터셋에 대해 동일한 훈련된 모델인 T=1000, 목적함수로는 L_1을 사용한다. Section 3에서 주장하는 바와 같이, 훈련 절차와 관련하여 변경 사항이 필요하지 않고 샘플을 생성하는 방식이 달라진다. 샘플이 얼마나 빨리 얻어지는지 제어하는 요소인 τ와 deterministic DDIM과 stochastic DDPM 사이의 비율을 결정하는 σ만 달라진다.
 
 우리는 [1, ...T]의 다양한 sub-sequences인 τ와 다양한 분산 하이퍼파라미터인 σ를 고려한다. 비교를 단순화 하기 위해 다음 형식의 σ를 고려한다.

 위 식의 η가 직접 제어할 수 있는 하이퍼파라미터로 η가 1일 때 원래의 DDPM을 의미하며 η가 0일 때 DDIM을 나타낸다.

5.1 Sample Quality and Efficiency 

 Table 1을 보면 샘플을 생성하는 데 사용된 timesteps 수(S)와 η를 달리하였다. 당연히 샘플의 품질은 S가 증가할 수록 높아졌으며 이는 샘플  품질과 계산 비용 간의 tradeoff를 나타낸다. S가 작을 때 DDIM이  최고의 샘플 품질을 달성하고 DDPM에 가까워질 수록 샘플 품질이 일반적으로 더 낮았다. 하지만 S가 클 경우 DDPM이 좋은 성능을 봉ㅆ다.
 
 Figure 3에서는 동일한 샘플링 단계 수와 다양한 η값을 가진 CIFAR10 및 CelebA 샘플을 보여주는데 DDPM의 경우 샘플링 경로가 10단계에 일 때 샘플 품질이 급격히 저하된다. η 값의 경우 생성된 이미지가 짧은 경로에서 더 많은 noisy perturbations를 갖는 것으로 판단된다. (이 때문에 FID 점수가 낮은 것으로 판단됨.)
 
 Figure 4에서는 샘플을 생성하는 데 필요한 시간이 샘플 경로의 길이에 따라 선형적으로 증가함을 보여줌. DDIM이 훨씬 적은 단계로 샘플을 생성할 수 있으므로 DDIM이 샘플을 더 효율적으로 생성할 수 있음을 시사한다. 

5.2 Sample Consistency in DDIMs

 DDIM의 경우 생성 과정은 결정론적이기 때문에 x_0는 오직 초기 상태인 x_T에 의존한다. Figure 5에서 보면 동일한 초기 x_T로 시작하면서 다른 generative trajectories(different τ)에서 생성된 이미지를 관찰했는데 흥미롭게도 동일한 초기 x_T로 생성된 이미지들은 생성 경로와 관계없이 대부분 고수준 특징들이 유사한다. 많은 경우에 단지 20단계로 생성된 샘플들이 1000단계로 생성된 샘플들과 고수준 특징 면에서 유사하며, 세부 사항에서만 약간의 차이를 보였다. 이는 x_T 자체가 이미지의 충분한 정보를 담고 있는 잠재 인코딩임을 나타내고 세부 사항은 생성 경로가 긴 부분에서 담당하는 것으로 보인다.

5.3 Interpolation in Deterministic Generative Process

 DDIM sample의 고수준 특징이 x_T에 의해 인코딩되므로 다른 implicit probabilistic models에서 관찰된 것과 유사한 semantic interpolation effect를 내는지 확인해보았다. DDPM에서는 동일한 x_T가 확률적 생성 과정으로 다양한 x_0를 생성할 수 있기 때문에 DDPM의 보간과는 다르다. 
 Figure 6에서 x_T에서의 간단한 보간이 두 샘플 사이에서 의미론적으로 유의미한 보간을 이끌어 낼 수 있음을 보여준다. 이를 통해 DDIM에서는 DDPM에서는 못하는 잠재 변수를 통해 생성된 이미지를 고수준에서 직접적으로 제어할 수 있다.

5.4 Reconstruction from Latent Space 

 블로그에선 생략하였지만 DDIM이 특정 ODE에 대한 오일러 적분 방식이기 때문에 x_0에서 x_T로 인코딩하고 x_T를 재구성할 수 있는 확인해보았다. CIFAR-10 모델로 CIFAR-10 test set에서 인코딩 및 디코딩을 S steps 수행해보았다. Error는 per-dimension mean squared error를 사용하였다. Table 2를 보면 우리의 결과는 DDIM이 더 큰 S 값에서 더 낮은 재구성 오류를 가지는데 이는 neural ODEs 및 normalizing flows와 유사한 특성을 가지고 있음을 보여준다. 동일한 것을 DDPM에 대해서는 수행할 수 없는데 이는 DDPM의 확률적 특성 때문이다.

 2023.11.15~2023.12.11까지 진행되었던 나와 팀원의 첫 데이콘 대회.
 Public에서 6등으로 마무리 하였지만 과적합에 때문에 Private은 48등으로 아쉽게 마무리하였다..
 성능을 높이기 위해 노력했던 우리 팀의 방법들과 다른 상위팀의 아이디어를 종합하여 최고의 모형을 만들어보려 한다.

데이터 설명

https://dacon.io/competitions/official/236193/data

 

대구 교통사고 피해 예측 AI 경진대회 - DACON

분석시각화 대회 코드 공유 게시물은 내용 확인 후 좋아요(투표) 가능합니다.

dacon.io

위 사이트의 데이터 설명란 참고

 

우리팀 전략

우리 팀이 사용했던 아이디어들은 다음과 같다.

 

1. 평가 기준이 RMSLE임을 고려하여 ECLO가 20이상인 데이터를 제거
2. 사고유형을 기준으로 데이터를 3분할하여 학습시키고 예측하는 것
3. 공휴일 칼럼 추가
4. 계절 칼럼 추가
5. 출퇴근 칼럼 추가
6. ECLO 로그 변환

Private 2등 code '비타민 13기'

핵심 아이디어

1. ECLO 로그 변환
2. 이상치 처리(상위 0.1% 제거)
3. 외부 데이터 활용
-> sun(일출, 일몰), 총통행량(택시), 평균통행량(택시), 평균속도(택시)
4. 파생변수 생성
-> 주말, 도로형태1, 도로형태2, 가해운전자 평균연령, 피해운전자 평균 연령, 가해운전자 평균성별, 피해운전자 평균성별, ride_dangerous, accident_case_dangerous
5. 전국 데이터 활용(전국 18개의 도시)
6. 가중치 기반 앙상블


교통사고 인사이트

인사이트 1: 지역별 택시의 평균 속도, 통행량은 ECLO에 영향을 미친다.
-> 구별 택시 평균속도/총통행량/평균통행량 변수를 생성하여 지역별 교통화견 차이를 예측해 반영
인사이트 2: 지역별 사고유형별 사고 빈도와 가해운전자 차종별 사고 빈도는 ECLO와 연관성을 보인다.
-> 구별 위험도 파생변수를 생성하여 지역별 위험도 차이를 예측해 반영
인사이트 3: 구별 피해 운전자 평균 연령과 ECLO는 양의 상관관계를 보인다.
-> 구별 피해 운전자의 평균 연령 파생변수를 생성하여 지역별 운전자의 인구 통계학적 특성을 예측해 반영
인사이트 4: 야간의 시인성 저하는 교통사고 발생에 영향을 미친다.
-> 일출 일몰 시각 파생 변수를 추가하여 야간의 시인성 저하에 의한 교통사고 발생확률을 예측해 반영
인사이트 5: 인명 피해 정도는 평일보다 주말에 심해진다.
-> 주말 변수를 추가하여 ECLO 예측 정확성을 높임.


모델

Xgboost Regressor, CatBoost Regressor, LightGBM Regressor를 앙상블
이후 feature importance를 기반으로 교통사고 주요 위험요인을 선정 후 이에 대한 해결책을 제시


위 내용을 어떻게 코드로 구현해보았는지 알아보자.


데이터 전처리
1. 파생변수 생성 1. 날짜, 시간정보 생성
'사고 일시' 컬럼으로부터 연도, 월, 일, 시간 정보 추출 및 변환
2. 파생변수 생성 2. 공간 정보 생성 
'시군구' 컬럼으로부터 도시, 구, 동 정보 추출 및 변환
3. 파생변수 생성 3. 도로 형태 정보 추출
'도로형태' 칼럼은 두 개의 정보로 이루어져 이를 분리 도로형태 1과 도로형태2로 분리
> 준비하면서 도로형태 2에서 다른 도로형태 1에서 오는 기타를 하나로 묶는 것보다 다르게 두는 것이 낫다고 생각해 도로형태를 도로형태 1과 도로형태 2로 분리 후 도로 형태 2를 드랍하는 것을 생각해봄.
4. 가해운전자 연령 -> 변경
5. 외부 데이터 - 전국 데이터 사고 전처리 및 이상치 제거
-> 대구 데이터와 전체 도시 데이터에서 object column을 확인하고
-> 대구 데이터에 없는 object형 변수 값을 가지고 있는 전체 도시 데이터의 인덱스를 파악
-> 이를 제거함.
차량단독에서 ('노면상태', '가해운전자 연령', '도시', '구', '동') column에 대한 결측치 drop
차량단독의 경우 피해운전자 차종은 미분류나 결측치임. 따라서 없음으로 대치
차량단독이 아닌 경우에 대해서는 결측치 모두 drop
-> 결측지 제거 이유는 뭐지? 그냥 형식상의 처리인듯
+ 이상치 제거 코드

# 이상치 제거(0.1%)
def set_limit(column):
    return np.quantile(column, 0.999)

country_copy = country_df.copy()

country_copy = country_copy[['기상상태', '노면상태', '사고유형', '사고유형 - 세부분류', '도로형태1', '도로형태2', 'ECLO']]
country_copy.reset_index(inplace=True, drop=True)

outlier_idxs = []
for col in country_copy.columns[:-1]:
    temp_df = pd.DataFrame(country_copy.groupby(col)['ECLO'].agg(set_limit)).reset_index()
    for j in range(len(temp_df)):
        s_idxs = country_df[(country_df[col] == temp_df.loc[j, col]) & (country_df['ECLO'] > temp_df.loc[j, 'ECLO'])].index.to_list()
        outlier_idxs = outlier_idxs + s_idxs
outliers = list(set(outlier_idxs))

print('outlier 수 : ', len(outliers))

country_df = country_df.drop(outliers, axis=0)
country_df.reset_index(inplace=True, drop=True)

print(len(country_df))



6. 파생변수 4. 지역별 가해운전자 & 피해운전자 평균 연령 추출
train에 대해서는 도시, 구, 동으로 groupby, 전국 데이터는 도시로 groupby
7. 파생변수 5. 지역별 가해운전자 & 피해운전자 평균 성별 추출
train에 대해서는 도시, 구, 동으로 groupby, 전국 데이터는 도시로 groupby
8. 파생변수 6. 주말 변수 추가
9. 전체 데이터 concat
10. 파생변수 7. 외부데이터(일출일몰시각 : 해 떴는지(1) 안떴는지(0))
11. 파생변수 8. 지역별 위험도 변수 생성
ride dangerous: 가해운전자 차종별 위험도를 측정 후(가해운전자 차종 별 ECLO의 평균 구함.) 구 별 가해운전자 차종 사고 발생 비율을 반영하여 가중치 생성
전체 train에서 가해운전자 차종별 위험도 평균를 측정
특정 구에 대해서 ((각 차종별 사고 회수)x(가해운전자 차종별 위험도 평균))/(구의 전체 사고 횟수)
accident case dangerous: 사고유형별 위험도를 측정 후 구 별로 사고 유형 발생 비율을 반영하여 가중치 생성
12. 파생변수 9. 외부데이터 - 택시 통행량, 택시 속도
도시별 총통행량 평균, 도시별 평균통행량 평균
도시별 평균속도 평균 -> 모두 train에서 데이터 mearge하고 train의 결측치 채우고 train의 데이터로 test 채움.
13. 기상상태, 노면상태, 사고유형, 도로형태1, 도로형태2 원핫 인코딩
테스트에 없는 원핫 인코딩을 버리기 보단 test에 새로운 컬럼 생성(0으로)

for i in train_oh.columns:
    if i not in test_oh.columns:
        test_oh[i]=0


14. 요일, 도시, 구 레이블 인코딩

for case in np.unique(test_x[i]):
    if case not in le.classes_:
        print('test case is not in classes')
        le.classes_ = np.append(le.classes_, case)


모델 돌리기

from xgboost import XGBRegressor
from lightgbm import LGBMRegressor, early_stopping
from catboost import CatBoostRegressor
import optuna

from sklearn.metrics import mean_squared_log_error as msle
from sklearn.model_selection import train_test_split


XGBOOST

def xgb_modeling(X_train, y_train, X_valid, y_valid):
  def objective(trial):
    params = {
        'learning_rate': trial.suggest_float('learning_rate', 0.0001, 0.1),
        'min_child_weight': trial.suggest_int('min_child_weight', 1, 20),
        'gamma': trial.suggest_float('gamma', 0.01, 1.0),
        'reg_alpha': trial.suggest_float('reg_alpha', 0.01, 1.0),
        'reg_lambda': trial.suggest_float('reg_lambda', 0.01, 1.0),
        'seed':42,
        'max_depth': trial.suggest_int('max_depth', 3, 15), # Extremely prone to overfitting!
        'n_estimators': trial.suggest_int('n_estimators', 300, 3000, 200), # Extremely prone to overfitting!
        'eta': trial.suggest_float('eta', 0.007, 0.013), # Most important parameter.
        'subsample': trial.suggest_discrete_uniform('subsample', 0.3, 1, 0.1),
        'colsample_bytree': trial.suggest_discrete_uniform('colsample_bytree', 0.4, 0.9, 0.1),
        'colsample_bylevel': trial.suggest_discrete_uniform('colsample_bylevel', 0.4, 0.9, 0.1),
    }

    model = XGBRegressor(**params, random_state=42, n_jobs=-1, objective='reg:squaredlogerror')
    bst_xgb = model.fit(X_train,y_train, eval_set = [(X_valid,y_valid)], eval_metric='rmsle', early_stopping_rounds=100,verbose=False)

    preds = bst_xgb.predict(X_valid)
    if (preds<0).sum()>0:
      print('negative')
      preds = np.where(preds>0,preds,0)
    loss = msle(y_valid,preds)

    return np.sqrt(loss)

  study_xgb = optuna.create_study(direction='minimize',sampler=optuna.samplers.TPESampler(seed=100))
  study_xgb.optimize(objective,n_trials=30,show_progress_bar=True)

  xgb_reg = XGBRegressor(**study_xgb.best_params, random_state=42, n_jobs=-1, objective='reg:squaredlogerror')
  xgb_reg.fit(X_train,y_train,eval_set = [(X_valid,y_valid)], eval_metric='rmsle', early_stopping_rounds=100,verbose=False)

  return xgb_reg,study_xgb


LGBM

def lgbm_modeling(X_train, y_train, X_valid, y_valid):
  def objective(trial):
    param = {
        'objective': 'regression',
        'verbose': -1,
        'metric': 'rmse',
        'num_leaves': trial.suggest_int('num_leaves', 2, 1024, step=1, log=True),
        'colsample_bytree': trial.suggest_uniform('colsample_bytree', 0.7, 1.0),
        'reg_alpha': trial.suggest_uniform('reg_alpha', 0.0, 1.0),
        'reg_lambda': trial.suggest_uniform('reg_lambda', 0.0, 10.0),
        'max_depth': trial.suggest_int('max_depth',3, 15),
        'learning_rate': trial.suggest_loguniform("learning_rate", 1e-8, 1e-2),
        'n_estimators': trial.suggest_int('n_estimators', 100, 3000),
        'min_child_samples': trial.suggest_int('min_child_samples', 5, 100),
        'subsample': trial.suggest_loguniform('subsample', 0.4, 1),
    }

    model = LGBMRegressor(**param, random_state=42, n_jobs=-1)
    bst_lgbm = model.fit(X_train,y_train, eval_set = [(X_valid,y_valid)], eval_metric='rmse',callbacks=[early_stopping(stopping_rounds=100)])

    preds = bst_lgbm.predict(X_valid)
    if (preds<0).sum()>0:
      print('negative')
      preds = np.where(preds>0,preds,0)
    loss = msle(y_valid,preds)

    return np.sqrt(loss)

  study_lgbm = optuna.create_study(direction='minimize',sampler=optuna.samplers.TPESampler(seed=100))
  study_lgbm.optimize(objective,n_trials=30,show_progress_bar=True)

  lgbm_reg = LGBMRegressor(**study_lgbm.best_params, random_state=42, n_jobs=-1)
  lgbm_reg.fit(X_train,y_train,eval_set = [(X_valid,y_valid)], eval_metric='rmse', callbacks=[early_stopping(stopping_rounds=100)])

  return lgbm_reg,study_lgbm


Catboost

def cat_modeling(X_train, y_train, X_valid, y_valid):
  def objective(trial):
    param = {
        'iterations':trial.suggest_int("iterations", 1000, 20000),
        'od_wait':trial.suggest_int('od_wait', 500, 2300),
        'learning_rate' : trial.suggest_uniform('learning_rate',0.01, 1),
        'reg_lambda': trial.suggest_uniform('reg_lambda',1e-5,100),
        'subsample': trial.suggest_uniform('subsample',0,1),
        'random_strength': trial.suggest_uniform('random_strength',10,50),
        'depth': trial.suggest_int('depth',1, 15),
        'min_data_in_leaf': trial.suggest_int('min_data_in_leaf',1,30),
        'leaf_estimation_iterations': trial.suggest_int('leaf_estimation_iterations',1,15),
        'bagging_temperature' :trial.suggest_loguniform('bagging_temperature', 0.01, 100.00),
        'colsample_bylevel':trial.suggest_float('colsample_bylevel', 0.4, 1.0),
    }


    model = CatBoostRegressor(**param, random_state=42)
    #task_type="GPU",devices='0:1'
    bst_cat = model.fit(X_train,y_train, eval_set = [(X_valid,y_valid)], early_stopping_rounds=100,verbose=False)

    preds = bst_cat.predict(X_valid)
    if (preds<0).sum()>0:
      print('negative')
      preds = np.where(preds>0,preds,0)
    loss = msle(y_valid,preds)

    return np.sqrt(loss)

  study_cat = optuna.create_study(direction='minimize',sampler=optuna.samplers.TPESampler(seed=100))
  study_cat.optimize(objective,n_trials=30,show_progress_bar=True)

  cat_reg = CatBoostRegressor(**study_cat.best_params, random_state=42)
  cat_reg.fit(X_train,y_train,eval_set = [(X_valid,y_valid)], early_stopping_rounds=100,verbose=False)

  return cat_reg,study_cat

수정한 코드

 파생변수는 위의 코드와 비슷하게 만들어주고 대구 데이터에 없는 object형 변수 값을 갖고 있는 전체 도시 데이터의 인덱스를 파악해 drop해준 다음 사고유형에 따라 데이터를 분리하였다.

train1=country_df[country_df["사고유형"]=="차량단독"]
train2=country_df[country_df["사고유형"]=="차대차"]
train3=country_df[country_df["사고유형"]=="차대사람"]
test1=test_df[test_df["사고유형"]=="차량단독"]
test2=test_df[test_df["사고유형"]=="차대차"]
test3=test_df[test_df["사고유형"]=="차대사람"]

display(train1.shape)
display(train2.shape)
display(train3.shape)

결과

(26620, 29)
(489871, 29)
(113105, 29)


이렇게 나눈 후 이상치 1% 제거, 사고 유형 drop, 지역별 가해운전자 & 피해운전자 평균 연령 추출, 지역별 가해운전자 & 피해운전자 평균 성별 추출, 가해운전자 & 피해운전자 차종 별 위험도 추출
+ 피해 & 가해 노인운전자 위험도(차량단독, 차대사람만)
+ 원핫 인코딩("노면상태", "도로형태1")
+ 레이블 인코딩("요일", "도시", "구", "동", "도로형태")
을 진행하였고 3개의 데이터에 대해 optuna를 사용하여 lgbm 하이퍼파라미터 튜닝, catboost 하이퍼파라미터 튜닝을 진행하였다.
마지막 앙상블은 lgbmx0.2+catboostx0.8로 하였을 때 가장 성능이 높게 나왔다.


그런데 생각보다 성과가 나오지 않고 제출 횟수도 제한되어 있어서 더 이상의 진행은 그렇게 도움이 되지 않을 것 같아 개선을 멈추려고 한다.(튜닝하는데 시간을 너무 보내서..)
수정한 코드의 ipynb는 다음 링크에 있다.
https://github.com/ParkSeokwoo/Dacon_Daegu-Traffic-Accident-Prediction-AI/blob/main/%EB%B8%94%EB%A1%9C%EA%B7%B8_%EC%9E%91%EC%84%B1%EC%9A%A9.ipynb

 

Dacon_Daegu-Traffic-Accident-Prediction-AI/블로그_작성용.ipynb at main · ParkSeokwoo/Dacon_Daegu-Traffic-Accident-Predict

A project predicting the risk of traffic accidents in Daegu - ParkSeokwoo/Dacon_Daegu-Traffic-Accident-Prediction-AI

github.com

 

Modeling Tabular Data using Conditonal GAN

Abstract

 표형 데이터의 확률 분포를 모델링하고 현실적인 합성 데이터를 생성하는 것은 어려운 작업이다. 표형 데이터는 이산형 및 연속형 열이 혼합되어 있으며, 연속형 열은 여러 모드를 가질 수 있고, 이산형 열은 종종 불균형하여 모델링을 어렵게 한다. 기존 통계 모델과 심층 신경망 모델은 이러한 데이터를 적절히 처리하지 못한다. 이를 해결하기 위해 우리는 조건부 생성기를 사용하는 CTGAN을 설계했다. 7개의 시뮬레이션 데이터셋과 8개의 실제 데이터셋을 포함한 벤치마크를 통해 CTGAN의 성능을 평가했으며, 대부분의 실제 데이터셋에서 베이지안 방법보다 우수한 성능을 보였다. 다른 딥러닝 방법들은 이러한 성과를 내지 못했다.

1. Introduction

 최근 심층 생성 모델의 발전은 이미지와 텍스트에서 높은 품질의 샘플을 생성할 수 있는 가능성을 열었다. 이러한 가능성은 표형 데이터 생성을 위한 GAN(Generative Adversarial Networks)의 개발을 촉진했다. GAN은 기존 통계 모델보다 더 큰 유연성을 제공한다. CTGAN은 이러한 문제를 해결하기 위해 제안된 조건부 표형 GAN으로, 모드 특정 정규화, 조건부 생성기, 샘플링 학습을 통해 데이터 불균형 문제를 해결한다. CTGAN은 여러 벤치마크 테스트에서 베이지안 네트워크 및 다른 GAN 기반 방법들보다 우수한 성능을 보인다.

2. Related Work

  전통적인 접근 방식은 각 열을 랜덤 변수로 간주하여 결합 다변량 분포를 모델링한다. 여기에는 의사 결정 트리, 베이지안 네트워크 및 코풀라가 포함되며, 복잡한 분포를 처리하는 데 한계가 있다. VAEs(Variational Autoencoders) 및 GANs(Generative Adversarial Networks)의 개발은 더 큰 유연성과 성능을 제공한다. medGAN, ehrGAN, tableGAN과 같은 다양한 GAN 기반 모델들이 의료 및 다른 분야에서 개발되어 유망한 결과를 보였으나, 표형 데이터에서는 여전히 도전 과제를 안고 있다.

3. Challenges with GANs in Tabular Data Generation Task

이 섹션에서는 표형 데이터에 GAN을 사용하는 데 있어 고유한 도전 과제를 설명한다:

  • 혼합 데이터 유형: 이산형 및 연속형 열을 동시에 생성해야 한다.
  • 비정규 분포: 표형 데이터의 연속 값은 종종 비정규 분포를 가지며, 이는 정규화를 복잡하게 만든다.
  • 다중 모드 분포: 연속형 열은 여러 모드를 가질 수 있다.
  • 희소 원-핫 인코딩 벡터: 이산형 열이 희소 벡터로 표현될 때 문제가 발생한다.
  • 불균형 범주형 열: 범주형 열의 높은 불균형은 모드 붕괴와 소수 범주의 불충분한 표현을 유발한다.

4. CTGAN Model

CTGAN 모델은 확인된 문제를 해결하기 위해 여러 기술을 도입한다:

  • 모드 특정 정규화: 각 연속 값을 모드와 해당 모드 내의 정규화된 값의 조합으로 나타내어 비정규 및 다중 모드 분포를 처리하는 새로운 정규화 방법이다.
  • 조건부 생성기 및 샘플링 학습: 생성기는 이산형 열 값을 조건으로 하여 모든 범주가 훈련 중에 잘 대표되도록 한다. 샘플링 학습 기법은 불균형한 범주형 열을 처리하는 데 도움을 준다.
  • 네트워크 구조: 모델은 특정 활성화 함수와 정규화 기술을 사용하여 고품질 합성 행을 생성하는 완전 연결 네트워크를 사용한다.

+ TVAE Model

VAE를 변형하여 tabular data에 사용할 수 있게 함. 훈련할 때에는 ELBO loss를 사용함.

5. Benchmarking Synthetic Data Generation Algorithms

이 섹션에서는 CTGAN을 평가하기 위한 벤치마킹 프레임워크와 데이터셋에 대해 설명한다:

  • 베이스라인 및 데이터셋: 벤치마크에는 베이지안 네트워크(CLBN, PrivBN)와 여러 심층 학습 접근 방식(MedGAN, VeeGAN, TableGAN)이 포함된다. 데이터셋에는 UCI 머신러닝 저장소와 Kaggle에서 가져온 7개의 시뮬레이션 데이터셋과 8개의 실제 데이터셋이 포함된다.
  • 평가 메트릭 및 프레임워크: 평가에는 두 가지 메트릭이 사용된다: 시뮬레이션 데이터의 우도 적합성과 실제 데이터의 머신러닝 효능. 우도 적합성은 합성 데이터가 훈련 데이터와 동일한 분포를 따르는지 확인하고, 머신러닝 효능은 합성 데이터를 사용하여 훈련된 모델이 실제 테스트 데이터에서 얼마나 잘 수행하는지를 평가한다.

6. Conclusion

논문은 CTGAN이 베이지안 네트워크를 포함한 기존 방법들보다 표형 데이터 분포를 더 잘 모델링함을 강조하면서 결론을 맺는다. 모드 특정 정규화와 조건부 생성기 및 샘플링 학습은 복잡한 표형 데이터를 처리하는 데 있어 크게 기여한다. 저자들은 GAN이 이산형 및 연속형 데이터를 모두 처리할 수 있는 이론적 근거를 제공하는 것을 향후 연구 과제로 제안한다.


CTAB-GAN: Effective Table Data Synthesizing

1. Introduction

이 장에서는 기존의 GAN 기반 테이블 데이터 생성 알고리즘의 한계점을 설명하고, CTAB-GAN의 필요성과 목표를 제시한다. 현재 사용되는 많은 GAN 기반 알고리즘들은 범주형 변수와 연속형 변수를 혼합하여 처리하는 데 어려움을 겪고 있다. 특히 데이터 불균형 문제를 해결하지 못해 생성된 데이터의 품질이 떨어진다. 이 문제를 해결하기 위해 CTAB-GAN은 설계되었다. CTAB-GAN은 혼합형 데이터를 효과적으로 처리하고 데이터 불균형 문제를 해결하기 위한 새로운 접근법을 제시한다.

2. Related Studies

GAN을 이용한 테이블 데이터 생성 연구는 크게 두 가지로 나뉜다: (i) 기본 GAN 기반 생성기와 (ii) 조건부 GAN 기반 생성기.

2.1 기본 GAN 기반 생성기

여러 연구들은 GAN을 확장하여 범주형 변수를 처리하려고 시도했다. 예를 들어, MedGAN은 자동 인코더를 GAN과 결합하여 연속형 및 이산형 변수를 생성할 수 있다. 이는 전자 건강 기록(EHR) 데이터를 생성하는 데 사용되었다. CrGAN-Cnet은 항공 승객 명단 데이터를 생성하기 위해 Cramér 거리와 Cross-Net 아키텍처를 통합했다. TableGAN은 정보 손실과 분류기를 GAN 프레임워크에 도입하여 데이터 생성의 품질을 높였다. 그러나 이러한 알고리즘들은 특정 클래스의 데이터를 생성하는 기능이 부족하며, 프라이버시 문제를 완벽히 해결하지 못한다.

2.2 조건부 GAN 기반 생성기

조건부 벡터를 사용하여 특정 클래스의 데이터를 생성하는 조건부 GAN이 점점 더 많이 사용되고 있다. CW-GAN은 조건부 벡터를 사용하여 소수 클래스를 과대표집하여 데이터 불균형 문제를 해결한다. CTGAN은 PacGAN 구조를 판별기에 통합하고, WGAN 손실 및 그래디언트 패널티를 사용하여 조건부 GAN 프레임워크를 훈련한다. CTGAN은 조건부 벡터를 활용하여 불균형한 범주형 변수 문제를 해결하는 전략을 채택했다.

우리의 논문에서는 연속형 또는 범주형 변수뿐만 아니라 혼합형 데이터 타입(범주형과 연속형 값이 혼합된 변수, 또는 결측값을 포함한 변수)을 모델링하는 데 초점을 맞춘다. 이전 연구의 장점을 효과적으로 결합하고, 긴 꼬리 변수 분포 문제를 해결하기 위해 새로운 조건부 벡터 구조를 제안한다.

3. CTAB-GAN

CTAB-GAN은 기존 알고리즘의 단점을 극복하기 위해 설계된 테이블 데이터 생성기다. 혼합형 인코더를 도입하여 범주형-연속형 혼합 변수와 결측값을 더 잘 표현할 수 있다. CTAB-GAN은 조건부 GAN(CGAN)을 기반으로 하여 소수 클래스를 효율적으로 처리하며, 분류기와 정보 손실을 추가하여 의미적 일관성과 훈련 안정성을 높인다. 마지막으로, 불균형 변수의 모드 붕괴 문제를 해결하기 위해 로그-빈도 샘플러를 활용한다.

3.1 Technical Background

GAN은 원래 이미지 데이터를 생성하는 데 큰 성공을 거두었고, 이후 테이블 데이터로 확장되었다. GAN은 생성기와 판별기 간의 적대적 게임을 통해 현실적인 데이터를 생성한다. 데이터 불균형 문제를 해결하기 위해 조건부 생성기와 샘플링 방법을 활용한다. 조건부 벡터를 사용하여 범주형 변수의 클래스를 나타내고, 이를 통해 소수 클래스의 데이터 학습 기회를 높인다.

생성 품질을 향상시키기 위해 생성기의 손실 함수에 두 가지 추가 항목을 도입한다: 정보 손실과 분류 손실. 정보 손실은 생성된 데이터와 실제 데이터의 통계적 차이를 최소화하고, 분류 손실은 보조 분류기를 추가하여 생성된 데이터의 의미적 일관성을 높인다. 예를 들어, "성별=여성, 질병=전립선암"과 같은 비논리적 기록이 생성되지 않도록 한다.

연속형 변수의 복잡한 분포를 처리하기 위해 모드-특정 정규화 아이디어를 채택하여 각 값을 가우시안 혼합 모델(GMM)에서 나온 값-모드 쌍으로 인코딩한다.

3.2 Design of CTAB-GAN

CTAB-GAN의 구조는 세 가지 블록(생성기, 판별기, 보조 분류기)으로 구성된다. 생성기는 노이즈 벡터와 조건부 벡터를 필요로 하며, 정보 손실과 분류 손실을 통해 생성된 데이터의 통계적 특성과 의미적 일관성을 높인다. 판별기는 생성된 데이터와 실제 데이터를 구분하며, 보조 분류기는 생성된 데이터의 클래스를 예측하여 의미적 일관성을 확인한다.

GAN은 생성기와 판별기 간의 제로섬 미니맥스 게임을 통해 훈련된다. 정보 손실은 생성된 데이터와 실제 데이터의 1차 및 2차 통계(평균 및 표준편차)를 맞추어 통계적 특성을 일치시킨다. 분류 손실은 생성된 데이터의 의미적 일관성을 확인하고, 비논리적 기록에 대해 페널티를 부여한다.

3.3 Mixed-type Encoder

CTAB-GAN은 세 가지 유형의 변수를 구분하여 인코딩한다: 범주형, 연속형, 혼합형. 혼합형 변수는 범주형 값과 연속형 값을 모두 포함하거나 결측값을 포함하는 경우로 정의한다. 새로운 혼합형 인코더를 도입하여 이러한 변수를 효과적으로 처리한다. 이 인코더는 혼합형 변수의 값을 값-모드 쌍으로 인코딩하여 연속형 값과 범주형 값을 모두 효과적으로 처리한다.

4. Experiments

CTAB-GAN의 성능을 다양한 데이터셋에서 실험적으로 평가한다. 기존 모델들과의 비교를 통해 CTAB-GAN의 우수성을 입증한다. 실험 결과, CTAB-GAN은 혼합형 데이터와 데이터 불균형 문제를 효과적으로 해결하며, 생성된 데이터의 품질과 의미적 일관성을 높인다.

5. Conclusion

CTAB-GAN의 주요 기여와 실험 결과를 요약하며, 향후 연구 방향에 대해 논의한다. CTAB-GAN은 혼합형 데이터와 데이터 불균형 문제를 효과적으로 해결하는 새로운 접근법을 제시한다. 이 모델은 다양한 실제 데이터 생성 응용 분야에서 유용하게 활용될 수 있다.


CTAB-GAN+: Enhancing Tabular Data Synthesis

1. Introduction

CTAB-GAN+는 민감한 개인정보 보호를 보장하면서 고품질의 합성 테이블 데이터를 생성하기 위해 설계된 새로운 조건부 테이블 GAN 모델이다. 데이터 공유는 지식 개발에 필수적이지만, 개인정보 보호와 규제 준수 문제로 인해 그 효과가 제한되고 있다. CTAB-GAN+는 이러한 문제를 해결하기 위해 Differential Privacy(DP)와 같은 기술을 활용하여 데이터 보호와 활용성 간의 최적의 균형을 추구한다.

2. Related Work

기존의 테이블 데이터 생성 모델들은 주로 연속형 또는 범주형 데이터만을 대상으로 하며, 혼합형 데이터나 불균형 데이터의 처리에 한계가 있다. 또한, 기존 모델들은 DP를 충분히 고려하지 않아 개인정보 유출 위험이 있다. CTAB-GAN+는 이러한 기존 모델들의 한계를 보완하고, 더욱 안전하고 유용한 합성 데이터를 제공하기 위해 개발되었다.

3. CTAB-GAN+

CTAB-GAN+의 주요 구성 요소는 Generator, Discriminator, 그리고 Auxiliary Component이다. Generator는 데이터의 다양한 특성을 학습하여 새로운 데이터를 생성하며, Discriminator는 실제 데이터와 합성 데이터를 구별하는 역할을 한다. Auxiliary Component는 생성된 데이터의 유용성을 높이기 위해 추가적인 학습 신호를 제공한다.

3.1 Conditional GAN Structure

CTAB-GAN+는 Conditional GAN 구조를 채택하여 다양한 조건에서 데이터 생성이 가능하다. 이 구조는 데이터 불균형 문제를 해결하고, 특정 클래스의 데이터를 더 많이 생성할 수 있는 능력을 제공한다.

3.2 Advanced Feature Encoding

CTAB-GAN+는 연속형, 범주형, 혼합형 변수를 효과적으로 처리하기 위해 새로운 특성 인코딩 방법을 도입한다. 이를 통해 다양한 데이터 타입을 정확하게 모델링할 수 있으며, 특히 불균형 데이터와 결측값 처리에 강점을 가진다.

3.3 Wasserstein Loss with Gradient Penalty

모델의 안정성과 성능을 높이기 위해 Wasserstein Loss with Gradient Penalty(Was+GP)를 사용한다. 이는 GAN의 훈련 과정에서 발생할 수 있는 불안정성을 줄이고, 더욱 일관된 학습을 가능하게 한다.

3.4 Differential Privacy

CTAB-GAN+는 Differential Privacy를 구현하여 민감한 데이터의 보호를 보장한다. DP-SGD(Differentially Private Stochastic Gradient Descent)를 사용하여 학습 과정에서 개인정보 유출을 방지하고, 데이터의 익명성을 유지한다.

4. Experiments

CTAB-GAN+는 다양한 평가 지표를 통해 성능을 평가한다. 이를 위해 7개의 데이터셋(Adult, Covertype, Credit, Intrusion, Loan, Insurance, King)에서 실험을 진행하였다. 이 데이터셋들은 각각 분류 또는 회귀 문제를 포함하고 있으며, 각 데이터셋에 대해 정확도, F1-score, AUC, Mean Absolute Percentage Error(MAPE), Explained Variance Score(EVS), R² Score 등의 평가 지표를 사용하여 모델의 성능을 평가하였다.

4.1 Datasets

각 데이터셋은 특정한 머신러닝 문제를 포함하고 있으며, CTAB-GAN+의 성능을 테스트하기 위해 사용된다. 데이터셋에는 다양한 형태의 변수가 포함되어 있으며, 특히 연속형, 범주형, 혼합형 변수를 다양하게 포함하고 있다.

4.2 Evaluation Metrics

평가 지표는 두 가지 주요 측면에서 모델의 성능을 측정한다:

  1. Machine Learning Utility: 합성 데이터가 실제 데이터를 얼마나 잘 대체할 수 있는지를 평가하기 위해, 합성 데이터와 실제 데이터를 사용하여 학습된 모델의 성능을 비교한다. 분류 문제의 경우 정확도, F1-score, AUC를 측정하고, 회귀 문제의 경우 MAPE, EVS, R² Score를 측정한다.
  2. Statistical Similarity: 합성 데이터와 실제 데이터 간의 통계적 유사성을 평가하기 위해, Jensen-Shannon Divergence(JSD), Wasserstein Distance(WD), Diff. Corr(변수 간 상관 관계 차이) 등을 사용한다.

4.3 Results

CTAB-GAN+는 모든 평가 지표에서 기존의 최첨단 모델들보다 뛰어난 성능을 보였다. 특히 분류 문제에서 CTAB-GAN+는 AUC와 정확도에서 각각 56.4%와 41.2%의 개선을 보였다. 회귀 문제에서도 CTAB-GAN+는 다른 모델들보다 높은 예측 정확도를 유지하며 우수한 성능을 나타냈다. 통계적 유사성 측면에서도, CTAB-GAN+는 JSD, WD, Diff. Corr에서 모든 비교 모델을 능가하는 결과를 보였다.

5. Conclusion

CTAB-GAN+는 다양한 유형의 테이블 데이터를 효과적으로 모델링하고, 개인정보 보호와 데이터 활용성 간의 최적의 균형을 제공한다. 이는 특히 금융, 보험, 제조업 등 데이터 공유가 중요한 산업 분야에서 활용될 수 있는 중요한 도구이다. 앞으로의 연구에서는 CTAB-GAN+의 응용 범위를 확장하고, 다양한 데이터셋에서 추가 실험을 통해 성능을 더욱 향상시키는 것이 목표이다.

CTAB-GAN+는 합성 데이터 생성에서의 새로운 가능성을 제시하며, 데이터 공유의 어려움을 해결하는 데 중요한 역할을 할 수 있을 것으로 기대된다.

 이번에 리뷰할 논문은 diffusion model의 기초를 세운 DDPM을 다룬 논문인 'Denoising Diffusion Probabilistic Models'이다. 이 논문 이전에도 diffusion 아이디어는 있었지만 그 과정을 수식적으로 명확히 다루고 품질인 좋은 샘플들을 생성하였으며 학습 안전성을 높혔기 때문에 유명한 논문이다.(이 논문을 기점으로 diffusion model에 관한 관심이 늘어났다.) 읽어보면서 VAE와의 연관성을 생각해보면 p(x)를 다루기 어려워 latent variable을 통해 분포를 예상한다음 새로운 샘플을 생성해내는 것, reparametrization trick이 사용되는 점 등등이 있겠다. 논문은 아래 사이트에 기재되어있다.

https://arxiv.org/abs/2006.11239

 

Denoising Diffusion Probabilistic Models

We present high quality image synthesis results using diffusion probabilistic models, a class of latent variable models inspired by considerations from nonequilibrium thermodynamics. Our best results are obtained by training on a weighted variational bound

arxiv.org

Abstract

- 우리는 nonequilibrium thermodynamics에서 영감 얻은 diffusion probabilistic models(a class of latent variable models)를 사용하여 높은 품질의 이미지를 생성해냈다.

-> 간단히 찾아보니 nonequilibrium thermodynamics는 비평형 열역학으로 시스템이 평형 상태에 있지 않을 때의 동적 거동을 설명하는 이론이라고 한다. Diffusion의 diffusion process와 reverse diffusion process가 엔트로피의 변화와 유사한 원리를 바탕으로 작동한다고 한다.

 

-  우리의 가장 좋은 결과는 diffusion probabilistic models와 denoising socre matching with Langevin dynamics 사이의 새로운 연결에 따라 만들어진 weighted variational bound를 training함으로써 얻어냈다.

 

- 또한 우리의 모델은 progressive lossy decompression scheme을 허용하며, 이는 autoregressive decoding의 일반화로 해석될 수 있다.

-> Progressive lossy decompression scheme은 여러 단계에 걸쳐서 압축된 데이터를 복원하는 구조를 말하고(손실은 압축시 일부 정보가 사라질 수 있음을 의미, decompression은 압축된 데이터를 다시 원래 상태로 복원하는 과정) autoregressive decoding은 데이터를 순차적으로 예측하며 생성하는 방식이다. Autoregressive decoding의 핵심 아이디어를 포함하면서도, 더 넓은 범위의 문제를 해결할 수 있어 일반화라는 표현을 사용.

 

- unconditional CIFAR 10 dataset에서 우리는 9.46의 Inception 점수와 3.17의 sota FID 점수를 얻었다.

-> Inception 점수: 생성된 이미지가 얼마나 다양하고, 또 얼마나 실제 데이터와 유사한지 평가하는 지표, 높을수록 생성된 이미지가 다양하고 높은 품질을 가짐을 의미

-> FID 점수: 생성된 이미지와 실제 이미지 분포 차이를 측정하는 지표, 낮을수록 생성된 이미지가 실제 이미지와 매우 유사하며, 높은 품질을 가짐을 의미

-> unconditional은 클래스 레이블 정보를 사용하지 않고 이미지를 생성하는 것을 의미한다.

 

- 256x256 LSUN에서는 ProgressiveGan과 유사한 샘플 품질을 얻었다. 

1. Introduction

- 딥러닝을 사용하는 generative models는 다양한 data 종류에 대해서 좋은 퀄리티의 samples를 만들어냈다. 

 

- 이 논문은 diffusion probabilistic models의 progress를 제안한다. Diffusion probabilistic model은 매개변수화된 Markov chain으로 유한 시간내에 data에 대응되는 samples를 생성하기 위해 variational inference를 사용한다.

- 위 그림에서 q로 표현된 markov chain이 diffusion process로 noise를 추가하는 forward process임. p로 표현된 markov chain은 sampling process로 noise를 제거하는 denoising과정으로 reverse process임. DDPM은 p로 표현된 sampling process를 학습함.(q는 가정하기 때문에 학습하지 않음.)

 

- 만약 이렇게 추가하는 noise가 작은 양의 Gaussian noise라면 sampling chain의 transitions은 conditional Gaussian으로 표현하기에 충분함. -> 따라서, 간단히 신경망으로 평균과 분산만 예측하면 됨.

 

- Diffusion model는 정의하기 쉽고 훈련 효율도 높지만 지금까지 고품질 샘플을 생성할 수 있다는 증거가 없었다. 우리는 diffusio models도 좋은 품질의 samples를 만들 수 있음을 보였고 때로는 다른 유형의 생성 모델에서 발표된 결과보다 더 나은 성과를 보이기도 함.

 

- 추가로 이러한 매개변수화가 denoising score matching over multiple noise levels during traings와 annealed Langevin dynamics during sampling이 동일함을 보여줌.

-> denoising score matching: during traing: 데이터의 확률 밀도 함수를 추정하기 위한 방법으로, 데이터 포인트 주변의 확률 밀도의 기울기를 학습함. Denoising score matching에서는 노이즈가 추가된 데이터에 대해 스코어(확률 밀도 함수의 로그에 대한 기울기)를 추정하고 이를 통해 원래의 데이터 분포를 복원함.

-> annealed Langevin dynamics during sampling: 여러 단계에 걸쳐 노이즈를 점진적으로 줄여가며 데이터 샘플을 생성하는 방법. 각 단계는 앞 단계에서 학습된 스코어(확률 밀도 함수의 로그에 대한 기울기)를 이용하여 노이즈를 제거하고, 점차적으로 더 깨끗한 샘플을 만듦.

-> 두 방식 모두 데이터의 노이즈를 제거하고 원래의 데이터를 복원하는 것인데 본질적으로 같은 원리를 따을 논문에서 보인 것

 

- 우리의 모델은 다른 likelihood-based models에 비해 경쟁력 있는 log likelihoods를 가지지 못했는데 그 이유는 lossless codelength의 대부분이 사람이 인식할 수 없는  image의 세부적인 부분을 설명하는데 사용되고 있었기 때문이다. 이 현상을 손실 압축의 관점에서 분석해 개선하였다. 확산 모델의 sampling 과정은 progressive decoding의 한 유형으로 autoregressive decoding과 유사하지만, 더 일반화된 방식으로 작동하였다.

-> lossless codelength: 데이터를 압축할 때 손실 없이 필요한 비트 수

-> 손실 압축 관점은 데이터를 완벽히 복원하지 않아도 되지만, 중요한 정보는 남겨두는 방식이기 때문에 사람이 인식할 수 없는 세부사항을 생락하거나 덜 정확하게 표현하는 것. => 효율적이고 효과적인 모델

-> 그 결과 만들어진 것이 progressive decoding(이미지를 한 번에 새엉하는 대신 여러 단계에 걸쳐 점진적으로 만들어나가는 방식)이고 이는 데이터를 한 번에 하나씩 순차적으로 생성하는 방식인 autoregressive decoding보다 일반화된, 유연한 방식임.

2. Background

- 일단 가장 중요한 거

학습하려는 대상이 p가 아닌 q라는 점. VAE랑 또 다르다. 또한 왜 diffusion이 noising인지 단어의 의미로 해석해보면 데이터의 정보가 점점 퍼져서(확산되어서) 노이즈로 가득 차게 되는 것을 표현하기 위함이라 한다. 

 

- Diffusion models은 latent variable model로 p(x_0)는 다음과 같이 형성된다.

이 식의 정의는
이와 같다.

- 그런데 여기서 알아야 할 것이 이 x_1, ... x_t인 latents가 모두 x_0와 같은 차원이라는 것이다. -> VAE와 다른 점.

 

- x_0는 q(x_0)를 따른다.

 

- x_T는 Gaussian 분포를 따른다.

 

- reverse process: p(X_T)로 시작하는 학습되는 Gaussian trainsitions으로 이루어진 Markov chain

 

- forward process: 데이터에 가우시안 노이즈를 추가하는 과정으로 x_0에서 schedule된 베타들로 노이즈들이 추가된다.

왼쪽 분포를 approximate posterior이라 한다.

 사실 베타들은 reparameterization으로 학습해도 되고 그냥 상수로 둬도 된다. 베타 값들은 크기가 작은데 그 이유가 베타가 작은 경우 p와 q가 유사한 함수 형태를 갖기 때문에 reverse process의 표현력이 증가하기 때문이다.  

 또한 forward process의 놀라운 성질은 x_t를 t에 관계 없이 x_0로부터 closed form으로 샘플링할 수 있다는 점이다. 

위 두 표현으로 q(x_t|x_0)를 다음과 같이 쓸 수 있다.

-> 위 과정이 왜 놀랍냐면 sampling process를 매우 단축시킬 수 있기 때문이다.(reparameterization trick을 쓰면 하나의 noise를 샘플링하면 끝임)

 

- training은 negative log likelihood의 variational bound를 optimizing하는 것이 목표이다.

이 식의 유도는 아래 appendix A로 추가하겠다.

 

- 효율적인 학습을 위해 L을 다시 써서 variance를 낮추면 아래와 같은 식이 된다.(왜 variane가 낮고 아래 식이 유도되는 지는 appendix B에 첨부하겠다.)

위 식에서 처음 보는 term이 가운데 term인데 이 term은 p(x_{t-1}|x_t)와 q(x_{t-1}|x_t, x_0) -> forward process posteriors를 비교하는 KL divergence term이다. 갑자기 forward process의 분포에 given x_0가 생겼는데 이는 위의 L의 variance를 낮추는 과정에서 생긴 것이다.(이렇게 초기 추정량에 조건부 기댓값을 추가하여 분산을 낮추는 방법을 Rao-Blackwellization이라 한다.) 이 분포는 아래와 같이 정의되고

모든 term들이 gaussian을 다루거나 gaussian 사이의 KL-divergence를 구하기 때문에 closed form을 갖는다.

3. Diffusion models and denoising autoencoders

- Diffusion models은 마치 제한된 형태의 잠재 변수 모델처럼 보일 수 있지만, 구현에 있어 많은 자유도를 허용함.

-> forward process의 분산인 베타

-> reverse process의 모델 architecture, gaussian distribution parameters

을 선택해야함.

3.1 Forward process and L_T

- 베타 역시 reparameterization으로 학습될 수 있지만 여기선 constants로 고정함. 따라서 q에서 학습될 파라미터가 없기 때문에 식 (5)에서 L_T는 무시함.(p(x_T)도 학습할 거 없으니까)

3.2 Reverse process and L_{1:T-1}

- 먼저 p(x_{t-1}|x_t)(1<t<=T)에서 평균과 분산을 어떻게 고를지 생각해보자.

분산은 학습되지 않지만 시간에 따라 다른 상수로 정하였는데 

시그마의 후보론

 가 있다. 첫번째 선택은 x_0가 정규분포 N(0,I)를 따를 때 최적이고 두 번째 선택은 x_0가 한 점으로 정해질 때 최적이다. 

-> 이미지로 생각하면 x_0의 각 픽셀이 독립적으로 평균 0, 분산 1을 갖는 정규 분포를 따를 때 최적(다양한 이미지가 균일하게 분포되어 있을 때), x_0의 각 픽셀이 고정된 값을 갖는 것을 의미한다.(모든 이미지가 거의 동일한 구조와 패턴을 가지는 경우) 

-> coordinatewise unit variance를 갖는 data의 reverse process entropy의 상한과 하한에 대응된다.

분산을 위와 같이 잡아 reverse process의 분포가 다음과 같이 변하면

L_{t-1}을 아래와 같이 쓸 수 있다.

이 식은 당연히 최소화해야 하기 때문에 가장 간단한 접근은 forward process posterior의 평균으로 뮤(x_t,t)를 잡는 것이다.

위 식에서 reparameterization을 통해 


에서 x_0를 얻고 



를 (8)에 대입하면 

를 얻게 된다.

이 식에서 알 수 있는건 forward process posterior의 평균이

으로 표현할 수 있어서 µ(x_t,t)를 아래와 같이 잡는 것이다.

e(x_t)는 아래 x_t의 e를 예측하기 위해 

모델이 학습하여 예측하려는 노이즈 추정량이다.

그럼 reverse process에 x_{t-1}을 sampling하는 것은

reparameterization trick으로

을 계산하는 것과 같다.

예측한 평균인 (11)을 (10)에 넣으면

가 된다.

-> 이 식이 denoising score matching과 비슷하고, Langevin-like reverse process의 variational bound와 같아 둘이 동듬함을 보였다고 한다.

 

- 전체 알고리즘은 다음과 같다.

만약 이미지 데이터에서 training을 하면 2의 과정은 전체 이미지 데이터셋에서 하나를 뽑는 과정이다.

-> Training 과정에서 t를 sampling하여 접근하는 방식은 계산의 효율성을 높이고 다양한 노이즈 수준을 균형 있게 학습할 수 있게 한다.

+ Diffusion 모델은 다양한 수준의 noise를 학습하기 위해 시간 term을 sampling하고 특정 시간 단계 t에서도 다양한 노이즈에 대해 학습하기 위해 e를 sampling함. 모델은 주어진 x_t와 시간 t를 입력 받아 해당 시점의 노이즈를 e를 예측하도록 학습됨. 이렇게 충분한 훈련이 되면 x_t와 t를 입력받아 노이즈를 예측하고 예측된 노이즈를 사용하여 현재 이미지에서 노이즈를 제거해 x_{t-1}을 계산한다. 이 과정을 무수히 반복해 원본 이미지와 같은 수준의 이미지를 생성해감.

 

- 요약하자면, rever process의 mean function approximator인 µθ를 예측하도록 학습할 수 있고, 또는 매개변수를 수정하여 ε을 예측하도록 학습할 수 있음.(x_0를 예측하게 할 수도 있으나 초기 실험에서 이것이 더 낮은 품질을 생성함.) ε-prediction parameterization이 Langevin dynamics와 denoising score matching과 유사한 것을 최적화 하는 것이 목표로 하는 단순한 diffusion model의 variational bound 둘과 유사함을 보였다. 그럼에도 불구하고 이것은 단지 pθ(xt1xt)의 또 다른 매개변수화일 뿐이므로, 4장에서 을 예측하는 것과 μt를 예측하는 것을 비교하는 실험을 통해 그 효과를 검증함.

-> ablation study: 모델의 특정 부분을 제거하거나 변경하여 성능을 비교하는 방법

3.3 Data scaling, reverse process decoder, and L_0

- 우리는 이미지 데이터를 픽셀 단위로 scaling해서 [0, 255]를 [-1,1]로 linearly scaling해줌.(시작이 표준 정규분포이니 신경망은 모든 데이터 포인트를 동일한 범위에서 처리하게 됨.)

 

- discrete log likelihoods를 얻기 위해 마지막 항을 독립된 이산 디코더로 설정함. 이는

이 가우시안 분포로부터 유도된 것으로

D는 데이터의 차원 수이고 i superscript는 한 좌표를 추출하는 것을 의미 + L_0를 계산하는데 쓰인데

왜 이런 짓을 하냐면 애초에 이미지 데이터는 이산 데이터이기 때문. 연속적인 분포를 사용하여 이산 데이터의 로그 우도를 계산하려면 이렇게 이산 값에 따른 정해진 부분을 적분하여 이산값에 대한 확률을 계산해야 함.

-> 이렇게 하면 추가적인 노이즈를 넣거나 복잡한 수학 연산을 할 필요 없이 variational bound와 lossless codelength of discrete data가 같다고 알려져있다고 한.

-> 마지막 x_0를 구할 때는 노이즈를 넣지 않음.

3.4 Simplified training objective

- 3.1과 3.2, 3.3으로 구성한 variational bound는 세타에 대해 미분 가능해 training을 쓰일 수 있다. 그런데 여기서 기존 variational bound를 대신할 수 있는 간소화된 손실 함수를 사용할 것을 주장하는데 식은 다음과 같다.

t는 1과 T사이 unifrom variable이다.

t=1일 때 위 식은 L_0에 대응되는데 (13)에서 정의한 discrete decoder definition의 적분이 gaussian probability density funtion과 bin width를 곱한 것으로 근사된다.(시그마 제곱과 edge effects 무시)

t>1일 때 위 식은 L_1,...,L_t-1이 대응 되는데 (12) 가중치 없는 버전으로 NCSN denoising score matching과 유사하다 한다.

이 식은 표준 변분 경계와 비교했을 때 작은 t에 해당하는 손실 항목의 가중치를 낮추는 역할임. 따라서 네트워크가 더 큰 t값에서 더 어려운 노이즈 제거 작업에 집중할 수 있게 하고 이는 실제 샘플 품질을 높이는 것으로 이어졌다고 함.

4. Experiments

- 모든 실험에 T를 1000으로 맞춤

- 순방향 과정의 분산을 β_1 = 10^-4, β_T = 0.02로 선형 증가하는 상수로 설정함.

-> β 스케줄링 방법에는 여러가지가 있음

1. 선형 스케줄링 (Linear Scheduling)

: β를 일정하게 증가시키는 방법

2. 제곱 스케줄링 (Quadratic Scheduling)

: β 값을 제곱 함수 형태로 증가시키는 방법, 초반과 후반의 차이를 더 극대화

3.  코사인 스케줄링(cosine scheduling)

: α_t를 코사인 함수로 정의하고 β_t 값을 유도하는 방식

-> β들이 [-1,1]로 스케일된 데이터에 비해 작게 설정되어 reverse process와 forward process가 대략 같은 함수 형태를 유지하게 하면서 신호 대 잡음 비율을 가능한한 작게 유지하려 함.(L_T=D(q(x_T|x_0) || N(0, I))≈10^-5 bits per dimension, L_T가 실제 신호 대 잡음 비율을 의미하는 것은 아니지만 L_T가 작게 하면 신호 대 잡음 비율이 줄어듬.)

 

- reverse process를 나타내기 위해 그룹 정규화(배치 정규화와 유사하지만, 미니배치의 크기에 의존하지 않는 정규화기법, 채널을 여러 그룹으로 나누어 각 그룹 내에서 정규화를 수행한다.)를 전체적으로 사용하는 PixelCNN++과 유사한 U-Net backbone 구조를 가짐. 파라미터는 시간에 걸쳐 공유되며, Transformer 모델에서 사용하는 사인파 위치 인코딩을 적용하여 각 시간 단계에 맞는 위치 정보를 제공함. 또한 16*16 크기의 feature map에서 self-attention mechanism을 사용하여 중요한 부분에 집중할 수 있게 함.

4.1 Sample quality

- 아래 Table 1은 CIFAR10에 대해 Inception scores, FID scores, negative log likelihoods(lossless codelengths)을 기록해놓았다. FID score이 3.17로 우리의 uncoditional model은 알려진 대부분의 model보다 좋은 sample quality룰 보였다. 테스트 세트를 기준으로 계산한 FID score는 5.24로 알려진 다른 모델들의 test set FID score보다 좋다.

- 위 표를 보면 simplified objective로 구할 때보다 true variational bound로 구할 때 더 좋은 codelengths(작을수록 이득임.)를 보였는데 후자가 더 좋은 sample quality(큰 IS, 작은 FID)를 보였다.

다음은 실제로 만든 이미지들

4.2 Reverse process parameteriation and training objective ablation

- 아래 Table 2는 reverse process parameterization과 training objectives의 sample quality effects를 보여줌.

- 우리는 µ를 예측하는 방식은 true variational bound를 구할 때만 잘 작동하는 것을 확인함.

- 또한 reverse process의 variances를 학습하는 것도 실험해보았지만 고정 분산과 비교했을 때 불안정한 학습과 더 낮은 샘플 품질을 초래함.

- ε를 예측하는 방식은 고정 분산으로 variational bound를 사용하여 학습했을 때는 µ를 예측하는 것과 거의 동일하게 수행되었지만, simplified objecive로 학습한 경우 훨씬 더 잘 수행됨.

4.3 Progressive decoding

- Table 1에 CIFAR 10 model의 codelengths도 보여주는데 train과 test 사이의 gap이 최대 0.03 bits per dimension이므로 이는 다른 model에서 보고된 차이보다 적은 차이로 우리의 diffusion model이 overfitting되지 않았음을 나타냄. 

 

- 하지만 여전히 우리의 lossless codelengths는 energy based models와 score matching에서 보고된 큰 추정치보단 좋지만, 다른 유형의 likelihood-based generative models와 비교할 때는 경쟁력이 없음.

-> 우리의 샘플들이 높은 품질을 유지하고 있음에도 불구하고 우리는 diffusion models이 lossy compression에서 높은 품질의 샘플을 생성할 수 있는 inductive bias를 가지고 있다고 판단함.

-> L_1+...+L_T를 rate, L_0를 distortion으로 보면 rate는 1.78 bits/dim이고 distortion은 1.97bits/dim임.(둘이 더해서 3.75)

-> 그런데 이 1.97 비트/차원은 원래 픽셀 값이 [0, 255]로 변환했을 때 RMSE가 0.95에 해당하는 매우 작은 값임.

즉, 절반이 넘는 lossless codelength가 지각할 수 없는 distortions를 설명하는 것임.

 

Progressive lossy compression

- 우리는 progressive lossy code를 도입하여 이 rate-distortion behavior를 더 탐구할 수 있는데 이 부분은 어려워서 생략...

 아무튼 결론은 bits의 대부분이 impreceptible distortions를 설명하고 있다는 거임.

 

Progressive generation

- 이번엔 아래 식을 통해 각 reverse process에서 x_0를 예측해봄.

이 때 아래 그림처럼 대규모 이미지 특징이 먼저 나타나고 세부 사항은 나중에 나타남.

아래 그림은 다양한 t에 대해 x_t(4개 중 오른쪽 아)가 고정된 상태에서 x_0(가장 오른쪽 아래 사진)를 예측한 결과를 보여줌. t가 작을 때는 거의 모든 것이 보존되고 t가 클 때는 대규모 특징만 보존됨.

-> conceptual compression의 hints가 된다 하는데 conceptual compression은 중요한 대규모 특징을 먼저 보존하고, 세부 사항을 나중에 보존하는 방식임.

 

Connection to autoregressive decoding

- variational bound를 아래와 같이 다르게 쓸 수 있는데

만약 diffusion process length T가 data의 dimensionality라 하고 forward process q(x_t|x_0)를 t번째 좌표를 만들어내는 것 같이 조건들을 설정해주면 여기서 p_θ를 훈련하는 것이 마치 autoregressive model이 됨.

-> 이 때문에 Gaussian diffusion model을 autoregressive model의 일반화라 볼 수 있음.

4.4 interpolation

 - 우리는 stochastic encoder q를 사용하여 x_0, x_0'을 interpolate할 수 있음. q를 사용하여 x_t와 x_t'으로 변환한 후 선형 보간으로 새로운 벡터를 만든 다음 reverse process를 통해 이미지 공간으로 decoding 하는 것임.

즉, 아래와 같이 decoding하는 것.

이는 위 그림의 왼쪽에 모사된 것처럼, 소스 이미지의 손상된 버전을 선형 보간 후 reverse process를 통해 인위적인 흔적을 제거하는 효과를 가짐. 

 오른쪽 그림은 노이즈를 고정한 채 람다를 달리하면서 보간 및 복원을 보여주는 데 높은 품질의 복원을 생성하며, 포즈, 피부, 톤, 헤어스타일, 표정 및 배경과 같은 속성이 부드럽게 변하는 그럴듯한 보간을 생성하지만 안경은 그렇지 않음. 

5. Related Work

- 확산 모델은 흐름(flow) [9, 46, 10, 32, 5, 16, 23]과 VAE [33, 47, 37]와 비슷할 수 있지만, 확산 모델은 q에 매개변수가 없고 최상위 잠재 변수 x_T가 데이터 x_0와 거의 제로의 상호 정보를 가지도록 설계되었다. 우리의 ϵ-예측 역방향 과정 매개변수화는 확산 모델과 여러 노이즈 수준에서의 denoising score matching과 annealed Langevin dynamics를 통한 샘플링 사이의 연결을 확립한다 [55, 56]. 그러나 확산 모델은 간단한 로그 가능도 평가를 허용하고, 학습 절차는 변분 추론을 사용하여 Langevin dynamics 샘플러를 명시적으로 학습한다 이 연결은 또한 특정 가중 형태의 denoising score matching이 Langevin-like 샘플러를 학습하기 위한 변분 추론과 동일하다는 역방향 의미도 가진다. 마코프 연쇄의 전이 연산자를 학습하는 다른 방법들로는 infusion training [2], variational walkback [15], generative stochastic networks [1], 그리고 기타 [50, 54, 36, 42, 35, 65]가 있다.

 

- Score matching과 에너지 기반 모델링의 알려진 연결에 의해, 우리의 작업은 에너지 기반 모델에 대한 최근 연구 [67–69, 12, 70, 13, 11, 41, 17, 8]에 영향을 미칠 수 있다. 우리의 비율-왜곡 곡선은 하나의 변분 경계 평가에서 시간에 걸쳐 계산되며, 이는 annealed importance sampling의 한 번의 실행에서 왜곡 페널티에 대한 비율-왜곡 곡선을 계산하는 방법을 연상시킨다 [24]. 우리의 점진적 디코딩 논증은 convolutional DRAW 및 관련 모델 [18, 40]에서 볼 수 있으며, 오토회귀 모델 [38, 64]에 대한 더 일반적인 설계 또는 샘플링 전략으로 이어질 수도 있다.

6. Conclusion

 우리는 diffusion models를 사용하여 높은 품질의 이미지 샘플을 제시했으며 diffusion models과 variational inference를 통한 Markov chains training, denoising score matching과 Langevin dynamics(이를 확장한 에너지 기반 모델), autoregressive models, progressive lossy compression 간의 연결을 발견했따. Diffusion models이 이미지 데이터에 대해 뛰어난 inductive bias를 가지고 있는 것 같으므로 이 모델이 다른 데이터 형태에서도 유용한지, 다른 유형의 생성 모델 및 머신 러닝 시스템의 구성 요소로서 어떻게 활용될 수 있는지 조사해보고자 한다.

Broader Impact

- 우리의 확산 모델 연구는 기존의 다른 유형의 딥 생성 모델에 대한 연구와 유사한 범위를 갖는다. 예를 들어, GAN, 흐름, 오토회귀 모델 등의 샘플 품질을 개선하려는 노력이 그렇다. 이 논문은 확산 모델을 이러한 기법들의 범주 내에서 일반적으로 유용한 도구로 만드는 데 기여하며, 이는 생성 모델들이 세상에 미친(그리고 앞으로 미칠) 영향을 확대하는 데 기여할 수 있다.

 

- 불행히도, 생성 모델의 악의적인 사용은 많이 알려져 있다. 샘플 생성 기술은 정치적 목적으로 고위 인물들의 가짜 이미지와 비디오를 생성하는 데 사용될 수 있다. 소프트웨어 도구가 등장하기 전에도 수작업으로 가짜 이미지를 만드는 일이 있었지만, 생성 모델과 같은 도구는 이 과정을 더 쉽게 만든다. 다행히도, 현재 CNN이 생성한 이미지에는 미묘한 결함이 있어 이를 감지할 수 있지만, 생성 모델의 발전은 이를 더 어렵게 만들 수 있다. 또한, 생성 모델은 훈련된 데이터셋의 편향을 반영힌다. 많은 대규모 데이터셋이 인터넷에서 자동화된 시스템에 의해 수집되기 때문에, 특히 이미지가 라벨링되지 않은 경우 이러한 편향을 제거하기가 어렵다. 이러한 데이터셋을 기반으로 훈련된 생성 모델의 샘플이 인터넷에 확산되면, 이러한 편향은 더욱 강화될 것이다.

 

- 반면에, 확산 모델은 데이터 압축에 유용할 수 있다. 데이터가 더 높은 해상도를 가지게 되고 글로벌 인터넷 트래픽이 증가함에 따라, 이는 인터넷 접근성을 넓은 대중에게 보장하기 위해 중요할 수 있다. 우리의 연구는 이미지 분류부터 강화 학습에 이르는 다양한 다운스트림 작업을 위한 라벨이 없는 원시 데이터에 대한 표현 학습에 기여할 수 있으며, 확산 모델은 예술, 사진, 음악에서 창의적인 용도로도 사용될 수 있다.

 

 

 원래 autoencoder는 1980년대 만들어진 신경망 모델 중 하나로 데이터를 효율적으로 표현하기 위해서 고안되었다.  Encoder 구조를 통해 데이터를 압축하고 decoder 구조로 다시 복원하는 과정을 통해 데이터의 중요한 특징을 추출하는 것이 목표였는데 이 구조를 유지한 채 각각의 목적에 맞게 설계되어 noise를 제거하는 DAE, 새로운 데이터를 생성하는 VAE 등으로 발전하였다.

 오늘 다뤄볼 모델은 VAE이다. 참고한 논문은 'Auto-Encoding Variational Bayes' by. Diederik P Kingma, Max Welling이고 아래 사이트에 기재되어있다.

[1312.6114] Auto-Encoding Variational Bayes (arxiv.org)

 

Auto-Encoding Variational Bayes

How can we perform efficient inference and learning in directed probabilistic models, in the presence of continuous latent variables with intractable posterior distributions, and large datasets? We introduce a stochastic variational inference and learning

arxiv.org

수식은 아래 사이트를 참고하였습니다.

[논문리뷰] Auto-Encoding Variational Bayes(VAE) 모든 수식 알아보기 (tistory.com)

 

[논문리뷰] Auto-Encoding Variational Bayes(VAE) 모든 수식 알아보기

0. 들어가며 제목은 모든 수식을 알아본다고 호기롭게 썼으나 제가 이해한 만큼만 이 포스팅에 담길 예정입니다. 학습이 어떤식으로 이루어 지는지에 초점을 맞추기 보다는 왜 loss가 이런 식으

rla020.tistory.com

 

Abstract

  • 우리는 어떻게 intractable posterior distributions를 갖는 continuous latent variables가 존재하고 large datasets에서 효율적인 inference와 directed probabilistic models를 학습할 수 있을까?
    • by. stochastic variational inference & learning algo.
  • 우리는 이 논문을 통해 크게 2가지를 기여함.
    • reparameterization of the variational lower bound로 간단한 SGD로 최적화 가능한 a lower bound estimation를 만든 것
    • approximate inference model을 proposed lower bound estimator를 통해 intractable posterior에 fitting 시켜 posterior inference가 효율적으로 수행되게 하는 것

1. Introduction

  • Directed probabilistic models에서 연속적인 잠재 변수와 파라미터가 intractable(앞으로 '난해한, 복잡한'으로도 자주 쓰겠다.) posterior distributions(p(z|x))를 가지면 어떻게 효율적으로 근사추론하고 학습할 수 있을까?
    • variational Bayesian(VB) approach
      • 복잡한 사후 분포를 더 간단한 분포로 근사하여 계산의 용이성을 도모하는 접근법
      • 기본 아이디어는 근사 분포 선택과 ELBO(Evidence Lower Bound, evidence는 x의 log-likelihood) 최적화로 이루어짐.
      • variational은 원함수가 어려울 때 다른 함수로 대체하는 방법을 의미
      • 위 식의 유도과정
    • VB의 방법 중 하나인 mean-field접근법이 있는데
      • 근사 분포를 각 잠재 변수가 독립적인 형태로 근사해 다변수 분포를 단변수 분포의 곱으로 나타낸다.
      •  
      • mean-field 접근법은 물리학에서 유래되어 복잡한 시스템에서 모든 상호작용을 계산하기 어려워 평균적은 장으로 근사하는 방식임.
      • 하지만 이런 가정을 하더라도 general case에서 approximate posterior q(z)는 적분하기 어렵다.(논문에서 말하는 analytical solutions은 수학공식을 통한 적분을 말함.)
      • 따라서. variational lower bound를 reparameterization을 통해 simple differentiable unbiased estimator of the lower bound를 만들고 이 SGVB(Stochastic Gradient Variational Bayes) estimator가 efficient approximate posterior inference에 사용됨을 보일 것이다.
  • i.i.d. dataset(각 data points 독립적, from 동일한 분포)과 data point마다 continuous latent variable이 있는 경우 Auto-Encoding VB(AEVB) algo. 를 제안한다.
    • 이 알고리즘은 SGVB estimator로 inference와 learning을 효율적으로 가능하게 해 recognition model을 최적화할 수 있다.
    • 그 결과, simple ancestral sampling(모델의 구조에 따라 순차적으로 sampling 하는 것)으로도 매우 효율적인 approximate posterior inference가 가능하다. -> 빠른 learning으로 이어짐., 비싼 interative infernce(MCMC) 같은 거 안 써도 됨.
  • 이런 learned approximate posterior inference model은 다양한 task에도 쓰일 수 있고 특히 neural network와 결합하면 variational auto-encoder가 된다.

2. Method

    • 이번 장에선 lower bound estimator(a stochastic objective function)을 유도해 볼 것이다.
    • 사전에 하는 가정은 i.i.d dataset with latent variables per datapoint, maximum likelihood(ML) or maximum a poseteriori(MAP)가 목표이고 latent variables에 대해 variational inference를 하는 것이다.
      • variational inference: 복잡한 확률 분포를 계산하기 쉬운 분포로 근사하여 접근하는 방법
    • 이 시나리오를 글로벌 파라미터에 대해서도 variational inference를 수행하는 경우로 확장하는 것은 간단하다. 해당 알고리즘은 appendix F에 올려두지만 이 경우에 대한 실험은 앞으로 연구가 필요하다.(VAE는 잠재 변수에 대해서만 variational inference를 수행함.)
    • 우리의 아이디어는 실시간으로 연속적인 생성과 전달되어 분석 및 처리가 요구되는 streaming data에서도 사용할 수 있지만 간단히 하기 위해 fixed dataset으로 가정하겠다.






    • 2.1 Problem scenario
      • 우리는 데이터 x가 보이지 않는 continuous random variable z로부터 random process를 통해 만들어졌다고 가정하자.
      • 이 프로세스는
        • z는 true parameter 세타*로 이루어져 있는 prior distribution p_{세타*}(z)로부터 생성되고
        • x가 conditional distribution p_{세타*}(x|z)로부터 만들어진다.
      • 이렇게 two steps로 이루어진다.
      • p_{세타*}(z), p_{세타*}(x|z)는 각각 parametric families of distributions에서 온다고 가정하는데 이는 각각의 분포가 특정한 parameter를 통해 결정됨을 의미한다.(가우시안이면 평균과 분산)
      • p_{세타*}(z), p_{세타*}(x|z)는 세타와 z에 대해 미분 가능도 가정
      • 그리고 이러한 과정은 대부분 hidden process이기 때문에 true pparameter 세타*, latent variable z 역시 알지 못한다.
      • 매우 중요한 것이, marginal과 posterior에는 simplifying assumptions를 적용하지 않은 것!
      • prior과 likelihood는 parametric familes에서 오는 반면 marginal과 posterior에는 제약 x
      • 우리는 다음의 case에서도 작동하는 일반적인 알고리즘에 관심 있다.
        • Intractability: marginal likelihood인 p(x)= ∫p(z)p(x|z)dz가 intractable한 상황. 즉, p(x)를 계산할 수 없고 미분할 수 없다. + true posterior density p(z|x) = p(x|z)p(z)/p(x)가 intractable하여 EM algorithm을 사용할 수 없는 상황 + mean-field VB algo.에서 필요한 integrals 역시 intractable한 상황. 
          • likelihood functions p(x|z)가 적당히 복잡하기만 하더라도 자주 생기는 상황이다.(neural network with nonlinear hidden layer이면 당연)
          • EM algo를 사용하려면 p(x)를 알아야 한다.
          • 자세한 내용은 https://go-big-or-go-home.tistory.com/8 에
        • A large dataset: 데이터 셋이 많아 모든 데이터를 한꺼번에 처리하는 batch optimzation을 못하기 대문에 minibatches가 single datapoints로 update를 하려 한다. 이때, sampling methods는 각 데이터 포인트 혹인 mini batches마다 반복적으로 sampling을 수행해야 하므로 너무 많은 비용이 든다.
      • 우리는 이에 대한 해결책을 제시하기 위해 세 가지 관련된 문제로 쪼갰다.
        • Efficient approximate ML or MAP estimation for the parameter theta
          • hidden process를 모방하고 real data와 비슷한 데이터를 만들 수 있다.
        • Efficient approximate posterior inference of the latent variable z given an observed value x for a choice of parameters theta
          • coding or data representation tasks에 적합하다.
        • Efficient approximate marginal inference of the varible z
          • 여러 방면에 사용된다.(prior of x이니까) 
      • 위 문제들을 해결하기 위해 recognition model q_{파이}(z|x)를 도입한다. 이는 intractable true posterior p(z|x)를 근사한 것이다. 
      • 또한 알아야 할 것이 mean-field variational inference와 다르게 factorial할 필요가 없고(factorial하다는 것은 잠재변수끼리 독립적일 필요가 없다는 것) recognition model의 파라미터 파이는 단순한 수학적 기댓값 공식으로 계산될 필요가 없다.
        • 대신 recognition model parameters 파이와 generative model parameters 세타를 동시에 학습하는 learning method를 도입할 것이다.
      • Coding theory 관점에서 unobserved variables z는 latent representation or code로 볼 수 있어 recognition model q(z|x)를 확률적 encoder로 볼 수 있다. 주어진 datapoint x에 대해 z에 대한 분포를 만들기 때문.(단, x가 생성될 수 있는 z들로 한정) 같은 관점으로 p(x|z)는 확률적 decoder가 된다. 주어진 code z로 대응되는 x에 대한 분포를 만들기 때문.
    • 2.2 The variational bound 
        • marginal likelihood는 individual data points의 marginal likelihoods의 합으로 구성된다.
        • 그리고 이 각 데이터 포인트의 marginal likelihood는 다음과 같이 쓸 수 있다.
        •  


        • (1), (2) 유도
        • 우측항의 왼쪽 KL divergence는 true poseterior와 그것의 근사에 대한 차이이고 이 값은 non-negative이기 대문에 두 번째 항은 L(세타, 파이; x)는 (variational) lower bound on the marginal likelihood of datapoint i와 동일하다.
        • 이 식은 다시 아래와 같이 쓸 수 있는데
        •  
      • (3) 유도
      • 우리는 lower bound를 variational parameters인 파이와 generative parameters 세타로 미분하고 최적화하려 하는데 파이에 대한 미분은 좀 문제가 있다.
      • Monte Carlo gradient estimator를 기댓값에 적용한 식은 다음과 같은데 
      • where z^(l) ~ q(x❘x^(l)) 첫번째 term에서 두번째 term으로 넘어가는 부분 스코어함수 트릭인데 확률 분포에 대한 기대값의 그라디어트를 계산하는데 사용된다고 한다. 그라디언트 logq(z)를 score function이라 한다.
      • 이 값이 매우 높은 분산을 보여 실용적이지 않다는 것이다.(아래 2.4 section에서 reparameterization trick과 score function을 비교해 보겠다.)
    • 2.3 The SGVB estimator and AEVB algorithm
      • 이번 section에선 실용적인 lower bound estimator랑 그것의 미분된 것을 구해볼 것인데 여기서 사용되는 기법이 posterior을 근사한다고 가정한 q(z|x) 뿐만 아니라 q(z)에도 적용될 수 있다.(변분 추론 기법이 적용 범위가 넓음을 의미) 
      • section 2.4에서 소개될 조건 하에서 선택된 approximate posterior q(z|x)에 대해 q(z|x)를 따르는 random variable z틸다를 differentiable transformation g(e, x)와 보조 noise variable e를 통해 reparameterize할 수 있다.
      • section 2.4에 적절한 분포 p(e)와 함수 g(e, x)를 잡는 법을 소개한다. 우리는 이제 f(z)의 Monte Carlo estimates of expectations을 다음과 같이 계산할 수 있다.
      • 이를 eq. (2)에 적용하여 일반적인 Stochastic Gradient Variational Bayes (SGVB) estimator를 얻는다.
      • 시그마 오른쪽의 두 term에 괄호 있어야 한다.


      • eq.(3)의 KL-divergence D(q(z|x)||p(z))는 주로 적분가능하다.(appendix B에서 볼 거임.) 따라서 오른쪽에 있는 expected reconstruction error E_q[log(p(x|z))]의 sampling만 근사하면 된다. 식의 의미를 살펴보면 KL-divergence term은 approximate posterior를 prior p(z)에 가깝게 하는 파이에 대해 regularizing 하는 term이다. eq. (3)에 reparameterization trick을 사용하면


      • 이렇게 두 번째 버전 SGV estimator가 나오고 이 식은 일반적으로 generic estimator보다 작은 분산을 갖는다.
        • 왜 그런지에 대한 얘기는 없는데 단순히 z에 의존하는 term이 두 개여서 그런가 싶다...
      •  data set X가 총 N datapoints가 있다면 minibatches로 전체 marginal likelihood를 다음과 같이 구할 수 있다.
      • where the minibatch X^M = {x^(i)}(i=1,...,M) is a randomly drawn sample of M datapoints from the full dataset X with N datapoints.
      • 그럼 Auto-Encoding VB (AEVB) algo. 다음과 같이 구현된다.
      • auto-encoders관의 관계는 eq.(7)을 보면 명확하다. 
        • 첫 번째 term은 KL divergence of the approximate posterior from the prior로 regularizer의 역할을 수행한다.
        • 두 번째 term은 expected negative recounstruction term으로 함수 g()는 x와 noise vector e를 approximate posterior에서 뽑은 sample인 z로 mapping해주는 역할이고 그 z가 두번째 term으로 들어간다.
          • log(p(x|z))는 under generative model, given z에서 datapoint x의 확률을 의미하는데 당연히 크면 클수록 좋으니 negative가 붙어 negative reconstruction error이다.
    • 2.4 The reparameterization trick
        • 우리는 문제를 해결하기 위해 q(z|x)에서 샘플을 생성하는 부분을 
        • score function trick에서
        • z를 샘플링해 그라디언트 기호 뒤의 log값이 고차원일 때 큰 값을 가진다고 한다.
        • reparameterization trick으로 
        • noise를 샘플링해 미분가능한 함수로 z를 구하므로 상대적으로 분산이 작다.
        • 넘어왔다.
        • -------------------------------------------------------------------------------------------------------------------------------------------------
        • + 이 부분은 논문에 없지만 score function trick과 reparameterization trick의 분산을 비교해 보겠다.
        •  
          score function trick으로 gardient의 분산 samplin 하기
        • reparameterization trick으로 gradient의 분산 구하기


        • 이렇게 score function trick을 사용했을 때 분산이 훨씬 크다. 노이즈가 gardient 추정에 미치는 영향을 줄이기 때문에 안정적인 추정이 가능하게 한다고 한다.


        • 그럼 왜 높은 분산을 가지면 안 좋은 걸까?
          • 높은 분산은 학습에 불리하기 때문. 학습 속도가 느려지고 최적화 과정에서 적절한 방향으로 수렴하지 못할 가능성이 높아짐. 즉 학습이 불안정해지는 것. + overfitting, underfitting 가능성 모두 증가
        • -------------------------------------------------------------------------------------------------------------------------------------------------
        • 재매개변수화 트릭의 본질은 간단하다. 연속 확률 변수 z가 q(z|x)라는 분포를 다른다고 가정하면 random variable z를 z=g(e, x) 같이 결정론적 변수로 표현할 수 있다.(e는 independent marginal p(e)를 갖는 보조 변수, ㅎ()는 파라미터 파이에 의해 매개변수화된 벡터 함수)
        • 이 트릭이 왜 우리에게 유용한가면 이를 통해 q(z|x)의 Monte carlo estimate of the expecation를 미분가능하게 해 주기 때문이다.
          • 증명은 z = g(z|x)인 결정론적 mapping이 주어졌을 때
          • 확률 분포를 변환하면(이 부분이 잘 이해가 안 갔는데 수리 통계를 공부해야 할 거 같다..)
          •  
          • 가 성립하고  이어서
          • 가 성립한다. 2.3에서 이 트릭으로 variational lower bound에 대해 미분가능한 estimator를 얻은 것.
        • 몇 가지 예시를 들어보면 만약 z가 단변량 가우시안 분포를 따른다고 하면


        • 유효한 reparameterization은 z=μ+σϵ이다.
        • 따라서 기댓값이 다음과 같이 변하고
        •  

 

    • 몬테카를로 추정을 하면
    •  


    • 가 된다.
    • 이렇게 특정 분포 q(z|x)에 대해 미분 가능한 변화 g(e, x)아 보조 변수 e를 선택할 수 있는 건 다음 3가지 접근 방식 중 하나라도 가능할 때이다.
      • Tractable inverse CDF: 만약 q(z|x)의 역 누적 분포 함수를 계산할 수 있는 경우 적용할 수 있다. 이 경우 g(e, x)에서 e는 U[0, I]를 따른다.
        • examples: Exponential, Cauchy, Logistic, Rayleigh, Pareto, ...
      • Gaussian example과 유사하게 "location-sacle" family of distributions에 해당하는 경우 standard distribution을 따르는 e를 auxiliary variable로 사용할 수 있다.
        • examples: Gaussian, Laplcae, Elliptical, Student's t, Logistic, Uniform, ...
      • 랜덤 변수를 보조 변수의 다양한 변환으로 표현할 수 있는 경우
        • examples: Log-Normal(정규 분포된 변수의 지수 변환), Gamma(지수 분포된 변수들의 합), Dirichlet(감마 변수들의 가중합), Chi-Squared, Beta, ...
    • 이러한 접근법들이 모두 불가능한 경우 inverse CDF에 대한 좋은 근사 방법이 있긴 한데 PDF의 시간 복잡도와 필적한 계산이 든다.

3. Example: Variational Auto-Encoder

  • 이번 section에선 probabilistic encoder로 neural network를 사용한 example인 variational auto-encoder에 대해 알아보겠다. parameters 파이와 세타는 AEVB algo.에 의해 jointly optimize된다.
  • latent variables의 prior p(z)를 centered isotropic multivariate Gaussian으로 가정한다.(평균이 0이고 공분산 행렬이 단위행렬인 가우시안 분포)


    • 이 경우 사전 분포는 파라미터를 가지지 않는다. 평균과 공분산 행렬이 고정되어 있으므로 학습할 파라미터가 없다.
  •  p(x|z)의 경우 x가 실수값 데이터의 경우 multivariate Gaussian, 이진 데이터의 경우 Bernoulli 분포이다. 이 분포의 파라미터는 MLP(단일 은닉층을 가진 완전 연결 신경망)을 통해 z로부터 계산된다. -> appendix C
  • 실제 사후 분포 p(z|x)는 계산하기 어렵다. 반면 이를 근사한 q(z|x)의 형태에는 많은 자유도가 있지만 우리는 실제(계산 불가능하지만) 사후 분포가 대각 공분산을 가진 가우시안 분포를 따른다고 가정한다. 이 경우 variational approximate posterior 역시 대각 공분산 구조를 가진 다변량 가우시안 분포로 설정할 수 있다.
    approximate posterior의 평균과 표준편차는 encoding MLP의 출력이다. 이 MLP는 데이터 포인트 x와 variational parameters 파이의 비선형 함수로 평균과 표준편차 계산한다.
  • 2.4에서 설명했듯이 z를 아래와 같이 sampling한다
  • e는 N(0, I)를 따르고 원에 중심이 찍힌 기호는 element-wise product를 의미한다.


  • 이 모델의 경우 p(z) -> prior과 q(z|x)를 Gaussian으로 가정하기 때문에 eq.(7)에 estimator를 사용할 수 있다.(KL-divergence는 근사 없이 계산 가능함!  -> appendix B)
  • 따라서 data point x와 모델에 대한 최종 estimator는


  • 와 같다.
  • 뒤에 붙는 decoding term log(p(x|z))는 modeling하는 data의 type에 따라 Bernoulli or Gaussian MLP이다.

4. Related Work

  • 연속적인 잠재 변수를 사용한 model에 적용 가능한 온라인 학습 방법으로 wake-sleep 알고리즘만이 존재한다.
    • 우리의 방법과 마찬가지로 실제 사후 분포를 근사하는 recoginition model을 사용한다.
    • wake-sleep algo.의 단점은 두 objective functions를 동시에 근사해야 하는데 두 목표함수가 결합되어 이는 marginal likelihood의 최적화와 다르다는 것이다.
    • 장점은 이 알고리즘이 이산 잠재 변수를 포함하는 모델에도 적용될 수 있다는 점이다.
    • 데이터 포인트당 계산 복잡도는 AEVB와 동일하다.
  • 최근에 stochastic variational inferencec가 주목받고 있다. 최근에 2.1에서 논의된 단순 gradient esstimator의 높은 분산을 줄이기 위해 제어 변수를 도입하였고 이를 exponential family approximations of the posterior에 적용하였다. 좀 더 일반적인 방법으로 이 paper와 유사한 reparameterization이 exponential-family approximating distributions의 natural parameters를 학습하기 위한 stochastic variational inference algo.에 사용되었다.
  • AEVB algo.는 directed probabilistic models(trained with a variational objective)와 auto-encoders 사이의 관계를 보여준다. 선형 auto-encoders와 generative linear-Gaussian models 사이의 관계는 오래전부터 알려져 있었다. 
    • PCA와 사전 분포 p(z) = N(0, I)와 조건부 분포 p(x|z) = N(x:Wz, eI)(특히 e가 매우 작은 경우)를 가지는 특수한 경우의 linear-Gaussian models의 ML의 해와 일치함을 보였다.
  • autoencoders에 관한 최근 관련된 연구는 비정규화 오토인코더의 훈련 기준이 입력 X와 잠재 표현 Z 사이의 mutual information의 하한을 최대화하는 것과 일치함을 보여주었다. mutual information을 최대화하는 것은 conditional entropy를 최대화 하는 것과 같으며 이는 autoencoding 모델에서 데이터의 expected loglikelihood(negative reconstrunction error)의 하한이다. 그러나 이런 reconstruction criterion으론 유용한 표현을 학습하기에 충분하지 않다는 것이 알려져 있다. 유용한 표현을 학습하기 위해 정규화 기법이 제안되었으며, 그 예로 denoising , constractive and sparse autoencoder 변형이 있다.
  • SGVB objective는 variational bound에 의해 정해지는 regularization term이 포함되어 있으며 이는 유용한 표현을 학습하는데 필요한 일반적인 regularization hyperparameter가 필요하지 않다. Predictive sparse decomposition(PSD)와 같은 encoder-decoder 구조와도 관련이 있으며, 여기서부터 영감을 얻었다. 또한 최근에 도입된 Generative Stochastic Networks와도 관련 있다. 이 네트워크에서는 노이즈가 있는 auto-encoders가 마르코프 체인의 transition operator를 학습하여 data distribution에서 샘플링한다. Deep Boltzmann Machines의 효율적인 학습을 위해 recognition model을 사용한 사례가 있다. 이러한 방법들은 unnormalized model(Boltzman machines같은 undirected models)이나 sparse coding models에 중점을 둔 반면, 우리의 제안된 알고리즘은 일반적인 directed probabilistic models를 학습하는데 중점을 둔다.
  • 최근 제안된 DARN method 역시 auto-encoding 구조를 사용하여 directed probabilistic model을 학습하지만 이 방법은 binary latent variables에 제한된다. 더욱 최근에는 auto-encoders와 directed probabilistic models 및 우리가 paper에서 얘기한 reparameterization trick을 사용하는 stochastic variational infernce의 연결에 대해 제시했다. 그들의 연구는 우리와 독립적으로 개발되었으며 AEVB에 대한 추가적인 관점을 제시한다.

5. Experiments

  • 우리는 MNIST와 Frey Face 데이터셋의 이미지로 훈련시켰고 variational lower bound과 marginal likelihood의 측면에서 학습 알고리즘을 비교했다.
  • section 3에서 설명된 generative model(encoder)와 variatinal approximation(decoder)를 사용했으며 인코더와 디코더는 같은 수의 hidden units를 가진다. Frey Face 데이터는 연속적이기 때문에 Gaussian outputs를 갖는 decoder를 사용했으며 encoder와 동일하지만 디코더의 출력에 sigmoid activation function을 사용하여 평균을 (0, 1)의 범위로 제안했다. 여기서 hidden units는 인코더와 디코더 neural networks의 hidden layer를 나타낸다.
    • Frey Face 데이터의 얼굴 이미지의 각 픽셀 값은 0에서 255 사이의 값을 자유롭게 가지지만 MNIST 데이터의 이미지의 각 픽셀 값은 0 or 255 같이 특정 값만 갖는다.
  • 파라미터는 algorithm 1. 에서 이야기한 differentiating the lower bound estimator에 의해 계산된 gradients를 쓰는 stochatic gradient ascent로 업데이트되었다. 또한 사전 분포인 p(세타) = N(0, I)에 작은 wieght decay term이 추가되었다. 이 목표를 최적화하는 것은 likelihood gradient가 gradient of the lower bound로 근사되는 approximate MAP estimation을 수행하는 것과 동등하다.
  • 우리는 AEVB 알고리즘과 wake-sleep algorithm을 비교했다. wake-sleep 알고리즘과 variational auto-encoder 모두 동일한 encoder( = recognition model)을 사용하였다. 모든 파라미터, variational, generative paramters 모두 N(0, 0.01)에서 random sampling으로 초기화되었다고 MAP를 기준으로 사용하여 jointly stocastically optimize되었다. Stepsizes는 Adagrad로 조정되었으며, Adagrad global stepsize parameters는 초기 몇 번의 반복에서 훈련 세트 성능을 기준으로 {0.01, 0.02, 0.1} 중에서 선택되었다. 미니배치 크기는 M=100으로, 데이터 포인트당 샘플 L=1개를 사용하였다.
  • Likelihood lower bound
    • 우리는 MNIST의 경우 500개의 hidden units을, Frey Face 데이터셋의 경우 200개의 hidden units를 가지는 generative models(decoders)와 대응되는 encoders(a.k.a recognition models)로 훈련하였다. Frey Face dataset의 경우 상당히 작은 dataset이기 때문에 overfiting을 막기 위해 hidden units의 개수를 줄였다. 선택된 hidden units의 수는 auto-encoders에 대한 기존 문헌을 기반으로 하였으며, 다양한 알고리즘의 상대적인 성능은 이러한 선택에 크게 민감하지 않았다.
    • 다음 그림은 lower bounds를 비교한 결과를 알려준다.
    • 하한은 높을 수록 이득이다.
    • 흥미롭게도, 과도한 잠재 변수가 overfitting을 초래하지 않았으며, 이는 variational bound의 regularizing nautre로 설명된다.
  • Marginal likelihood
    • 매우 저 차원의 잠재 공간의 경우 learned generative models의 marginal likelihood를 MCMC estimator를 통해 추정할 수 있다.(자세한 내용은 appendix D에) Encoder와 decoder로 neural networks를 사용했으며 이번에는 100 hidden units과 3개의 잠재변수를 사용하였다.(높은 차원의 잠재 공간에서는 추정치가 신뢰할 수 없게 되었다.) 
    • 다시 한번 MNIST dataset을 사용하였다. AEVB와 Wake-Sleep method를 hybrid Monet Carlo(HMC) sampler를 사용한 Monte Carlo EM(MCEM)과 비교하였다.(자세한 내용은 appendix E에) 우리는 작은 훈련 세트와 큰 훈련 세트 크기에 대해 세 알고리즘의 수렴 속도를 비교했다. 
    • 결과는 아래 그림에 나와있다.


  • Visualization of high-dimensional data
    • 만약 저 차원 잠재 공간(ex. 2D)를 선택하면 learned encoders(recognition model)을 통해 high-dimensional data를 low-dimenstional manifold로 project할 수 있다. MNIST와 Frey Face 데이터 셋의 2D latent manifolds 시각화는 appendix A에 있다.

6. Conclusion

  • 우리는 연속적인 잠재 변수를 사용한 효율적인 근사 추론을 하는 variational lower bound의 새로운 estimator인 Stochastic Gradient VB(SGBV)를 소개했다.
  • 제안된 estimator는 standard stochastic gradient method를 통해 간단히 미분 및 최적화가 가능하다.
  • i.i.d. dataset과 continuous latent variables per datapoint의 경우, 우리는 SGVB estimator를 사용하여 근사 추론 모델을 학습하는, 효율적인 추론 및 학습 알고리즘인 Auto-Encoding VB (AEVB)를 소개한다.
  • 이론적인 장점은 실험 결과에 반영되었다.

7. Future Work

  • SGVB estimator와 AEVB algorithm은 continuous latent variables를 사용하는 거의 모든 inference and learning problem에 적용될 수 있으므로, 미래 연구 방향이 많이 있다.
    • AEVB와 jointly 훈련된 encoders와 decoders에 더 깊은 신경망(ex. convolutional networks)를 사용하여 hierachical generative architectures를 학습하는 것
    • time-series models(= dynamic Bayesian networks)
    • SGVB를 global parameters에 적용
    • 복잡한 noise distributions를 학습하는데 유용한 잠재 변수를 가진 supervised model

Appendix

A. Visualisations

 SGVB로 학습된 모델의 잠재 공간과 이에 대응하는 observed space의 시각화는 아래 두 그림이다.

B. Solutions of -D(q(z)||p(z)), Gaussian case

 Variational lower bound(the objective to be maximized)는 KL term을 포함하는데 이는 종종 analytically 적분 된다.

 VAE에서는 prior p(z)를 N(0, I)로 가정하고 posterior approximation q(z|x) 역시 가우시안이기 때문에 위 항이 생각보다 깔끔하게 적분 되는데 식을 전개해 보겠다.

뮤랑 시그마 모두 벡터임
뮤랑 시그마 모두 벡터임
여긴 위에가 되었으면 쉬운 부분

C. MLP's as probabilistic encoders and decoders

 VAE에서 신경망은 probabilistic encoders와 decoders로 사용된다. Encoders와 decoders의 선택은 데이터와 모델의 유형에 따라 다양한데 논문에서는 비교적 간단한 신경만인 multi-layered perceptrons(MLPs)를 사용하였다. 인코더로는 가우시안 출력을 가지는 MLP를 사용하였고, 디코더로는 데이터의 유형에 따라 가우시안 또는 베르누이 출력을 가지는 MLP를 사용하였다.

- C.1 Bernoulli MLP as decoder

 이 경우 p(x|z)를 z에서 계산된 확률을 갖는 다변량 베르누이 분포로 가정한다. 이는 단일 은닉층을 가진 완전 연결 신경망으로 이루어져 있다.

출력은 시그모이드 활성화 함수를 사용해 각 픽셀이 1일 확률을 계산한다.

- C.2 Gaussian MLP as encdoer or decoder

 이 경우 인코더와 디코더는 대각 공분산 구조를 가진 다변량 가우시안 분포로 가정한다.

출력은 평균 뮤와 분산 시그마 제곱을 예측하여 잠재 변수 z에서 입력 데이터 x의 확률 분포를 나타낸다.(두 개의 신경망으로 평균과 분산을 각각 예측)

 

D. Marginal likelihood estimator

 우리는 샘플링된 공간(잠재변수 z의 공간)의 차원이 낮은 경우(5차원 이하)와 충분한 샘플이 있는 경우 marginal likelihood에 대한 좋은 estimates를 만드는 marginal likelihood estimator를 유도하였다. p(x,z) = p(x)p(x|z)를 생성 모델이라 하고 given x에 대해 marginal likelihood p(x)를 estimate해보자.

 추정 과정은 세 단계로 구성된다.

1. Hybrid Monte Carlo같은 gradient-based MCMC를 사용하여 posterior에서 z 값을 L개 샘플링한다.

2. z samples에 대해 density estimator q(z)를 fit한다.

3. 다시, posterior에서 L개의 값을 샘플링하고 이러한 samples와 잘 학습된 q(z)를 다음 estimator에 대입한다.

아래 식으로부터 유도됨.

E. Monte Carlo EM

 Monte Carlo EM algorithm은 인코더를 사용하지 않고 잠재 변수z의 posterior p(z|x)에서 직접 샘플링한다. 이 때 posterior의 gradient를 사용하는데 gradient는 다음과 같다.

 Monte Carlo EM은 accpetance rate가 90%가 되도록 자동으로 조정된 stepsize로 10번의 HMC leapfrog 단계를 수행한 후, 획득된 sample을 이용하여 5번의 가중치 업데이트를 수행한다. 모든 알고리즘에서 파라미터는 Adagrad stepsizes(annealing schedule 동반)를 사용하여 update 된다.

 Marginal likelihood는 학습 및 테스트 세트의 첫 100개의 데이터 포인트에서 추정되었으며, 각 데이터 포인트에 대해 4번의 리프로그 단계를 사용하여 Hybrid Monte Carlo로 잠재 변수의 posterior에서 50개의 값을 샘플링했다.

F. Full VB

 논문에서 설명한 바와 같이, 잠재 변수에 대해서만 수행한 것과는 달리, 파라미터 세타와 잠재 변수 z 모두에 대해 variational inference를 수행할 수 있다. 여기서는 세타에 대한 estimator를 유도하겠다.

 알파로 매개변수화된, 위에서 소개한 parameters에 대한 hyperprior p_{알파}(세타)가 있다고 하자. 그럼 marginal likelihood는 다음과 같이 쓸 수 있다.

 

... 보충 필요

 

 이번 포스트에서 리뷰할 논문은 Chien-Liang Liu와 Yu-Hua Chang이 작성한 'Learning From Imbalanced Data with Deep Density Hybrid Sampling'이다. 논문은 아래 사이트에 기재되어 있다.

https://ieeexplore.ieee.org/document/9723474

Learning From Imbalanced Data With Deep Density Hybrid Sampling

Learning from imbalanced data is an important and challenging topic in machine learning. Many works have devised methods to cope with imbalanced data, but most methods only consider minority or majority classes without considering the relationship between

ieeexplore.ieee.org

 어떤 대회에서 이진 분류 task가 주어진다면 그 대회는 imbalance data일 확률이 높다. 저번 LG Aimers 4기 문제였던 영업 전환 여부를 구하는 문제도 imbalance한 문제였고 현재 kaggle playground에서 active한 대회인 binary classification of insurance cross selling 역시 그러하다. 저번 공모전에서는 SMOTE와 이를 응용한 방법, 모델에 scale_pos_weight 같은 minority calss의 loss에 가중치를 부여하는 방식 사이에서 고민을 많이 했는데 이 논문을 읽고 나서 이런 imbalance에 대처하기 위해 진행된 연구가 내 생각보다 많이 진행되어있었다. 위 논문은 간단히 말하면 auto-encoder의 idea인 latent space를 활용해서 oversampling과 undersampling을 동시에 수행하는 method이다. 이제 자세히 알아가보자.

Abstract

  •  Machine learning에서 imabalance data로부터 학습하는 것은 중요하면서 어려운 주제이다.
  • 하지만 대부분의 방법은 minority class와 majority class간의 relationship은 고려하지 않는다.
  • 또한 oversampling 방법은 original feature space에서 합성하고 neighbors 판단하는 기준이 Euclidean distance이다. 
    • Euclidean distancehigh-dimensional space에 적합하지 않다고 지적
  • 우리는 새로운 방법인 deep density hybrid sampling(DDHS)를 제안한다.
    • Embedding network를 통해 data samples를 low-dimensional separable latent space에 project 한다.
    • 목표는 class간 proximity(가까움)을 data projection시 유지하려 하고
    • within-class와 between-class concepts에서 고안한 loss functions을 사용한다.
    • density를 통해 minority, majority samples를 구하고
    • feature-level approach를 통해 선택된 minority samples로부터 다양하고 유용한 합성의 samples를 만든다.
  • 다양한 실험 환경에서 제안한 방법이 전도 유망하면서 안정적인 결과를 도출해 냈다.
  • 제안하는 방법은 data-level algorithm이기 때문에 boosting technique과 결합할 수 있었고 그 방법인 DDHS-boosting이다. 이 역시 좋은 결과를 가져옴.

1. Introduction

  • Learning from imbalanced data에 대해 보완책을 마련해야하는 이유는 대부분의 machine learning algorithms이 balanced class를 가정하기 때문이다.
    • 따라서 대처가 없다면 classifers는 majority class에 biased 됨.
    • 이 문제는 많은 domains에서 나타남.
  • 많은 방법들이 고안되었지만 high-dimensional, imbalanced dataset에서 stable performance를 달성하는 것은 여전히 어려운 문제임.
    • Random sampling methods(oversampling, undersampling)
      • oversampling -> overfitting 위험성
      • undersampling -> valuable information을 제거할 위험성
    • Synthetic minority oversampling technique(SMOTE) 
      • minority sample과 그들의 k-nearest neighbors에 linear interpolation을 사용하여 oversampling하는 기법
      • minority class만을 오직 고려한다는 점, high-dimensional space에서 부정적인 성능을 가져온다는 점이 문제임.
    • Hybrid methods of oversampling and undersampling
      • oversampling과 undersampling을 결합하여 접근하는 방식
      • original data distribution이나 characteristices를 해치는 arbitrary data samples를 제거한다.
  • Article에서 주장하는 deep density hybrid sampling(DDHS)
    • embedding network를 학습하여 data samples를 low-dimensional separable latent space에 project 한다.
    • project할 때 목표는 data projection시 class간 proximity를 유지하는 것
    • within-class와 between-class concepts으로 이끌어낸 loss fucntion을 사용한다.
    • density를 기준으로 high quality의 samples를 구하고
    • feature-level method를 통해서 선택된 minority samples에서 훌륭한 samples를 만들어낸다.
  • 다른 sota methods와 비교했을 때 유망하고 안정적인 결과를 가져옴.(low, high dimension 가릴 것 없이)
  • 제안된 방법은 data-level algorithm이기 때문에 boosting technique과 결합할 수 있었고 그 방법이 DDHS-boosting임. 이 역시 좋은 결과를 가져옴.
  • 제안한 방법이 공헌하는 바는 다음과 같음.
    •  imbalanced data 문제를 다루는 새로운 method
      • key idea: data projection시 class proximity를 유지하는 것
      • density를 통한 선택을 통해 high quality samples만 남긴다.
    • 방대한 실험을 통해 제안된 방법이 low, high dimenstion에서 모두 좋은 성능을 보인 것.
    • 제안된 방법을 분석하기 위해 추가적인 실험들을 수행함. + boosting technique과의 결합

2. Related Work

  • Imbalanced data problems를 다루기 위한 방법들은 크게 data-level, algorithm-level, ensemble learning, deep learning approaches로 나뉜다.
  • Data-Level Methods
    • key idea: class distributions를 balancing하여 classifiers가 bias 하지 않게 만들자!
    • 어느 classifier에 적용될 수 있기 때문에 활용성이 큰 장점이 있다.
    • random sampling
      • oversampling
        • minority class의 data를 복제한다.
        • overfitting에 취약함.
        •   
          oversampling
      • undersampling
        • majority class의 data를 제거한다.
        • 실제 데이터 분포를 잘 나타내는 samples를 제거할 수 있는 위험이 있음.
        • undersampling
      • hybrid methods
        •  oversampling + undersampling
        • hyprid methods
    • SMOTE(Synthetic Minority Over sampling Technique)
      • minority class의 두 data samples 사이의 line segment 사이의 data로 생산한다.
      • generated data samples가 제한된다는 단점(why? line segment 이외의 요소를 만들 수 없으니까)
        • sol) model-based synthetic sampling(MBS)
          • feature relationships을 capture 하기 위해 linear regression을 사용
          • feature relationship을 기반으로 합성 samples를 생성
      • SMOTE(빨간선 이외의 sample을 생성하지 못하는 단점.)
      • 알고리즘상 k nearest neigbors를 고르는 distance metric에 의존함.
        • 일반적으로 Euclidean distance를 고르지만 high-dimenstional space에서 두 데이터 사이의 거리를 정확하기 측정할 수 없음.
          • why? 차원의 저주(Curse of Dimensionality) 때문임.
            • 고차원의 데이터가 가지는 문제로 다음을 포함함.
              • 데이터 희소성: 차원이 증가할수록 데이터 포인트들이 점점 희소해지는 현상
              • 거리 측정의 비유효성: 고차원 공간에서는 모든 점들 사이의 거리가 거의 동일해지는 경향이 있음.(최소 거리와 최대 거리 사이의 차이가 작아짐.)
              • 노이즈 민감도: 고차원 공간에서는 노이즈가 축적되는 경향
              • 계산 복잡도 증가
            • high dimensions에서 일어나는 일들이 궁금해서 더 찾아봤는데  "A Few Useful Thing to Know about Machine Learning" by Pedro Domingos at the University of Washington에서 Intuition Fails in High Dimensions를 읽어보니 차원이 커질 때 일반화하는 것이 어렵고 중요하지 않는 features가 중요한 features보다 많다면 그 영향을 가려버린다고 한다. -> 예측 어려워짐. 뿐만 아니라 중요한 features가 많더라도 차원이 많아지면 가깝다고 판단하는 데이터들 역시 많아져(격자에서 d만큼 떨어진 게  1차원은 2개, 2차원은 4개, 3차원은 8개..) 가까운 몇 개를 정하는 일이 쉬운 일이 아니다. 이외에도 차원이 늘어나면 hypercube로 근사할 때의 오차, classifier가 reasonable frontier 찾기 어려움 등의 문제가 있다.(그런데 이런 문제들이 대부분 어떤 전제(uniformly distributed)를 가정하기 때문에 정확하지 않을 수 있고 생각보다 해결이 쉬울 수도 있다. 실제로 위 글의 마지막 부분에 handwritten digit recognition에서 대부분의 data들이 lower dimensional manifold(데이터가 존재하는 영역)에 존재해 dimension을 줄이는 algo.(ex. PCA)를 쓰면 완화할 수 있다고 한다.)  
            • Charu C. Aggarwal, Alexander Hinneburg, Daniel A. Keim, "On the Surprising Behavior of Distance Metrics in High Dimensional Space"(2001) 이 논문은 어떤 전제하에 선 the ratio of the distances of the nearest and farthest neighbors to a given target in high dimensional space가 1에 가까워지는 문제를 L_k에서 k가 작을 때(k=1이면 Manhattan, k=2이면 Euclidean) 완화되어서 L_k(k <1)라는 fractional distance norms를 써야 한다라고 주장하는 논문인데 바로 반박하는 "Fractional norms and quasinorms do not help to overcome the curse of dimensionality" by Mirkes, Allohibi, & Gorban (2020) 논문이 있어 연구가 더 필요해 보인다.
            • 해결책까진 완벽하진 않지만 확실한 건 고차원에서 단순 Euclidean distance로 similar를 다루는 것은 지양한다.
            • 더 많은 내용은 https://stats.stackexchange.com/questions/99171/why-is-euclidean-distance-not-a-good-metric-in-high-dimensions를 참고..
          • + 논문 스터디 참가자 중 한분이 말씀하신 대로 categorical data에서 과연 Euclidean distance가 무슨 의미를 갖는지? 에 관한 고찰도 동의한다. 임의로 부여하는 순서와 값들로 이 변수들의 가깝고 멂을 나타내는 것은 타당하지 않기 때문(마치 categorical data를 레이블 인코딩할 때의 단점)!
    • ADASYN(Adaptive Synthetic Sampling, 논문엔 없지만 이 아이도 유명해서 넣음.)
      • SMOTE를 확장해 minority class sample 주변에 majority class가 많이 분포해 있으면 더 많이 생성하는 방식
      • 경계에 위치한 minority samples를 더 생성하는 것이 목적 
    • Tomek link
      • overlapping samples를 제거하는 방식인 undersampling methods
      • overlapping을 정의해야 함.
        • minority sample a와 majority sample b가 있다 하고 d(a, b)를 둘 사이의 거리로 정의하자. 이때  a에  b 보다가 가운 majority sample이 없고 b에 a보다 가까운 minority sample이 없을 때 두 sample의 쌍을 Tomek link라 한다. 그럼 a와 b의 두 classes의 경계에 있는 것이므로 major sample b는 제거돼야 한다.
        •  
    •  borderline-SMOTE
      • SMOTE를 확장한 버전으로 idea는 Tomek link와 같다.
      • SMOTE는 모든 minority sample을 동등하게 보지만 경계에 있는 samples는 잘못 분류될 확률이 높기 때문에 더 중요하게 다루어야 한다.
      • 따라서, minority data를 safe level, danger level, noise level로 나누고 danger level에 해당하는 data들로 합성 samples를 만든다.
    • safe-level-SMOTE
      • SMOTE에서 생기는 class overlap을 지적함.
      • minority class의 모든 sample들은 safe score을 할당받음.
      • safe score를 기반으로 다양한 경우에 따라 합성 samples를 만들어서 합성 samples가 안전한 영역에 분포되게 함.
    • noise reduction a priori synthetic(NRAS)
      • noise reduction과 data generation에 기반한 oversampling method
      • non-noise minority samples로 합성 data samples를 만든다.
    • kernel density estimation(KDE)
      • random oversamppling은 underlying data distributions를 고려하지 않고 data samples를 만드는 것을 지적함.
      • nonparametric method(비모수 방법)
        • 데이터의 기저 분포나 특정 모수를 가정하지 않는 통계적 기법
      • kernel homogeneous funtions를 모아 평균 내어 density function을 추정한다.
      • minority class의 분포를 추정하고 추정한 분포로부터 데이터를 합성하는 방식
      • 아래에서 좀 더 자세히 다루겠음.
  • Algorithm-Level Methods
    • key idea: class별로 misclassification costs에 차이를 두어 classifiers가 minority class에 더 집중하게 만들자!
    • 만약 positive가 minority class라 가정하면 FN(P를 N으로 예측하는)이 FP에 비해 더 높은 cost를 가지는 방식 = cost-sensitive loss function
    • Sun이 주장한 meta-techniques
      • three cost-sensitive boosting algorithms
        • cost-sensitive learning with AdaBoost
    • Zhou and Liu가 주장한 methods
      • sampling과 threshold-moving, soft-ensemble을 통한 cost-sensitive neural networks 구현
    • complementary neural network(CMTNN)과 SMOTE를 결합한 방식
      • undersampling과 oversampling 기법을 결합
      • CMTNN은 Truth NN과 Falsity NN이라는 feedforward NN을 통해서 misclassified data samples를 찾고 제거한다.
  • Ensemble Methods
    • key idea: 이미 우리 알고 있는 bagging, boosting 같은 ensemble methods와 엮어보자! 
    • SMOTEBagging
      • bagging과 SMOTE 기법의 결합
      • 합성 샘플을 다양화하고 majority vote로 분류한다.
    • SMOTEBoost
      • boosting algo. 와 SMOTE를 결합
      • 매 boosting iteration마다 minority class의 합성 sample을 생성한다.
    • RUSBoost
      • 위 두 방식은 oversampling 기법, RUSBoost는 random undersampling에 기반
      • training time을 줄이고 AdaBoost와 결합하여 성능이 향상된다.
    • self-paced ensemble(SPE)
      • classification hardness = classifier가 정확히 예측한 예측을 기반으로 측정하는 classifier의 난이도를 측정하는 개념
        • noise가 많으면 어려운 거임.
      • imformative majority samples를 selecting 해서 얻는 hardness value를 기반으로 학습하는 방법
      • undersampling 기법
      • distance metric에 대한 고민 필요 없음.
  • Deep Learning
    •  key idea: deep neural networks를 통해 feature representations를 학습하고 classification tasks를 동시에 수행하는 것
    • deep learning 역시 balanced class distribution을 기반으로 만들어짐.
    • Buda 등은 CNN에서 imbalance가 야기하는 문제를 지적하고 oversampling이 dominant method임을 밝힘.
    • Havaei 등은 two-phase training을 제안함.
      • transfer learning technique
      • first phase: balanced dataset을 통한 pretrain
      • second phase: fine-tuning technique을 통해 representative distribution을 만듦
    • He 등은 cost-effective semisupervised learning with crowd framework(CSLC)를 제안함.
      • two sampling strategiescost-sensitive crowd labeling approach를 축적한 multivariate time series에 집중함.
    • Wang 등은 AUC maximization과 extreme learning machines(ELMs)를 결합함  -> AUC-ELM
      • SAUC-ELM은 imbalanced binary classification을 다룸.
    • Khan 등은 cost-sensitive deep neural network(CoSen)을 제안
      • network parameters와 class-sensitive costs를 동시에 optimize하는 방법을 제안. -> algorithm-level method이기도 함.
    • Arefeen 등은 undersampling methods인 NUS-1과 NUS-2를 제안함.
      • neural networks에 기반하여 minority class에 overlap 하는 majority samples를 제거하는 방식임.

3. Proposed Method

  • 많은 data-level methods는 SMOTE의 개념을 확장한 방법인데 imbalanced and high-dimensional datasets를 만나는 경우 두 가지 문제점이 존재
    • 1. minority samples만을 고려하고 majority class에서 오는 영향을 무시함.
    • 2. high-dimensional datasets에선 Euclidean distance가 data 간 거리를 정확히 측정하지 못함.
  • 많은 learning models는 data를 optimal lower-dimensional representation에 projecting하는 것이 이득임을 알려줌.
    • projection은 spectral clustering을 도와 optimal neighbors를 알게 해 준다.
      • spectral clustering: 그래프 이론에 기반한 클러스터링 알고리즘으로, 라플라시안 행렬을 사용한 projection을 통해 데이터 간의 유사도를 바탕으로 클러스터링을 수행한다.
      • 'optimal neigibor를 알게 해 준다' 것은 그 데이터 포인트에 가까운 것을 찾는 것을 의미함.
    • 내재적인 cluster structure을 밝혀내게 해 준다.(고차원에서 안 보였던 것들이 보이는 느낌..)
    • terms 사이 계산이 더 정확해진다.(차원의 저주 완화)
  • 그러므로, 우리는 다음의 steps를 가진 DDHS를 제안한다.
    • learnable embedding network를 통해 data points를 low-dimensional separable latent sapce에 project한다.
      • separable은 서로 다른 클래스의 데이터 포인트들이 잘 구분됨을 의미
      • 따라서 class proximity(동일한 클래스에 속하는 데이터 포인트들이 가깝게 위치함.)를 유지
    • density를 통해 high-quality data samples를 고름
    • feature-level oversampling을 통해 minority samples를 합성함.
    • 합성된 samples가 요구 사항을 충족하는지 검증
    • minority samples와 합성된 samples를 합함. majority samples 중 density criterion을 만족하는 samples만 사용
      • minority class oversampling, majority class downsampling이 동시에 수행되므로 hybrid approach임.
  • Notation
    • D: 원래 feature vector 차원
    • m: training examples 개수
    • d: projected data point의 차원
    • positive가 minority class라 가정
  • Embedding Network
    • autoencoder를 확장시킴
    • Traditional autoencoder
      • encoderdecoder로 이루어짐
      • encoderoriginal data를 low-dimenstional latent representation으로 바꾸는 역할
      • decoderlatent representation을 original data로 reconstruction 하는 역할
      • 목표는 reconstruction loss를 최소화하는 것으로 encoder와 decoder를 동시에 optimize 함.
reconstruction loss

 

  • labeled data를 동반하는 문제들은 training process에 label information을 활용하면 prediction performance가 향상되니 label information을 통해 class proximity 성질을 유지하면서 latent space를 학습하게 설계함.(reconstruction loss를 사용해 보다 정확하게 재구성하게 한다.) 
  • 이 접근은 세 가지 loss functions를 갖는데
    • reconstruction loss
      • autoencoder에 사용되는 loss로 MSE를 사용한다.
      •  
      • 잠재 공간으로부터 재구성한 공간을 학습하는 term으로 데이터에서 노이즈를 제거할 기반을 마련한다. 
    • 그다음은 between-class losswithin-class lossclass proximity를 유지하는 것이 목표이다.
      • between-class loss는 다른 classes의 data points는 가능한 한 멀게 만드는 것이 목표
      • within-class loss는 같은 class의 data들이 가깝게 만드는 것이 목표
      • 제안한 방법은 cross-entropy loss를 between-class loss로, center loss를 within-class loss로 설정함.
      • cross-entropy loss
      • cross-entropy loss는 data가 incorrect classes로 분류되었을 때 더 많은 penalty를 부과한다.
      • center-loss
      • centor-loss는 class center로부터 data가 멀리 떨어져 있을 때 더 많은 penalty를 부과한다.
      • 데이터들의 class의 center로 모이게 하는 효과
    • 제안한 방법은 세 가지 loss를 모두 결합하여 latent space에서 separable latent space를 만드는 represenations를 학습하는 것임. 
    • latent space의 차원은 orginal feature space의 차원보다 충분히 작아 고차원에서 일어나는 문제들을 완화할 수 있음. 
    • 따라서 최종 loss 식은 다음과 같음.
  • Density-Based Filtering
    • embedding network 학습이 끝난 후 latent sapce로 data들을 옮긴 다음 density를 통해 high-quality data points를 선별한다.
      • low-density data point는 다른 data points부터 멀리 있는 영역에 있는 점들을 말하고 noise일 확률이 높다.
      • high-density data point는 cluster를 잘 대표하는 data일 가능성이 높다.
    • 즉, high-density area를 선별하고 high-quality 데이터들을 얻는 것.
    • 저자들은 KDE를 통해 points들의 density를 계산하였다. 위에서도 잠깐 언급하였지만 KDE는 nonparameteric method로 random variable의 PDF를 추정하는 방식인데 각 data에서 PDF의 모양을 결정하는 kernel function과 각 density의 폭을 결정하는 bandwidth parameter가 중요하다.
    • Gaussian kernelclass의 중심에 데이터가 모여있을 때 그 지점의 PDF가 높은 값을 갖게 하고 strong computational advantages를 가지기 때문에 선택하였다.
      • 뒤의 discussion에서 자세히 다룸.
    • bandwidth hScott's rule을 통해 계산되었다.
    • density를 계산하는 방법을 좀 더 자세히 살펴보면 majority class와 minority class의 densities를 각각 계산하고 quartile of density를 통해 high-quality samples를 추출하였다. majority class의 경우 Q2 이상의 desnity보다 큰 density를 갖는 samples로 선정하였고 minority class의 경우 더 높은 Q3 이상의 density보다 큰 density를 갖는 samples로 선정하였다.
    • 즉, 25%의 minority samples는 high-quality로 선정되어 generation process로 넘어가고 나머지 75%는 classifier training process에만 활용되었다. majority의 경우 50%만 훈련하는 데 사용함.
  • Generation of Synthetic Samples
    • 다양하고 유효한 samples를 만들기 위해 feature-level sampling technique을 사용하였다.
    • feature domain V = [v_1, ... , v_d]는 각 feature의 값들을 모아둔 list(ex. v_1은 1번째 latent feature의 값들을 모아둔 것)를 원소로 갖는 list이다.
    • 각 v_i에서 feature를 하나씩 뽑아 합성하는 방식으로 사용


    • 이미 존재하는 feature 값들로부터 만들기 때문에 생성된 samples feature의 값이 유효하고 random process로 다양한 합성 samples를 만들 수 있다는 것이 장점!
  • Verification of Synthetic Samples
    • 합성 후 synthetic samples가 good quality인지 검증하는 과정
    • 마찬가지로 density를 사용하여 density가 높은 곳은 class의 center, 낮은 곳은 class의 boudary를 나타낸다고 보았다.


    • 이 그림에서 c^M과 c^N은 각각 majority, minority class의 center이고 minority class(25%로 선택된 거)에서 center와 boundary 사이의 거리를 minority classes의 radius인 r^N으로 잡았다. 합성된 sample인 z^S가 있을 때 2가지 기준을 통해 검증하였는데
      • z^S가 c^M보다 c^N에 더 가까워야 한다.(minority class의 center에 더 가까워야 한다.)
      • z^S와 c^N의 거리는 r^N보다 작아야 한다.(minority class의 바운더리 안에 존재햐야한다.)이다.
    • 식으로 나타내면
  • Algorithm for DDHS
    • 알고리즘을 정리하면 다음과 같다.
    • input은 training data와 oversampling rate p, output은 classifier에 사용될 dataset이다.
    • line 1-4에서 embedding network가 훈련되어 discriminative space를 학습하고 그 network로 project한다.
    • line 5-6에서 density-based filtering(DBF)를 통해 high-quality samples를 선별하고 low-quality majority samples를 제거한다.
    • line 7-14에서 DDHS는 data generation process를 수행하고 synthetic data를 검증한다.
  • Time Complexity Analysis
    • 대부분의 시간은 embeddidng network를 훈련하는 데 사용됨.
    • embedding network는 autoencdoerfully connected layer로 이루어져 있고 autoencoder는 encoder와 decoder로 구성됨.(각각은 three layers로 구성)
    • encoder의 3 hidden layers의 unit이 n_1, n_2, n_3 순이고 fully connected layers의 뉴런이 n_f = n_3, decoder는 encdoer의 reverse구조, data samples가 m개, epoch가 e회, data sample의 dimension을 D라 하면 한 epoch당 forward pass의 time complexity는
      • O(2m(Dn_1+n_2n_3+n_2n_3)+m(n_3n_f+n_f*2)) -> 논문 식이 말이 안 된다고 생각해서 바꿔봤는데 다른 의견이 있으시면 남겨주세요.. 
      • 인데 n_f = n_3, n_f는 n_2보다 작음, backpropagation은 forward pass와 time complexity가 같음, 모든 뉴런의 개수는 상수이니 time complexity는 O(emD)이다.

4. Experiments

  • Datasets
    • 사용한 dataset은 다음과 같다.
  • Comparison Methods
    • 11개의 comparison methods와 아무것도 하지 않은 baseline method와 비교함.
    • 제안하는 알고리즘이 data-level algorithm이므로 다른 data-level algorithm과 비교함.
      • SMOTE, Oversampling, Undersampling, Borderline SMOTE 1, Borderline SMOTE 2, Tomek Link, SMOTE Tomek, Safe-level SMOTE, Gaussian SMOTE, NRAS oversampling, MBS
  • Experimental Setting
    • 실험은 두 parts로 나뉨.
      • random하게 training sets와 test sets를 10개의 다른 random seeds로 나눔.(random sampling에 의해 달라지는 효과를 완화하기 위해서)
      • 대부분의 data-level methods는 sampling technique을 수반하기 때문에 이 역시 random seeds의 영향을 받아 10개의 다른 random seeds로 수행함.
      • 따라서, 총 100번의 실험을 하고 평균 냄.
    • 분류기 부분에는 아무거나 쓸 수 있었는데 linear support vector machine(SVM), logistic regression을 사용함. 이유는
      • feature combinations이나 kernel tricks를 쓰지 않는 linear methods라 data quality에 잘 의존하기 때문
      • 실제 settings에서 주로 쓰이기 때문
    • oversampling과 undersampling ratios는 모두 100%
    • 제안하는 방법은 latent space의 dimension이 하이퍼파라미터인데 16을 기준으로 dataset을 high-dimensional, low-dimensional으로 나누고 high- dataset에서는 latent space의 차원을 16으로, low- dataset에서는 latent space의 차원을 2로 만들었다.
    • Embedding network의 구성을 좀 더 살펴보면
      • encoder와 decoder 모두 3-layer로
        • high-dimensional dataset에서
          • (input size, 256), (256, 64), (64,16)으로 층을 쌓았고
        • low-dimensional은 
          • (input size, 64), (64, 16), (16, 2)으로 층을 쌓았다.
        • hidden layers의 activation은 ReLU, output layer에서는 sigmoid function을 사용함.
  • Evaluation Metric
    • AUCAUPRC를 사용
      • AUC: ROC (Receiver Operating Characteristic) 곡선 아래의 면적을 나타내며, 분류 모델의 성능을 평가하는 지표. ROC 곡선은 참 양성 비율(TPR, True Positive Rate)과 거짓 양성 비율(FPR, False Positive Rate)의 관계를 그래프로 나타낸 것
      • AUPRC: Precision-Recall 곡선 아래의 면적을 나타내며, 특히 불균형 데이터셋에서 분류 모델의 성능을 평가하는 데 사용됨. Precision-Recall 곡선은 정밀도(Precision)와 재현율(Recall, 또는 TPR)의 관계를 그래프로 나타낸 것
  • Experiments Results
    • First experiments(wiht linear SVM)
      • 제안한 방법 좋은 성능을 보임.
      • extremely high-dimension datset인 Isolet에서도 좋은 성능을 보임.
    • Second experiment(with. logistic regression)
      • 마찬가지로 좋은 성능을 보임.
    • 추가로 Wilcoxon rank-sum test(검증 방법 중 하나)를 통해 실제로 우리가 제안한 방법이 다른 방법들보다 유의미하게 좋은지 판단해 보았는데 위의 Table 2와 Table 4에서 asterisk가 표시된 것이 유의미한 차이가 없는 것.(위에 표 보면 대부분 유의미한 차이가 있음)
    • 또한 model training 하는 과정에서 data points를 시각화해 보기 위해 PCA와 scaler를 통해 data points들을 이차원 공간에 표현해 보았다.(자세한 이야기는 없지만 latent sapce에서의 vectors에 PCA를 수행한 것 같다.)


      • 처음에서는 overlap이 심했던 dataset(위쪽 4개의 그림) embedding network를 지난 후(아래쪽 4개의 그림) 밀도가 높아지면서 분리가 된 것을 알 수 있다.

 

5. Discussion

  • Loss Functions in Embedding Network
    • 실제로 embedding network는 3개의 loss를 결합한 loss function을 사용하였는데 세 개를 다 사용하는 것이 아닌 다른 조합에서는 어떨지 궁금하여 추가적인 실험을 진행함.


    • 위 그림과 표를 참고하면 위 그림에서 (b)와 (g)에 해당하는 세 개의 loss를 모두 쓸 때 가장 잘 분리가 되었고 실제 지표로도 가장 높은 성능을 보임을 알 수 있다.
    • 또한 Table 6에서 추가적인 분석을 해보면
      • L_CE매우 중요한 loss임을 알 수 있음.(L_C와 L_R만 쓰는 경우 성능이 확 떨어진다.)
      • 그러나 L_CL_R 역시 도움이 되는 게
        • L_Cclass center에 모델의 latent 표현이 집중되도록 도와주고
        • L_R data의 noise를 줄이면서 latent 표현을 모델이 만들도록 도와주기 때문으로 분석
    • 시각화 자료에서 추가적인 분석을 해보면
      • L_CE는 between-class loss의 역할을 잘 수행하고 있고(그림 (b)와 (e), (g)와 (j)를 비교하면 L_CE가 없는 경우 두 class간 구분을 잘하지 못한다.)
      • L_C는 within-class loss의 역할을 잘 수행하고 있음.(그림 (b)와 (d), (g)와 (i)를 비교하면 L_C가 없는 경우 class가 density가 확 옅어짐.)
  • Ablation(제거) Study of Density-Based Filtering(DDF)
    • 제안한 알고리즘에서 density를 기준으로 high-quality data samples를 선택하는 과정이 있다. 이 discussion에선 이 제거가 어떤 영향을 미치는지 살펴보겠음.(DDF를 했을 때와 DDF를 하지 않았을 때를 비교)
    • 위 table 7에서 보면 DBF를 수행하였을 때 항상 성능이 개선됨을 알 수 있음.
  • Comparison With PCA and Its Variants
    • 사실 low-dimension에서 data를 다루는 가장 유명한 방법은 PCA이다. 그래서 이 discussion에선 제안한 방법과 PCA, PCA의 변형(Kernel PCA, supervised PCA)간의 성능 비교를 해보겠다.
    • 위 table 8을 보면 DDHS가 다른 방법들보다 좋은 성능을 보인다.
    • 이유를 생각해 보면 PCA와 kernel PCA는 project 할 때 label information을 사용하지 않고 Supervised PCA는 linear transformation을 사용하지만 DDHS는 label information과 data reconstruction을 반영하는 three loss functions와 deep neural networks를 통한 nonlinear transformation을 수행하기 때문에 좋은 성능을 보이는 것이다.
  • Comparison of Kernel Density Estimation
    • 제안한 방법은 Gaussian kernel을 KDE kernel function으로 사용하는데 다른 kernel(linear, tophat, exponential, Epanechnikov) 역시 사용할 수 있으므로 비교가 필요하다.
    • Performance 측면과 computational time 측면에서 비교함.


    • performance를 보면 gaussian이 다른 kernel들에 비해 평균적으로 살짝 높지만 computational time은 다른 kenel들에 비해 압도적으로 작음. -> gaussian을 선택하게 된 이유
  • Ensemble Learning and Cost-Sensitive Models
    • Ensemble learning과 cost-sesnsitive learning algorithm-level methods에서 imbalance 문제를 해결하는데 유명한 technique임.
    • 제안한 방법은 data-level approach이기 때문에 이 둘을 결합하는 것은 어렵지 않음.
    • 그렇게 DDHS와 AdaBoost를 엮어 만든 algorithm이 DDHS-Boosting임.(각 훈련 iteration 마다 DDHS를 수행하는 방식)
    • DDHS-boosting와 다른 ensemble learning을 하는 sota methods(Isolation Forest, RUSBoost, SMOTEBoost, SMOTEBagging, SPE)와 비교해 봄. + cost-sensitive learning methods인 cost-sensitive decistion tree와도 비교해 봄.
    •  
    • 위 table 9를 보면 SPE가 top conference에서 출판된 최신 연구라 좋은 성능을 보일 때가 있지만 전반적으로 DDHS-Boosting이 좋은 성능을 보임.
  • Training Time and Predicntion Time
    • 제안한 방법을 large-scale datasets에 적용해 봄.
    • 20번의 실험을 반복하고 training time과 prediction time을 기록함.
    • Isolet, mnist, spambase, optdigits, crime datasets에 대해
      • training time는 288, 174, 179, 131, 48s가 걸렸고
      • prediction time은 0.016, 0.014, 0.0133, 0.009, 0.011s가 걸림
    • 제안한 방법이 large-scale datasets에서도 적용될 수 있음을 알 수 있음.

6. Conclusion

  • 본 article은 class imbalance problem을 다루기 위한 DDHS라는 method를 제안함.
  • 제안한 방법은 data-level methoddeep learning과 결합하여 발전시켰음.
  • 제안한 방법의 핵심은 embedding network로 저차원에서 데이터를 잘 분리시키는 latent sapce를 학습함.
  • Embedding network가 학습되고 project 한 다음 density-based data filtering과 feature-level method를 통해 유효하고 다양한 synthetic samples를 생성함.
  • Embedding network를 디자인할 때 latent space에서 data points가 class proximity 성질을 유지하기 위해서 cross-entropy와 center losses를 각각 between-class, within-class loss로 사용함.
  • 추가로 reconstruction loss를 통해 좋은 feature 표현을 학습하기 위한 제약을 둠.
  • 실험 결과 DDHS는 유망한 결과들을 보여줌.
  • 뿐만 아니라 DDHS를 boosting framework와 결합하여 다른 ensemble learning approaches를 능가함.

느낀 점

 논문의 conclusion에서 저자들이 써놓았듯이 imbalance problem을 deep learning을 통해 접근한 방식은 매우 참신했다. 구현 알고리즘을 보면 minority class에서 생성하는 과정, majority class에서 제거하는 과정 모두 세밀하게 연구하고 반영해 두어서 성능이 잘 나올 수밖에 없다고 생각한다.(매우 좋은 접근과 idea라고 생각함.)
 최근에 embedding network와 비슷한 auto-encoder에 대한 논문과 구현 과정을 보면서 생각보다 이 방식도 구현이 어렵지 않아 보였다. 당장 Kaggle 7월 playground에 적용할 수 있을지 모르겠지만(시간이...) 시간적 여유만 있다면 적용해보고 싶다.
 

 이번엔 Diffusion Model 중 하나인 DDPM에 대해 알아보자.

2. MLDL2 수업 - Diffusion Models

**무단 배포 금지** 본 게시물의 저작권은 김태섭 교수님께 있습니다.

1. VAE to Diffusion Models

사실 교수님께서 diffusion을 알기 위해선 VAE가 필수라고 하셔서 VAE를 짚고 넘어가는 거긴함.

Diffusion 출발은 저번 포스트의 마지막인 Hierachical Variational Auto-Encoder(HVAE)이다.(이말이 꼭 HVAE를 기반으로 diffusion이 만들었다는 말은 아니고 이해하는 관점에서 HVAE와 비교하면서 보는 것이 타당하다.)

맨위는 ELBO를 maximize하기 위한 reconstruction term과 regularization term이다.

 HVAE는 VAE를 generalize한 모델이다. 기존에 VAE에선 latent variable이 하나였지만 이 variables를 늘리고 이 들을 hierachical하게 설계하여 일반화한 것이다. Hierachical하게 설계했다는 것은 latent variable사이 순서, 계층 구조가 있음을 의미한다. 따라서 latent variable역시 더 높은 level = 더 abstract한 latent variable로부터 생성된다. 

 HVAE에선 abstract할 수록, higher-level로 갈수록 그 크기가 줄어든다. = compact해진다.(encoder에서 출력하는 다음 층의 평균과 분산이 계속 줄어드는 것)

그리고 joint-distribution에 하나의 성질이 있는데 markov property이다. 즉, 다음 요소를 결정하는 것은 바로 이전의 요소만이라는 것.(만약 이 성질이 없다면 저 수많은 latent variable로부터 계산할 수 없을 것이다..)

 마찬가지로 HVAE에서의 encoder는 x로부터 low-level, high-level의 z를 만들어내고

이 역시 markov property를 가지며 이 q(z_{1:T}|x)는 p(z_{1:T}|x)를 추정하는 분포이다.

 HVAE에서 evidence를 써보면 다음과 같이 전개되는데

 ELBO에 위 두 그림에서 얻은 식을 넣으면 최종 식이 나오게 된다.

 2. Denoising Diffusion Probabilistic Models(DDPM)

  DDPM은 diffusion model의 초기 model로 VAE에 추가적인 3가지 restrictions를 넣는다.

(수업 자료에는 VDM으로 명시하였는데 나는 틀렸다고 생각한다. VDM은 DDPM과 VAE를 결합한 것이기 때문에 잠재 공간에 대한 이야기가 다루어져야 하는데 전혀 다루지 않기 때문이다. 생각해보면 이런 제약을 넣는 것 자체가 더 기초적인 모델임을 의미한다. 즉 VDM은 아래에서 설명하는 첫번째 제약이 없어지기 때문에 잠재 공간에 대한 자유성이 부여되는 한 단계 더 발전한 모델인 것이다. 더 공부해보고 혹시 내 생각이 틀렸다면 수정하겠다.)

(VAE와 DDPM의 공통점은 간단한 분포로 근사해서 생각하는 variational inference, VI를 한다는 것인데 다루는 공간이 각각 latent space, data space자체를 다루는 것이 차이이다.)

 첫번째가 latent variable의 size와 input data의 size가 갖다는 것인데 위의 HVAE에서 higher-level일수록 compact해진다는 특성이 있지만 VDM에서는 모든 latent variable과 input의 size가 같다.

 두번째는 encoder는 학습되지 않고 pre-defined된 linear Gaussian Model를 사용한다.

 여기서 알파는 hyperparameter이다.

 세번째로 위 gaussian parameters인 알파가 위치에 따라(t로 표현해 시간에 따라가 맞는 표현일 수 있다.) 다르고 마지막 latent variabel x_{T}의 분포는 standard Gaussian N(0,I)이라는 것이다.

 그럼 forward diffusion process는

 이 식을 통해 진행되며 이미지에 noise가 첨가되기 때문에 

 encoding 과정을 noising이라고도 부른다.

알파는 고정할 수도 있지만 일부 연구에서는 이 알파를 학습가능한 파라미터로 두기도 한다.

 + 왜 정규분포가 저렇게 생겼는가?

 일단 정규분포를 사용하는 이유는 정규분포를 다르는 noise를 넣기 위함이고 그럼 위 식에 의해

 이렇게 다음 단계의 latent variable이 생성된다.(VAE에서 reparameterization trick과 동일한데 사실 꼭 이 방법을 사용하지 않아도 된다. 미분 가능하면서 sampling과 같은 효과를 내는 방식이 또 있다는 뜻) 이 때 앞 계수들의 의해 x_{t}의 분산이 x_{t-1}과 같아지게 된다.

 반대로 reverse denoising process는 생성하는 과정으로

 

 이 과정을 아래의 식으로 하기 때문에

 평균과 분산을 출력할 network 학습이 필요하다.

 정리해보면

이러한 과정이고

 원 data로 부터 잠재변수의 분포를 추론해가는 과정으로 볼 수 있다.

잠재변수의 갯수를 일반적으로 1000 steps 이상으로 한다고 한다.

 이번엔 DDPM에서 ELBO을 살펴보자.

 Jensen's Inequality를 사용하였고 식을 더 전개하면

 마지막 식은 markov property로 확률을 대체하고 의미없는 변수들을 다 적분해버리면 나오게 된다. 그럼 이 식은

 이런 세가지 term이 되는데

 먼저 reconsturction term은 VAE와 동일하고

 

 그 다음 prior matching term은 

 두번째 제약 조건에 의해 encoder는 아래 분포로 고정되고

 세번째 제약 조건에 의해 마지막 잠재변수의 분포는 

 이기 때문에 학습되는 파라미터가 없다. 즉, constant이다.

 마지막 consistency term은 

 디코더의 분포와 인코더의 분포의 차이의 기대값을 모든 항에 대해 계산하는 term으로 의미적으론 reverse process를 forward process에 맞추는 term이다. 그러나 이 term의 Monte Carlo estimate(확률론적 방법을 사용하여 기댓값이나 적분을 계산하는 방식, 주로 random sampling을 사용한다.)는 두 개의 변수를 매 time steps마다 다루기 때문에 높은 variance를 야기한다. 따라서 이를 해결하기 위해 한 step마다 하나의 변수에 대한 기댓값을 구하도록 바꿔어야 한다.

 이는 생각보다 간단하게 해결되는데 markov property로 식을 변형하면 해결된다.

 encoder의 변분 분포를 이렇게 바꿔주면

log내에 곱으로 되어 있는 항들이 cancellation이 일어나게 된다. 

그럼 최종식은

이렇게 되어

 consistency term이 denoising matching term으로 바뀐 것을 알 수 있다.

 Denoising matching term을 좀 더 자세히 살펴보면 왼쪽 식은 encdoer에서 만든 denoising ground-truth signal인데

이렇게 표현된다. 이 수식이 참 만만치 않은데 x_t를 reparameterization으로 구했다 가정하고 접근해보겠다.

 이 수식에서 이상한 부분이라면

 이 부분인데 쉬운 말로 '정규분포는 정규분포를 낳는다.'라는 말에서 유래한 것이다. 자세한 수식은 잡지식에 올려두겠다.

(왜 정규분포는 정규분포를 낳을까?)

2024.05.31 - [다양한 분야의 잡지식] - 말 그대로 다양한 분야의 잡지식

 

말 그대로 다양한 분야의 잡지식

여기는 말 그대로 다양한 분야의 잡지식을 기록하고 싶을 때 사용하는 공간입니다. Ctrl+F해서 원하는 지식을 찾을거임.Time Series1. EMA(Exponential Moving Average)Computer Vision1. 필터와 커널의 차이- 필터 

go-big-or-go-home.tistory.com

이렇게 올려두었다.

 그럼 이 과정을 확장하여

에 도달하고 추가로 쓰였던 성질의 함수를 전개하면

모두 이 식에 기반하여 비례 관계로 그나마 쉽게 유도했다.

다시 돌아와서 denoising matching term은

decoder와 ecoder 사이의 차이를 최소화하는 term이다. 그런데 두 정규분포 사이의 KL divergence는 비교적 쉽게 계산되는데

이므로 세타를 최적화 하는 것은 결국 생성 과정의 뮤세타가 인코더의 뮤큐와 같게하는 것이다. 따라서 뮤세타를 뮤큐와 같은 형태로 설계하는 것이 자연스럽고 T시점부터 출발하기 때문에 모르는 x_0를 각 층마다 예측하게 되는 것이다. 이렇게 정한 뮤세타와 뮤큐를 다시 대입하면 

이러한 결론에 도달한다.

DDPM에서는 다른 추가적인 FC layers와 U-Net architecture를 둬서 t시점의 x_0를 예측한다.

 위 그림에 표현되지는 않았지만 skip connections(고해상도의 이미지를 저해상도에 전달하는 것)가 있고 이 과정은 매 time마다 진행된다.

 그런데 여기서 DDPM을 더 개선한 방식이 있는데

 x_0를 마치 x_t와 노이즈의 결합으로 해석하는 방식이다. 그럼 예측한 뮤세타 역시

이런 꼴로 바뀌게 되고 목적함수는

 noise에 대한 식으로 바뀌게 된다.

x_0를 예측하는 것에서 노이즈를 예측하는 접근으로 바뀌었다.

이렇게 노이즈를 예측하는 방식이 주로 쓰인다고 하는데 그 이유는 노이즈 예측 방식이 더 안정적이고, 학습 과정에서 더 좋은 성능을 보이는 것으로 나타났기 때문이다.

 추가로 DDPM을 응용하는 것으로 주어진 conditions하에서 generate하는 방식이 있는데 encoder는 fix하고

 이미지를 generate하는 방식에서 조건 이미지를 추가로 넣어 U-Net 구조를 학습시킨다.

 

 그럼 이렇게 훈련된 모델은 각각 새로운 이미지에 대해 해상도를 복원할 수 있고 색체화가 가능하다.

 마지막으로 여러 generative models를 비교해보면

 Diffusion Models는 아무래도 time의 길이가 길어 fast sampling은 힘들지만 high quality와 diversity한 sample을 만든다는 강점이 있다.

 3. 마무리

 이번 포스트에선 diffusion의 가장 간단한 모델인 DDPM을 알아보았다. 이제 preview 영상으로 가봅시다.


3. Preview 영상

 스터디가기 전에 보기로한 영상에 대해 정리해보겠다.

Diffusion Model 수학이 포함된 tutorial (youtube.com)

 읽어보니까 꽤나 DDPM을 이 post에서 깊게 다루어서 생각보다 흐름을 이해하는데는 어렵지 않았다. Preview 영상이니 자세한 수식보단 큰 흐름과 위에 없는 내용 위주로 요약하겠다.

  • Denoising Diffusion Models는 두 과정으로 이루어진다.:
    • Foward diffusion process -> noising
    • Reverse denoising precess -> denoising

forward
reverse

  • 이렇게 알파 바를 잡았던 것이 특정 시점의 x를 한번에 예측하기 위해서였다.

  • intractable은 다루기 어려움을 의미한다.

  • ELBO 대신 variational upper boudn로 loss를 정의한다.

  • noise만으로도 예측 가

  • diffusion은 weighting을 equally하게 적용하지만 advanced weighting도 있다.

  • Time representation에 사용되는 것으로 sinusoidal positional embeddings(트랜스포머에서 쓰임)와 random Fourier features가 있다.

  • DDPM은 reverse의 시그마 t를 베타 t로 두지만 이 역시 학습가능하다.

  • T가 작을수록 high-frequency content = low-level details를 생성한다.

  • DDIM: 마르코브 property가 아닌 x_0가 모든 x에 영향을 준다.(Non-Markovian diffusion process)

  • Score-based Generative Modeling with Differential Equations

SDE 하에서 score-based model과 diffusion이 사실 같다는 놀라운 사실

 수식이 꽤나 어려워보인다.

  • 좀 더 deterministic한 모델

  • 특정 조건하에서 생성하는 모델

  • 새로운 classifier를 도입하여 구현하는 방식

  • 마지막으로 직접 만드신 tree

+ Recent posts