yoheikikuta / paper-reading

Notes about papers I read (in Japanese)
156 stars 4 forks source link

[2019] Imperceptible, Robust, and Targeted Adversarial Examples for Automatic Speech Recognition #45

Open yoheikikuta opened 4 years ago

yoheikikuta commented 4 years ago

論文リンク

https://arxiv.org/abs/1903.10346

公開日(yyyy/mm/dd)

2019/03/22

概要

音声認識において人間に違いが知覚しづらく、かつ over-the-air (スピーカーで流したり、マイクを使って録音したり、残響効果がある中で音を流したり、という風に現実世界で使用する場合を想定したケース) でも誤認識させるような adversarial examples を作ることを可能にした論文。 画像分野でよく使われているような l_p norm で正則化を加えてノイズを加えると人間に知覚しやすいものができてしまうので、心理音響モデルの知見に基づいて周波数領域で閾値を定めてそれを超えないようにノイズに制限を加えて知覚しにくい adversarial examples が作れるようになった。 デジタル処理のレベルではノイズを加える前の音声とほぼ変わらないという結果(人間が聞いて判断)を得られ、over-the-air ではまだ改善の余地ありで人間の耳でノイズが確かに聞こえるという段階だが確かな一歩を踏み出した、という結果である。

プロジェクトページ http://cseweb.ucsd.edu/~yaq007/imperceptible-robust-adv.html

yoheikikuta commented 4 years ago

NLP 系で adversarial examples の論文を調べていたら、automatic speech recognition (ASR) 関連の論文でこれを見つけた。 自分はあまり音声のデータとかモデルを扱ったことがないが、adversarial examples の意味では音声は画像っぽく人間に知覚できない摂動で実現可能なのでは?と思って読んでみることにした。

yoheikikuta commented 4 years ago

先行研究が紹介されていて、結構数が多い。やはり NLP の場合と比べると熱心に adversarial examples が調べられているんだろう。

そして興味深いのは、音声に対して摂動を加えるというのは人間に取って知覚しやすいということである。 波形データを連続量と思って扱えば知覚できない摂動を作れるのかと思ってたけど、そうじゃないらしい。これはプロジェクトページで紹介されている従来手法の音声を聞くと確かにノイズが乗ってることが聞き取れる。

この論文が取り組んだこととして以下が挙げられる。

yoheikikuta commented 4 years ago

この論文では分類器として Lingvo classifier という SoTA の seq2seq model を使い、これを攻撃する。white box なのでこれの微分情報とかも使う。

もう一つ、over-the-air attack を考えるときに部屋の configuration を知っているとは仮定しないが、どの分布から部屋を選ぶかは知っているものとする、という記述がある。

この段階では分布とか何を言っているか分からないが、後の記述を読むと意味が分かる。音響効果を考えるときに生の音声 x を入力とする t(x) という関数を考えるが、これは部屋の configuration によって異なるものである。その状況を t が何かしらの分布 T から得られるということで表現し、その分布は知っているものとするということである。

具体的に言えば、様々な部屋の configuration で有効な摂動を考えたいが、それをするには t ~ T において平均を取った loss function を minimize するということで実現する、ということになっている。ちゃんとした定式化とかは後でちゃんとやる。

yoheikikuta commented 4 years ago

典型的な adversarial examples の作り方はよく見る次の形で、音声といえど例外ではない。

ノルムとしては l2 や l∞ がよく使われるものである。 loss は音声の場合は CTC loss というものが使われることが多いみたい。これはよく知らなかったが、 このブログ が良く書かれているのでこれを読んでそういうものかと理解をした。

$ l_p $ で摂動の大きさをコントロールすることは音声認識においては知覚可能なノイズを作ってしまうことが知られている。それゆえにこの論文では $ l_p $ に変わる手法を人間の聴覚特性に基づいて提案するというものになっている。

yoheikikuta commented 4 years ago

人間に知覚できない摂動を作るために、この論文では Psychoacoustic (心理音響) のモデルを使う。特に、featue masking という現象を使う。

feature masking とは周波数領域で考えた場合に、音量が大きな周波数帯の信号(これを masker と呼ぶ)の付近の周波数帯の信号(これを maskee と呼ぶ)は知覚しにくいというものである。近い周波数帯の音は互いに違いが分かりづらいので大きい方だけ聞こえるという感じだろうか。 周波数領域で閾値を設定し、それを下回るものは知覚できなくなる、という方向でやっていくっぽい。

まず、音声データの取り扱いについて。

このように time window で区切って窓関数でフィルタリングしたら、これを短時間フーリエ変換にかけることでそれぞれの window での周波数情報を取得する。 frame x におけるスペクトルの k 番目の bin を s_x(k) と書く。

これでそれぞれの time window 毎に(bin 毎に集計した)どの周波数帯の amplitude がどれくらい存在するのかを得ることができる。これを log-magnitude の power spectrum density に変換する。

normalized された power spectrum density は以下のようになるとのこと。これはなんでこうなるか分からん。論文 が refer されてるけど無料で読めない... 詳しい人がいれば教えて欲しいごころだが、とりあえずこれは given として読んでいく。

この power spectrum density を基本的な単位として以降の議論を進めていく。

yoheikikuta commented 4 years ago

閾値を設定したい。これは以下のステップで求めることができる。

ここは読んでも全然分からない。 Appendix A. に詳しく書いてある。色々数式が展開されているけど、その意味するところが分からないので読んでみたけど理解にはほど遠い。

界隈の知識がないのでこの辺はちゃんと理解しようと思ったらちとじっくり勉強する必要がありそうだ。 計算の詳細は置いておいて以下のようなステップになっているはず。

つまり時間領域で x → x + δ という摂動を加えるとき、摂動の判断は周波数領域に移って上のように求められた閾値よりも小さくするよう制限を加える、という感じ。

周波数領域では摂動も同じように normalized power spectrum density p_δ (k) という形で扱う。

yoheikikuta commented 4 years ago

ようやく loss function を定義できるところまで来た。x → x + δ において間違えさせたい特定のターゲットを y と書くとき、以下のように定義する。

$ l_{\text{net}} $ の方は Lingvo モデルでは cross entropy が使われている。 この loss を小さくするということは摂動を加えた結果、本来のラベルではない間違ったラベル y を当てるようにモデルが学習するということになる。

これに加えて、知覚しにくいように制限を加えるというのが正則化項の $ l_θ $ で、これまでの議論を踏まえて以下のように定義する。

閾値よりも小さい場合は知覚はできないので 0 になる。閾値よりも大きい場合は知覚しやすくなってしまうので、それをできるだけ小さくするようにしているということである。

あとはこれを使って摂動を求めていきたいが、すんなりとはいかない理由がある。これは正則化項の制限付きでモデルを騙そうとするのが難しいことに起因する。振幅の大きさに対する制限が大きすぎるらしい。 一方で、モデルを騙せるある程度の大きさの摂動が見つかってから、制限を満たすように散らしていくのはできるらしい。 この辺は実際に触ってないと実感としては持てないところなので言われた通り受け入れておく。

この状況を踏まえて、まずは正則化項を除いて摂動を求めてから、続いて正則化含みで摂動を調整していく、という二段階の最適化を採用している。具体的なアルゴリズムは以下(stage 1 で α =0 としていることに注意)。

yoheikikuta commented 4 years ago

ここまでデジタル処理だけを考えているが、実際音声を流す場合 (over-the-air) では音響効果として残響などが発生し、detector にはその効果を取り込んだ上での音声が入力されるはずである。

残響が t(x) という関数でシミュレートされるとする。 これは room simulator とかを使えば反響の音 r が求めることができるらしいので、それを使って残響効果を取り込むらしい。正直全然分からんが、音響分野ではそういうのがありそうということは想像できる。 具体的には、反響 r がシミュレータで得られたとき、t(x) = x * r (畳み込み) で求める。反響は複数あるので複数回の r を取り込むことになるが、それを t が確率変数として t ~ T というものからサンプルされたとして平均を求めるということにする。

ほかにもちょっと細々したことが書いてあるが、とにかくこれを取り入れて over-the-air attack の場合の loss を以下のように定義できる。

yoheikikuta commented 4 years ago

実験。

データセットは LibriSpeech dataset を使用。これは sampling rate が 16 [kHz] で audiobook から集めたデータ。 このうちの 1000 件を source としてサンプルし、別の 1000 件をターゲットにする(つまりこのターゲットのテキストと誤認識するように source に摂動を加える)。このとき長さが異なり過ぎると困難なので同じくらいの長さのものにしている。

評価指標は Word Error Rate (WER) で、WER = ((S + D + I) / N_W) * 100 という定義。S, D, I はそれぞれ substitution, deletion, insertion で、 N_W はレファレンスの文章の単語数。つまり予測結果を Ground Truth にするためにどれくらい単語を入れ替えたりする必要があるか、という指標。

他の評価指標として success rate も使っている。これはセンテンスごとに評価するもので、Accuracy = (N_s / N_a) * 100 という定義。N_a はデータ件数で、N_s は adversarial なしなら音声を正しく認識できた数で adversarial ありなら正しく間違えさせることができた数である。正しく間違えさせるってのもなかなかややこしい表現だな。

yoheikikuta commented 4 years ago

まずは clean なデータと adversarial examples で評価指標がどうなるか。 clean は test データに対する Lingvo モデルの性能である。accuracy は完璧に認識できたものの割合なのでこれくらいの数字になってしまうっぽい。WER は 4.5% とかでなかなか素晴らしい結果である。 一方で adversarial examples では完全完璧に間違えさせようと思った音声に擬態させられていることが分かる。adversarial examples 系ではありがちな、めちゃくちゃ完璧に間違えさせられるという結果である。

次の実験は人間にとっての知覚具合。 まずは 1000 件のうち 100 件をランダムに選ぶ。比較として Carlini & Wagner (2018) でも adversarial examples を作っている(ちなみにこのモデルでも success rate 100% らしい)。 Amazon Mechanical Turk で 80 人のユーザに以下の質問をそれぞれ答えてもらう。

結果は以下のようになる。 これはなかなか凄い結果だ。 clean のものと直接比較するとやや違和感が感じる人がいるが、従来手法との比較という意味では clean のものとほぼ同じという結果になっている。実際にプロジェクトページの音声を自分で聞いてみても、従来手法では明らかに聞こえるノイズが全然聞こえなくなっていることが分かる。

yoheikikuta commented 4 years ago

次に over-the-air attack の結果。 まずは評価指標がどうなるかで、これは adversarial examples も WER では clean と同じくらいになっていることが分かる。

ノイズが聞こえるか否かの実験では、clean : 従来手法 : 提案手法 = 6% : 100% : 83% で、ほとんどの人がノイズありと判断するようになってしまっている(とはいえ従来手法よりは改善している)。

また、同一かどうかを判断してもらった場合は、clean と 提案手法の imperceptible and robust adversarial examples の場合は 29% が同一と判断した。

これらを見ると、over-the-air attack に関しては、まだまだ課題を残しつつも確かな一歩を踏み出したという感じになっている。これもプロジェクトページのサンプルを聞いてみると確認ができ、確かにノイズが乗っているのが確認できる。

yoheikikuta commented 4 years ago

ということで一通り読んだ。

音声認識系の基礎知識がないのでまだわかってないところが色々ある。これは今後どこかでやることがあったら腰を据えてやるとしよう。

話としては、単純な $ l_p $ norm の正則化では人間に知覚できるノイズになってしまうので、心理音響モデルの知見を使って周波数領域で知覚しやすさを考慮して知覚しにくい摂動を作ることに成功した、というものでなかなか興味深かった。分野をまたいだ知識を使っている感じがしていいよね。