Nervana Technology の深掘り: Neon を使用したエンドツーエンドの音声認識の実装方法

Nervana Technology の深掘り: Neon を使用したエンドツーエンドの音声認識の実装方法

音声は本質的に即時の信号です。音声で伝えられる情報要素は、複数の時間スケールで進化します。空気圧の影響下では、同じ音源の周波数は数百ヘルツまたは数千ヘルツしか変化しないため、音を使用して音源の位置を特定し、周囲のノイズの多い環境と区別して、送信された情報を取得することができます。音声のパワースペクトルのゆっくり変化する部分は、私たちが話す単語を構成する最小単位である音素のシーケンスの結果です。さらに、フレーズや物語構造を形成する単語の順序もゆっくりと変化します。ただし、時間スケールにおいてこれらの要素間に厳密な境界はありません。代わりに、さまざまなスケールの要素が混在しているため、時間的なコンテキストが非常に重要になり、まれに休止が要素間の境界として機能します。自動音声認識 (ASR) システムは、このノイズの多いマルチスケール データ ストリームを理解し、正確な単語のシーケンスに変換する必要があります。

本稿執筆時点では、最も人気があり成功している音声認識エンジンはハイブリッド システムを使用して構築されています。つまり、ディープ ニューラル ネットワーク (DNN) は、隠れマルコフ モデル (HMM)、コンテキスト依存の音声モデル、n グラム言語モデル、および Viterbi 検索アルゴリズムの複雑なバリアントと混合されます。このモデルは非常に複雑であり、モデルの構築には洗練されたトレーニング方法とかなりの専門知識が必要です。ディープラーニングの成功から私たちが学んだことは、複雑で多次元の機械学習手法を、微分可能なコスト関数を最適化するようにトレーニングできる汎用ニューラル ネットワークに置き換えることができることが多いということです。この方法(「純粋な」DNN 方式と呼ぶことにします)は、音声認識において大きな成功を収めました。今では、かなりの量のトレーニング データと十分なコンピューティング リソースが揃うと、最先端の大語彙連続音声認識 (LVCSR) システムをより簡単に構築できます。

この記事の目的は、Graves 氏とその協力者によって提唱され、Baidu の AI 研究者によって完全なエンドツーエンドの ASR パイプラインへとさらに開発されたアプローチに従い、Neon を使用して「純粋な」DNN アプローチを使用して音声認識システムを構築する方法について、簡単なガイドを提供することです。同時に、このブログ投稿の補足として、私たちが実装したエンドツーエンドの音声認識エンジンのコードをオープンソース化します。最も初期の形態では、システムは双方向再帰型ニューラル ネットワーク (BiRNN) を使用して、オーディオ フレームをトランスクリプションと明示的に調整することなく、スペクトログラムから直接トランスクリプションを生成するモデルをトレーニングします。代わりに、Graves の Connectionist Temporal Classification (CTC) アルゴリズムを使用した暗黙的なアライメントを使用します。

「純粋な」DNN アプローチにより、最先端のパフォーマンスを備えた LVCSR システムを使用したトレーニングが可能になりましたが、明示的なデコード手順、つまりモデル出力を認識可能な単語のシーケンスに変換する手順は、評価中に依然として重要です。デコードにはさまざまな手法があり、通常は重み付き有限状態トランスデューサーとニューラル ネットワーク言語モデルの両方を使用します。関連する内容を理解したい場合は、より詳細な紹介記事が必要であり、この記事は主に ASR パイプラインのトレーニング部分に限定されています。エンドツーエンドの音声認識エンジンの構築の全体像を読者に提供できるよう、必要に応じてギャップを埋めるための追加参考資料も提供します。

つまり、エンドツーエンドの音声認識パイプラインは、次の 3 つの主要部分で構成されます。

1. 特徴抽出ステージでは、生のオーディオ信号 (例: wav ファイル) を入力として受け取り、一連の特徴ベクトルを生成します。特定のオーディオ入力フレームに対して 1 つの特徴ベクトルが存在します。特徴抽出段階の出力の例には、元の波形のスライス、スペクトログラム、同様に一般的なメル周波数ケプストラム係数 (MFCC) などがあります。

2. 特徴ベクトルのシーケンスを入力として受け取り、特徴ベクトル入力に応じて文字または音素のシーケンスの確率を生成する音響モデル。

3. 2 つの入力 (音響モデルの出力と言語モデルの出力) を受け取り、言語モデルにエンコードされた言語ルールに従って音響モデルによって生成されたシーケンスに基づいて最も可能性の高い転写を検索するデコーダー。

データ処理

エンドツーエンドの音声認識システムを構築する場合、データをロードするための効果的なメカニズムが重要です。 Neon 1.7 で追加された新機能、画像、音声、ビデオ データをサポートする高度なデータ読み込みツールである Aeon を活用します。 Aeon を使用すると、データの前処理を気にすることなく、生のオーディオ ファイルを使用して音響モデルを直接トレーニングできるため、作業が大幅に簡素化されます。さらに、Aeon を使用すると、トレーニング中に使用するスペクトル機能の種類をより簡単に指定できます。

データの抽出

通常、音声データは、標準的なオーディオ形式の生のオーディオ ファイルと、対応する書き起こしを含む一連のテキスト ファイルとして配布されます。多くの場合、転写ファイルには、<オーディオ ファイルへのパス>、<オーディオ ファイル内の音声の転写> という形式の行が含まれます。これは、リストされたパスが転写を含むオーディオ ファイルを指していることを意味します。ただし、多くの場合、転写ファイルにリストされているパスは絶対パスではなく、想定されるディレクトリ構造に対する相対パスです。さまざまなデータ パッケージ シナリオを処理するために、Aeon では、1 つはオーディオ ファイルを指し、もう 1 つは対応するトランスクリプションを指す絶対パスのペアを含む「マニフェスト ファイル」を生成することがユーザーに求められます。詳細については、Neon の講演例 (リンク付き) と Aeon のドキュメントを参照してください。

マニフェスト ファイルに加えて、Aeon はデータセット内の最長発話の長さと最長転写の長さもユーザーに提供するよう求めます。これらの長さは、マニフェスト ファイルを生成するときに抽出できます。たとえば、人気の SoX プログラムを使用して、オーディオ ファイルの継続時間を抽出できます。

私たちは、畳み込み (Conv) 層、双方向再帰 (BiRNN) 層、完全接続 (FC) 層で構成されるディープ ニューラル ネットワークをトレーニングして音響モデルを構築します (基本的には、図に示すように「Deep Speech 2」に従います)。

出力層のソフトマックス活性化関数を除き、他の層では ReLU 活性化関数を使用します。

図に示すように、ネットワークはスペクトル特徴ベクトルを入力として受け取ります。 Aeon データローダーを使用すると、Neon は、生の波形、スペクトログラム、メル周波数スペクトル係数 (MFCS)、メル周波数ケプストラム係数 (MFCC) の 4 種類の入力機能をサポートできます。 MFSC と MFCC はスペクトログラムから派生したもので、本質的にはスペクトログラムの各列を、人間の耳の知覚周波数範囲により近い比較的少数の独立した係数に変換します。私たちの実験では、他の条件が同じであれば、メル特徴を入力としてトレーニングしたモデルは、スペクトログラムでトレーニングしたモデルよりもわずかに優れたパフォーマンスを発揮することも観察されました。

スペクトル入力はConvレイヤーに渡されます。一般的に、1D または 2D 畳み込みを使用する複数の Conv レイヤーを備えたアーキテクチャを検討できます。ネットワークが入力のより広いコンテキストで動作できるようにするストライド畳み込み層を利用します。ストライド畳み込み層はシーケンスの全体の長さも短縮し、その結果、メモリフットプリントとネットワークによって実行される計算量が大幅に削減されます。これにより、さらに深いモデルをトレーニングできるようになり、計算リソースをあまり増やさずにパフォーマンスが大幅に向上します。

Conv レイヤーの出力は、BiRNN レイヤーのスタックに送られます。各 BiRNN レイヤーは直列に実行される 1 組の RNN で構成され、入力シーケンスは図に示すように反対方向に提示されます。

この RNN ペアからの出力は、図のように連結されます。 BiRNN層は、入力シーケンスのあらゆる時点でネットワークが未来と過去の両方のコンテキストにアクセスできるようにするため、音声信号の処理に特に適しています[1]。 CTC ベースの音響モデルをトレーニングする場合、ゲート付きのバリエーション (GRU または LSTM) ではなく、「バニラ」 RNN を使用する方が効果的であることがわかりました。これは主に、後者には大きな計算オーバーヘッドがあるためです。 [2]で報告されているように、我々はBiRNN層にバッチ正規化を適用して、全体的な単語誤り率(WER)で測定されるモデルの精度にほとんど影響を与えずに、全体的なトレーニング時間を短縮しました。

各反復では、BiRNN レイヤーの出力が最初に完全接続レイヤーに渡され、次にその情報がソフトマックス レイヤーに渡されます。ソフトマックス層の各ユニットは、ターゲット語彙を表すアルファベットの 1 文字に対応します。たとえば、トレーニング データが英語のコーパスから取得される場合、アルファベットには通常、A から Z までのすべての文字と関連する句読点、およびテキスト内の単語を区切るために使用されるスペース文字が含まれます。 CTC ベースのモデルでは通常、特殊な「空白」文字を含むアルファベットも必要です。これらの空白文字により、モデルは連続して繰り返される記号だけでなく、一時停止、背景ノイズ、その他の「非音声」状況などの音声信号内のアーティファクトも確実に予測できるようになります。

したがって、発話のフレームのシーケンスが与えられると、モデルは各フレームのアルファベットの確率分布を生成します。データトレーニング中、ソフトマックスの出力は CTC コスト関数 (詳細は後述) に渡され、実際のテキストを使用して (i) モデルの予測にスコアを付け、(ii) モデルの予測の精度を定量化するエラー信号を生成します。全体的な目標は、モデルをトレーニングして、実際のシナリオでの予測パフォーマンスを向上させることです。

トレーニングデータ

経験的に、確率的勾配降下法をモメンタム法と勾配制限法と組み合わせて使用​​すると、最もパフォーマンスの高いモデルが得られることがわかりました。より深いネットワーク(7 層以上)でも、ほぼ同じ効果が得られます。

モデルのトレーニングには、Sutskever らによって実装された Nesterov の加速勾配降下法を使用します。ネットワークの深さ、特定のレイヤー内のユニット数、学習率、アニーリング率、運動量などのモデルのハイパーパラメータのほとんどは、既存の開発データセットに基づいて経験的に選択されます。私たちはモデル内の各レイヤーを初期化するために「Xavier」初期化法を使用していますが、代替の初期化スキームが比較実験の結果を改善できるかどうかについては体系的に調査していません。

私たちのモデルはすべて CTC 損失基準を使用してトレーニングされており、CTC アルゴリズムの内部の詳細な説明はこのブログの範囲外です。ここでは簡単に概要を説明しますが、より深く理解したい場合は Graves の論文を参照してください。

CTC アルゴリズムは、「折りたたみ」関数のアクションを中心に展開されます。この関数は、文字のシーケンスを入力として受け取り、最初に入力文字列内のすべての繰り返し文字を削除し、次にすべての「空白」記号を削除して出力シーケンスを生成します。例えば、スペース文字を表すために「_」を使用すると、

長さ T の発話とそれに対応する「真実」の転写が与えられると、CTC アルゴリズムは「真実」の転写に折り畳まれる長さ T のすべての可能な文字シーケンスとして定義される「転置」折りたたみ関数を構築します。

この「転置された」セットに出現するシーケンスの確率は、ニューラル ネットワークのソフトマックス出力から直接計算できます。 CTC コストは、「転置」されたセット内に存在するシーケンスの確率の合計の対数関数として定義されます。この関数は、バックプロパゲーション中に計算される誤差勾配であるソフトマックスの出力に関して微分可能です。

簡単な例で説明すると、入力発話に 3 つのフレームがあり、対応するトランスクリプトが「OX」という単語であるとします。同様に、「_」を使用して空白を表すと、OX に折りたたまれる 3 文字のシーケンスのセットには、_OX、O_X、OOX、OXX、OX_ が含まれます。 CTCアルゴリズム設定

P(abc) = p(a,1)p(b,2)p(c,3)、ここでp(u,t)は、時刻t(フレーム)におけるユニット「u」でのソフトマックスモデルの出力値を表します。したがって、CTC アルゴリズムでは、特定のターゲット シーケンスに折りたたまれる固定長のすべてのシーケンスを列挙する必要があります。非常に長いシーケンスを扱う場合、前方後方アルゴリズムを使用して列挙を効率的に実行できます。これは、HMM を使用して問題を処理するというアイデアに非常に近いものです。

評価する

モデルのトレーニングが完了すると、システムがこれまで聞いたことのない音声を予測することで、そのパフォーマンスを評価できます。モデルは出力として確率ベクトルのシーケンスを生成するため、モデルの出力を単語シーケンスに変換するデコーダーを構築する必要があります。

デコーダーの役割は、モデルの出力を検索し、転写として最も可能性の高いシーケンスを生成することです。最も簡単な方法は計算することです

ここで、Collapse(...) は上記で定義されたマッピングです。

文字シーケンスでモデルをトレーニングしたにもかかわらず、モデルは暗黙の言語モデルを学習することができ、すでに単語を音声的に綴ることにかなり熟練しています (表 1 を参照)。モデルのスペルパフォーマンスは通常、レーベンシュタイン距離を使用して計算された文字エラー率 (CER) を使用して文字レベルで測定されます。モデルの予測におけるエラーの多くは、トレーニング セットに出現しなかった単語によるものであることがわかりました。したがって、トレーニング セットのサイズが大きくなるにつれて、全体的な CER 値が継続的に向上すると予想するのは妥当です。この期待は、12,000 時間を超える音声データを含むトレーニング セットを備えた Deep Speech 2 の結果によって確認されています。

表 1: ウォール ストリート ジャーナルの評価データセットにおけるモデルのサンプル予測。モデルが判断しにくい例を意図的に選択しました。図に示すように、言語モデルの制約を追加すると、言語モデルがない場合に発生した「スペルエラー」がすべて基本的に排除されます。

私たちのモデルは非常に優れた CER 結果を示していますが、モデルが単語を音声的に綴る傾向があるため、単語エラー率が比較的高くなります。外部辞書と言語モデルから取得したデコーダーを追加してモデルを制約することで、モデルのパフォーマンス (WER) を向上させることができます。 [3,4]に従って、重み付き有限状態トランスデューサ(WFST)を使用することがこのタスクに特に効果的なアプローチであることがわかりました。 WSJ および Librispeech データセットでは、WER 値が 25% 相対的に改善されていることがわかります。

表 2 には、ウォール ストリート ジャーナル (WSJ) コーパスを使用してトレーニングされたさまざまなエンドツーエンドの音声認識システムを示します。 「apple」(会社)と「apple」(果物)の認識結果をテストするために、WSJデータセットでトレーニングおよび評価されたシステムの公開データのみを使用してシステムを比較することを選択しました。しかし、結果によると、同じデータセットでトレーニングおよび評価されたハイブリッドDNN-HMMシステムは、純粋なディープニューラルネットワークアーキテクチャを使用したシステムよりも優れたパフォーマンスを発揮することが示されています[6]。一方、結果は、トレーニングセットのサイズが大きい場合、純粋なディープニューラルネットワークアーキテクチャがハイブリッドDNN-HMMシステムと同じパフォーマンスを達成できることを示しています[DS2による引用]。

表 2: さまざまなエンドツーエンドの音声認識システムのトレーニングとパフォーマンスの評価には、ウォール ストリート ジャーナル データセットのみを使用します。 CER(文字エラー率)とは、モデルによって得られた文字列と実際の転記された文字列を比較した文字エラー率を指します。 LM は言語モデルの略です。最後の列は、追加の手法 (再スコアリング、モデル集約など) を使用してデコードされた例を示します。

今後の仕事

CTC 目的関数をニューラル ネットワーク モデルに埋め込んだ音声認識モデルにより、この純粋な DNN モデルの機能を初めて垣間見ることができます。しかし最近では、注意メカニズムを強化したいわゆるエンコーダー-デコーダーRNNモデルが、CTC基準[4,5]を使用して訓練されたRNNモデルの現実的な代替手段として登場している。注意ベースのエンコーダー/デコーダー モデルと CTC ベースのモデルはどちらも、音響入力シーケンスを文字/音素シーケンスにマッピングするようにトレーニングされます。上で説明したように、CTC 標準に基づくモデルは、音声入力の各フレームに対応する文字を予測し、フレームごとの予測とターゲット シーケンス間の可能な一致を検索するようにトレーニングされます。対照的に、アテンションベースのエンコーダー/デコーダー モデルは、出力シーケンスを予測する前に、まず入力シーケンス全体を読み取ります。

このアプローチの概念的な利点は、出力シーケンス内の予測された文字が互いに独立していると想定する必要がないことです。 CTC のアルゴリズムはこの根拠のない仮定に基づいています。なぜなら、文字列が出現する順序は、それより前に出現した文字列に大きく左右されるからです。最近の研究では、LVCSRシステムの注意ベースのエンコーダーデコーダーモデルは、CTCベースのモデルと比較して文字エラー率が大幅に改善されていることが示されています[4]。 2 つの方法を言語モデルに統合する前に評価したところ、その判断は正しく、これは注意ベースのモデルが CTC ベースのモデルよりも優れた音響モデルであるという結論を裏付けています。ただし、言語モデルを使用して単語エラー率を決定すると、このパフォーマンスの違いは消えることに注意してください。

私たちは、ASR システム用の注目度ベースのエンコーダー/デコーダー ネットワークである Neon の構築に取り組んでおり、貢献を歓迎します。コードは https://github.com/NervanaSystems/deepspeech.git にあります。

<<:  手術ロボットには依然としてリスクがあり、人工知能技術の応用は成熟する必要がある

>>:  音声認識:将来の人間とコンピュータの相互作用の破壊と変化

ブログ    
ブログ    
ブログ    

推薦する

...

ガートナー:テクノロジープロバイダーの33%が2年以内にAIに100万ドル以上を投資する

[[427302]]ガートナーの新しい調査によると、人工知能 (AI) 技術計画を持つテクノロジーお...

CPP アルゴリズム問題のための共通コンテナ技術

[[413003]]アルゴリズムの問​​題を解決するときに CPP でよく使用されるコンテナ テクニ...

顔認識は道徳的および倫理的な懸念を引き起こします。あなたの顔は監視されていますか?

顔認識システムは私たちの都市に多くの利便性をもたらしました。しかし、多くの国では顔認識に対する抵抗が...

企業はビッグデータ アルゴリズムを使用して効果的なリンクを構築できますか?

ビッグデータは人々にとって巨大な概念であるようです。しかし、多くの企業がすでに業務にビッグデータを活...

杜暁曼自動機械学習プラットフォームの実践

1. 機械学習プラットフォームまず、Du Xiaomanの機械学習プラットフォームの背景、開発プロセ...

2020年の世界産業用ロボット業界の現在の市場状況と競争環境の分析

2020年の世界産業用ロボット産業の現状と競争環境の分析:アジア太平洋地域が世界最大の市場に1. 世...

人工知能の現状と今後の動向

[[375724]]開発状況近年、デジタル経済の継続的な進歩を背景に、人工知能は急速に発展し、さまざ...

...

インテリジェントな顧客サービス チャット モジュールの 3 つのソリューションを比較すると、どれが気に入りましたか?

現在のインテリジェント顧客サービス市場とその NLP 分野において、チャット モジュールは非常に重要...

...

AIによって人間が失業しないのはなぜでしょうか?

人工知能が20年間進歩したにもかかわらず、オフィスワークのほとんどは単純な頭脳労働で構成されているよ...

三国志を例に挙げて分散アルゴリズムについて語るのって、気楽なことでしょうか?

[[357046]]序文「三国殺し」は、中国の三国時代を背景に、身分を手がかりにカードを形にした人...

アルゴリズム | 再帰の深い理解、あなたは再帰を誤解しています

再帰は、プログラミングの本で説明するのが最も難しい部分である魔法のアルゴリズムです。これらの本では通...