「DNN-HMM」と「End-to-End」

木田祐介氏(以下、木田):「End-to-End音声認識の概要とプロダクト化への課題」と題してLINEの木田が発表いたします。

最初に簡単に自己紹介します。僕の略歴はここに書いている通りですが、京都大学の河原研を出たあとに、東芝に新卒で入って11年ぐらいいて、そのあとヤフーに移りまして、今年の5月からLINEでお世話になっています。今は音声認識のテクニカルリードをやっています。

河原研のころからずっと音声認識の研究開発をしていて、最初のころはフロントエンドを中心にやっていましたが、ここ数年はハイブリッドの音響モデル「DNN-HMM」と「End-to-End」をやっています。主にプロダクト開発側にいますが、たまに学会発表もしています。あとは、麻婆豆腐とサードウェーブコーヒーが好きです。よろしくお願いします。

今日のお話しですが、最初にEnd-to-Endの音声認識技術の概要を話して、そのあとプロダクト化に向けての課題と取り組みをお話しします。最後にLINEの音声認識について、もう少しお話しします。さっき練習したら、35分ぐらいかかりそうだったんですが、ちょっと巻きでがんばります。

音声認識技術の変遷

最初に音声認識技術の変遷なんですが、昔はGMM-HMMといって、GMMとHMMをハイブリッドで使うような音響モデルを使った音声認識システムが、長らく主流で使われていました。みなさんご存知のように、ディープラーニングが急速に台頭しまして、音声認識では比較的早い段階からディープラーニングが適用され始めました。

2011年ごろから、最初はTandemと、DNN-HMMのハイブリッドという2つの方式があったのですが、今はこのDNN-HMMという、GMMをDMMに置き換えたような音響モデルを使う方式が主流になっています。プロダクトサイドでも、今この方式を採用しているところが多いんじゃないかと思います。

2016年ごろから新しく別のシステムである、End-to-End音声認識というのが急速に台頭してきていまして、研究界隈ではもう完全に主流になっています。音声認識の研究では、論文でも90パーセント以上がEnd-to-End型の論文になっているんじゃないかという実感があります。

End-to-End音声認識は、非常に注目されていますが、それがなぜかというと、1つの理由として、シンプルな構造ながら高い精度が得られるということがあると思います。この「高い精度」は、どれぐらい精度が出るのかというところの一例をお見せします。これは日本語話し言葉コーパス、CSJに対する認識誤りを比較したものです。

DNN-HMMとEnd-to-Endで、それぞれ、まず僕のほうで調べた限りState-of-the-artだったものを載せています。これを見ると明らかなように、End-to-Endのほうが、誤りが半分ぐらいになっていることがわかると思います。

というわけでEnd-to-Endは非常に精度が高いんですが、注意点として、これはけっこうクリーンな環境でのデータですが、ノイズな環境だとまだまだEnd-to-EndでもこのDNN-HMMに追いついていないという実情があります。

続いて、このシンプルな構造というところで、End-to-End音声認識の中身について具体的に見ていこうと思います。

音声認識の中身

始めに従来のDNN-HMMについて軽く触れておきます。DNN-HMMのときは、特徴量を音声から抽出したあとに、デコードをして認識結果を出すという流れなんですが、デコードするときに「音響モデル」と「言語モデル」「発音辞書」という3つのモジュールを使うところが特徴になります。一つひとつ簡単に説明すると、「音響モデル」は音のモデルなので、「あ」とか「い」の音素を、こちらの生成モデルのHMMで表現します。

昔はこのHMMの状態をGMMで表していたんですが、DNN-HMMは特徴量を入力したときにその瞬間の音素が何かという事後確率を推定するDNNを使います。ベイズの定理でその事後確率を尤度に変換して、HMMの状態にするという、DNNとHMMを組み合わせたハイブリッドのやり方になっているため、DNN-HMM型と呼ばれます。

次に「言語モデル」ですが、こちらは言葉のつながりやすさを確率で表したモデルです。例えば「今日」という言葉のあとに「の」というのがくる確率はどれくらいか、「が」というのがどれくらいかみたいなものを大量のテキストコーパスを集めて統計ベースで学習するモデルになります。

最後の「発音辞書」は、ある言葉の表記に対して、それがどういう発音かを記した辞書になります。デコードするときは、この3つのモジュールを組み合わせて、「WFST」という大きなネットワークを作って、その中を探索して認識します。

一方でEnd-to-End音声認識の構成は、このようになります。End-to-Endモデルだとモジュールが1つだけになっていて、先ほどあったような言語モデルや発音辞書がいらなくなり、非常にシンプルな構成になります。

このEnd-to-Endモデルの中身が何かというと、先ほどの「音響モデル」みたいなイメージですが、先ほどの音響モデルは特徴量から音素の事後確率を出していたのに対して、End-to-Endモデルは特徴量からダイレクトに文字や単語をニューラルネットワークから直接出力します。

なので、ニューラルネットワークに特徴量をポンポン放り込んでいくと、その表記が次々に出てくるので、非常にシンプルな構成になるというやり方です。

言語モデル「Fusion」

次に、言語モデルの「Fusion」についてもちょっと触れておきます。End-to-Endモデルだけでも音声認識はけっこうできるのですが、やはり外部の言語資源を使ったほうがより精度が高くなるため、言語モデルを使うのが一般的です。「やっぱり言語モデルがいるんじゃないか」と思われる方もいると思いますが、End-to-Endだと、この言語モデルを作ることが、従来のDNN-HMMよりはかなり楽になっています。

というのも、DNN-HMMのときは、「言語モデル」は形態素単位で作るのが主流でした。形態素単位でやると、形態素解析などが必要だったので、話し言葉がちゃんと解析できないという問題もありましたが、End-to-Endだと、文字単位で言語モデルが作れるので、非常に作る手間が楽になります。実際にデコードするときは、End-to-Endモデルで仮説を予めN個に絞り込んで、そのN個の順序を言語モデルで入れ替えるやり方をします。

End-to-Endの3つのモデル

このEnd-to-Endモデルの中にある具体的なモデルについてどういうものがあるのかを説明します。3つのモデルを紹介しようと思いますが、まずはCTCです。このCTCは、各出力の条件付独立性を仮定しているという特徴があります。これはどういうことかと言うと、過去に何を出力したかというのをまったく参考にせずに、次を予測するというやり方です。

このような制約があるため、残りのあとで説明する2つのモデルよりは、精度が低いと一般的には言われています。もう1つの特徴として、フレームごとに文字を出力します。音声は10ミリ秒単位とかで特徴量を出しますが、その10ミリ秒単位のフレームごとに文字を出力すると、入力よりも出力のほうが圧倒的に少ないことになります。

例えば「明日」という言葉を1秒かけてしゃべると100フレームぐらいあるのですが、フレームごとに文字を入れていくと2フレーム分となり、残りの98個は何を出すのかという問題になってきます。そこで空を意味するような特殊記号""(ブランク)を導入します。このように、ニューラルネットの出力のところに普通の文字だけじゃなくて特殊記号の""を導入する必要があるのです。

ではそれをどうやってデコードするかということですが、この""を導入したことによって、ある文字の系列を表現するのに、さまざまな出力パターンが考えられます。これはいつも出てくる例なんですが「CAT」という3文字を表すときに、""が入る位置は、この中の任意の箇所になるわけです。

なのでこういうパターンもあるし、こういうパターンもあるしと、ありとあらゆるパターンがあります。そのパターンは、トレリスのこの白い丸が"_"で、黒い丸が文字なのですが、この左上のところから始まって右下のところに来るまでの、あらゆるパスがあり得るというわけです。この同じ結果を出す全パターンの確率の総和を出すことで、何か発話されたときに、CATという文字が出る確率が計算できます。

これを他のいろいろな候補の仮説に対して、それぞれ計算して、もっともらしいものを出すとのがCTCのやり方です。

次に、2つ目のモデルが「RNN-Transducer」です。このRNN-Transducerは、さきほどのCTCにおける「条件付独立性」というのを排除するために、前の出力の文字を入力に加えることをやっています。こちらがネットワークの構成なんですが、こちら側には音声を普通に入れます。前の出力文字をこちらの別の入り口に入れてやります。

その2つの情報を合わせて、次の文字を出力するやり方ですね。なのでこれは、「音響モデル」と「言語モデル」が明示的に役割を分担したような構造になっています。

3つ目が「Attention」です。Attentionを使ったモデルはいくつかあるんですが、代表的なのはこの3つぐらいかなと思っています。Attention based Encoder-DecoderとLASは、ほとんど同じだと思います。

Transformerが精度的に一番高い

Transformerをこちらで挙げていますが、Transformerはもう有名なので、たぶんみなさんに今更説明する必要はないと思うのですが、音声認識の世界でも、このTransformerがおそらく精度的にも一番高いのではないかと思っています。こちらがデファクトスタンダード的に使われています。

End-to-Endは、Transformer以外にもSpecAugmentも出ましたが、Transformerが出たことで、DNN-HMMも凌駕するようになって、一段と注目度が上がったと認識しています。Attention basedの方式の特徴としてはSeq2Seqのモデルなので、先ほどのCTCとかRNN-Transducerみたいに、"_"を必要としません。シンボルが直接1つずつ出てきます。

以上、簡単ですがEnd-to-End音声認識技術の概要について説明しました。