앞선 내용은 AudioGen: Textually Guided Audio Generator 1부에서 읽어주세요
Audio Representation
먼저 좋은 Audio representation을 얻기 위해 Auto-encoder를 제대로 학습해야 합니다.
아래는 그 과정에서 가장 중요한 Training objectives를 소개합니다.
Audio Loss Functions
습관적으로 Loss function이라고는 썼지만 논문처럼 Training Objective가 더 적절한 표현 같습니다. 말 그대로 "모델이 무엇을 학습하길 바라는데?"라는 의미이기 때문입니다.
Audio representation을 학습하는 과정에는 총 5개의 Loss가 존재합니다.
먼저 Generator는 아래의 4개의 loss 합으로 이루어집니다.
- \(\ell_{t}\): Time-domain reconstruction loss
- \(\ell_{f}\): Frequency-domain reconstruction loss
- \(\ell_{g}\): Adversarial loss for Generator
- \(\ell_{feat}\): Feature matching loss
그리고 Discriminator는
입니다. 하나씩 살펴보겠습니다.
Time-domain reconstruction loss
$$ \ell_{t}(x, \hat{x}) = \| x - \hat{x}\|_{1} $$
입력 오디오 \(\mathbf{x}\)와 Autoencoder를 통해 나오는 결과 \(\hat{\mathbf{x}}\)을 같게 만드는 함수입니다. 기본적으로 이걸 잘해야 Autoencoder라고 할 수 있기 때문입니다.
Frequency-domain reconstruction loss
- \(S_{i}\): Normalized STFT으로 Fourier Transform을 한 오디오 데이터로 64-bins Mel-spectrogram을 수행한 결과
- \(e\): STFT의 서로 다른 스케일 \(e \in [5, 6, ..., 11]\)
위에서 Time-domain에 대해 수행했는데 Frequency-domain은 무슨 뜻일까요?
\(x\)가 가로로 시간축, 세로로 오디오 채널을 갖는다면, \(S_{i}(x)\)는 \(x\)의 Mel-spectrogram으로써 가로로 시간, 그리고 세로로 주파수를 축으로 갖습니다. 이게 무슨 의미인지 어떻게 얻게 되는지는 이 블로그에 잘 설명되어 있으니 참고하시면 되겠습니다.
신경써야 할 부분은 \(L_{1}\), \(L_{2}\)의 선형 결합으로 이루어져 있는데, A Spectral Energy Distance for Parallel Speech Synthesis에서 제안하고 좋은 결과를 얻은 방법이라 채택했습니다.
(왜 두가지를 섞어 쓰나요? 그 이유는 \(L_{2}\)는 안정적으로 잘 수렴하지만 \(L_{1}\)에 비해 학습이 미적지근하기 때문에 잘 섞어 쓴다면 좋은 결과를 얻는 경우가 있기 때문입니다)
Adversarial loss for Generator
$$ \ell_{g}(\hat{x}) = \frac{1}{K}\sum_{k}\textup{max}(0, 1 - D_{k}(\hat{x})) $$
- \(K\): Discriminator networks의 수
앞서 Frequency-domain 수행할 때 \(e\)는 STFT의 서로 다른 스케일을 의미했습니다. 다양한 스케일에 대해 학습할 경우 학습이야 조금 더 어려워지겠지만 좋은 성능을 거둠은 이미 많은 연구에서 보여준 내용입니다.
Generator(Auto-encoder)가 만들어 낸 \(\hat{x}\)을 서로 다른 스케일의 Discriminator \(D_{k}\)에 넣으면 \(x\)가 진짜 데이터일 경우 1, 가짜 데이터라면 0이 되도록 학습합니다.
Feature matching loss
$$ \ell_{feat}(x, \hat{x}) = \frac{1}{KL} \sum_{k=1}^{K} \sum_{l=1}^{L} \| D_{k}^{l} (x) - D_{k}^{l}(\hat{x}) \|_{1} $$
마지막으로 Feature matching loss는 Auto-encoder의 input \(x\), output \(\hat{x}\)을 다양한 스케일과 레이어 숫자의 Discriminator에 대해서 같도록 학습합니다.
개인적으로 지금까지 다룬 4가지 함수는 모두 좋은 Auto-encoder를 만들기 위함인데, 이정도까지 해야하는 지 잘 모르겠습니다...
그래서 결국 \(L_{G}\), \(L_{D}\)를 모두 학습하면서 좋은 Audio representation을 얻기 위한 학습을 합니다.
Audio Language Modeling
To Be Continued..
Classifier-free Guidance
'기술 이야기 > 논문 리뷰' 카테고리의 다른 글
(1/2) AudioGen: Textually Guided Audio Generation 리뷰 (0) | 2023.08.03 |
---|---|
SwiGLU Activation Function 설명 (0) | 2023.07.21 |
Self-Supervised Learning from Images with a Joint-Embedding Predictive Architecture (I-JEPA) 논문 리뷰 (3) | 2023.06.19 |
[논문 리뷰] Scaling Speech Technology to 1,000+ Languages (0) | 2023.05.24 |
[논문 리뷰] IMAGEBIND: One Embedding Space To Bind Them All (2) | 2023.05.11 |
댓글