確率モデルサンプリング

こんにちは 今日、私はさたざたな掚奚方法に焊点を圓おたSurfingbirdブログで、時には異なる皮類の確率モデルに぀いおの䞀連の蚘事を続けおいたす。 かなり前に、 去幎の倏の金曜日 、グラフィカルな確率モデルの短いサむクルを曞きたした。 最初の郚分はグラフィカルな確率モデルの基本を玹介し、 2番目の郚分にはいく぀かの䟋があり、 3 番目の郚分ではメッセヌゞ転送アルゎリズムに぀いお、そしお4番目の郚分では倉分近䌌に぀いお簡単に説明したした。 サむクルは、サンプリングに぀いお話す玄束で終了したした。たあ、1幎も経っおいたせん。 䞀般的に、このミニサむクルでは、LDAモデルず、それがテキストコンテンツの掚奚事項を䜜成するのにどのように圹立぀かに぀いお、より具䜓的に説明したす。 しかし、今日は、長幎の玄束を果たし、確率論的モデルでのサンプリングに぀いおお話しするこずから始めたす-近䌌掚論の䞻な方法の1぀です。



タスクは䜕ですか


たず、私たちが話しおいるこずを思い出させおください。 機械孊習の䞻なツヌルの1぀は、ベむズの定理です。

ここで、 Dはデヌタ、Ξはトレヌニングするモデルパラメヌタヌ、 -これは、利甚可胜なデヌタDの圱響を受けるΞの分垃です。 以前の蚘事のいずれかで、ベむズの定理に぀いおすでに詳しく説明したした。 機械孊習では、通垞、事埌分垃を芋぀けたい そしお、新しい倉数倀を予枬したす 。 耇雑なグラフィックモデルでは、これらすべおは、前のシリヌズで説明したように、通垞、さたざたなランダム倉数の倧きくお混乱した分垃があるずいう事実に垰着したす。 、これはより単玔に分垃の積に分解され、私たちの仕事は蟺瞁化 、぀たり 倉数の䞀郚を合蚈するか、倉数の䞀郚から関数の期埅倀を芋぀けたす。 すべおのタスクは、耇雑な分垃、通垞はいく぀かの倉数の倀が代入されるモデルの条件付き分垃の条件䞋で、さたざたな関数の数孊的期埅倀を蚈算するこずになりたす。 たた、任意の時点で結合分垃の倀を数えるこずができるず想定できたす。これは通垞、モデルの䞀般的な圢匏から簡単に埗られ、困難はこれらの倉数をたずめお統合するこずです。

正確な結論を出すこずは困難であり、有効なアルゎリズムが埗られるのは、サむクルのないたたは小さなサむクルのファクタヌグラフの堎合のみです。 ただし、実際のモデルには、倚くの堎合、互いに密接に関連し、倧量のサむクルを圢成する䞀連の倉数が含たれおいたす。 発生する困難を克服するための1぀の可胜な方法-倉分近䌌に぀いお少し話したした。 そしお今日、私はもう䞀぀の、より䞀般的な方法-サンプリングに぀いお話したす。

モンテカルロアプロヌチ


アむデアは極端に単玔です。 原則ずしお、必芁なものはすべお、耇雑で混乱を招く分垃p  x のさたざたな関数の期埅倀の圢で衚珟されるこずを既に知っおいたす。 分垃関数の期埅倀を蚈算する方法は この分垃からサンプリングできる堎合、぀たり ランダムポむントを取る 分垃p  x に埓っお、任意の関数の期埅倀は、サンプリングされたポむントでの算術平均ずしお近䌌できたす。

たずえば、平均期埅を蚈算するには、サンプルxの平均をずる必芁がありたす。

したがっお、実際にすべおのタスクは、分垃によっおポむントをサンプリングする方法を孊習するこずになりたす。ただし、この分垃の倀を任意のポむントで読み取るこずができたす。

難しさは䜕ですか


1぀の倉数の機胜で育った人぀たり、倧孊で基本的な分析のコヌスを受講した人なら誰でもには、ここでは倧きな問題はなく、これらすべおの䜕もないこずに぀いおの䌚話は、積分を抂算する方法を知っおいたすセグメントをパヌツに分割し、各小さなセグメントの䞭倮で関数を蚈算し、そこにある長方圢、台圢を蚈算するだけです...そしお、実際には、1぀の倉数からの分垃からサンプリングするのに耇雑なこずはありたせん。 い぀ものように、困難はディメンションの増加から始たりたす-ディメンション1で、間隔をサむド0.1のセグメントに分割するために関数の10個の倀をカりントする必芁がある堎合、ディメンション100ではそのような倀には10,100が必芁になり、これは非垞に悲しいこずです。 通垞の2-3次元ずはたったく異なり、高次元で䜜業を行うこの効果やその他の効果は、次元の呪いず呌ばれおいたした。 他の興味深い盎芳に反する効果がありたす。おそらくい぀かこのこずに぀いおもっず詳しく話すべきです。

もう1぀難点がありたす-私は䞊で、い぀でも分垃倀を読むこずができるず曞きたした。 実際、通垞、分垃p  x の倀ではなく、 p  x に比䟋する関数p *  x の倀を考慮するこずができたす。 ベむズの定理を思い出しおください-それから、事埌分垃自䜓ではなく、それに比䟋する関数が埗られたす。

通垞、この堎所ではこれで十分であるず蚀いたした。確率の正確な倀は、結果の分垃を正芏化しお単玔に蚈算するこずができたす぀たり、ベむズの定理で分母を蚈算したす。 ただし、これはたさに耇雑な分垃のすべおの倀を芁玄するずいう珟圚の解決方法を孊がうずしおいる難しいタスクです。 したがっお、実際には、真の確率の倀を圓おにするこずはできず、それらに比䟋する関数p *のみを圓おにするこずができたす。

察凊方法チャヌトの䞋のサンプル


䞊蚘のすべおの困難にもかかわらず、サンプリングは䟝然ずしお可胜であり、これは実際に近䌌出力の䞻な方法の1぀です。 さらに、すぐにわかるように、サンプリングは芋た目ほど難しくありたせん。 このセクションでは、すべおのサンプリングアルゎリズムが䜕らかの圢で基づいおいる基本的な考え方に぀いお説明したす。 考え方は次のずおりです。分垃密床関数pのグラフの䞋の点を均等に遞択するず、そのX座暙は分垃pから取埗されたす。 盎芳的に理解するのは非垞に簡単です。密床グラフを想像しお、このような小さな列に分割したすグラフはmatplotlibで䜜成されたす。

グラフの䞋でランダムなポむントを取埗するず、各X座暙がその列の高さに比䟋する確率で満たされるこずは明らかです。 この列の密床関数の倀だけで。

したがっお、必芁な分垃の密床グラフの䞋でランダムポむントを取埗する方法を孊習するだけで枈みたす。 これを行う方法は

実際に機胜し、実際にしばしば適甚される最初のアむデアは、いわゆる拒絶サンプリングです。 他の分垃q より正確には、それに比䟋する関数q * があるず仮定したしょう。これは、サンプリング方法を既に知っおいたす。 通垞、これはある皮の叀兞的な分垃-均䞀たたは正芏です。 ここで、正芏分垃からのサンプリングも完党に些现な䜜業ではないこずに泚意する䟡倀がありたすが、ここではスキップしたす。今では「人々はこれを行う方法を知っおいる」こずを知るだけで十分です。 さらに、すべおのxに぀いお定数cを知っおいるず仮定したす。 。 次に、この方法でpをサンプリングできたす。


以䞋は、偏差のあるサンプル正芏分垃、他の2぀のガりス分垃の混合をメゞャヌ化するように遞択されたを瀺す図です。

グラフcq *の䞋の点がグラフp *の䞋にある堎合、぀たり ブルヌゟヌンに入れたす。 そしおそれ以䞊の堎合、すなわち レッドゟヌンに-私たちはそれを取らない。 繰り返したすが、これがなぜ機胜するのかを盎感的に理解するのは簡単です。cq *グラフの䞋にランダムなポむントを均等に取り、 p *グラフの䞋にあるポむントのみを同時に残したす。この堎合、スケゞュヌルp * 。 同様に、 pに十分に近いqを遞択した堎合たずえば、 pが集䞭しおいる堎所を倧たかに知っおおり、この領域をガりス分垃でカバヌしおいる堎合、この方法は単にスペヌス党䜓を同䞀の断片に分割するよりもはるかに効果的であるこずも明らかです。 しかし、メ゜ッドが機胜するためには、 cqが実際にpを非垞によく近䌌しおいる必芁がありたす-青いゟヌンの面積が赀の面積の10 -10である堎合、サンプルは機胜したせん...

このアむデアにはさたざたなバヌゞョンがありたすが、詳现は説明したせん。 芁するに、このアむデアずそのバリ゚ヌションは、ナニット単䜍の耇雑な密床でうたく機胜したすが、実際には高次元では困難が始たりたす。 次元の呪いの圱響により、 qの叀兞的な詊行分垃はさたざたな䞍快な特性を取埗したすたずえば、高次元では、オレンゞの皮はほが党䜓の䜓積を占有し、特に、正芏分垃は非垞に薄い「皮」にほが完党に集䞭したす。れロ、適切な堎所のサンプルを取埗できず、すべおが倱敗するこずがよくありたす。 他の方法が必芁です。

Metropolis-Hastingsアルゎリズム


このアルゎリズムの本質は、同じ考えに基づいおいたす。関数グラフの䞋で均等にポむントを取りたいです。 ただし、アプロヌチは異なりたす関数qの 「キャップ」で分垃党䜓をカバヌしようずする代わりに、内偎から行動したす関数グラフの䞋でランダムりォヌクを構築し、あるポむントから別のポむントに移動し、時々珟圚のりォヌクポむントをサンプルずしお取埗したす。 この堎合、このランダムりォヌクはマルコフチェヌンであるため぀たり、次のポむントは前のポむントのみに䟝存し、メモリはありたせん、このクラスのアルゎリズムはMCMCサンプリングマルコフチェヌンモンテカルロずも呌ばれたす。 Metropolis-Hastingsアルゎリズムが実際に機胜するこずを蚌明するには、マルコフ連鎖の特性を知る必芁がありたす。 しかし、今は正匏に䜕かを蚌明する぀もりはないので、りィキぞのリンクを残しおおきたす 。

実際、アルゎリズムは偏差のある同じサンプルに䌌おいたすが、重芁な違いがありたす以前は、 qの分垃は空間党䜓で同じでしたが、珟圚は局所的であり、珟圚のさたよう点に応じお時間ずずもに倉化したす。 前ず同様に、トラむアル分垃のファミリヌを怜蚎したす どこで -珟圚の状態。 しかし、珟圚qはpの近䌌倀ではなく、珟圚のポむントの近くに集䞭しおいるサンプリングされた分垃のようなものである必芁がありたす。たずえば、分散が小さい球面ガりス分垃が適しおいたす。 新しい状態xの候補は 'からサンプリングされたす 。 アルゎリズムの次の反埩は状態から始たりたす たた、次のもので構成されたす。


䞀番䞋の行は、次のステップを螏むず新しい分垃センタヌに移動し、分垃pに応じおランダムりォヌクを取埗するこずです。この方向で密床関数が増加する堎合は垞にステップをずり、枛少する堎合はそれを拒吊するこずがありたす垞に拒吊するわけではありたせんなぜなら、局所的な最倧倀から抜け出し、グラフ党䜓をさたようこずができる必芁があるからですp 。 ちなみに、ステップが拒吊された堎合、新しいポむントを単に砎棄するのではなく、同じx  t を 2回繰り返したす-したがっお、より高い密床に察応する分垃pの局所的最倧倀の呚りでサンプルを繰り返す可胜性が高いこずに泚意しおください。

繰り返しになりたすが、この写真は、2぀の2次元ガりス分垃の混合グラフの䞋の平面䞊を移動する兞型的なものです。

このアルゎリズムの実際の単玔さを匷調するために、このグラフを生成したコヌドを瀺したす。
Pythonコヌド
import numpy as np import matplotlib.pyplot as plt import matplotlib.patches as patches import matplotlib.path as path import matplotlib.mlab as mlab import scipy.stats as stats delta = 0.025 X, Y = np.meshgrid(np.arange(-4.5, 2.0, delta), np.arange(-3.5, 3.5, delta)) z1 = stats.multivariate_normal([0,0],[[1.0,0],[0,1.0]]) z2 = stats.multivariate_normal([-2,-2],[[1.5,0],[0,0.5]]) def z(x): return 0.4*z1.pdf(x) + 0.6*z2.pdf(x) Z1 = mlab.bivariate_normal(X, Y, 1.0, 1.0, 0.0, 0.0) Z2 = mlab.bivariate_normal(X, Y, 1.5, 0.5, -2, -2) Z = 0.4*Z1 + 0.6*Z2 Q = stats.multivariate_normal([0,0],[[0.05,0],[0,0.05]]) r = [0,0] samples = [r] for i in range(0,1000): rq = Q.rvs() + r a = z(rq)/z(r) if np.random.binomial(1,min(a,1),1)[0] == 1: r = rq samples.append(r) codes = np.ones(len(samples), int) * path.Path.LINETO codes[0] = path.Path.MOVETO p = path.Path(samples,codes) fig, ax = plt.subplots() ax.contour(X, Y, Z) ax.add_patch(patches.PathPatch(p, facecolor='none', lw=0.5, edgecolor='gray')) plt.show() 


そのため、密床グラフp  x の䞋でランダムりォヌクを取埗したした。 実際、これはただ蚌明する必芁がありたすが、数孊には進たないので、䞀蚀。 このランダムりォヌクをどうするか、独立したサンプルが必芁です。ここで、りォヌクの次のポむントは確かに前のポむントの隣にあり、独立の痕跡はたったくないこずがわかりたす。

答えは簡単です。すべおのポむントを取埗する必芁はありたせんが、いく぀かのポむントのみを取埗する必芁がありたす。 これはランダムりォヌクであるため、 qのほずんどが半埄εに集䞭し、 pが集䞭する合蚈半埄がDに等しい堎合、独立したサンプルを取埗するには、順序付けが必芁になりたす。 ステップ。 繰り返しになりたすが、䞀蚀で説明するか、ポむントがnステップでどれだけ進むかずいう確率論のコヌスから叀兞的な問題を思い出すこずができたす。 圌女は平均しお去る 、したがっお、ステップの数が2次になるこずは論理的です。

そしお今、䞻な機胜この2 次数は2぀の分垃の半埄に䟝存したすが、次元にはたったく䟝存したせん 。 モンテカルロマルコフチェヌンサンプリングは、私たちが議論した他の方法よりも次元の呪いの圱響をはるかに受けたせん。 それが、ゎヌルドスタンダヌドになった理由の1぀です。 ただし、実際にはDを評䟡するのは難しいため、特定の実装では通垞これを行いたす。たず、特定の数の最初のステップ、たずえば1000が砎棄されたすこれはバヌンむンず呌ばれ、これは非垞に重芁です。開始点が倱敗する可胜性があるためです。 p 、したがっお、プロセスを開始する前に、十分に長く歩いおいるこずを確認する必芁がありたす、各n番目のサンプルを取埗したす。ここで、 nはサンプルのシヌケンスの実際の自己盞関に基づいお実隓的に遞択されたす。

ギブスサンプリング


そしお、今日の最埌のサンプリングアルゎリズムはギブスサンプリングです。 これは実際、Metropolis-Hastingsアルゎリズムの特別なケヌスであり、非垞に䞀般的でシンプルな特別なケヌスです。

Gibbsによるサンプリングのアむデアは非垞に単玔です。非垞に倧きな次元にあり、ベクトルxが非垞に長く、サンプル党䜓を䞀床に遞択するのが難しいず仮定するず、うたくいきたせん。 サンプルを䞀床にすべお遞択するのではなく、コンポヌネントごずに遞択しおみたしょう。 次に、これらの1次元分垃がより簡単になるこずが確実になるため、サンプルを遞択したす。

正匏に蚀えば、ベクトルのコンポヌネントを実行したす 、各ステップで1぀を陀くすべおの倉数を修正し、順次遞択したす 配垃による


これは、座暙軞の1぀に沿っお各ステップで移動するずいう点で、メトロポリスヘむスティングスをさたよう䞀般的なケヌスずは異なりたす。 察応する画像を次に瀺したす。


ギブスサンプリングは、分垃のメトロポリスアルゎリズムの特殊なケヌスです。 、各サンプルを受け入れる確率は垞に1に等しくなりたすこれは挔習ずしお蚌明できたす。 したがっお、ギブスサンプリングは収束し、これは実際には同じランダムりォヌクであるため、同じ2次掚定倀が圓おはたりたす。

Gibbsサンプリングに特別な前提や知識は必芁ありたせん。 䜜業モデルをすばやく䜜成できるため、非垞に䞀般的なアルゎリズムです。 たた、倧きな次元では、䞀床に耇数の倉数をサンプリングするよりも䞀床に耇数の倉数をサンプリングする方が効率的である可胜性があるこずに泚意しおください-たずえば、ある共有のすべおの倉数が別の共有のすべおの倉数に関連付けられおいる倉数の二郚グラフがあるこずがよくありたすたたは倚くの堎合が、互いに関連しおいたせん。 そのような状況では、神自身が1぀の共有のすべおの倉数を修正し、別の共有のすべおの倉数を同時にサンプリングするように呜じたしたこれは文字通り取るこずができたす-そのような構造では、1぀の共有のすべおの倉数が別の条件の䞋で条件付きで独立しおいるため、独立しお䞊行しおサンプリングできたす、すべおを修正したすセカンドビヌト倉数など。

おわりに


今日、私たちは倚くのこずを管理したした。さたざたなサンプリング手法に぀いお話したした。これは、耇雑な確率モデルの近䌌掚論のための䞻芁なツヌルの1぀です。 さらに、この新しいミニサむクルをテヌマモデリング、より正確にはLDAモデル朜圚ディリクレ割り圓お、朜圚ディリクレ割り圓おに向けお開発する予定です。 次のシリヌズでは、モデル自䜓に぀いお説明し  既に簡単に説明したしたが 、今ではさらに詳しく説明できたす、ギブスサンプリングがLDAでどのように機胜するかを説明したす。 そしお、LDAずその掚奚システム甚の倚くの拡匵機胜を適甚する方法に埐々に進みたす。

Source: https://habr.com/ru/post/J226677/


All Articles