1. 序章

このチュートリアルでは、期待値最大化(EM)について説明します。これは、確率モデルのパラメーターを推定するための非常に一般的な手法であり、隠れマルコフモデル、ガウス混合、カルマンフィルターなどの一般的なアルゴリズムの背後にある作業馬でもあります。 不完全なデータ、欠測データポイントがあるデータ、または潜在変数が観測されていないデータを処理する場合に役立ちます。 したがって、これはすべてのデータサイエンティストツールボックスへの優れた追加機能です。

2. 尤度関数

一般的に、特定のモデルのパラメーターを推定するとき、データに最も「適合する」ものを探しています。 つまり、モデルでこれらの正確なパラメーターを使用し、モデル自体からサンプリングした場合、結果のデータは、実際のデータに可能な限り近くなるはずです。 この探索空間を説明するために、パラメーターの組み合わせを入力として受け取り、このデータのサンプルを取得する確率を出力する関数を使用します。これは、で示されます。 これは尤度関数であり、次のように条件付き確率として記述されます。

   

自然なことは、パラメーターに関してこの関数を最大化して、最適なものを取得できるようにすることです。 これは最尤推定法として知られています。 しかし、データに、観測または定式化できない潜在的な未知変数がある場合はどうなるでしょうか。 次に、データの尤度は同時確率としてモデル化され、代わりに変数を周縁化し、周縁化された尤度を最大化する必要があります。

   

尤度関数へのこの追加により、最適化が非常に困難になり、最大の絡み合いを見つけるために必要な方程式があり、直接解くことができない場合があります。 しかし、 EMは、答えが得られるまで推測を繰り返し使用することにより、これらの制限を克服します。 最初は、なぜそれが機能するのかが明らかでないかもしれません。 それでも、EMアルゴリズムは、実際には尤度関数の極大値に収束することが保証されており、それがどのように正確に発生するかを調べます。

3. 直感的なコイントスの例

まず、直感を理解するための簡単なコイントスの例を見てみましょう。 AとBという名前の2つのコインがあります。 それぞれが頭を獲得する確率は不明です–そして。 これらの値が何であるかを調べたいとします。 データを収集することで、実験的にそれらを見つけることができます。 だから私たちはランダムにコインを取り、それを10回ひっくり返します。 そして、その手順を5回繰り返して、50コイントスに相当するデータに相当するとします。

一連のフリップを行うために使用しているコインを毎回示したので、答えるのは非常に簡単です。これは、各コインのトスの数に対する頭の比率です。

   

   

この直感的なソリューションは、ここでコインの二項モデルの尤度関数を最大化するために必要な方程式を分析的に解くことにより、最尤推定であることが証明できます。 しかし、どういうわけか、実験全体で使用していた各コインのIDに関するデータを失った場合はどうなるでしょうか。 最終的には、不完全で潜在変数が1つあるデータになります。これを、使用するコインのIDと呼びます。

4. 期待値-ソリューションとしての最大化

不完全な情報は私たちにとって物事を難しくしますが、期待値最大化は私たちが答えを思いつくのを助けることができます。 この手法は、E(期待)ステップとM(最大化)ステップの2つのステップで構成され、これらは複数回繰り返されます。

最初にEステップを見てみましょう。 この部分は、欠測データについて知識に基づいた推測を行うことに大きく関係していると言えます。 それで、私たちの例では、フリップを生成するために使用されたコインを推測できますか? ええ、そうですが、それが常に最も知識のある推測であるとは限らないので、私たちは何ができるでしょうか?

はるかに良いことの1つは、どちらかのコインを想定することを強制するのではなく、トライアルで見たフリップを考慮して、各コインが真のコインである確率を推定することです。 次に、それを使用して、各コインにヘッドとテールのカウントを比例的に割り当てることができます。 ただし、細かい部分があります。 それを推定するために、私たちは知る必要があります。 それでは、代わりに彼らに大げさな推測を投げかけ、言って、それを試してみましょう。

たとえば、結果がHHHHHTTTTTになると想像してください。 との推測が与えられると、二項分布式を使用して、各コインに与えられた一連のフリップを正確に取得する確率を推定できます。

   

   

ここで、はシリーズのフリップの数であり、はヘッドの数です。

次に、ベイズの定理と全確率の法則の助けを借りて、特定のコインがフリップを生成するために使用された確率を推定することができます

   

   

次に、これらの確率を重みとして使用し、が現在のの推定値を前提として、各コインの予想ヘッド数を推定し、次のようなテーブルにデータを入力します。

この後、Mステップが来ます。 この新しく提供された頭部のデータを使用して、以前のように通常の最尤推定を行っているかのように、パラメーターの新しい推定を考え出し、現在の推定と結果を置き換えることができます。

   

   

これらの値は、実際、以前の最尤推定値に近い値です。 では、それらを入力として使用し、期待値と最大化の手順をもう一度繰り返してみませんか? 何も私たちを止めていません。 実際、このプロセスを数回繰り返した後でこれを行うと、値が収束し、答えが得られます。

5. アルゴリズムの導出

しかし、なぜそれが機能するのでしょうか? アルゴリズムの内部動作をさらに深く掘り下げるために、データの尤度関数をもう一度見て、それを最大化する方法を考えてみましょう。 実際には、データの各観測値は他の観測値とは独立してサンプリングされていると想定しています。 したがって、ここで関数を計算するには、観測数の個々の尤度を乗算して、合計を取得する必要があります。

   

しかし、問題があります。 丸め誤差のため、乗算を数値で計算するのは困難です。 すべての乗算を合計に変換するため、尤度の対数を計算する方がはるかに簡単です。

   

この対数尤度を最大化すると、元の尤度が最大化されることが保証されるため、これは私たちにとって有効です。 ただし、この場合、未知の変数があり、関数は次のようになります。

   

ただし、積分内のすべてを実験して人工的なもので乗算することはできます。

   

ここで、は隠れた変数の空間上の任意の関数です。

これにより、実際に巧妙なトリックを使用できます。 イェンセンの不等式は次のように述べています

   

すべての凹関数(対数関数など)に対して。

また、ここでの対数関数内のすべては、再配置後の期待値と見なすことができるため、この不等式はここでも当てはまります。

   

右側が合計のログではなく、ログの合計になっていることに注意してください。これは計算がはるかに簡単で、ここでの主な動機でした。 さらに、不等式は、関心のある対数尤度の下限であると述べているため、代わりにこの式を最大化することを検討する場合があります。 これは完璧ではありませんが、どこかに行き着きます。

この下限関数をさらに改良するには、導入したこれを定義する必要があります。 いくつかの巧妙な数学の助けを借りて、実際の対数尤度関数に接触する可能な限り最良の下限は、実際には未知の変数の事後確率であることが証明できます。 ただし、これを使用するのは少し問題です。なぜなら、推定するには、を知る必要があり、を解くには、が必要だからです。

これは鶏が先か卵が先かという問題であることがわかりました。 しかし、これがまさに私たちが推測を使用し、期待と最大化のステップの間で反復する理由です。 以前のコインの例では、の最初の推測に基づいて期待ステップで使用しました。これにより、最大化ステップの答えに近づくことができました。 したがって、使用している現在のステップのシータを説明できるように、全体の目的関数を少し再定義できます。

   

6. フローチャート

これで、手順全体をフローチャートにまとめることができます。

7. 結論

この記事では、最尤推定などのいくつかの概念を確認してから、期待値最大化アルゴリズムの簡単なコインの例に直感的に移行しました。 次に、アルゴリズムを導き出し、すべてをまとめながらイェンセンの不等式を使用して最良のパラメーターの推定を改善することが保証されている理由を動機付けようとしました。