見出し画像

微分可能重み付き有限状態トランスデューサーの紹介

※こちらの記事は、2021年2月26日にRetrieva TECH BLOGにて掲載された記事を再掲載したものとなります。

カスタマーサクセス部 研究チーム Chief Research Officerの西鳥羽 Jiro Nishitoba (@jnishi) | Twitter です。レトリバ全体の研究開発の取りまとめをしています。

微分可能重み付き有限状態トランスデューサー(Differentiable Weighted Finite-State Transducers)の紹介をします。


Differentiable Weighted Finite-State Transducers

弊社の技術ブログでも以前 OpenFST における N-shortest path アルゴリズムの紹介 - Retrieva TECH BLOG で紹介していますが、音声認識においてDNN-HMMやConnectionist temporal classification損失関数を用いた音響モデルを用いる場合、重み付き有限状態トランスデューサー(Weighted Finite State Transducer, 以降WFST)によるデコーダーを用いて言語モデル情報を組み込むことによって精度向上を図ります。

WFSTを用いるとN-gram言語モデルによる単語列の情報や辞書による語彙情報も組み込みながらも高速に処理が行なえます。

正解文書を音素または文字に分解して音響モデルを学習します。推論時にはそうして学習した音響モデルとWFSTで表現された言語モデルを組み合わせてデコードします。 一方で言語モデルの情報は推論時にしか用いられないため音響モデルの学習には反映されません。

しかし、最近 [2010.01003] Differentiable Weighted Finite-State Transducers という、勾配計算のできるWFSTのフレームワークが登場しました。 WFSTの各種操作(composition, intersection, concatenation, Kleene closure等)に対応し、これらの操作を通じて構築された複雑なWFSTでも勾配を計算することができます。

Deep Learningと組み合わせる方法としては、まずニューラルネットワークの出力の系列をWFST上のグラフ(Emission Graphs)に変換します。Emission Graphは重みにより構成されます。

[2010.01003] Differentiable Weighted Finite-State Transducers より引用。出力がa,b,cの三種類となる長さ4の系列における例で、それぞれの遷移の重みは各系列における対応する記号の次元の値になります。

ニューラルネットワークから変換したEmission GraphとCTCなどの損失を計算するWFSTを合成し、ビタビ探索をして損失を計算します。 損失を計算したあとにEmission Graphを通じてニューラルネットワークに誤差を伝搬させることができます。それを通じてニューラルネットワークの学習ができるようになります。

実装

ニューラルネットワークとの連携部分も含めてGTNというライブラリで実装も公開されています。 GitHub - facebookresearch/gtn: Automatic differentiation with weighted finite-state transducers.

その他 Kaldi Projectでも実装が行われています。 GitHub - k2-fsa/k2: FSA/FST algorithms, intended to (eventually) be interoperable with PyTorch and similar

これらのライブラリではPytorchなどDeep Learningのフレームワークと連携することができます。 実際ESPnetでもGTNやK2の取り込みが進められていて DNN-HMMのモデルやEESENなどでは学習に反映させることができなかった発音辞書・言語モデルの情報も加味した上での学習が行えるようになるので精度が向上するのではないかという期待があります。

Option for GTN CTC mode by brianyan918 · Pull Request #2866 · espnet/espnet · GitHub

[WIP] support k2 ctc by yaguanghu · Pull Request #2941 · espnet/espnet · GitHub