614 Views
August 01, 17
スライド概要
https://idcf.doorkeeper.jp/events/63057
2023年10月からSpeaker Deckに移行しました。最新情報はこちらをご覧ください。 https://speakerdeck.com/lycorptech_jp
ヤフー音声認識YJVOICEにおける ディープラーニングの実用化 株式会社IDCフロンティア主催セミナー 2017/07/31 2017年8月1日 データ&サイエンスソリューション統括本部 サイエンス本部 三宅 純平
目次 • • • • • 2 ヤフー音声認識のご紹介 音声認識の要素技術の概要 ディープラーニングを用いた音響モデル 音声認識サービスでのDNN実用について まとめと今後の展開
ヤフー音声認識 YJVOICEについて • • • • 3 2011年3月から音声認識サービス開始 100万語彙以上の連続単語認識 約15弱のヤフーアプリに導入 2015年5月よりDNN音響モデルを利用 Yahoo!音声検索アプリ (※)Ken-ichi Iso et al., "Improvements in Japanese Voice Search", Interspeech 2012
YJVOICE音声認識システムの概要 • • 分散型音声認識システム iOS/Android SDKを社内配布してアプリ導入 Client (iOS/Android) 音響モデル 言語モデル App(表示) WakeUp用 音声認識 (音声検出/デコード) Server (Apache Module) 音声データ (圧縮音声) 通信制制御部 (ASRプロトコル) 4 通信制御部(ASRプロトコル) 言語モデル 認識エンジン部 (音声検出/デコード) 音声圧縮処理 (Speex,Flac) 音声取り込み (OS/ドライバ) 音響モデル 認識結果 音声検出をサーバで 音声認識デコーダ: ⇒WFSTベース
ヤフー日本語音声認識 YJVOICEについて 音声認識の基本構成 単語と単語の繋がり易さを 表現する知識 晴れ 「あ」等の音を 表現する知識 ka 明日 to 晴 ディープラーニングの 実装範囲 音響モデル ます 荒れ れ 言語モデル 音声波形 特徴量 抽出 5 音声区間 検出 認識デコーダ 認識結果
音声認識のモデル学習からプロダクト導入まで 音声波形 音声認識結果 大規模音声ログの収集 (数億発話) 実機での性能検証 on CPU • • • • 6 音声認識の精度 リアルタイム性 CPU/メモリ消費率 アルゴリズム検証 音声書き起こし(学習データ) (約300万発話,約2000時間) 音声認識のモデル学習 on GPU • 音響モデルや音声区間検出モデル等の ニューラルネットワークの学習 • 学習時間は数日から1週間以上まで色々
ディープラーニングを用いた音響モデル
音響モデル=音声信号(時系列データ)のモデル化 周波数軸(Hz) 今日 8 きょー は は 京都 きょー に と に 30ms 類似した音声スペクトル パターンのモデル化 遊び に あそび に 60ms 時間軸伸縮のモデル化 行きます いきます
音声系列のパターン認識の代表的な手法について • Left-to-Right Hidden Markov Model(HMM) • • 1980sから広く用いられている手法 各音素の時間軸伸縮の違いを有限オートマトンの一種で制御 • 初期状態確率、状態遷移確率、シンボル出力確率で表現 a 【例】10msec毎に音素「a」の 始端、中間、終端等の状態遷移 a1 • a3 i4 i5 i6 Connectionist Temporal Classification(*1) • • 9 a2 i リカレントニューラルネットワークを用いて、 各音素と何も出力しない空文字(blank) ”_” を 出力ラベルとして系列を違いを吸収できるようにした 大規模な学習データを用いた時に有効 “aaa____i_i__uuuu__” “aiiu” (*1)Graves, Alex, et al. "Connectionist temporal classification: labelling unsegmented sequence data with recurrent neural networks." ICML2006
DNN-HMM hybrid 音響モデル や ふー お ん せー に ん し き y-a+f 1フレーム(10ミリ秒)毎に 音声特徴量ベクトル40次元を抽出 sil-a+sh:0.01 ... ... ... ... ... ... ... ... y-a+f ニューラルネットワークの構造:DNN ... 時間軸伸縮のある音素系列を効率的にモデル化 ⇒ 1音素毎に3状態HMMで表現 ... ... .. . s2 ... ... s1 y-a+f(s1):0.9 ... 音素状態 s3 DNNでモデル化 p(x|s1) 10 p(x|s2) p(x|s3) 各状態における 出力確率 状態 の事前確率 入力層 (440) 中間層 (2048x5層) 特徴量ベクトル40次元を11フレーム (認識対象1+前後5フレーム) 出力層 (約4000) :事後確率
DNN音響モデルの学習データ 学習データサイズ • 約2000時間の音声データ • データ規模感 • 1000時間=590GB(360Mサンプル) • 1サンプル(10ミリ秒)=440次元特徴量 • 440次元*(float32)=1.7KB • 自動車走行音などの雑音データによる重畳音声のデータ拡張あり 学習プログラム • TensorFlowツールの利用 • 学習アルゴリズム:Minibatch SGD, 開発セット認識率でearly stopping • 音声は1バッチ当たり学習が数msecで終わるので、 CPU-GPU間のデータ転送の工夫が必要 • 学習時間 11 (※) 詳細は 磯健一, “ヤフー音声認識サービス「YJVOICE」における ディープラーニング活用事例” , GTC Japan 2015 • 例:1000時間, 2048x5層, 15epoch • Tesla M2090で約1ヶ月 • TITAN Xで約2週間
DNNによる性能の向上 Good 既存手法から誤り率が30〜40%改善 • 音声検索1万発話による文正解率 • 約3%(1/32)の学習データ量でも DNNの方が精度が高い 文正解率(%) • ※ GMM : Gaussian Mixture Models • これまでのデファクト音響モデル • GMMの学習データ量を1として DNNの学習データ量を1〜1/32の場合での比較 12 GMM (※) 1/32 1/16 1/8 1/4 1/2 1 (DNN=2048x5)
ミニバッチサイズとマルチGPUによる速度変化 Xeon E5-2697v3 2.60GHz TITAN X 40 1024x5層 1sampleあたりの処理時間(usec) 37.0 ミニバッチサイズ変更 30 2.56倍 usec 20 14.3 マルチGPU 2.75倍 10 5.2 1GPU 1GPU 4GPU 256 16384 16384 0 ミニバッチサイズ • ミニバッチサイズ変更:サイズに合わせて適切な学習率を調整 • マルチGPU:各GPUから修正量を集めてCPU上で重み更新して各GPUへ配布 13 (※)CPU-GPUのデータ転送タイミングなどまだ調査中で改善余地あり。
音声認識サービスでのDNNの実用について
改めて ... 音声波形 音声認識結果 大規模音声ログの収集 (数億発話) 実機での性能検証 on CPU • • • • 15 音声認識の精度 リアルタイム性 CPU/メモリ消費率 アルゴリズム検証 音声書き起こし (約300万発話,約2000時間) 音声認識の学習 on GPU • 音響モデルや音声区間検出モデル等の ニューラルネットワークの学習 • 学習時間は数日から1週間以上まで色々
CPU上でのDNN演算速度改善 • 音声認識サービスはintel CPUサーバを使用 • • • リアルタイム処理を実現 • • 16 大規模なモデルに用いることで精度向上が期待できるが リアルタイム性も重視する必要がある 実時間比(Real Time Factor;RTF)が1以下になるように調整 RTF = デコード処理時間 / 音声の長さ (10ミリ秒の音声断片を10ミリ秒以内に処理) DNNのforward演算のみを高速化 Intel MKLライブラリ(数値演算ライブラリ) • CPUのSIMD演算のAVX拡張機能(32bit 8並列) • マルチスレッドを利用
Intel C++ Compiler & Math Kernel Library の導入 Intelコンパイラ+MKL(2スレッド)利用で CPUのまま約50%の高速化, 速度劣化なくDNN版をリリース 1フレームあたりの平均処理時間 [ミリ秒] (コンパイラ/利用スレッド数) icpc-w/MKL-4th icpc-w/MKL-2th 17 Intelコンパイラ +MKL2スレッド利用 4.66473 約50%改善 5.6293 icpc-w/MKL-1th 7.45025 icpc-15.0 7.5991 g++-4.4 Intelコンパイラ利用 約32% 11.3187
まとめと今後の展開 • ヤフー音声認識のDNNを用いた音響モデル学習 • 約2000時間の学習データ • モデル学習時間は約2週間 • 音声認識サービスにおけるDNNの実用 • 音声認識サービスはintel CPUサーバを使用 • Intel MKLライブラリの導入 • 今後の展望 • マルチGPU,マルチノード学習によるモデル学習の大規模化(kukaiに期待) • 音声は1サンプルあたり学習がすぐに終わるので、 CPU-GPU間のデータ転送やパラメータ更新の同期処理がボトルネック Microsoft: CNTK 1bit SGD Data-Parallel Distribute Training Amazon :Strom Nikko, "Scalable distributed dnn training using commodity gpu cloud computing." Interspeech 2015. 18 • 音声認識処理の高速化 • RNNにより認識処理を行なうフレーム単位を下げても精度劣化がほとんどない G. Pundak and T. N. Sainath, “Lower Frame Rate NeuralNetwork Acoustic Models,” in Proc. Interspeech2016
音声認識の学習からプロダクト導入まで 音声波形 音声認識結果 大規模音声ログの収集 (数億発話) 実機での性能検証 on CPU • • • • 音声認識の精度 リアルタイム性(デコード時間/音声長) CPU/メモリ消費率 アルゴリズム検証 • スパコンkukaiを用いた学習 ⇒ kukai に期待! 19 音声書き起こし (約300万発話,約2000時間) 音声認識の学習 on GPU • 音響モデルや音声区間検出モデル等の ニューラルネットワークの学習 • 学習時間は数日から1週間以上まで色々