確率ではなく最大対数確率を最適化する理由


66

最大化する必要がある確率を定式化できるほとんどの機械学習タスクでは、いくつかのパラメーター確率の代わりに、実際に対数確率最適化します。たとえば、最尤トレーニングでは、通常対数尤度です。勾配法を使用してこれを行う場合、これには要因が含まれます。plogpθ

logpθ=1ppθ

いくつかの例については、こちらまたはこちらをご覧ください。

もちろん、最適化は同等ですが、勾配は異なりますので、勾配ベースの方法は異なる動作をします(特に確率勾配法)。任意の正当性があることがある勾配がより良い作品勾配?logpp


3
通常、デリバティブを使用して尤度を最大化することに注意する必要があります。一方、多くの場合、独立条件が適用されます。つまり、尤度はいくつかのiid確率密度関数の積です。さらに、多くの小さな値([0,1]間隔)の積は非常に小さな値になります。これにより、計算が困難になります。
TPArrow

@AlejandroRodriguezの詳細については、こちらの回答をご覧ください。
ポール

回答:


65

勾配方法は、一般に、より良い最適化動作よりの勾配ため一般的であるだけでなくスケール。つまり、目的関数のジオメトリを一貫して役立つ形で反映するサイズを持っているため、適切なステップサイズを選択して、より少ないステップで最適な状態を簡単に得ることができます。p x log p x logp(x)p(x)logp(x)

つまり、との勾配最適化プロセスを比較してください。任意の点で、勾配はそれにを掛けると、関係なく、原点でグローバルな最適値を得るために必要な正確なステップサイズが得られます。f x = log p x = x 2 x f x f x = 2 x 1 / 2 X X F X 、F X Xp(x)=exp(x2)f(x)=logp(x)=x2xf(x)

f(x)=2x.
1/2xです。これは、適切なステップサイズ(またはMLの専門用語では「学習率」)を得るために一生懸命働く必要がないことを意味します。最初のポイントがどこであっても、ステップを勾配の半分に設定するだけで、1ステップで原点に到達します。必要な正確な要因がわからない場合は、1程度のステップサイズを選択するだけで、少し行を検索するだけで、非常に迅速に優れたステップサイズを見つけることができます。は このプロパティは、変換とスケーリングに対して堅牢です。スケーリングしながら 1/2と異なるスケーリング最適なステップが発生します、少なくともステップスケーリングはどんな同じになることはありませなりであるので、我々は唯一の効率的な勾配ベースの最適化を得るために一つのパラメータを見つけなければなりませんスキーム。xf(x)f(x)x

対照的に、勾配は、最適化のためのグローバルプロパティが非常に貧弱です。私たちは持っているこれは、が増加するにつれて指数関数的に減衰する(より速く係数を使用して、完全に適切で適切に動作する勾配を乗算します。で、我々は既にように勾配ベクトルに沿ってステップが約ある、回小さすぎます。最適に向かって合理的なステップサイズを取得するには、その逆数、巨大な定数勾配をスケーリングする必要がありますp(x)

p(x)=f(x)p(x)=2xexp(x2).
2xexp(x2)xx=5exp(x2)=1.4101110111011。そのようなひどくスケーリングされた勾配は、最適化の目的では役に立たないよりも悪いですに対してスケーリングすることでステップを設定するよりも、上り坂の方向に単位ステップを試みるだけの方が良いでしょう!(多くの変数では、少なくとも勾配から方向情報を取得するため、はもう少し便利になりますが、スケーリングの問題は残ります。)p(x)p(x)

一般に、がこのおもちゃの例のような優れた勾配スケーリング特性を持つという保証はありません。特に、複数の変数がある場合です。しかし、ほとんどすべての非自明な問題のために、、よりずっといい方法になるだろう。これは、他のいくつかの回答で指摘されているように、可能性は多くの用語を持つ大きな製品であり、ログはその製品を合計に変換するためです。されている可能性で用語設け行儀の最適化の観点からは、それらのログは、一般に行儀され、そして行儀関数の和は、行儀あります。行儀私が意味するlogp(x)logp(x)p(x)f(x)変化が大きすぎたり速すぎたりせず、勾配法で簡単に最適化できるほぼ2次関数になります。導関数の合計は、導関数の順序に関係なく、合計の導関数です。これにより、合計の大きな積項が非常に合理的な2次導関数を持つことが保証されます。


4
+1この答えは、問題の核心となるポイントを導き出し、強調します。
whuber

47

アンダーフロー

コンピューターは、分数の限られた桁の浮動小数点表現を使用し、非常に多くの確率がゼロに非常に近いことが保証されています。

では、我々はこの問題を持っていません。log


3
数値の安定性のために+1-これとYurilの答えは1つでなければなりません!
アレックティール

1
対数空間で製品を計算できるため、合計になり、それを元に戻します。または、を計算します。これはと等しくなります。したがって、数値の安定性は問題ではありません。logpθppθ
アルバート

1
言及したは、サンプル内のすべてのイベントの確率の乗算であり、はアンダーフローの影響を受ける要素であることに注意してください。pp
ウリゴーレン

5
@Filipこのスレッドの用語は、やや不適切です。確率ではなく、確率密度について説明しています。密度は任意です。測定単位によって異なります。さらに、十分なサンプルサイズの場合、パラメトリックモデルからの単純なサンプルの確率密度は、最終的に未満になります。大規模な問題(数百万のデータ)では、確率密度は通常以下です。標準正規分布のサイズサンプルでさえ、確率密度が未満であることがほぼ確実です。212721000000802127
whuber

4
@FilipHaglund:whuberは正しいですが、密度であるという事実はここでは重要な観察ではありません。個別のプロセスについて議論し、実際の確率について話すこともできます(実際、OPはこのケースを除外するものは何も言いませんでした)。ただし、非常に具体的な結果(たとえば、特定の方法で行われる100万件の観測)の確率について説明しています。単一の特定の結果はありそうにありませんが、ベイジアン推論では確率の比率が重要であるため、1つの小さな確率がどれだけ大きいかを知る必要があります。
メニローゼンフェルド

34
  1. 複数の同時確率の確率の対数は、個々の確率の対数の合計単純化されます(そして、和の規則は微分の積の規則よりも簡単です)

    log(iP(xi))=ilog(P(xi))

  2. 指数確率分布(ユビキタス正規分布を含む)のファミリーのメンバーの対数は、パラメーターの多項式です(つまり、最大尤度は正規分布の最小二乗になります)

    log(exp(12x2))=12x2

  3. 後者の形式は、前者よりも数値的に安定しており、区別が記号的に簡単です。

  4. 最後になりましたが、対数は、極値の位置を保持する単調変換です(特に、最大尤度の推定パラメーターは元の定式と対数変換された定式で同一です)


5
理由2に十分なストレスをかけることはできません。ガウスノイズを含む線形モデルの対数尤度を最大化するには、最小二乗問題を解く必要があります。これは、方程式の線形システムを解くことになります。
ポール

理由1と3は、計算方法を説明しているだけです。そのように計算し、それを逆変換して(乗算)、を取得できます。実際、数値安定性のために対数空間で計算することは非常に一般的です。しかし、そのグラデーションを使用する理由は説明されていません。理由4も、勾配が優れている理由ではありません。他の多くの変換でも同じことができます。理由2は興味深いですが、なぜ多項式の勾配が別の関数の勾配よりも優れているのか、私にはまだ正確にはわかりません。ppθlogp
アルバート

指数関数は、単に分化下でない一方、多項式の誘導体は、(特に、二次の線形になる)1度の多項式低い@Albert
TemplateRex

@TemplateRex:はい、それは明らかです。しかし、私は確率的勾配法の収束特性について尋ねています。
アルバート

25

100の乗数を含む積の微分を取るよりも、対数の合計の微分を取る方がはるかに簡単です。


10
さらに、用語が非常に小さくなったり大きくなったりする場合に、潜在的な数値の問題を減らします。
ビョルン

8
それどころか、OPは暗黙的に非負関数の積の導関数を計算する優れた方法を提供します。つまり、ログの導関数の合計に積自体を掛けます。(この乗算は対数の観点から最もよく実行され、@Björnのコメントで言及されている数値の問題も排除します。)したがって、「イーズ」は実際の説明力を提供せず、勾配の比較に関するより意味のある質問にも対処しません。
whuberの

10

一般的なルールとして、最も基本的で簡単な最適化問題は、二次関数を最適化することです。どこから始めても、そのような関数の最適なものを簡単に見つけることができます。これがどのように現れるかは、特定の方法に依存しますが、関数を2次関数に近づけるほど良いです。

TemplateRexで指摘されているように、さまざまな問題で、尤度関数の計算に入る確率は正規分布に由来するか、正規分布によって近似されます。したがって、ログを操作すると、素晴らしい二次関数が得られます。一方、確率で作業する場合、次の機能があります。

  1. 凸ではない(どこでも最適化アルゴリズムの悩みの種)
  2. 複数のスケールを迅速に横断するため、関数値が検索を指示する場所を示す非常に狭い範囲を持ちます。

どちらの機能を最適化しますか、this、またはthis

(これは実際に簡単なものでした。実際のアプリケーションでは、数値から計算できたとしても、関数の値と勾配が0から区別できず、最適化の目的には役に立たないように、検索が最適から遠く離れて開始される可能性がありますアルゴリズム。ただし、2次関数に変換すると、これは簡単になります。)

これは、すでに述べた数値安定性の問題と完全に一致していることに注意してください。この関数を使用するのにログスケールが必要な理由は、元のログ確率よりも最適化およびその他の目的でログ確率がはるかに優れていることとまったく同じ理由です。

これに別の方法でアプローチすることもできます。たとえログに利点がなかったとしても(存在します)-導出と計算にとにかくログスケールを使用するので、勾配を計算するためだけにexp変換を適用する理由は何ですか?ログとの整合性を保つこともできます。


@TemplateRex:(下向きの)凸の正の関数の対数は凸ですが、逆は当てはまりません。確率は凸ではないので、保存するものは何もありませんが、ログは凸です。リンクしたグラフを見てください-exp(-10x ^ 2)は明らかに非凸ですが、-10x ^ 2は凸です。
メニローゼンフェルド

4

を使用することにより、最適化アルゴリズムのダイナミックレンジを拡大します。アプリケーションのは通常、関数の積です。たとえば、最尤推定では、の形式の積ですここで、は密度関数 1より大きいか小さい。lnppL(x|θ)=Πi=1nf(xi|θ)f(.)

したがって、が非常に大きい場合、つまりサンプルが大きい場合、尤度関数は通常1から遠く離れていこれは、べき関数であるため、非常に小さいか非常に大きいです。nL(.)Lf(.)n

ログを取ることで、最適化アルゴリズムのダイナミックレンジを単純に改善し、非常に大きな値でも小さな値でも同じように動作できるようにします。


0

すでにいくつかの良い答えが出されています。しかし、最近新しいものに遭遇しました:

多くの場合、巨大なトレーニングデータセットが与えられ、確率モデルを定義し、の尤度を最大化します。それらは独立していると仮定されます。つまり、 今、あなたはしばしばある種の確率的(ミニバッチ)勾配ベースのトレーニングを行います。つまり、各ステップで損失に対して、を最適化します、つまり Xp(x|θ)xX

p(X|θ)=xXp(x|θ).
LL(X|θ)XX
θ:=θxXL(x|θ)θ.
現在、これらの確率的ステップは加算的に蓄積されています。そのため、一般的にというプロパティが必要です これは、
L(X|θ)=xXL(x|θ).
L(x|θ)=logp(x|θ).

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.