ウィナーカオスまたはコインを反転する別の方法







確率論は、私が最初に遭遇した瞬間から今日に至るまで、私を驚かせることをやめません。 時々、彼らは私をさまざまな程度で追い抜いて、それらを「すごい効果」と呼び、小脳に衝撃を与えます。それは私を第三の目の効果で覆い、世界は永遠に同じでなくなりました。





しかし最近では、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     





最初の多項式の値: H0x=1H1x=xH2x=x21H3x=x33x\ド









エルミート多項式には次の特性があります。





最後の関係は、計算に役立ちます 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]
      
      





期待していたもの。



ヒルベルト空間



少し別のステップに移りましょう-ヒルベルト空間の定義を思い出してください。 科学用語では、これはスカラー積が定義された完全な計量線形空間です \ラXY\ラ この空間では、各要素は、ノルムと呼ばれ、





 |X |= sqrt langleXX rangle





超自然的なものはありません。 ヒルベルト空間を想像しようとすると、単純なものから始めて、徐々に複雑なものになります。



  1. 最も単純な例は、実数の空間です。 H= mathbbR 。 この場合、2つの数値のスカラー積 X そして Y 私たちは持っています





     langleXY rangle=XY





  2. 次に、ユークリッド空間に移動します H= mathbbRn 。 いま





     langleXY rangle= sumni=0XiYi





    この空間は、複素数ベクトルの空間に拡張できます。 H= mathbbCn スカラー積は





     langleXY rangle= sumni=0Xi\上Yi





    (一番上の行は複雑なペアリングを示しています)。
  3. そして最後に、私は大人のための空間、無限の次元を持つ空間に来ます。 私たちの場合、これはあるセットで定義された二次的に積分可能な関数の空間になります \オ 与えられた尺度で  mu 。 フォームでそれを示します H=L2\オ mu 。 その上のスカラー積は次のように定義されます。





     langleXY rangle= int OmegaX cdotYd mu





    通常 \オ 暗黙の間隔 [ab] 、しかし測定中  mu 均一な測定(ルベーグ測定)、つまり d mu= mud omega=d omega 。 そして、スカラー積は通常のルベーグ積分の形で書かれています





     intbaX omegaY omegad omega





    確率論の観点から考えると、 \オ 基本的なイベントのスペースです X=X\オ そして Y=Y\オ ランダム変数であり、  mu -確率的尺度。 このような各メジャーには、独自の分布密度関数があります。  rho 、定数とは異なる場合があります d mu= rho omegad omega そして、スカラー積は数学的期待値と一致します。





     langleXY rangle= int OmegaX omegaY omega rho omegad omega= mathbbE[XY]















ガウス過程



チャンスの要素を考えに導入する時が来ました。 ヒルベルト空間を作ろう H 。 その後、私たちは呼び出します \ {W(h)\} _ {h \ in H} (非正規)ガウス過程



  1. 確率変数のベクトル Wh1\ドWhn いずれに対しても期待値ゼロで正規分布 h1\ドhn inH 、そして
  2. のために hg inH





     mathbbE[Wh cdotWg]= langlehg rangle







その数学的本質において Wh あるヒルベルト空間から別のヒルベルト空間へのマッピングです。 HL2 Omega mathcalF mathbbP -トリプレットで指定された有限分散を持つ確率変数の確率空間 \オ (多くの基本的なイベント)、  mathcalF (シグマ代数)および  mathbbP (確率的尺度)。 このマップが線形であることを示すのは簡単です:





Wah+bg=aWh+bWg quad forallab in mathbbR forallhg inH.





(平等の意味で「ほぼ確実」、こんにちは「すごい効果」#2)



例。 させる H=L20 infty lambda どこで \ラ -統一尺度(ルベーグ)。 スカラー製品





 langlefg rangle= intf cdotgd lambda





させる hs=1[0t]s -区間の単位関数 [0t] 。 それから  |h |2= int1[0t]sds=t そして





Bt=W1[0t] sim mathcalN0t





ブラウン運動(またはウィーナープロセス)以外は何もありません。 また、





 intt0fsdBs=W1[0t]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...hnTdotProductsは入力関数です ij 、共分散行列のインデックスであり、このインデックスに対応するスカラー積を返します  langlehihj rangleGaussianProcessはnSamplesベクトルを出力します Wh1\ドWhn









今は、私たちが受け取ったすべての知識を一緒にまとめるのにふさわしい時です。 しかし、最初に、エルミート多項式の有用な特性と集合体の正規分布に言及する価値があります。 させる Ftx= exptxt2/2 次に、テイラー展開を使用して、





 beginalignedFtx= expx2/2xt2/2= expx2/2 sum n=0infty fractnnt fracdndtn expxt2/2 bigg|t=0 \&= sum n=0inftytn frac1nn expx2/2 fracdndzn expz2/2 bigg|z=x= sum n=0infty fractnnHnx endaligned





取る XY sim mathcalN0,1 -2つの標準正規分布ランダム変数。 正規分布の生成関数を通じて、次の関係を引き出すことができます。





 mathbbE[FsX cdotFtY]= expst mathbbE[XY]





取る n+m プライベートデリバティブ  frac partialn+m partialsn partialtm 等しい s=t=0 上から方程式の両側で、取得





 mathbbE[HnX cdotHmY]= begincasesn mathbbE[XY]nn=m0n neqm endcases







これは何を教えてくれますか? 最初に、私たちは規範を得ました  |HnX |2=n のために X sim mathcalN0,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 -シグマ代数が作成されました Wh







すごいすごい! この分解定理を断片に分解し、数学から人間に翻訳しましょう。 ここではあまり詳しく説明しませんが、ここでの意味を直感的に説明するだけです。 アイコン  operatornamespanX サブセットの線形スパンを示します X ヒルベルト空間 H -すべての部分空間の交差 H 含む X 。 簡単に言えば、これはからの要素のすべての線形組み合わせのセットです X 。 上記の行  operatornamespan セット閉鎖を示します。 もし \上 operatornamespanX=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度で動作しています Wh



例。 させる H=L20 infty lambda そして X=Bt2 ブラウン運動の二乗です。 それから





 beginalignedBt2=W1[0t]2= |1[0t] |2 cdotW bigg frac1[0t] |1[0t] | bigg2=t cdotW bigg frac1[0t] sqrtt bigg2=tH2 biggW bigg frac1[0t] sqrtt bigg bigg+t endaligned





最初の用語はに属します  mathcalH2 第二-  mathcalH0 。 これは、ウィーナーカオスへの分解と呼ばれます。



以前に示しました  mathcalHn perp mathcalHm のために n neqm 。 分解定理は、これらの集合が互いに直交するだけでなく、 L2 Omega mathcalF mathbbP 。 これは実際にはどういう意味ですか? これは、任意のランダム変数 X 有限分散の場合、正規分布のランダム変数の多項式関数で近似できます。



実際に
実際、このような分解は、分布が X ある意味で、正規分布に近い。 たとえば、ブラウン運動または対数正規分布を扱う場合。 そして私達はちょうどそれを述べた  m a t h c a l F 作成されています W h これは非常に重要な状態です。 実際、正規分布の密度





 rhox= frac1 sqrt2 piex2/2





エルミート多項式の定義に非常に似ています





Hnx=1nex2/2 fracdndxnex2/2 quadn in mathbbN0







分布が X ガウスから遠く離れて、他の直交多項式を試すことができます。 たとえば、ガンマ密度:





 rhox= fracxn1ex Gamman





何にも似ていませんか? はい、これらはラジェラ多項式です





Lnx= fracexn Fracdndxnxnex







一様分布はルジャンドル多項式に対応し、二項分布はクラフチュク多項式に対応します。 確率空間を直交多項式に分解するという考え方を発展させる理論は、英語の文献では「多項式カオス展開」と呼ばれています。



例。 今すぐ取りましょう H= mathbbR 、機能 f ランダム変数を設定します X そのような





X=f xi inL2 Omega mathcalF mathbbP





どこで  xi=W1 sim mathcalN0,1 。 分解定理により、エルミート多項式の重み付き和として表すことができます





f xi= sum n=0inftyfnHn xi





ここで、係数は式で与えられます





fn= frac1n mathbbE[f xi cdotHn xi]





これらの値 fn 次のようになりました:





 beginaligned mathbbE[f xi cdotHn xi]= langlef xiHn xi rangle= langle sum k=0inftyfkHk xiHn xi rangle= sum k=0inftyfk langleHk xiHn xi rangle=fn |Hn xi |2=fnn endaligned





おめでとうございます! これで、標準正規分布確率変数の関数がある場合、エルミート多項式に基づいて拡張できます。 たとえば、正直なコインを投げる0-1の形で提示できます





X=10 infty xi





数学を少し考えて(単純な積分の計算は読者に任せます)、分解を取得します。





X= frac12+ frac1 sqrt2 pi sum n=0infty frac1n2n2n+1nH2n+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されたと感じるために急がないでください。 後続の記事では、この分解により(ある意味で)ランダム変数の導関数を取得し、確率的積分(およびあなたの意識)を拡張し、機械学習でこの実用的なアプリケーションをすべて見つける方法を示します。



All Articles