ある分布でサンプリングと出力とは?

受付中

回答 1

投稿

  • 評価
  • クリップ 2
  • VIEW 900

IS.SEKI

score 26

機械学習分野には
『XX分布でサンプリングする』とか『NNの出力をXX分布にする=XX分布であるようNNの出力をさせる?』という表現ありますが。
理解できません。

「サンプル(そのもの)がXX分布になっている」のような表現は分かりますが、
人間の意志によってわざわざ『特定の分布』でサンプリングするのはどうやって実現するのでしょうか。

同様に、どうやって『NNの出力をXX分布にする』のでしょうか。
例えば、
Variational Auto Encoder(VAE)のgeneratorの出力は(μ,σ)Gaussian分布にさせるとか。
要は特定の数値やパターンが出力するようにする事は分かりますが、
その数値やパターンを特定の分布に従わせる方法は分かりません。

どうぞ宜しくお願いします。

  • 気になる質問をクリップする

    クリップした質問は、後からいつでもマイページで確認できます。

    またクリップした質問に回答があった際、通知やメールを受け取ることができます。

    クリップを取り消します

  • 良い質問の評価を上げる

    以下のような質問は評価を上げましょう

    • 質問内容が明確
    • 自分も答えを知りたい
    • 質問者以外のユーザにも役立つ

    評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

    質問の評価を上げたことを取り消します

  • 評価を下げられる数の上限に達しました

    評価を下げることができません

    • 1日5回まで評価を下げられます
    • 1日に1ユーザに対して2回まで評価を下げられます

    質問の評価を下げる

    teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

    • プログラミングに関係のない質問
    • やってほしいことだけを記載した丸投げの質問
    • 問題・課題が含まれていない質問
    • 意図的に内容が抹消された質問
    • 広告と受け取られるような投稿

    評価が下がると、TOPページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

    質問の評価を下げたことを取り消します

    この機能は開放されていません

    評価を下げる条件を満たしてません

    評価を下げる理由を選択してください

    詳細な説明はこちら

    上記に当てはまらず、質問内容が明確になっていない質問には「情報の追加・修正依頼」機能からコメントをしてください。

    質問の評価を下げる機能の利用条件

    この機能を利用するためには、以下の事項を行う必要があります。

回答 1

+4

統計においてxx分布とは、xx分布を表す関数のことを意味します。つまりxx分布にしたがいサンプリングするというのは、この関数に従った乱数を生成することと同義です。最もよく使うnumpy.random.normal(…)を例に取ると、この関数に平均と標準偏差のパラメータを与えるとそれらの正規分布にしたがった乱数がサンプリングされます。実際にこの関数を使って1万個ほどの乱数を生成して平均と標準偏差を計算すると、与えたパラメータと近似することがわかります。

以上より、「サンプル(そのもの)がXX分布になっている」ということはxx分布を表す関数で表現できるということになり、結果としてこの関数の応用してサンプリングできるということを意味します。

私自身、VAEのコードを書いたことがないので、「generatorの出力は(μ,σ)Gaussian分布にさせる」ということがどのような処理を意味するのか厳密には理解していませんが、感覚的には平均μ、分散(標準偏差)σのガウス分布にしたがうものとして何らかの処理をしているという意味合いかと思います。

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2018/04/19 11:18 編集

    現実に確かにzはサンプル{x}から生成されますね(VAE)。
    通常生成されたものはその生成元のsampleの具体的なinspanceに依存します(避けたい事)。
    訓練時サンプル{x}のサイズが大きければ、
    zの分布が{x}の個々具体instanceから影響を受け難くなります。← ここまでははっきり言えます。from : <<Sample-based non-uniform random variate generation>>

    ただ、xの分布が知らないので、DNNに入力して、出力(z)の分布は必ず正規分布であるかどうか?
    確かに分かりませんね。
    でも以下のような「仮定」ができます:
    ① zは必ず正規分布(神様の命令)
    ② {x}--->z は『zの還元』だと考え、多量のxによるzの還元設計(DNNのパラメータ)によって生成されたzも当然正規分布だろう。
    ③ 今度は『正規分布』としてのzを使って新しいxを生成する。
    まあーーーー人間が自分の都合のよい方向へ一生懸命に考えようとすれば、何でも成立可能なわけ  (笑)

    キャンセル

  • 2018/04/19 13:31

    > 何でも成立可能なわけ  !
    それにしても、上のmkgreiさんが案内された文献【https://arxiv.org/pdf/1606.05908v2.pdf】の中に、なんと、autoencoderは[μ(X), Σ(X)]というGaussian分布で潜在変数zを出力すると図で書いていますが、これは超可笑しいですね。Xとzは通常次元(dimension)でさえ異なるもんで、どうして生成されたzの分布の中心がμ(X)になるのでしょうね???? 
    次元が異なる別なvector空間であるのに、希望値が同じって?!

    キャンセル

  • 2018/04/19 14:00 編集

    むー
    https://qiita.com/cympfh/items/50b19933fd3834e86862】も上記文献参照されているせいか、同じデタラメな事を書かれていますね。
    ZとXは通常次元の違うvectorであると書いておきながら、
    P(Z|X) = N( Z | μ(X), Σ(X) )だと書かれておりますね。
    ※ 要は、Zの希望値= μ(X) ----次元が違うvector同士どうして希望値が同じなの?????

    どなた、解釈してくださいませ!

    キャンセル

15分調べてもわからないことは、teratailで質問しよう!

  • ただいまの回答率 90.21%
  • 質問をまとめることで、思考を整理して素早く解決
  • テンプレート機能で、簡単に質問をまとめられる