人工知能に関する断創録

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

重点サンプリング (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]区間の一様分布から得られた乱数(一様乱数)を変換することで任意の確率分布に従う乱数を得る手法とのこと。このとき必要となるのは変換先の確率分布の累積分…

一様乱数の生成

Pythonによるモンテカルロ法入門(2014/6/20)最初にPythonで [0.0, 1.0] 間の一様乱数を生成してみます。 一様分布 一様分布(Uniform distribution)の確率密度関数(pdf)は下の式になります。 引用:http://en.wikipedia.org/wiki/Uniform_distribution_…

Pythonによるモンテカルロ法入門

PRMLの11章で出てくるマルコフ連鎖モンテカルロ法(Markov chain Monte Carlo methods: MCMC)。ベイズでは必須と呼ばれる手法だけれどいまいち理屈もありがたみもよくわからなくて読み飛ばしていました。最近、ボルツマンマシンを勉強していて、ベイズと関…

共役勾配法によるニューラルネットのパラメータ推定

Courseraの機械学習ネタの続き。前回は、ロジスティック回帰のパラメータ推定(2014/4/15)に共役勾配法(Conjugate Gradient: CG法)を使いました。今回はより複雑なニューラルネット(多層パーセプトロン)のパラメータ推定に共役勾配法を適用してみました…

共役勾配法によるロジスティック回帰のパラメータ推定

Courseraの機械学習ネタの続き。今回はロジスティック回帰をやってみます。回帰と付くのになぜか分類のアルゴリズム。以前、PRMLの数式をベースにロジスティック回帰(2010/4/30)を書いたけど今回はもっとシンプル。以下の3つの順にやってみたいと思います…

共役勾配法によるコスト関数最適化

今回もCourseraの機械学習ネタ。Courseraの講義ではロジスティック回帰やニューラルネットのパラメータ学習に共役勾配法(conjugate gradient method: CG法)やBFGSアルゴリズム(Broyden–Fletcher–Goldfarb–Shanno algorithm)*1 を使っていました。よく使…