人工知能に関する断創録

このブログでは人工知能のさまざまな分野について調査したことをまとめています(更新停止: 2019年12月31日)

2014-01-01から1年間の記事一覧

2014年まとめ

2014年の目標(2014/1/4)のつづき。年末は風邪ひいて寝込んでいたので今さらだけど2014年のまとめ! 複雑系の深耕 Complexity Explorerというサンタフェ研究所のMOOCを受講する予定だった。結局、力学系とカオスの全10回の入門コース「Introduction to Dyna…

重点サンプリング (5)

重点サンプリング (4)(2014/10/11)のつづき。今回は、Rによるモンテカルロ法入門のテキストの例3.5を解いてみたい。 の積分を重点サンプリングで計算しろというもの。似たような積分は (1)~(3) までですでに取り上げてきた。そこでは、標準正規分布からの…

重点サンプリング (4)

重点サンプリング (3)(2014/10/2)のつづき。今回は、Rによるモンテカルロ法入門のテキストの例題をPythonで解いてみたい。まずは、練習問題3.4から。 fを標準正規分布 とし、 を として期待値 を計算せよ。 という問題。 標準正規分布 からサンプリングす…

重点サンプリング (3)

重点サンプリング (2)(2014/9/21)のつづき。前回からけっこう日があいてしまったが、予定どおり重点関数をいろいろ変えたときにモンテカルロ積分の収束性がどのように変わるか検証した。 対象とする積分は下の式。通常のモンテカルロ積分では、平均0、標準…

重点サンプリング (2)

重点サンプリング (1)(2014/9/20)のつづき。今回は重点サンプリングを実装して、前回うまく計算できなかった積分が正しく計算できるか確認したい。 重点サンプリング 重点サンプリングの導出は、従来のモンテカルロ積分の式から簡単にできる。新しく重点関…

重点サンプリング (1)

Pythonによるモンテカルロ法(2014/6/20)のつづき。今回は、重点サンプリング(importance sampling)の実験をしてみたい。重点サンプリングは、PRMLの11章にも出ている。重点サンプリングを使うと期待値のモンテカルロ積分をより効率的に(=少ないサンプ…

人工知能を実現する学習アルゴリズムに必要な能力

今年は、Deep Learningを研究する予定(2014/1/4)だったのだけれど、多層パーセプトロンまで到達した(2014/2/5)ところで少々(?)足踏みしている。Deep Learningの構成要素であるボルツマンマシンを理解するのに手間取っているためだ。ボルツマンマシン…

Pythonでゲーム作りますが何か?のGitHubリポジトリをEclipseで読み込む

Javaでゲーム作りますが何か?のGitHubリポジトリをEclipseで読み込む(2014/9/6)に引き続き、Pythonでゲーム作りますが何か?の全スクリプトもGitHub上で公開しました。 Pythonでゲーム作りますが何か? - 人工知能に関する断創録 この記事では、GitHubの…

Javaでゲーム作りますが何か?のGitHubリポジトリをEclipseで読み込む

10年前のプロジェクトなのに、相変わらず本ブログでのアクセス数が最も多いのがこれ。 Javaでゲーム作りますが何か? - 人工知能に関する断創録 以前から、ブログ上ではjarファイルしか配布しておらず、解凍しないとソースコードが見られないのは不便という…

モンテカルロ積分の収束テスト

モンテカルロ積分 (2)(2014/8/20)のつづき。 前回の正規・コーシー-ベイズ推定量の積分のサンプリング方法には2通りの方法があった。コーシー分布からサンプリングする場合と正規分布からサンプリングする場合だ。どちらでもサンプリング数を多くすればほ…

モンテカルロ積分 (2)

モンテカルロ積分(2014/7/28)のつづき。今回は、Rによるモンテカルロ法入門の例3.3と練習問題3.1のモンテカルロ積分の例を検証した。 例3.3 例3.3は簡単な積分の問題。 これも前回と同じように確率分布 p(x) が明示的にないため一様分布を追加する。積分区…

今日のUnity (7) 爆発エフェクト

今日のUnity (6) 大砲発射(2014/8/10)のつづき。前回のプログラムを実行してみるとわかるけど何か物足りない気が・・・そうだ爆発だ!というわけで今回は爆発エフェクトを追加してみた。前回と操作方法は同じでクリックすると砲弾が発射される。そして壮大…

今日のUnity (6) 大砲発射

今回は積み上げたブロックに対して砲弾を発射してみた。最初のマイルストーンとしてこれを作るのが目標だったんだよね。物理エンジンの面白さがよくわかる例かも。マウスをクリックするとマウスカーソルがある位置に砲弾を発射する。発射音が壮大に鳴るので…

今日のUnity (5) 光り輝くコイン

今回はPointLightを活用して光り輝くコインを実装してみた。マウスをクリックすると赤い点から光り輝くコインがばらまかれる。コインにはライトを追加しているのでちゃんと光って見える。けっこう綺麗だ。 Coin Coin Sphereを潰して平べったい形状に加工 黄…

今日のUnity (4) 物体を動かす

今回は物理シミュレーションで物体に力を加えて動かす方法を試してみた。まあこれがないと面白そうなことが何もできないので・・・ 物体を動かすには、オブジェクトの速度rigidbody.velocityを直接いじる方法があるが、リファレンスマニュアルによると物理的…

今日のUnity (3) 回転キューブ

今日のUnity (2) Rigidbodyの生成(2014/7/29)のつづき。今回はキューブを回転させてみる。移動や回転などのアニメーションはAnimationコンポーネントでGUI上からも設定できるけれど、今回はスクリプトから操作してみた。キューブのローカル座標のX軸、Y軸…

今日のUnity (2) Rigidbodyの生成

今日のUnity (1) 始めましたのつづき。前回、サンプルとして貼っておいたRigidbodyTestの作り方をまとめておきたい。ちなみに言語はJavaScript。Create Ballsのボタンを押すとボールが5個ランダム方向に飛び出す。Resetボタンを押すと初期化する。ボールはRi…

モンテカルロ積分

Pythonによるモンテカルロ法入門(2014/6/20)のつづき。3章のモンテカルロ積分について実験した。 モンテカルロ積分 モンテカルロ積分を使うと統計や機械学習で頻繁に出てくる期待値を求める積分が乱数生成で簡単に計算できる。期待値を求める積分とは下の…

今日のUnity (1) 始めました

2014年の目標(2014/1/4)にあげたように、今年は3DエンジンのUnityでいろいろ作ってみたい。JavaやPythonでやったみたいに「Unityでゲーム作りますが何か?」というタイトルで解説サイトを立ち上げようとも思ったのだけれど考えなおした。理由はいくつかあ…

受理・棄却法 (4)

Pythonによるモンテカルロ法入門(2014/6/20)の受理・棄却法(2014/7/12)4回目。今回は練習問題2.18を解いてみた。下のような〜分布という名前がついていない完全に任意な目標分布にしたがう乱数を受理・棄却法で生成してみよう。提案分布には標準正規分布…

受理・棄却法 (3)

Pythonによるモンテカルロ法入門(2014/6/20)の受理・棄却法(2014/7/12)の3回目。今回は、練習問題2.8を解いてみた。目標分布を標準正規分布、提案分布を二重指数分布(ラプラス分布)とし、受理・棄却法(棄却サンプリング)を用いて標準正規分布にした…

受理・棄却法 (2)

Pythonによるモンテカルロ法入門(2014/6/20)の受理・棄却法(2014/7/12)の2回目。前回は、提案分布に一様分布を使ったためサンプリングの効率が悪かった。今回は、より効率のよい提案分布gとしてベータ分布を使ってみよう。目標分布fは前回と同じベータ分…

受理・棄却法

Pythonによるモンテカルロ法入門(2014/6/20)のつづき。今回は、2.3節の受理・棄却法(acceptance-rejection method)、別名、棄却サンプリング(rejection sampling)による乱数生成を実験してみる。この方法を使うと事実上あらゆる分布(特定の名前がつい…

混合分布から乱数を生成

Pythonによるモンテカルロ法入門(2014/6/20)のつづき。今回は、2.2.3節の混合分布から乱数を生成する実験してみました。2.2.3節によるとある確率分布fが別の確率分布gとpの混合分布として次のように書ける場合があるそうです。たとえば、スチューデントのt…

離散的な乱数の生成

Pythonによるモンテカルロ法入門(2014/6/20)のつづき。今回は、2.2.2節の離散分布に従う乱数を生成してみます。逆変換法の原理とほとんど同じだけど離散分布なので生成される乱数が自然数のみなのが違います。 を生成することを考える。ここで、の台(確率…

Box-Muller法

Pythonによるモンテカルロ法入門(2014/6/20)のつづき。今回はBox-Muller法を使って標準正規分布に従う乱数を生成してみました。あとおまけで中心極限定理に基づく正規乱数の生成も試してみます。 Box-Muller法 Box-Muller法は、2つの一様乱数から標準正規…

一般変換法

Pythonによるモンテカルロ法入門(2014/6/20)といいながらいまだモンテカルロ法が出てきていないという・・・今日は一般変換法を実験。Rによるモンテカルロ法入門2.2節では、指数分布に特定の変換を施すことで生成できる標準的な分布としてカイ二乗分布、ガ…

逆変換法 (3)

Pythonによるモンテカルロ法入門(2014/6/20)逆変換法 (2)のつづき。今回は、ガンマ分布とベータ分布に従う乱数を一様分布から生成してみます。 ガンマ分布 ガンマ分布のpdfとcdfは下の式。今までの分布と比べると少し複雑だな。 http://en.wikipedia.org/w…

逆変換法 (2)

Pythonによるモンテカルロ法入門(2014/6/20)逆変換法(2014/6/22)のつづき。今回は、指数分布ではなく、ロジスティック分布とコーシー分布に従う乱数を一様乱数から変換して生成してみます。Rによるモンテカルロ法入門の練習問題2.2のPython実装です。 ロ…

逆変換法

Pythonによるモンテカルロ法入門(2014/6/20)逆変換法(Inverse transform sampling)は、[0,1]区間の一様分布から得られた乱数(一様乱数)を変換することで任意の確率分布に従う乱数を得る手法とのこと。このとき必要となるのは変換先の確率分布の累積分…