言語AIの進化史⑩隠れマルコフモデル
前回は、バイト対符号化(BPE)を紹介しましたが、今回はトークン化から離れて、シーケンスデータを扱う手法に焦点を当てていきます。
シーケンスデータ(Sequence Data)とは、順番に並んだデータのことです。もっというと、データの並び方に何らかの意味や情報が含まれているデータ列です。
例として、シーケンスデータとは次のようなものを指します。
株価の時系列データ
文章のテキストデータ
スピーチの音声データ
これらのシーケンスデータは、どれもデータが順番に並んでおり、その順番には意味や情報が含まれています。
たとえば、株価の変動は前の値からの影響を受けます。文章の流れでは文脈が次の単語を決定します。音声データも音素の並びに依存して意味が形成されます。
音素は、言語の音を構成する最小の単位です。
そのため、順番に生じる各々のデータ(株価、単語、音素)を独立したものとして扱うと正確な理解ができません。
よって、シーケンスデータを解析するためのアプローチが必要となります。
そんな中でも、今回は隠れマルコフモデル(Hidden Markov Model、HMM)を紹介します。
マルコフモデル
まずは、マルコフモデルの一般的なアプローチを解説します。
ヒストリーをどこまで扱うべきか
まず、予測のために過去の観測データのシーケンス(ヒストリー)をどこまで遡って扱うべきかを考えます。

たとえば、株価予測や音声認識では、過去のデータを基に次の値を予測します。もちろん、過去といっても非常に古い情報は必要ありません。
また一般的に、直近のデータがより重要であり、遠い過去のデータは次の未来に与える影響が少ないと考えられます。つまり、シーケンスデータを処理する際には、全てのヒストリーが必要とは限らない場合が多いです。

具体例として、天気の観測情報を考えましょう。観測値のシーケンスを次のように定義します。
$$
x_1, x_2, \ldots, x_i
$$
ここで、$${x_i}$$は$${i}$$番目の天気の状態を表します。たとえば、気圧、温度、湿度、降雨量などが含まれるベクトルとして扱います。
このようにして集めたヒストリーから次の状態を予測することができます。これを数式で表現すると、次のようになります。
$$
P(x_{i+1} \mid x_1, x_2, \ldots, x_i)
$$
この式は、これまでの観測データ(ヒストリー)に基づいて次の状態を予測する条件付き確率を表しています。この条件確率が最も高い状態が、次の予測値となります。
下図はこれを表現したものです。

しかし、次の天気を予測する際、どの程度のヒストリーが本当に必要でしょうか?
非常に古いデータまで遡ると、計算量やメモリ消費が膨大になり、モデルの複雑さが増してしまいます。よって、効率的な予測モデルを構築するためにも、できるだけ直近のデータだけを使用することが望ましいです。
それでは、どの時点からヒストリーを切り捨てるべきでしょうか?
これは簡単には決められませんが、次にこれを解決する方法について考えてみましょう。
マルコフ性を仮定する
20世紀初頭のロシア人数学者アンドレイ・マルコフは、「現在の状態だけに依存して次の状態が予測できる」という仮定を基に、確率モデルを構築する研究をしました。この仮定をマルコフ性と呼びます。
マルコフ性を仮定すると、長いヒストリーを追う必要がなくなり、モデルの複雑さを大幅に軽減できます。
たとえば、天気予報の例では、今日の天気だけを基にして明日の天気を予測することができます。これにより、計算コストを削減しながら効率的な予測が可能になります。
ただし、マルコフ性が成り立つかどうかはデータの性質に依存します。仮にマルコフ性を仮定しても、データの特徴に合わなければ予測精度が低下する可能性があります。したがって、マルコフ性を仮定する前に、データの性質を十分に理解することが重要です。
それでも、マルコフ性を仮定したアプローチは多くの場面で有用です。たとえば、強化学習の分野では、エージェントが次の行動を決定する際にマルコフ性に基づいた確率モデルを使用します。
マルコフ性の仮定は、次のような条件付き確率として表されます。
$$
P(x_{i+1} \mid x_{i})
$$
この式は、次の状態が現在の状態にのみ依存することを示しています。マルコフ性の仮定は、数学的に非常に便利で、複雑な問題に対処する際に役立ちます。多くの実例において、この仮定は有効に機能し、予測モデルの性能向上に寄与しています。
なお、この確率をもとに、状態遷移について考えることができます。状態遷移とは、ある状態から別の状態へ移行することを指し、またその確率を状態遷移確率と呼びます。
状態遷移確率の具体例
シンプルな例として、今日の天気の状態が「晴れ」「曇り」「雨」のいずれかであると仮定しましょう。明日の天気は、今日の天気に基づいた状態遷移確率によって決まります。
下の図は、天気の状態遷移確率を行列で表現したものです。

この行列に基づいて、今日の天気が「晴れ」であった場合、明日の天気は次のように予測されます。
明日も「晴れ」になる確率:$${P(明日は晴れ\mid今日は晴れ)= 0.7}$$
明日は「曇り」になる確率:$${P(明日は曇り\mid 今日は晴れ)=0.2}$$
明日は「 雨 」 になる確率:$${P(\ 明日は\ \ 雨 \ \ \mid 今日は晴れ)=0.1}$$
つまり、今日の状態「晴れ」から明日の状態「晴れ」「曇り」「雨」への遷移確率を行列で表現しています。これを状態遷移行列と呼びます。
同様に、現在の天気が「曇り」や「雨」の場合も、それぞれの状態から次の状態への遷移確率が定義されており、予測が可能です。
もちろん、これは非常に単純化されたモデルです。
なお、マルコフ性を前提とし、状態遷移確率を利用したモデルはマルコフモデルと呼ばれ、様々な分野で応用されています。
マルコフ連鎖と隠れマルコフモデル
マルコフモデルには、いくつか種類があります。代表的な区分として、マルコフ連鎖(Markov Chain)と隠れマルコフモデル(Hidden Markov Model、HMM)があります。
マルコフ連鎖は、状態が観測可能なシーケンスデータを扱うモデルです。また、観測データから直接状態が求められる場合も含まれます。このため、マルコフ連鎖で扱うデータは、スカラーあるいはベクトルでも単純なものが多いです。
これまで話してきたマルコフモデルは観測可能な状態に基づいているため、マルコフ連鎖に分類されます。
ただし、マルコフ連鎖を次のように拡張することができます。
1次のマルコフ連鎖:次の状態は、現在の状態にのみ依存します。
2次のマルコフ連鎖:次の状態は、現在の状態とその1つ前の状態に依存します。
$${N}$$次のマルコフ連鎖:次の状態は、現在を含む過去$${N}$$個の状態に依存します。
一方、隠れマルコフモデルは状態が観測できないシーケンスデータを扱うモデルです。そのため、観測データから隠れ状態を推定する必要があります。
また、より複雑なデータ構造を扱うことができ、ベクトル形式のデータを扱うことが一般的です。特に音声認識や自然言語処理などの応用では、多次元の特徴ベクトルを扱います。
隠れマルコフモデルによる音声認識
なぜ隠れ状態が必要なのか
隠れマルコフモデル(HMM)は、観測データから観測できない隠れた状態を推定し、次の状態や観測を予測するための確率モデルです。
ここでは、日本語の音声認識を例に、HMMの仕組みを説明します。
音声認識では、観測データとしてマイクから入力された音声データ(音声波形)を扱います。しかし、音声波形だけでは何の音(音素)が発音されているかを直接的に観測することはできません。
そこで、HMMを使って、観測された音声データから音素(発音されている音の最小単位)を隠れ状態として推定する必要があります。
以下に、日本語の音声認識の具体例として、「こんにちは」という音声データが、HMMを利用したプロセスによって認識されるケースを考えてみす。
(1)音声入力
「こんにちは」という音声がマイクを通じて入力され、音声認識システムに渡されます。
(2)音響分析
入力された音声波形から、音の高さ、強さ、持続時間などの特徴が抽出されます。これらの特徴量は、音声信号の物理的な特性を表し、音素を認識するための基礎データとなります。
ここでは、メル周波数ケプストラム係数(Mel-Frequency Cepstral Coefficients、MFCC)や感覚線形予測(Perceptual Linear Prediction、PLP)などの特徴抽出技術が使用されます。これらの技術は、人間の聴覚系の特性を模倣するように設計されています。
(3)音素認識
音響モデルが抽出された特徴を処理して、次のような音素列に変換します。
/k/ /o/ /N/ /n/ /i/ /ch/ /i/ /w/ /a/これらの音素の意味の詳細は省きますが、以下のような意味があります。
/k/ は「こ」の子音
/o/ は「お」の母音
/N/ は「ん」の鼻音
/ch/ は「ち」の子音
この音響モデルは、GMM-HMM(ガウス混合モデルとHMM)や、DNN-HMM(深層ニューラルネットワークとHMM)といった、HMMを含めたハイブリッド・モデルです。
これらについては後でより詳しく解説します。
(4)発音辞書
認識された音素列が発音辞書と照合され、可能性のある単語候補が選出されます。「こんにちは」だけでなく、「今日は」「今日わ」なども候補として挙がる可能性があります。
この段階では、音素がどの単語に対応しているかを確認するために、発音辞書が使われます。
(5)文脈理解
次に、言語モデルを使用して、前後の文脈や単語の出現確率を考慮し、最も適切な単語が選ばれます。
たとえば、「こんにちは」は挨拶として一般的に使用されるため、言語モデルはその頻度に基づいて「こんにちは」を最適な候補として選出します。
HMMは言語モデルの一部としても使用される場合があります。
(6)出力文章
認識された音声がテキストに変換され、「こんにちは」というテキストが出力されます。
GMM-HMMハイブリッドモデル
GMMによる隠れ状態の推測
GMM-HMMの音素認識モデルでは、GMM(ガウス混合モデル)が音響特徴量(例:MFCC)を入力として受け取り、隠れ状態(音素)を推測します。
「混合ガウス」という名前の通り、複数のガウス分布(正規分布)を組み合わせて(重み付きの和で)、観測データがどの音素に対応しているかを表現します。このモデルは、音声データの複雑なパターンを捉えるために設計されています。
GMMは、各音素ごとにその特徴量のパターン(確率分布)を学習します。つまり、観測された音声データの特徴を最もよく説明するように、各ガウス分布のパラメータ(平均と分散)を調整します。
学習が終わると、観測された音声データが「どの音素の特徴に最も近いか」を確率的に計算できます。これにより、音声データがどの音素(隠れ状態)に対して生じたのかを予測します。
この予測の際には、GMMは尤度を計算して、どの音素が最も適合しているかを判断します。
GMMにおける尤度の考え方
GMMの文脈における尤度とは、「ある音声の特徴が、特定の音素にどれくらい当てはまるか」という確率を表します。
つまり、尤度は、観測データが音素A(隠れ状態)に相当すると仮定した場合、そのデータの特徴量がどれくらいの確率で現れるかを示します。
この尤度は、条件確率として、次のように表されます。
$$
P(特徴量 \mid 音素\text{A}; \text{GMM}のパラメータ群\,\theta)
$$
尤度が高いほど、音素Aが観測データをよく説明していることになります。
学習中は、観測データに対してどの音素が相当するかがわかっているため、対応する音素に対して尤度が最大化されるように、各音素に関する混合ガウス分布のパラメータ(平均、分散、重み)を調整します。つまり、観測データの特徴量に最もよく当てはまる音素(隠れ状態)について、尤度が最大化されるように学習を進めていきます。これを最尤法と呼びます。
学習済みのGMMを使えば、新しい観測データから直接測定できない音素(隠れ状態)に関する尤度を予測できます。
たとえば、「こんにちは」という音声が入力された場合、GMMは各音声フレームにおける特徴量に基づいて各音素による尤度を計算します。
GMM-HMMモデルの仕組みと限界
GMM-HMMモデルでは、GMMが音響特徴量から音素の尤度を計算し、その結果を利用して、HMMが音素の状態遷移確率を予測します。これにより、最も確率の高い音素のシーケンスを推定します。
このアプローチの利点は、GMMが音響特徴から各音素の尤度を推定し、HMMが音素の状態遷移を予測することで、音声データの音素とその時間的な流れを同時に捉えることができる点です。
また、GMMは複数のガウス分布を組み合わせているので、音声データの特徴がもつ複雑さをある程度は表現できます。
ただし、GMM-HMMモデルには以下の点で制限があります。
GMMは線形モデルである:GMMは複数のガウス分布を使って、複雑な確率分布を表現しますが、それは加重平均で行われるため、全体として線形モデルに分類されます。そのため、非線形な音響パターンを表現する能力には限界があります。
高次元での学習の難しさ: 音響特徴量の次元が増えると、対応するGMMのパラメータ数が膨大になり、学習の複雑さが増します。また、特徴量の組み合わせも急激に増加するので、モデルがすべてのパターンを捉えるのが難しくなります。これにより、モデルの学習が難しくなります。
これらの理由から、複雑な音響パターンの認識精度が劣る傾向があります。
これらの制限を克服するために、DNNのような高度な特徴抽出能力を持つモデルを導入したDNN-HMMが開発されました。
DNN-HMMハイブリッドモデル
DNNによる隠れ状態の推測
DNN-HMMの音素認識モデルでは、DNN(深層ニューラルネットワーク)が音響特徴量(例:MFCC)を入力として受け取り、隠れ状態(音素)を推測します。
DNNは、GMMとは異なり、観測データに対して非線形な関係性を捉えることが得意です。これにより、音声データの複雑なパターンをより精度高くモデル化できます。DNNは、各音素に対してその特徴を音響特徴量から学習し、観測データがどの音素に最もよく合うかを直接推定します。
学習が終わると、観測された音声データに基づいて、どの音素(隠れ状態)が最も確率的に高いかを計算できます。これにより、DNNは音声データがどの音素に対応しているのかを予測し、その結果をHMMに渡して、音素の時間的な遷移をさらに解析します。
なお、GMM-HMMとの違いとして、GMMが尤度を計算するのに対して、DNNが事後確率を計算する点があります。
尤度と事後確率の比較
もう一度、GMMで使われる尤度の例を以下の式で表現します。
$$
P(特徴量 \mid 音素\text{A}; \theta)
$$
この式は「音素Aが与えられたときに、その特徴量がどの程度現れるか」という条件付き確率です。つまり、GMMは隠れ状態(音素)を条件として特徴量の確率(尤度)を推定しています。
一方、DNNは観測データに基づいて、各音素がどのくらいの確率で正しいかを直接計算します。
$$
P(音素\text{A} \mid 特徴量; \theta)
$$
この式は「ある特徴量が与えられたときに、それが音素Aに基づくものであるか」という条件付き確率です。つまり、DNNは特徴量を条件として隠れ状態(音素)の確率を推定しています。これを事後確率と言います。
なお、GMMとDNNは別々のモデルであり、その尤度と事後確率の数値には直接の関係はありません。また、パラメータ$${\theta}$$もそれぞれ別物です。DNNの場合のパラメータは、ニューラルネットワークの重みやバイアスになります。
しかし、数学的には尤度と事後確率の間にはベイズ定理によって次の関係があります。
尤度と事後確率の関係(ベイズ定理)
ここでは、架空の音声認識モデルを想像してください。
$$
\\[2ex]
\overbrace{P(音素\text{A} | 特徴量; \theta)}^{事後確率} = \dfrac{\overbrace{P(特徴量 | 音素\text{A}; \theta)}^{尤度}}{\underbrace{P(特徴量)}_{周辺尤度}}\ \overbrace{P(音素\text{A})}^{事前確率} \\[2ex]
$$
$${\theta}$$は、この架空の音声認識モデルのパラメータです。
$${P(音素\text{A} | 特徴量; \theta)}$$は、事後確率。観測された特徴量に基づいて、音素Aが正しい確率。
$${P(特徴量 | 音素\text{A}; \theta)}$$は、尤度。音素Aが与えられたときに、その特徴量がどれくらいの確率で現れるか。
$${P(音素\text{A})}$$は、事前確率。音素Aがどれくらいの頻度で現れるかを条件なしで表す。
$${P(特徴量)}$$は、周辺尤度(または証拠)。観測された特徴量が、どの音素に関わらず発生する確率。
この尤度と事後確率の関係から、事後確率を直接予測する方が優れている理由が理解できます。
なぜDNNによる事後確率の計算が優れているのか
音声認識における最終的な目標は、観測されたデータ(音声の特徴量)に対して「どの音素が最も適しているか」を判断することです。DNNはこの目標である事後確率を直接に計算しています。
一方、GMMが計算するのは尤度です。しかし、実際に必要なのは事後確率です。なぜならば、事後確率は、与えられた特徴量に対する音素(隠れ状態)の確率を意味するからです。つまり、ベイズの定理を使って尤度を事後確率に変換する必要があります。
また、事後確率を計算するためには、別途に事前確率も考慮しなければなりません。よって、事前確率をHMMや他の言語モデルなどから得る必要があります。結局、事後確率の予測のために異なるモデルを組み合わせるわけで、モデルが複雑になり精度を上げるのが容易ではありません。
さらに、GMMでは、音素ごとに複数のガウス分布を準備します。それぞれが異なる音素に対応しているため、モデル全体の精度を良くするのは困難です。
これに対し、DNNは一つのモデルで非線形な音響パターンを捉え、複雑な音声データ全体に対応できます。これにより、モデルがシンプルでありながらも高い柔軟性を持ち、複雑な組み合わせを必要としません。
DNNは、大量のデータで訓練する必要がありますが、一度訓練された後は、一つのモデルで多様な音声データに対応でき、推論時の計算効率が高いという利点があります。
このため、DNNを使って事後確率を直接計算する方が、音声認識の精度向上と効率性の両方で優れているのです。
DNN-HMMモデルの仕組みと利点
DNN-HMMモデルでは、DNNが音響特徴量から音素の確率分布を直接計算し、その結果をHMMが受け取って音素の状態遷移確率を予測します。これにより、音素とその時間的な流れを同時にモデル化します。
このアプローチの利点は、DNNがGMMよりもシンプルな構成でありながら高度な非線形な特徴量を扱えるため、より正確に音声データの複雑な音響パターンを捉えられる点です。特に、異なる話者やノイズ環境などにも柔軟に対応できるため、GMM-HMMよりも高い認識精度を実現できます。
さらに、DNNは大規模データセットから効率的に学習することができ、音声認識精度の向上に大きく貢献します。
エンドツーエンドモデルの台頭
近年では、エンドツーエンド(End-to-end)で動作する音声認識モデルが台頭しています。このアプローチでは、音声信号から直接テキストへ変換するため、HMMなどの従来の複雑なプロセスが不要です。
すべてを統合されたニューラルネットワークで処理するため、システムがシンプルになり、音声からテキストへの変換全体を最適化できます。また、大量のデータで直接学習できるため、手動による特徴量設計や音素セットの定義が不要になり、新しい言語への対応が容易になります。
さらに、単一のモデルで動作するため、複数モジュールを組み合わせたアプローチに比べ、推論時の計算効率も向上します。
課題としては、大量の学習データが必要なことや、モデルの解釈性が低いことが挙げられますが、これはディープラーニング全般に共通する問題です。
それにもかかわらず、音声認識分野では、エンドツーエンドモデルによって高い精度と効率性が得られるため、利点が多くの場面で優位に立っています。
さらに、RNNやTransformerといった深層学習技術の進展により、音声認識の精度向上と効率的な学習が進み、今後さらなる発展が期待されています。
次回予告
隠れマルコフモデル(HMM)は、ディープラーニングが台頭する前の画像処理を思い起こさせます。当時、人間が設計したフィルターやテクニックを駆使して複雑な処理を行っていましたが、HMMでも同様に、多くの手法が使われていました。
しかし、シーケンスデータの依存関係を正確にモデル化するのは難しく、これも画像分類などのディープラーニングの台頭と重なり合います。手作業による設計ではなく、モデル自体がシーケンスデータから学習するモデルとして再帰型ニューラルネットワーク(RNN)が開発され、精度の向上が図られました。
次回は、このRNNを取り上げます。
お楽しみに!
