Deep Learning through deep learning

#4 논문 리뷰 - C-RNN-GAN:Continuous recurrent neural networkswith adversarial training 본문

ML&DL/Paper Review (논문)

#4 논문 리뷰 - C-RNN-GAN:Continuous recurrent neural networkswith adversarial training

NeuroN 2023. 8. 28. 15:57

논문 및 코드 링크 (sota)

https://paperswithcode.com/paper/c-rnn-gan-continuous-recurrent-neural

 

Papers with Code - C-RNN-GAN: Continuous recurrent neural networks with adversarial training

Implemented in 2 code libraries.

paperswithcode.com

네 번째 논문은 역시나 GAN 논문이다.

다른 점은 모델에 사용될 데이터가 기존의 수치나 이미지가 아닌 연속적인 음악 데이터라는 것이다.

연속적인 데이터를 다루기 위해 RNN을 GAN에 접목했다는 것은 매우 흥미로운 주제라고 생각했다.

몇 달 전에 CNN과 RNN을 접목하여 텍스트 데이터와 이미지 데이터를 이용해 사용자가 입력한 텍스트에 따른 이미지를 출력해주는 모델에 대해 흥미를 가졌던 적이 있다.

그때 막상 모델을 커스텀하려고 시도해보니 난이도가 만만치 않았다는걸 깨닫고 포기했던 기억이 난다.

논문을 읽으며 그때의 기억을 회상하면서 또다시 multi modal에 대한 관심이 생기기 시작했다.


Abstract

논문에서는 continuous sequential 데이터를 Generative adversarial networks (GAN)에 적용해보았다고 한다.
적용한 모델을 훈련을 통해 음악을 생성하고, 독자가 듣고 판단하여 더 좋은 음이 나는 음악을 생성해 냈다는 결론을 얻었다고 한다.


Introduction

GAN

GAN 모델에 대한 기본적인 설명을 하고 들어간다.
GAN 모델은 경쟁식 학습을 진행하는 두 모델로 이루어져 있고, 두 모델은 Generator(G), Discriminator(D) 이다.
G는 실제와 같은 이미지를 생성하고, D는 실제 이미지와 G가 생성한 이미지를 구별해낸다.

논문에서 제시하는 아이디어는 GAN 모델을 sequential 모델에 접목하여 continuous 데이터를 다룰 수 있다고 한다.
또한 음악을 이용해 학습된 모델에 대한 평가를 진행한다.

 

RNN
RNN 모델에 대한 기본적인 설명도 제시되어 있다.
RNN 모델은 Sequential 데이터를 다루기 위해 사용되며, 언어부분에서는 시퀸스의 임의 지점에서 다음 토큰을 예측하는 방식으로 기억, 예측 모델이라고도 불린다.
논문에서는 RNN을 통해 합리적으로 실제와 같은 시퀸스를 생성해낼 수 있다고 말한다.

 

GAN + RNN
결국 음악의 길이, 주파수, 강도, 시간에 대한 continuous sequence 데이터를 가진 매우 유동적이고 복잡한 모델을 학습시켜야 한다는 것이다.
논문에서는 이러안 데이터를 다루기 위해 C-RNN-GAN (Continuous RNN-GAN) 모델을 제안한다.
C-RNN-GAN 모델은 경쟁식 훈련을 통해 데이터 시퀸스를 생성할 수 있다고 한다.
훈련으로는 클래식 음악을 사용했고, 평가로는 범위 일관성, 톤의 범위 같은것을 고려했다.

 

C-RNN-GAN: A continuous recurrent network with adversarial training
음악을 입력으로하기 위해 25개의 이삱거인 음값을 나누고, 88개의 구분되는 톤을 RNN에 결합하여 사용하였다.
모델의 학습에는 GAN을 이용하였다.
데이터는 또 다시 주파수, 길이,강도, 시간과 같은 실제 값으로 톤을 나타내었다.
훈련에 있어서는 기본적인 역전파를 통해 모델을 반복적으로 훈련시킬 수 있었다.

 

즉, 논문에서 제시하는 모델은 GAN을 이용한 RNN 모델이다.
위에서 제시한 GAN 의 방식처럼 경쟁식 학습을 통해 D가 구별할 수 없을 정도의 실제와 같은 이미지를 G가 생성해내는 것을 목표로 한다.
G의 각각의 셀의 입력은 랜덤 벡터로 들어가고, 이전 셀에 대한 출력결과에 중점을 둔다. RNN에서의 일반적인 방법처럼말이다.
D는 양방향 RNN으로 구성되어 있고, 출력 결과에 대해 양방향으로 고려할 수 있다. LSTM ( Long short-term memory) 의 방식을 사용하며, vanishing graident 문제라던지의 문제들을 해결한다.

먼저 클래식 음악에 대한 생성적인 분포를 GAN이 학습할 수 있는지 가능성을 평가한다.
MIDI를 통해 음악의 신호를 4개의 스칼라 값으로 변환할 수 있었고, (톤 길이, 주파수, 강도, 시간) 이를 통해 네트워크가 다성 화음이 가능하도록 만들 수 있었다.
다만 톤이 없는 경우는 0으로 표시한다.


Experimental setup

Model layout details:

  • G,D의 LSTM 의 깊이는 2이다.
  • 각각의 LSTM cell은 350개의 노드를 가진다.
  • D는 양방향, G는 단방향 구조이다.
  • D의 출력은 sigmoid함수를 사용한 cell당 1개의 출력 구조를 가진다.

Baseline:

  • RNN을 기반으로 한다.

Dataset:

  • MIDI의 음악 파일에서 데이터를 가져왔고, 잘 알려진 클래식 음악으로 학습을 진행하였다.
  • 데이터는 위와 같이 4개의 값 (톤 길이, 주파수, 강도, 시간)으로 구분되어 변환되었다.
  • 변환된 데이터를 384값을 기준으로 정규화시킨다.
  • 총 160개의 음악, 3697 개의 MIDI 파일이 존재한다.

Training:

  • 역전파를 이용했다
    미니배치 스토캐스틱 경사하강법을 이용했다
    학습률은 0.1로 지정한다.
    G,D의 가중치 초기화에 L2 정규화사용했다.
    LSTM cell에 대한 입력은 랜덤 벡터이다.
  • D의 학습이 너무 잘되어서 G의 훈련이 잘 되지 않는 문제점이 발생하여, 이를 위해 D 업데이트를 G비해 70%적게 해준다.
  • 손실함수 LG를 통해 과적합을 방지한다.
  • 평가는 4가지 지표를 가지고 진행하였다.
    1. Polyphony - 두 톤이 동시에 시작되는 빈도를 측정하여 빈도가 얼마나 유사한지를 측정, 하지만 정확히 같은 시간에 시작하지 않기 때문에 낮은 값을 줄 수도 있는 문제점이 있다.
    2. Scale consistency - 톤의 비율을 통해 계산된다.
    3. Repetitions - 연속적인 짧은 반복이 얼마나 존재했는지를 카운팅, 시간은 고려하지 않고 톤의 순서만 고려한다.
    4. Tone span - 가장 크고 작은 톤 사이에서 반음의 개수를 나타낸다.

Results

적대적 학습은 모델의 패턴은 더욱 유동적이고, 큰 음역대, 큰 음의 강도를 가지도록 해주었다.
출력 형식을 여러개의 톤으로 구성함으로써 더 높은 다성음악 점수를 가지는 음악을 생성해내었다.

 

그 결과는 위의 그래프와 같다.


else

네 번째 논문마저도 GAN과 관련된 논문이다. 슬슬 다른 논문도 찾아볼 필요성을 느끼게 된다.

그래도 논문과 연구는 흥미있는 분야에 대한 탐구가 아닌가, 앞으로 읽은 더 많은 논문을 위해 계속해서 리뷰를 진행해 나갈 생각이다.

논문의 내용이 전부 담기지 않을 수 있다. 하지만, 적어도 지금은 그 핵심과 경험을 가지고 가보고자 한다.