Audio-020, Textually Pretrained Speech Language Models, NeurIPS 2023
아래 논문은 TWIST: Textually Pretrained Speech Language Models에 대한 답변입니다. 핵심부터 말하면, 이 논문은 텍스트+오디오를 동시에 입출력하는 멀티모달 LLM을 학습한 논문이 아니라, 텍스트 LLM의 가중치를 초기값으로 가져와 speech-only LM을 더 잘 학습시키는 방법을 제안한 논문입니다.
1. 텍스트와 오디오가 동시에 되는 모델을 학습한 게 맞나?
아니다.
이 논문에서 최종적으로 학습하는 모델은 SpeechLM, 즉 음성 토큰을 입력받고 음성 토큰을 출력하는 speech-only language model이다.
모델 파이프라인은 세 부분이다.
Speech tokenizer
raw speech를 discrete speech token으로 변환SpeechLM
discrete speech token sequence에 대해 next-token prediction 수행Token-to-speech vocoder
생성된 speech token을 다시 waveform으로 변환
즉 최종 시스템은 다음과 같다.
speech waveform → speech tokens → SpeechLM → speech tokens → speech waveform
텍스트를 입력으로 넣거나 텍스트를 출력하는 모델은 아니다. 텍스트 LLM은 초기화용 pretrained backbone으로만 사용된다. 논문 Figure 1도 이 구조를 보여준다. Pretrained Text LM에서 SpeechLM으로 weight initialization을 하고, 이후 SpeechLM은 speech language modeling을 수행한다.
정리하면:
| 항목 | 지원 여부 |
|---|---|
| 텍스트 입력 | 최종 TWIST 모델에서는 아님 |
| 텍스트 출력 | 아님 |
| 음성 입력 | 가능, tokenizer를 거쳐 speech token으로 입력 |
| 음성 출력 | 가능, SpeechLM이 speech token을 생성하고 vocoder가 waveform으로 복원 |
| 텍스트+오디오 동시 입출력 | 아님 |
2. 텍스트와 오디오 모두 discrete token으로 변환해서 next token prediction한 게 맞나?
부분적으로만 맞다.
텍스트 LLM의 원래 pretraining에서는 당연히 텍스트가 subword token 등으로 tokenization되어 next-token prediction으로 학습되어 있다. 하지만 TWIST 단계에서는 텍스트와 오디오를 함께 학습하지 않는다.
TWIST에서는 pretrained text LM을 가져온 뒤,
기존 text vocabulary를 제거하고,
speech token vocabulary로 교체하고,
text embedding table을 새 speech embedding table로 바꾸고,
transformer body는 text LM의 pretrained weight를 유지한 뒤,
전체 모델을 speech token sequence에 대해 계속 학습한다.
논문에서는 이를 “original text vocabulary를 speech token set으로 replace하고, text lookup table을 randomly initialized speech embedding table로 replace한 뒤, 나머지 network body는 유지한다”고 설명한다.
사용한 토크나이저
텍스트 토크나이저
논문이 직접 새 텍스트 토크나이저를 학습한 것은 아니다. OPT, LLaMA, BLOOM, Pythia 같은 기존 pretrained text LM을 사용하므로, text pretraining 단계의 토크나이저는 각 모델의 기존 text tokenizer이다.
오디오 / speech 토크나이저
주된 speech tokenizer는:
HuBERT representation + k-means quantizer
이다. 논문은 GSLM framework를 따르며, HuBERT가 좋은 성능을 보였기 때문에 HuBERT representation을 k-means로 quantize해서 discrete speech token을 만든다. 실험에서는 100, 200, 500 cluster를 사용한 50Hz tokenizer와, 새로 학습한 25Hz tokenizer도 사용한다. 최종적으로는 500 tokens at 25Hz 설정이 가장 좋은 결과를 보여 이후 주요 실험에 사용된다.
3. 모델 학습 순서
학습 순서는 크게 보면 다음과 같다.
3.1 Speech tokenizer / vocoder 준비
먼저 raw speech를 discrete speech token으로 바꾸는 tokenizer가 필요하다. 논문은 HuBERT + k-means tokenizer를 사용한다. 또한 생성된 token을 다시 speech waveform으로 바꾸기 위해 token-based HiFi-GAN vocoder를 사용한다. 이 tokenizer, SpeechLM, vocoder는 GSLM pipeline에서 각각 별도 구성 요소로 다뤄진다.
3.2 Text LM 준비
TWIST는 OPT, LLaMA 등 이미 텍스트로 pretrained된 LM을 가져온다. 논문의 주요 실험에서는 OPT-125M, OPT-350M, OPT-1.3B를 사용하고, 대형 모델에서는 LLaMA-7B, LLaMA-13B를 사용한다. BLOOM, Pythia도 추가로 비교한다.
3.3 Vocabulary / embedding 교체
기존 text vocabulary를 버리고 speech token vocabulary로 교체한다. 기존 text embedding table도 speech token용 embedding table로 새로 random initialization한다. transformer body는 pretrained text LM의 weight를 유지한다.
즉, 텍스트 LM의 모든 부분을 그대로 쓰는 것이 아니라, 입력/출력 vocabulary 관련 부분은 speech token용으로 바꾼다.
3.4 Speech token으로 continued training
그 다음 전체 SpeechLM을 speech data에서 추출한 speech token sequence로 학습한다. 이때 학습 objective는 일반적인 autoregressive next-token prediction이다.
즉 TWIST는:
text LM pretraining → vocabulary/embedding 교체 → speech token LM 학습
이다.
반면 COLD-INIT baseline은:
random initialization → speech token LM 학습
이다.
텍스트 백본에서 이어서 학습했나?
TWIST는 그렇다.
텍스트로 pretrained된 LM에서 warm-start한다.
처음부터 텍스트&오디오 데이터를 같이 학습했나?
아니다.
논문은 joint speech-text training을 하지 않는다. 오히려 기존 speech-text joint training 연구들과 구분하면서, 이 논문은 SpeechLM의 modeling/generation capability를 개선하는 데 초점을 둔다.
데이터 비율 및 양
TWIST 단계에서 사용하는 데이터는 speech-only 데이터이다. 텍스트와 speech를 섞는 비율은 없다. 따라서 “텍스트:오디오 비율” 같은 것은 논문에 없다.
SpeechLM 학습 데이터는 다음과 같다.
| Dataset | Hours | 50Hz tokens | 25Hz tokens |
|---|---|---|---|
| LibriSpeech | 960h | 86M | 58M |
| LibriLight | 53k h | 4.79B | 3.19B |
| Spotify | 59k h | 5.34B | 3.56B |
| People | 17k h | 1.54B | 1.02B |
| VoxPopuli | 20k h | 1.76B | 1.17B |
| Overall | 150k h | 13.52B | 9.00B |
즉 전체적으로 약 150k hours of speech, 50Hz 기준 약 13.5B speech tokens, 25Hz 기준 약 9B speech tokens를 사용한다.
Post-training을 하는가?
논문에서 흔히 말하는 instruction tuning, RLHF, supervised fine-tuning 같은 별도 post-training 단계는 없다.
다만 다음은 있다.
pretrained text LM에서 warm initialization
speech token으로 continued training
validation PPL 기준 best checkpoint 선택
별도의 tokenizer / vocoder 사용
human evaluation, Spoken StoryCloze 등 평가
즉 모델 학습 관점에서는 speech LM training 이후 추가적인 instruction/post-training은 보고되지 않는다.
4. 오디오 데이터는 어떤 형태인가?
논문에서 말하는 오디오 데이터는 기본적으로 raw speech audio이다. 이 raw speech를 speech tokenizer에 넣어서 discrete speech token으로 바꾼다.
중요한 점은, SpeechLM 학습은 transcription 없이 가능하다는 것이다. 논문은 SpeechLM이 discrete speech token 위에서 학습되므로 textual transcription에 접근하지 않고 spoken data를 직접 모델링할 수 있다고 설명한다.
따라서 오디오 데이터는 다음과 같이 이해하면 된다.
| 형태 | 해당 여부 |
|---|---|
| plain raw speech audio | 맞음 |
| ASR용 speech-text pair | 핵심 학습 형태는 아님 |
| TTS용 text-audio pair | 핵심 학습 형태는 아님 |
| transcription 없이 speech token으로 학습 | 맞음 |
물론 LibriSpeech 같은 데이터셋은 원래 transcript가 있는 ASR corpus지만, 이 논문에서 SpeechLM 학습은 transcript를 사용해서 supervised ASR처럼 하는 것이 아니다. raw speech를 discrete speech token으로 바꿔 language modeling한다.
5. 모델 평가는 어떻게 하는가?
평가는 크게 세 종류다.
5.1 Zero-shot modeling evaluation
SpeechLM이 음성 토큰 sequence에 대해 얼마나 좋은 확률을 주는지 평가한다.
사용 metric은:
speech token PPL
sWUGGY
sBLIMP
sWUGGY는 실제 단어와 non-word 음성 pair 중 실제 단어에 더 높은 확률을 주는지 본다. sBLIMP는 grammatical sentence와 ungrammatical sentence 음성 pair 중 grammatical one에 더 높은 확률을 주는지 본다.
5.2 Human evaluation
모델이 생성한 speech continuation을 사람이 평가한다.
방식은:
약 3초 speech prompt 제공
모델이 약 10초 continuation 생성
사람이 grammar, meaning, diversity 등을 고려해 1–5점으로 평가
MMOS, Meaningfulness MOS 사용
평가 대상에는 original audio, resynthesized audio, COLD-INIT, TWIST-1.3B, TWIST-7B 등이 포함된다.
5.3 Spoken StoryCloze
논문은 StoryCloze benchmark의 spoken version 두 개를 만든다.
SStoryCloze
원래 StoryCloze의 adversarial ending을 speech로 합성
fine-grained causal / temporal commonsense 평가
TStoryCloze
random negative ending 사용
더 coarse한 topic / continuation coherence 평가
모델은 positive spoken story와 negative spoken story에 확률을 부여하고, positive 쪽 확률이 더 높으면 맞힌 것으로 본다.
각 학습 스테이지마다 평가하나, 최종 모델만 평가하나?
논문은 “각 stage별로 평가”라기보다는, 여러 설정의 학습된 모델을 비교 평가한다.
예를 들어:
COLD-INIT vs TWIST
125M / 350M / 1.3B / 7B / 13B
1%, 10%, 100% data
50Hz vs 25Hz tokenizer
OPT vs BLOOM vs Pythia
text pretraining vs image pretraining
이런 식으로 학습 설정별 최종 또는 best checkpoint를 평가한다. 논문은 best checkpoint를 validation set의 average speech perplexity로 선택한다고 설명한다.
텍스트와 오디오 벤치마크 모두 평가하나?
아니다. 주 평가는 speech benchmark 중심이다.
평가 대상은 speech token PPL, sWUGGY, sBLIMP, Spoken StoryCloze, human speech generation evaluation이다. 즉 모델의 텍스트 입력/출력 능력을 평가하는 논문은 아니다.
다만 Appendix에서는 생성된 speech를 ASR로 transcription한 뒤 text-PPL, auto-BLEU를 계산하는 보조 평가가 있다. 하지만 이것은 모델이 텍스트를 직접 생성하거나 텍스트 benchmark를 푸는 평가가 아니라, 생성 speech의 품질을 간접적으로 보는 자동 평가다.
6. 논문의 동기 및 기여점
동기
기존 SpeechLM은 raw speech를 discrete token으로 바꾸고 language modeling할 수 있지만, 텍스트 LLM에 비해 학습 데이터와 모델 규모가 제한적이다. 반면 텍스트 LLM은 대규모 텍스트 corpus로 이미 강력한 language modeling 능력을 갖고 있다.
그래서 논문의 핵심 질문은:
텍스트로 pretrained된 LM의 지식을 speech-only LM 학습에 활용할 수 있는가?
이다.
겉보기에는 text token과 speech token의 granularity가 다르다. text token은 subword 단위이고, speech token은 20–40ms 정도의 짧은 acoustic/phonetic frame 단위다. 그래서 단순히 text LM weight를 가져오는 것이 효과가 있을지 불확실하다. 이 논문은 그럼에도 텍스트 pretrained LM의 transformer body가 SpeechLM 학습에 도움이 된다는 것을 보인다.
기여점
논문의 기여는 크게 네 가지다.
첫째, TWIST라는 textually warm-initialized SpeechLM 학습 방법을 제안한다. pretrained text LM에서 vocabulary와 embedding을 speech token용으로 바꾸고, 나머지 transformer weight를 초기값으로 사용해 SpeechLM을 학습한다.
둘째, TWIST가 COLD-INIT보다 speech PPL, sWUGGY, sBLIMP, human evaluation에서 전반적으로 더 좋다는 것을 보인다. 특히 TWIST는 더 sample-efficient하고, 더 빠르게 수렴한다.
셋째, 모델 크기, 데이터 크기, tokenizer frequency, vocabulary size, text LM architecture, pretraining modality 등 다양한 설계 요소를 분석한다.
넷째, 7B와 13B 규모의 대형 SpeechLM을 학습하고, Spoken StoryCloze라는 spoken benchmark 두 개를 만든다. 이를 통해 SpeechLM의 continuation coherence와 causal/temporal commonsense 이해를 평가한다.
한 줄 요약
이 논문은 텍스트와 오디오를 동시에 처리하는 멀티모달 모델을 만든 것이 아니라, 텍스트 LLM의 pretrained transformer weight를 speech-only language model의 초기값으로 사용하면, raw speech 기반 SpeechLM을 더 잘 학습할 수 있다는 것을 보인 논문이다.
Reference
댓글
댓글 쓰기