確率論は、私が最初に遭遇した瞬間から今日に至るまで、私を驚かせることをやめません。 時々、彼らは私をさまざまな程度で追い抜いて、それらを「すごい効果」と呼び、小脳に衝撃を与えます。それは私を第三の目の効果で覆い、世界は永遠に同じでなくなりました。
- 中央極限定理から私が経験した最初の「すごい効果」。 ランダム変数の束を取り、その数を無限に向けて正規分布を取得します。 そして、これらの量がどのように分配されるかは関係ありません。コインを投げるのか、ガラスに雨が降るのか、太陽が光るのか、コーヒーかすが残るのかは関係ありません。結果は常に同じです。 そうでない場合は、それらの独立性と分散の存在を要求する必要があります(後で、無限分散の極度に重いテール分布の定理があることを学びました)。 それからこの逆説は私を長い間眠らせなかった。
- 大学での研究のある時点で、離散数学や機能分析などの主題は、「ほぼ確実」という表現を装って理論に統合され、表面化しました。 標準的な例:0から1までの数字をランダムに選択します。合理的な数字(hello、ディリクレ関数)をどのくらいの確率で突きますか? ネタバレ:0。ゼロ、カール! 無限集合は、数えることができる場合、力を持ちません。 無限の数のオプションがありますが、いずれも選択しません。 0、1、1 / 2、1 / 4は選択しません。 3/2は選択しません。
はい、はい、1/2を選択するもの、3/2を選択するもの、確率はゼロです。 しかし、確実に突くことができないのは3/2だけです。これらは条件であり、1/2ではうまく落ちません...「ほぼ確実」。 「ほぼどこでも」/「ほぼ確実に」という概念は数学にとって楽しいものであり、普通の人は寺院で指をひねることを余儀なくされています。 多くの人は、ゼロを分類しようとして頭脳を破壊しますが、結果には価値があります。 - 3番目の、しかし有効ではない「すごい効果」は、すでに高度なレベルへの移行時に追い越されました
-確率計算の本を読むとき。 その理由は、伊藤の補題でした。 学校の日以来、最初の派生物が私たちの処女の目に示されたとき、私たちはこの式が正しいことをまったく疑いませんでした:
D X 2 = 2 X C D O T D X 。
そして彼女は本当です。 それが唯一の場合 X -これはランダムなプロセスではありません。 正規分布の特性と「ほぼ確実」の地獄の混合は、反対の状況ではこの式が一般に正しくないことを証明しています。 常微分方程式の解を用いた数学的解析のトミックが、炉に投入できるようになりました。 主題の人々は静かに笑い、残りは伊藤計算でWikiの記事を熱心にめくる。
しかし最近では、4番目のいわゆる「すごい効果」を経験しました。 これは単一の事実ではなく、理論全体です。これについては、一連のいくつかの記事で説明します。 そして、確率論の以前のフェイントがもうあなたを驚かせないなら、私はあなたの慈悲を切に請う(あなたはすでにここにいることを知っている)。
エルミート多項式
通常の代数から始めましょう-「確率的」(「物理的」とは少し異なります) エルミート多項式を定義します:
H N ( X ) = ( - 1 ) nは、E X 2 / 2のF R のC D N D X N(電子- X 2 / 2)、 Q 、U 、D 、N I 、N 、M 、A 、T 、H 、B 、B N 0 。
最初の多項式の値: H0(x)=1、H1(x)=x、H2(x)=x2−1、H3(x)=x3−3x、\ドット
エルミート多項式には次の特性があります。
- H′n(x)=nHn−1(x)、
- Hn(−x)=(−1)nHn(x)、
- Hn(x)=xHn−1(x)−(n−1)Hn−2(x)
最後の関係は、計算に役立ちます n 与えられたエルミート多項式 x 。 Haskellは、数学者が通常の言語で表現できるため、Haskellでプログラミングされます。Haskellは、数学自体と同じようにクリーンで、厳格で、美しいです。
-- | 'hermite' is an infinite list of Hermite polynomials for given x hermite :: (Enum a, Num a) => a -> [a] hermite x = s where s@(_:ts) = 1 : x : zipWith3 (\hn2 hn1 n1 -> x * hn1 - n1 * hn2) s ts [1..]
エルミート関数は入力パラメーターを受け入れます x 、そして出力は無限のシートを与えます n の多項式 n=0,1、... レイジーコンピューティングの概念に精通していない人は、自分に慣れることを強くお勧めします。 この概念を知っているが、それでも関数型プログラミングが完全にはできない場合:ここで何が起きているのでしょうか? エルミート多項式のすべての値を含む無限のシートがすでにあると想像してください。
s = [1, x, x^2-1, x^3-3x, x^4-6x^2+3, ... ]
このシートの末尾(最初の要素なし):
ts = [x, x^2-1, x^3-3x, x^4-6x^2+3, ... ]
自然数のある別の葉を取得した後:
[1, 2, 3, ... ]
zipWith3関数は、指定された演算子を使用して最後の3つのシートを結合します。
x * [ x, x^2-1, x^3-3x, ... ] - [ 1*1, 2*x, 3*(x^2-1), ... ] = [x^2-1, x^3-3x, x^4-6x^2+3, ... ]
前に1とxを追加し、エルミート多項式の完全なセットを取得します。 つまり、これらの値を持つシート、つまり取得しようとしているシートを使用して、多項式の値を持つシートを得ました。 うわさによると、AFの美しさとパワーを完全に認識することは、耳を覗く能力に似ていると言われています。
チェック:の最初の6つの値 x=1 :
Prelude> take 6 (hermite 1) [1,1,0,-2,-2,6]
期待していたもの。
ヒルベルト空間
少し別のステップに移りましょう-ヒルベルト空間の定義を思い出してください。 科学用語では、これはスカラー積が定義された完全な計量線形空間です \ラングリングX、Y\ラングリング この空間では、各要素は、ノルムと呼ばれ、
|X |= sqrt langleX、X rangle。
超自然的なものはありません。 ヒルベルト空間を想像しようとすると、単純なものから始めて、徐々に複雑なものになります。
- 最も単純な例は、実数の空間です。 H= mathbbR 。 この場合、2つの数値のスカラー積 X そして Y 私たちは持っています
langleX、Y rangle=XY
- 次に、ユークリッド空間に移動します H= mathbbRn 。 いま
langleX、Y rangle= sumni=0XiYi。
この空間は、複素数ベクトルの空間に拡張できます。 H= mathbbCn スカラー積は
langleX、Y rangle= sumni=0Xi\上線Yi
(一番上の行は複雑なペアリングを示しています)。 - そして最後に、私は大人のための空間、無限の次元を持つ空間に来ます。 私たちの場合、これはあるセットで定義された二次的に積分可能な関数の空間になります \オメガ 与えられた尺度で mu 。 フォームでそれを示します H=L2(\オメガ、 mu) 。 その上のスカラー積は次のように定義されます。
langleX、Y rangle= int Omega(X cdotY)d mu。
通常 \オメガ 暗黙の間隔 [a、b] 、しかし測定中 mu 均一な測定(ルベーグ測定)、つまり d mu= mu(d omega)=d omega 。 そして、スカラー積は通常のルベーグ積分の形で書かれています
intbaX( omega)Y( omega)d omega。
確率論の観点から考えると、 \オメガ 基本的なイベントのスペースです X=X(\オメガ) そして Y=Y(\オメガ) ランダム変数であり、 mu -確率的尺度。 このような各メジャーには、独自の分布密度関数があります。 rho 、定数とは異なる場合があります d mu= rho( omega)d omega そして、スカラー積は数学的期待値と一致します。
langleX、Y rangle= int OmegaX( omega)Y( omega) rho( omega)d omega= mathbbE[XY]。
ガウス過程
チャンスの要素を考えに導入する時が来ました。 ヒルベルト空間を作ろう H 。 その後、私たちは呼び出します \ {W(h)\} _ {h \ in H} (非正規)ガウス過程
- 確率変数のベクトル (W(h1)、\ドット、W(hn)) いずれに対しても期待値ゼロで正規分布 h1、\ドットhn inH 、そして
- のために h、g inH
mathbbE[W(h) cdotW(g)]= langleh、g rangle。
その数学的本質において W(h) あるヒルベルト空間から別のヒルベルト空間へのマッピングです。 H で L2( Omega、 mathcalF、 mathbbP) -トリプレットで指定された有限分散を持つ確率変数の確率空間 \オメガ (多くの基本的なイベント)、 mathcalF (シグマ代数)および mathbbP (確率的尺度)。 このマップが線形であることを示すのは簡単です:
W(ah+bg)=aW(h)+bW(g) quad foralla、b in mathbbR、 forallh、g inH.
(平等の意味で「ほぼ確実」、こんにちは「すごい効果」#2)
例。 させる H=L2((0、 infty)、 lambda) どこで \ラムダ -統一尺度(ルベーグ)。 スカラー製品
langlef、g rangle= int(f cdotg)d lambda。
させる h(s)=1[0、t](s) -区間の単位関数 [0、t] 。 それから |h |2= int1[0、t](s)ds=t そして
B(t)=W(1[0、t]) sim mathcalN(0、t)
ブラウン運動(またはウィーナープロセス)以外は何もありません。 また、
intt0f(s)dB(s)=W(1[0、t]f)
伊藤関数の積分と呼ばれる f に関して B 。
Gaussianプロセスを実装するために、私は高貴な人々がすでに私たちのために書いたパッケージを使用します。
import Data.Random.Distribution.Normal import Numeric.LinearAlgebra.HMatrix as H -- | 'gaussianProcess' samples from Gaussian process gaussianProcess :: Seed -- random state -> Int -- number of samples m -> Int -- number of dimensions n -> ((Int, Int) -> Double) -- function that maps indices of the matrix into dot products of its elements -> [Vector Double] -- m n-th dimensional samples of Gaussian process gaussianProcess seed mn dotProducts = toRows $ gaussianSample seed m mean cov_matrix where mean = vector (replicate n 0) cov_matrix = H.sym $ (n><n) $ map (\i -> dotProducts (quot in, rem in)) [0..]
gaussianProcess関数は、 シードパラメーター(ジェネレーターの標準的なもの)、 nSamples-サンプルサイズ、 dim-ベクトル次元を受け取ります (h1、...、hn)T 、 dotProductsは入力関数です (i、j) 、共分散行列のインデックスであり、このインデックスに対応するスカラー積を返します langlehi、hj rangle 。 GaussianProcessはnSamplesベクトルを出力します (W(h1)、\ドット、W(hn)) 。
今は、私たちが受け取ったすべての知識を一緒にまとめるのにふさわしい時です。 しかし、最初に、エルミート多項式の有用な特性と集合体の正規分布に言及する価値があります。 させる F(t、x)= exp(tx−t2/2)。 次に、テイラー展開を使用して、
beginalignedF(t、x)&= exp(x2/2−(xt)2/2)&= exp(x2/2) sum n=0infty fractnn!t fracdndtn exp(−(xt)2/2) bigg|t=0 \&= sum n=0inftytn frac(−1)nn! exp(x2/2) fracdndzn exp(−z2/2) bigg|z=x&= sum n=0infty fractnn!Hn(x)。 endaligned
取る X、Y sim mathcalN(0,1) -2つの標準正規分布ランダム変数。 正規分布の生成関数を通じて、次の関係を引き出すことができます。
mathbbE[F(s、X) cdotF(t、Y)]= exp(st mathbbE[XY])。
取る (n+m) プライベートデリバティブ frac partialn+m partialsn partialtm 等しい s=t=0 上から方程式の両側で、取得
mathbbE[Hn(X) cdotHm(Y)]= begincasesn!( mathbbE[XY])n、&n=m、0、&n neqm。 endcases
これは何を教えてくれますか? 最初に、私たちは規範を得ました |Hn(X) |2=n! のために X sim mathcalN(0,1) そして、第二に、通常のランダム変数とは異なるエルミート多項式が互いに直交していることがわかりました。 これで、さらに何かを実現する準備ができました。
空間をカオスに分解する
させる \ mathcal {H} _n = \ overline {\ operatorname {span}} \ Big \ {H_n(W(h))\ Big | \ | | h \ | = 1 \ビッグ\} -n番目のウィナーカオス 。 それから
L2( Omega、 mathcalF、 mathbbP)= bigoplus n=0infty mathcalHn、
どこで mathcalF -シグマ代数が作成されました W(h) 。
すごいすごい! この分解定理を断片に分解し、数学から人間に翻訳しましょう。 ここではあまり詳しく説明しませんが、ここでの意味を直感的に説明するだけです。 アイコン operatornamespan(X) サブセットの線形スパンを示します X ヒルベルト空間 H -すべての部分空間の交差 H 含む X 。 簡単に言えば、これはからの要素のすべての線形組み合わせのセットです X 。 上記の行 operatornamespan セットの閉鎖を示します。 もし \上線 operatornamespan(X)=H それから X 完全なセットと呼ばれます (大まかに言って、 X きつい H ")。したがって、 \上線{\ operatorname {span}} \ {H_n(W(h))| \ | | h \ | = 1 \} -単位超球面上のガウス過程からのエルミート多項式の線形シェルの閉包。
表記法を考えました。 ここで、Wienerのカオスについてです。 シンプルから始めます: mathcalH0 次数が0のエルミート多項式のすべての線形結合、つまり数値のさまざまな組み合わせが含まれています a cdot1 、つまり実数の全空間。 だから mathcalH0= mathbbR 。 どうぞ それは簡単にわかります \ mathcal {H} _1 = \ {W(h)| h \ in H \} 、つまり、ガウス過程で構成される空間。 すべての中心正規量は mathcalH1 。 さらに追加する場合 mathcalH0 、その後、数学的な期待値がゼロでない残りの通常のランダム変数がそれらを結合します。 さらなるセット mathcalHn すでにn度で動作しています W(h) 。
例。 させる H=L2((0、 infty)、 lambda) そして X=B(t)2 ブラウン運動の二乗です。 それから
beginalignedB(t)2&=W(1[0、t])2&= |1[0、t] |2 cdotW bigg( frac1[0、t] |1[0、t] | bigg)2&=t cdotW bigg( frac1[0、t] sqrtt bigg)2&=tH2 bigg(W bigg( frac1[0、t] sqrtt bigg) bigg)+t endaligned
最初の用語はに属します mathcalH2 第二- mathcalH0 。 これは、ウィーナーカオスへの分解と呼ばれます。
以前に示しました mathcalHn perp mathcalHm のために n neqm 。 分解定理は、これらの集合が互いに直交するだけでなく、 L2( Omega、 mathcalF、 mathbbP) 。 これは実際にはどういう意味ですか? これは、任意のランダム変数 X 有限分散の場合、正規分布のランダム変数の多項式関数で近似できます。
rho(x)= frac1 sqrt2 pie−x2/2
エルミート多項式の定義に非常に似ています
Hn(x)=(−1)nex2/2 fracdndxn(e−x2/2)、 quadn in mathbbN0。
分布が X ガウスから遠く離れて、他の直交多項式を試すことができます。 たとえば、ガンマ密度:
rho(x)= fracxn−1e−x Gamma(n)。
何にも似ていませんか? はい、これらはラジェラ多項式です
Ln(x)= fracexn! Fracdndxn(xne−x)
一様分布はルジャンドル多項式に対応し、二項分布はクラフチュク多項式に対応します。 確率空間を直交多項式に分解するという考え方を発展させる理論は、英語の文献では「多項式カオス展開」と呼ばれています。
例。 今すぐ取りましょう H= mathbbR 、機能 f ランダム変数を設定します X そのような
X=f( xi) inL2( Omega、 mathcalF、 mathbbP)、
どこで xi=W(1) sim mathcalN(0,1) 。 分解定理により、エルミート多項式の重み付き和として表すことができます
f( xi)= sum n=0inftyfnHn( xi)、
ここで、係数は式で与えられます
fn= frac1n! mathbbE[f( xi) cdotHn( xi)]。
これらの値 fn 次のようになりました:
beginaligned mathbbE[f( xi) cdotHn( xi)]&= langlef( xi)、Hn( xi) rangle&= langle sum k=0inftyfkHk( xi)、Hn( xi) rangle&= sum k=0inftyfk langleHk( xi)、Hn( xi) rangle&=fn |Hn( xi) |2=fnn!。 endaligned
おめでとうございます! これで、標準正規分布確率変数の関数がある場合、エルミート多項式に基づいて拡張できます。 たとえば、正直なコインを投げる0-1の形で提示できます
X=1(0、 infty)( xi)。
数学を少し考えて(単純な積分の計算は読者に任せます)、分解を取得します。
X= frac12+ frac1 sqrt2 pi sum n=0infty frac(−1)n2n(2n+1)n!H2n+1( xi)。
基底の展開の2番目の要素はすべてゼロに等しいことに注意してください。
-- | 'second' function takes a list and gives each second element of it second (x:y:xs) = y : second xs second _ = [] -- | 'coinTossExpansion' is a Wiener chaos expansion for coin-toss rv to n-th element coinTossExpansion :: Int -- number of elements in the sum -> Double -- gaussian random variable -> Double -- the sum coinTossExpansion n xi = sum (take n $ 0.5 : zipWith (*) fn (second $ hermite xi)) where fn = 1.0 / (sqrt $ 2 * pi) : zipWith ( \fn1 k -> -fn1 * k / ((k + 1) * (k + 2)) ) fn [1, 3..]
coinTossExpansion関数は、 特定のコインをランダムなWienerカオスに分解することで得られた量を返します xi から 0 前に n 。 グラフは、ランダムに選択された段階的な収束を示しています xi 増加とともに n 。
このグラフから判断すると、後のどこかに n\約100 量を切り取り、丸め、返品することができます X 。
-- | 'coinTossSequence' is a coin-toss sequence of given size coinTossSequence :: Seed -- random state -> Int -- size of resulting sequence -> [Int] -- coin-toss sequence coinTossSequence seed n = map (round.coinTossExpansion 100) (toList nvec) where nvec = gaussianProcess seed n 1 (\(i,j) -> 1) !! 0
20回のトスのシーケンスがどのように見えるかを確認します。
Prelude> coinTossSequence 42 20 [0,0,1,0,0,0,1,1,0,1,0,0,0,1,0,1,1,1,0,1]
コイントスを生成するように求められたので、何を表示するかを知っています。
まあ、冗談なしで、私たちは何かを計算し、何かをレイアウトしましたが、これのすべてのポイントは何ですか、あなたは尋ねます。 cheされたと感じるために急がないでください。 後続の記事では、この分解により(ある意味で)ランダム変数の導関数を取得し、確率的積分(およびあなたの意識)を拡張し、機械学習でこの実用的なアプリケーションをすべて見つける方法を示します。