Dcase Task2 우승팀의 Technical Report를 리뷰하면서 공부한 내용입니다.
Abstract
저자는 Audio 모델이 Discrete-Label Prediction으로 사전 학습을 하게 될 시 High-Level Audio Semantic, Discar Redundant details 등의 이점을 얻을 수 있다고 합니다. (높은 수준의 문맥적 정보를 얻을 수 있고 오버피팅을 유발할 수 있는 불필요한 디테일을 제거할 수 있게 됩니다.) 사람이 처음 듣는 강아지 소리를 듣고도 강아지 인지 아닌지 구분할 수 있듯이 무언가를 분류하며 학습을 하게 된다는 것은 어떤 객체를 구성하는 일반적인 특징을 잡아낼 수 있음을 의미합니다.
하지만 기존(2022 년도)의 SOTA Audio SSL-Model들은 Reconstruction을 통해서 학습을 한다고 합니다. 기존의 모델들이 Discrete Label Prediction을 하지 못했던 이유는 Audio는 연속적이기 때문에 Discrete-Label을 구성하기 쉽지 않습니다. 오디오 데이터의 경우 같은 의미를 가지는 소리라고 해도 다른 실이로 나타날 수 있기 때문입니다.
그렇기 때문에 Discrete Label을 얻으려면 Label을 생성해주는 Tokenizer가 필요한데 Semantic-Rich Tokenizer를 구성하기도 어렵습니다.
위 문제에 대한 해결책으로 BEATs에서는 Iterative 하게 사전학습 과정에서 Discrete Label 생성에 필요한 Acoustic Tokenizer와 실제 사용할 SSL-Model을 서로 번갈아가면 서 학습하는 구조를 사용했습니다.
Acoustic Tokenizer의 Label 생성 성능을 높이고 Acoustic Tokenizer에서 얻은 Label로 SSL-Model을 학습시켜서 성능을 개선해 나가는 Iterarive Training 방식입니다.
BackGround
뒷 부분을 이해하는데 추가적인 설명이 필요할 거 같아서 보충한 내용입니다.
- Discrete Label Prediction
먼저 Discrete Label Prediction은 Mask-Prediction을 의미합니다. 언어모델의 경우 문장에서 단어를 빼면 빈 단어를 예측하면 되지만 오디오 모델의 경우 연속적이고 각기 같은 단어라 하더라도 다른 길이로 나타날 수 있으므로 임의로 자를 수 없다고 합니다. 이를 극복하고 Discrete Label Prediction을 하기 위한 방법이 Vector Quantization입니다.
- Vector Qunatizatiom
Qunatization: 연속적인 값을 이산적인 값으로 바꿔서 컴퓨터가 처리할 수 있도록 변환하는 기법을 말합니다.
Vector Qunatization은 연속적인 벡톨 값느 값을 데이터의 전 범위를 임의의 개수 K로 나눠서 Code Book이라는 Embedding Vector를 저장하는 공간에 저장하는 방법을 말합니다. 통계적인 영어로 배반 사건으로 전체 Sample Space를 나누는 Partition이라고 할 수 있겠습니다.
VQ(Vector Qunatization)의 Code Book은 이런 식으로 구성되어 있습니다. Code Book에 저장된 K개의 Embedding은 각각의 Index가 존재합니다. 저장된 Embedding 중 Input Vector와 가장 비슷한 Embedding의 Index를 Label로 사용해서 SSL-Model이 예측하게 하는 것이 VQ를 이용한 Discrete Label Prediction 방식입니다. (헷갈릴 수 있으니 말하자면 VQ는 Tokenizer의 역할입니다.)
Iterative Learning
Iteration의 과정을 설명해 드리겠습니다.
1. Acoustic Tokenizer가 Unlabeled Audio Data에 대해 Label을 생성합니다.
2. SSL Model이 Label을 예측해서 Prediction Loss로 학습합니다.
3. Knowledge Distillation
학습된 SSL-Model이 Teacher Model, Acoustic Tokenizer가 Student Model로서 Knowledge Distillation이 이뤄집니다.
iteration의 의미는 실제 사용할 SSL-Model 뿐만 아니라 사전학습에 필요한 Acoustic Tokenizer도 함께 학습하게 됩니다. 결론적으로 Acoutic Tokenizer가 더 좋은 Label을 생성해 내게 되면서 학습의 퀄리티가 점점 올라가는 구조라고 할 수 있습니다.
첫 번째 Iteration의 경우 Acoustic Tokenizer가 학습이 안됐을 것이기 때문에 좋은 성능을 기대하기는 어려울 것입니다. 따라서 첫번 째 Iter에서는 특별하게 Acoustic Tokenizer가 아닌 Random Projection Tokenizer를 사용합니다. Random Projection Tokenizer을 간단히 설명해 드리자면 학습을 하지 않은 랜덤 가중치 행렬로 투영한 Embedding Vector가 상당히 좋은 정보를 추출할 수 있다. 학습을 하지 않더라도 어느 정도 성능이 좋은 Tokenizer를 첫 번째 Iter에서 Acoustic Tokenizer 대신 이용한다 정도로 이해하시면 됩니다.
이렇게 Random Tokenzier로 생성된 Label을 예측하여
두번째 Iteration부터는 Knowledge Distllation을 이용해서 Teacher Model인 SSL Model로부터 Acoustic Tokenizer를 학습시킨 후에 학습된 Acoustic Tokenizer로 Discrete Label을 생성하여 다시 SSL-Model을 학습시키게 됩니다. 이 과정을 자세히 살펴보겠습니다. 위 그림의 오른 쪽 부분 위주로 함께 보시는 게 좋을 거예요.
두번째 Iteration
- Random-Projection Tokenizer의 Label로 학 습된 SSL-Model(Teacher)이 input Sequence에 대한 Logit의 Sequence를 생성합니다.
- Tokenizer가 Code Book에 저장된 Embedding을 Sequence의 개수 만큼 추출합니다. (Input 과 유사도가 높아 가까이에 위치한 Nearest Neighbors를 Look Up하는 것입니다.)
- Code Book에서 추출한 Embedding들을 Transformer Encoder에 넣어서 Logit을 생성합니다.
- 각각의 모델에서 나온 Logit의 Cosine Loss를 구해 Code Book Embedding과 Transforemr의 Projection Layer를 학습시키는 것입니다.
첫번째 Iter이후 두 번째 Iter부터는 같은 방식의 학습이 수렴이 될 때까지 반복합니다. Acoustic Tokenizer의 성능이 올라가 더 좋은 Label을 생성하게 되고 더 좋은 Label으로 SSL-Model이 학습되어서 Acoustic Tokenizer의 Teacher모델이 되므로 서로 학습에 좋은 영향을 미치게 되는 것입니다.
위 에서는 Tokenizer의 학습 과정에 대해 말씀 드렸는데 위 과정 중에서 설명하지않은 SSL-Model의 학습 과정을 설명하고 넘어가겠습니다.
먼저 SSL-Model의 Back Bone은 VIT(Vision Transformer)입니다. VIT의 주된 아이디어는 Patch Embedding이라고 할 수 있는데 여기서도 Spectrogram을 Patch로 나눠서 입력으로 사용합니다. Patch로 나눈 후 Masking을 합니다. Masking은 Random으로 진행하고 Masking의 비율을 굉장히 높은 것을 볼 수 있습니다.(회색 부분이 Masking) Masking 되지 않은 Patch들을 Projection해서 Transformer Encoder에 입력값으로 사용하고 Embedding Sequence를 얻습니다. 당연히 이 Embedding Sequence의 개수는 Input Sequence의 개수와 같은 Masking이 되지 않은 Patch의 개수입니다.
이를 다시 Label Predictor에 Masking Patch들과 같이 순서에 맞게 넣어서 각각의 Masking된 Patch 부분을 예측하는 과정입니다. 여기서 Label은 Acoustiic Tokenizer Code북의 Index를 말하는 것이죠. (a)부분의 윗 부분을 자세히 보시면 z1과 z3에 대해서는 Masked Audio Prediction Loss와 연결이 되어 있지 않은 걸 볼 수 있는데 Input으로 사용된 Masking이 되지 않은 Patch들에 대해서는 학습이 일어나지 않는 것입니다. 이러한 과정을 Masked Label Prediction이라고 합니다.
Contribution
Acoustic Tokenizer와 Iterative Learning으로 Audio SSL-Model의 Discrete Label Prediction을 가능하게 했고 SSL-Model과 Acoustic Tokenizer의 학습을 병행시켜 두 모델의 학습의 선순환을 이뤄냈다. 라고 정리할 수 있겠습니다.