見出し画像

SpecAugment: A Simple Data Augmentation Method for Automatic Speech Recognition

Daniel S. Park, William Chan, Yu Zhang, Chung-Cheng Chiu,
Barret Zoph, Ekin D. Cubuk, Quoc V. Le
Google Brain


SpecAugmentGoogle Brain チームから提案された speech recognition における spectrogram の data augmentation の手法.約 1 年前に(本記事を書いている現在は Jul. 2020)読んだはずなのだけど,当然のように忘却していたので,今後,忘れても良いように再度読んでまとめておく.但し,Model や Experiments に関しては本記事では触れない(あくまでも augmentation にのみ今回は興味があるため + 私はあまり論文の実験結果は信じておらず自分で確かめる性格のため).

なお,他のまとめ記事としては,BrainPad Advent Calendar 2019 のこちらの記事も参考にすると良いかもしれない.


1.   Abstract

画像1

Speech recognition における現在の主流モデルは未だ neural networks だと思われる.この場合,例えばではあるが,audio wave(波形データ)を wavenet のような 1D CNN や RNN などに入力するか,spectrogram に変換したうえで 2D CNN に入力するか,という 2 つの代表的な手法が考えられる.本論文の SpecAugment は後者の spectrogram に対する augmentation を行うもので,この手法により論文投稿時点(arXiv: 1904)で LibriSpeech 960h や Swichboard 300h といった benchmark task で SOTA な結果を達成したと謳っている.


2.   Augmentation Policy

SpecAugment における augmentation policy は 3 つから成る.

2 - 1.   Time Warping

画像2

言葉で説明するよりも図で理解してしまった方が早いので,図でまとめておく.

Time Warping は下図の順で理解すると分かりやすい.

画像3

1.
周波数( f )軸の長さ v,時間( t )軸の長さ tau の spectrogram(図中では logmel-spectrogram を想定)において,図中の W < t < tau - W を満たす範囲内で random な点を選ぶ(図の場合,周波数軸の中心線を通るようにしてある).

2.
選んだ点を距離 w だけ動かし,動かした分だけ点の左右に存在する矩形領域を伸び(expansion)縮み(contraction)させる.距離 w は,動かした後の点が領域外にならないことを保証するために,- W < w < +W を満たす.この augmentation の肝は,単なる time shift と異なり,伸縮はするものの一切の情報の欠落がなく,「spectrogram 上で時間方向の変調」を行うことができる点である.

logmel-spectrogram に実際に適用してみると,例えば下図のようになる.
なお,実装には tensorflow addons の tfa.image.sparse_image_warp を利用した.


画像4


2 - 2.   Frequency Masking

画像6

Frequency Masking と,後述する Time Masking は非常にシンプルな augmentation である.
Cutout(DeVries 2017)に着想を得ており,それを周波数成分の情報欠落という形で適用している.


2 - 3.   Time Masking

画像6

前述の通りで今度は,時間方向の情報欠落を Cutout で再現している.
それ以上でもそれ以下でもない.


以上 3 つをそれぞれ適用した論文内の実例図は下の通り.

画像7

上から順に,
・No Augmentation
・time warp
・frequency masking
・time masking
をそれぞれかけた場合を示している.
実際はこれらを同時に適用したり,一部だけを適用したりなどを適用確率でタスクに応じて制御する(具体的には validation における精度があがるような適用確率を探すことになる).




この記事が気に入ったらサポートをしてみませんか?