본문 바로가기

TTS

Transformer TTS

  • TransformerTTS

Transformer는 natural langauge processing 분야에서 recurrent neural entwork를 없애고 훈련을 병렬로 가속화 진행해 가속화 하기 위한 목적으로 고안된 self-attention 기반의 모델이다. 이 모델이 Tacotron, Tacotron2 등에서 공통적으로 보이는 TTS 구조와 결합된 것이 Transformer TTS이다.

  1. Tacotron2와의 차이점
    1. 네트워크 구조: RNN을 대체하는 self-head attention과 이를 ensembling한 multi-headattention
      1. Self attention:
        1. 일반적인 attention에서는 key 신호와 query 신호, value 신호가 각각 따로 정의 되어 key 신호와 query 신호의 dot product로 이들 간의 유사도를 구하고, 이 유사도 스코어를 weight으로 사용해 value 신호와 query 신호의 weighted sum을 구했던 반면, self-attention은 단일의 입력 signal을 key, query, value로 사용한다.
      2. Self attention의 장점
        1. RNN과 달리 병렬 matrix computation이 가능해 훈련 속도 이득
        2. RNN보다 긴 신호의 문맥을 잘 잡는다: RNN은 현재 time step이 다음 time step으로 전파되는 구조이기 때문에, 거리가 먼 time step들 사이에는 gradient diminishing으로 인해 관계를 파악하기 힘든 단점이 있었으나, self-attention의 경우 한 신호의 모든 time step들 간에 dot product가 이루어져 거리가 먼 time step 간의 유사도도 잘 잡아낼 수 있다.
      3. Multi-head attention: 이렇게 하나의 신호 안에서 모든 time step들 간의 관계를 dot product를 통해 요약한 self-attention의 출력을 'head'라고 부르며, 이 self-attention을 ensemble 방식으로 사용한 뒤 aggregate 하는 것을 multi-head attention이라 한다.
      4. Scaled positional encoding의 필요성
        1. RNN의 경우 이전 time step의 출력을 현재의 time step의 입력으롤 삼기 때문에 sequence의 순서를 명시적으로 표시할 필요가 없었다. 하지만 Transformer에서 사용하는 multi-head attention과 fed forward network의 경우, sequence 순서가 반영되지 않는 연산들이기 때문에 이를 보완하기 위해 추가된 것이 scaled positional encoding이다.
        2. Positional encoding: sinusoidal 함수를 사용해서 각 channel과 time step에 따른 위치값을 input 신호에 더해주는 방법이다.
        3. Scaled positional encoding: encoder 신호와 decoder 신호 간의 scale 차이에 따라 encoder와 decoder에 더해지는 positional embedding 값의 scale도 달리 해주어야 한다
      5. Encoder block: multi-head attention과 FFN 두 개의 sumbodule로 이루어짐.각각의 submodule 다음에는residual sum과 layer normalization이 뒤따른다.
        1. multi-head attention: 기 설명함
        2. FFN: 2개의 fully connected network 사이에 ReLU activation
      6. Decoder block: encoder block과 대체적으로 유사하나, previous time step의 mel을 decoder의 입력으로 사용하기 위한 masked multi-attention submodule이 추가되었다.
        1. Transformer TTS의 경우 RNN을 Multi-head attention과 FFN으로 대체함으로써 훈련 시 병렬 계산이 간으해졋으나, 추론 시에는 여전히 auto-regressive하게 이전 타임 스텝의 mel spectrogram을 입력으로 사용해야 한다.
    2. Text 신호와 Acoustic 신호 사이의 정렬 방법
      • Tacotron2에서의 location-sensitive attention 대신 scaled dot product를 multi-head, 즉, ensemble로 사용한다. 이는 앞서 언급된 encoder 또는 decoder module 내부에서 단일 입력을 가지고 이루어지는 multi-head self attention과는 달리, 서로 다른 신호 간에 이루어지는 attention이기 때문에 self-attention이라 할 수 없고, 일반적인 scaled dot product attention을 ensemble하는 multi-head attention이라 할 수 있다.
  2. 음질(자연성 MOS): multi-head를 8개를 쓴 경우 4.44로 Tacotron2와 유사하다.
  •  

'TTS' 카테고리의 다른 글

Japanese/Korean/Vietnamese Corpus  (0) 2020.02.08
Bytes are all you need  (0) 2020.01.21
Global style token  (0) 2020.01.17
Deep Voice 3  (0) 2020.01.17
Transformer TTS  (0) 2020.01.17
Tacotron2  (0) 2020.01.17