- TransformerTTS
Transformer는 natural langauge processing 분야에서 recurrent neural entwork를 없애고 훈련을 병렬로 가속화 진행해 가속화 하기 위한 목적으로 고안된 self-attention 기반의 모델이다. 이 모델이 Tacotron, Tacotron2 등에서 공통적으로 보이는 TTS 구조와 결합된 것이 Transformer TTS이다.
- Tacotron2와의 차이점
- 네트워크 구조: RNN을 대체하는 self-head attention과 이를 ensembling한 multi-headattention
- Self attention:
- 일반적인 attention에서는 key 신호와 query 신호, value 신호가 각각 따로 정의 되어 key 신호와 query 신호의 dot product로 이들 간의 유사도를 구하고, 이 유사도 스코어를 weight으로 사용해 value 신호와 query 신호의 weighted sum을 구했던 반면, self-attention은 단일의 입력 signal을 key, query, value로 사용한다.
- Self attention의 장점
- RNN과 달리 병렬 matrix computation이 가능해 훈련 속도 이득
- RNN보다 긴 신호의 문맥을 잘 잡는다: RNN은 현재 time step이 다음 time step으로 전파되는 구조이기 때문에, 거리가 먼 time step들 사이에는 gradient diminishing으로 인해 관계를 파악하기 힘든 단점이 있었으나, self-attention의 경우 한 신호의 모든 time step들 간에 dot product가 이루어져 거리가 먼 time step 간의 유사도도 잘 잡아낼 수 있다.
- Multi-head attention: 이렇게 하나의 신호 안에서 모든 time step들 간의 관계를 dot product를 통해 요약한 self-attention의 출력을 'head'라고 부르며, 이 self-attention을 ensemble 방식으로 사용한 뒤 aggregate 하는 것을 multi-head attention이라 한다.
- Scaled positional encoding의 필요성
- RNN의 경우 이전 time step의 출력을 현재의 time step의 입력으롤 삼기 때문에 sequence의 순서를 명시적으로 표시할 필요가 없었다. 하지만 Transformer에서 사용하는 multi-head attention과 fed forward network의 경우, sequence 순서가 반영되지 않는 연산들이기 때문에 이를 보완하기 위해 추가된 것이 scaled positional encoding이다.
- Positional encoding: sinusoidal 함수를 사용해서 각 channel과 time step에 따른 위치값을 input 신호에 더해주는 방법이다.
- Scaled positional encoding: encoder 신호와 decoder 신호 간의 scale 차이에 따라 encoder와 decoder에 더해지는 positional embedding 값의 scale도 달리 해주어야 한다
- Encoder block: multi-head attention과 FFN 두 개의 sumbodule로 이루어짐.각각의 submodule 다음에는residual sum과 layer normalization이 뒤따른다.
- multi-head attention: 기 설명함
- FFN: 2개의 fully connected network 사이에 ReLU activation
- Decoder block: encoder block과 대체적으로 유사하나, previous time step의 mel을 decoder의 입력으로 사용하기 위한 masked multi-attention submodule이 추가되었다.
- Transformer TTS의 경우 RNN을 Multi-head attention과 FFN으로 대체함으로써 훈련 시 병렬 계산이 간으해졋으나, 추론 시에는 여전히 auto-regressive하게 이전 타임 스텝의 mel spectrogram을 입력으로 사용해야 한다.
- Self attention:
- 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이라 할 수 있다.
- 네트워크 구조: RNN을 대체하는 self-head attention과 이를 ensembling한 multi-headattention
- 음질(자연성 MOS): multi-head를 8개를 쓴 경우 4.44로 Tacotron2와 유사하다.
'TTS' 카테고리의 다른 글
Bytes are all you need (0) | 2020.01.21 |
---|---|
Global style token (1) | 2020.01.17 |
Deep Voice 3 (0) | 2020.01.17 |
Tacotron2 (0) | 2020.01.17 |
CondConv: Conditionally Parameterized Convolutions for Efficient Inference (0) | 2020.01.06 |