기존의 음성 신호 데이터 증강은 raw waveform에서의 변형이었으나, 인풋으로 주로 log-mel 스펙트로그램을 사용하기에 이 자체를 이미지로 인식하여 변형하는 SpecAugment라는 데이터 증강 방법을 제안한다. 인풋으로 log-mel 스펙트로그램을 사용하며 추가적인 데이터가 필요 없는 간단하고 계산 비용이 저렴한 방법이다. SpecAugment는 log-mel 스펙트로그램의 세 가지 변형인 시간 왜곡, 주파수 마스킹, 시간 마스킹으로 구성된다.
log-mel 스펙트로그램에 직접 적용되는 증강 정책을 통해 네트워크가 유용한 피처를 학습하는 것을 목표로 한다. log-mel 스펙트로그램은 τ의 time step에 대한 가로축이 시간, 세로축이 주파수인 이미지다. 또한, log-mel 스펙트로그램은 정규화되어 있다(=평균값이 0). 따라서 마스크된 값을 0으로 설정하는 것은 평균값으로 설정하는 것과 같다.
❗ SpecAugment
아무것도 적용하지 않은 log-mel 스펙트로그램은 아래와 같다.
시간 왜곡(Time Warping)
시간 왜곡은 tensorflow의 sparse_image_warp을 사용한다. 이미지의 중심을 통과하는 (W,τ-W) time step 내의 무작위 가로선 상의 점이 왼쪽 혹은 오른쪽으로 왜곡된다. w는 0부터 W까지의 균일 분포에서 선택된 거리 (W : 시간 왜곡 파라미터)
주파수 마스킹(Frequency masking)
주파수 마스킹은 연속적인 mel 주파수 채널 [f0, f0 + f)이 마스킹되는 것이다. f는 0부터 F까지의 균일 분포에서 선택되고, f0는 [0, υ- f)에서 선택된다. (υ : mel 주파수 채널의 수, F : 주파수 마스크 파라미터)
시간 마스킹(Time masking)
시간 마스킹은 연속된 time step [t0, t0 + t)가 마스킹되는 것이다. t는 0부터 T까지의 균일 분포에서 선택되고, t0는 [0, τ- t)에서 선택된다. (T : 시간 마스크 파라미터) 또한, 시간 마스크의 상한을 도입하여 시간 마스크가 시간 단계의 p 배보다 넓어지지 않도록 한다.
def time_warp(feat, W=10):
feat_size = feat.shape[1]
# 소스 및 목적지 컨트롤 포인트 생성
src = tf.Variable([[[feat_size // 2, 0]]], dtype=tf.float32) # 원래 이미지에서의 위치
dst = tf.Variable([[[feat_size // 2, W]]], dtype=tf.float32) # 왜곡된 이미지에서의 위치
# sparse_image_warp 적용
warped = tfa.image.sparse_image_warp(feat, src, dst, num_boundary_points=2)
return warped
def freq_masking(feat, F=10, freq_mask_num=2):
feat_size = feat.shape[1]
# freq mask
for _ in range(freq_mask_num):
f = np.random.uniform(low=0.0, high=F)
f = int(f)
f0 = random.randint(0, feat_size - f)
feat[f0: f0 + f,:] = 0
return feat
def time_masking(feat, T=10, time_mask_num=2):
seq_len = feat.shape[0]
# time mask
for _ in range(time_mask_num):
t = np.random.uniform(low=0.0, high=T)
t = int(t)
t0 = random.randint(0, seq_len - t)
feat[:,t0: t0 + t] = 0
return feat
Listen, Attend and Spell (LAS) 네트워크를 사용하며, LAS-d-w라 표기한다. 인풋 log-mel 스펙트로그램은 2-layer CNN을 통과하며 맥스 풀링과 2의 stride를 갖는다. CNN의 아웃풋은 양방향 LSTM으로 쌓여있는 인코더를 통과하여 어텐션 벡터를 산출한다. 어텐션 벡터는 2-layer RNN 디코더로 공급되어 전사를 위한 토큰을 생성한다. 텍스트는 단어 조각 모델(WPM)을 사용하여 토큰화되며, LibriSpeech에는 어휘 크기가 16k이고 Switchboard에는 1k이다. LibriSpeech 960h의 WPM은 훈련셋을 사용하여 구성되고, Switchboard 300h은 훈련셋에 Fisher 코퍼스를 결합하여 구성된다.
학습률 스케줄은 ASR 네트워크의 성능을 결정하는 주요 요소 중 하나이다. 데이터 증강시에도 더 긴 스케줄이 네트워크의 최종 성능을 향상시키는지 증명한 후 네트워크의 성능을 극대화하기 위해 매우 긴 스케줄을 도입한다. 학습률은 최대값의 1/100이 될 때까지 증가하다가 기하급수적으로 감소하며, 이 지점 이후로는 일정하게 유지된다. 이 스케줄은 (sr, si, sf)라는 time stamp 파라미터와 두 개의 추가적인 요소로 구성된다.
증강으로도 SOTA를 달성하지만, 언어 모델(LM)을 사용하면 더 큰 향상이 있다. 따라서 shallow fusion을 통해 RNN LM을 통합한다. LibriSpeech의 경우 LM에 임베딩 차원이 1024인 2층 RNN을 사용하며, 이는 LibriSpeech LM 코퍼스에서 훈련된다. Switchboard의 경우 Fisher와 Switchboard 데이터셋의 결합 트랜스크립트에서 교육된 임베딩 차원이 256인 2층 RNN을 사용한다.
LAS-4-1024, LAS-6-1024 및 LAS-6-1280 세 개의 네트워크가 None, LB, LD 증강 정책 및 B/D의 조합으로 훈련되었다.(최대 학습률: 0.001, 배치 크기: 512, 32 Google Cloud TPU 7일) 증강 정책과 학습률 스케줄 외의 모든 하이퍼파라미터는 고정시켰다. 그 결과 증강이 훈련된 네트워크의 성능을 향상시키고 더 큰 네트워크와 더 긴 학습률의 이점이 더 강한 증강에서 명확해짐을 확인했다. 따라서 가장 큰 네트워크인 LAS-6-1280을 선택하고 스케줄 L (훈련 시간 24일) 및 정책 LD를 사용하여 성능을 극대화하도록 네트워크를 훈련했다. time step <140k인 경우 label smoothing을 적용했다. 그 결과 LM을 사용하지 않아도 SOTA를 달성했으며, 성능을 향상시키기 위해 shallow fusion을 사용하여 LM을 통합했다.
LAS-4-1024를 None, SM, SS 증강 정책 및 B로 훈련했다.(최대 학습률: 0.001, 배치 크기: 512, 32 Google Cloud TPU) 그 결과 label smoothing(LS)을 적용하는 것이 모든 증강 정책에서 더 우수한 성능을 보였다. LAS-6-1280을 Switchboard 300h 훈련셋에서 L (훈련 시간 24일)로 훈련하여 SOTA를 달성했다. 전체 훈련 중에 label smoothing을 계속 적용하면 최종 성능에 이점이 있었다. Fisher-Switchboard에서 교육된 LM을 사용하여 shallow fusion을 적용했다. LibriSpeech의 경우와 달리 fusion 파라미터는 서로 다르게 훈련된 네트워크 간 전이가 잘 되지 않았다.
아래의 표는 데이터 증강을 전부 했을 때와 각각 시간 왜곡, 시간 마스킹 및 주파수 마스킹을 제외했을 때의 결과이다. 시간 왜곡을 제외하면 test WER이 3.7에서 3.8로 는 것으로 보아 효과가 미미하다는 것을 알 수 있다. 시간 왜곡은 증강 기법 중 가장 비용이 많이 들면서도 가장 영향이 적기 때문에 예산 제약이 있다면 가장 먼저 제외되어야 한다.
label smoothing이 증강과 함께 적용될 때 LibriSpeech의 훈련 불안정성이 증가했다. 이는 학습률이 감소될 때 잘 나타나므로 LibriSpeech를 훈련시키는 동안 레이블 스무딩을 도입했다. 이때, 학습률의 초기 단계에만 적용한다.
아래의 그림처럼 훈련 중인 네트워크는 증강된 훈련셋의 손실과 WER을 과소적합될 뿐만 아니라 증강된 데이터로 훈련될 때 훈련 셋 자체에도 과소적합된다. 이는 증강 훈련의 주요 이점이다.

강한 증강 정책을 반복적으로 적용한 후 더 넓고 깊은 네트워크를 만들어 더 길게 훈련하여 과소적합을 해결하려 했다. 이러한 방법은 성능을 크게 향상시켰다.
SpecAugment는 ASR 네트워크의 성능을 크게 향상시킨다. 간단한 hand-crafted 정책을 사용하여 훈련 세트를 증강함으로써 end-to-end LAS 네트워크에서 LibriSpeech 960h 및 Switchboard 300h에서 SOTA를 달성했다. 이는 LM의 도움 없이도 하이브리드 시스템의 성능을 능가한다. SpecAugment는 ASR을 과적합 문제에서 과소적합 문제로 변환하며, 더 큰 네트워크를 사용하고 더 오래 훈련함으로써 성능을 향상시켰다.
✔ ref
SpecAugment