SpecAugment: A Simple Data Augmentation Method for Automatic Speech Recognition
1. Introduction
심층학습은 자동 음성인식(Automatic Speech Recognition)에 잘 적용되고 있습니다. 다만 이러한 심층학습 모델들은 과적합이 쉽게 일어나는 문제가 있었습니다. 이러한 시점에서 나온 이 논문은 과적합되는 문제를 세가지의 주요 데이터 증강기법으로 과소적합 문제로 바꿉니다. 즉, 학습을 더 시키는 등의 기존에 흔히 쓰던 과소적합 문제를 해결하는 방식들을 적용하면 되는 것입니다.
물론 심층학습을 이용한 방식 자체가 기본적으로 데이터 증강과 밀접합니다. 이미지의 경우 방향도 돌렸다가 좌우 반전을 시키기도 하는데, 음성인식분야에서도 비슷하게 다양한 시도들이 있었습니다. Vocal Tract Length Normalization, Noisy Audio(잡음을 추가하는 방법), speed perturbation(속도를 조절하는 방식), pitch perturbation(음높이를 변경하는 방법) 또는 multi stream ASR을 훈련시키기 위한 Feature drop-outs같은 방식들이 고안되었습니다. 일반적으로 이미지 처리 분야에서 적용되던 방식들을 음성인식에도 사용하고 있었던 것입니다.
논문제서 제안하는 SpecAugment는 입력 음성신호를 그대로 사용하지는 않고 입력 소리 신호의 로그 멜 스팩트로그램을 마치 이미지를 다루듯이 변형시키는 증강기법입니다. 세부적으로는 time warping, frequency masking, time masking으로 세 가지 기법이 있고 전반적으로는 계산 비용이 많이 들지는 않습니다. 물론 이 세 가지 중에서는 뒤에 소개될 time warping이 비용 대비 성능 향상 효과는 좀 덜 하다고 합니다.
2. Augmentation Policy
SpecAugmentation에는 세 가지 기법이 있는데 신경망이 학습할 유용한 feature들이 시간에 대한 변형이나 주파수 정보 및 음성의 일부 손실에 대해 강건(크게 영향을 받지 않는)하도록 증강을 하려고 한 결과물들입니다. 즉, 다음 세 가지 증강 기법들은 위의 'policy'를 따릅니다.
각 기법들이 적용된 모습은 아래의 사진과 같습니다.

다음은 각 기법에 대한 설명입니다.
1. Time warping
이미지의 중앙을 가로지르는 수평선에 임의의 한 점을 잡고 왼쪽이나 오른쪽으로 이 점을 잡고 당기는 방식입니다.
2. Frequency masking
mel frequency의 영역 [f0, f0+f)을 가리는 방법입니다. ( 0<f<F, F는 파라미터. f0는 [0, v-f)에서 선택, v는 mel frequency의 채널 수)

3. time masking
time step [t0, t0 + t)을 가리는 방법입니다. ( 0<t<T, T는 파라미터. t0는 [0, τ - t)에서 선택, v는 mel frequency의 채널 수) time mask는 time step수에 비해 너무 커지면 안된다고 합니다.

이때 masking들이 여러개가 적용될 수도 있습니다. 논문에서는 4개의 정책을 직접 만들었습니다. 즉, Task 마다 적절한 augmentation의 정도와 방향이있다는 것입니다.

LB정책이라면 각 masking이 1개씩만 적용된 것이고 SM은 각각 두개씩 적용된 데다 LB에 비해 masking될 수 있는 최대 두께가 작습니다. 추가로 파라미터 p의 경우 time masking에서 time mask가 time step에 비해 너무 커지면 안된다고 했는데, 이때의 상한선을 정하는데 time mask두께 < time step * p의 조건으로 이용됩니다.
3. Model
본 논문에서는 SpecAugment의 성능 확인을 위해 Listen, Attend and Spell network를 이용합니다.
3.2. Learning Rate Schedules
학습률은 ASR 신경망에 있어 중요한 요소라고 합니다. 특히 데이터 증강이 있으면 더욱 중요하다고 합니다.
학습률 스케줄은 ramp-up, hold, exponentially decay단계로 세분화되어 있습니다. decay시에는 최곳값의 100분의 1이 될 때까지 하고 그 뒤부터는 일정하게 학습률을 유지 시킵니다.
아래는 저자들이 사용한 기본적인 스케줄입니다.

이떄 각 S는 각 단계의 종료시점입니다. Sr은 ramp-up종료시점입니다.
그리고 Snoise는 학습률에 표준편차가 0.075인 noise를 섞는 구간입니다. 이후 구간에서도 훈련종료까지 계속 노이즈를 유지합니다.
(we turn on a variational weight noise of standard deviation 0.075 at step snoise and keep it constant throughout training.)
추가로, 저자들은 label smoothing기법을 추가로 적용합니다. 완전히 학습률과 관련이 된 건 아닌데, label을 1 또는 0과 같이 one-hot인코딩을 하는 대신 0.9와 0.1로 만드는 것 입니다. 즉, 확신도와 불확신도로 변형을 하는 것 입니다. 이 부분을 이 문단에 같이 포함시킨 이유는 label smoothing이 학습률이 작을 때 적용하면 모델의 학습이 불안정해지는 점을 강조하기 위함인 것 같습니다. 저자들은 종종 훈련 초반에만 적용하고 learning rate가 감소하는 시점에는 적용하지 않았다고 합니다.
학습률을 어떻게 설계할지에 대한 중요한 지표 중 하나는 저자들이 실험했을때 길면 대체적으로 좋은 성능을 얻을 수 있었다는 점입니다.

위 Long schedule은 위의 기본 schedule보다 훨씬 긴데, 가장 큰 모델의 성능 향상을 위해 사용한 스케줄이라고 합니다. label smoothing은 LibriSpeech 960h에 대해서는 140k시점 이전까지 적용했고, Switchboard 300h에 대해서는 훈련내내 적용했다고 합니다.
3.3 Shallow Fusion with Language Models
저자들은 데이터 증강만으로도 SOTA를 달성했지만, 그럼에도 추가적인 성능향상을 위해 language model을 사용할 수 있습니다. 기본 ASR모델과 주로 RNN기반의 language model을 조합하여 결과를 내는 방식입니다. 아래 식처럼 language model에 람다 파라미터를 곱해 합산하는 방식을 채택하고 있습니다.

[참고자료]
https://arxiv.org/abs/1904.08779 [원 논문]
SpecAugment: A Simple Data Augmentation Method for Automatic Speech Recognition (notion.so)
[참고할만한 자료]
logel spectrogram을 생성하는 방법: