人工知能に関する断創録

人工知能、認知科学、心理学、ロボティクス、生物学などに興味を持っています。このブログでは人工知能のさまざまな分野について調査したことをまとめています。最近は、機械学習、Deep Learning、Kerasに関する記事が多いです。



統計的声質変換 (6) 声質変換モデルの学習

統計的声質変換 (5) scikit-learnのGMMの使い方(2015/3/22)の続き。 今回は、いよいよ声質変換モデルを混合ガウスモデル(GMM)で学習しよう!第3回目(2015/3/4)で述べたようにclbさんの声をsltさんの声に変換することを前提に進める。 今まで「声質変換…

統計的声質変換 (5) scikit-learnのGMMの使い方

統計的声質変換 (4) パラレルデータの作成(2015/3/10)の続き。 今回は、いよいよ声質変換モデルを混合ガウスモデルで学習しよう!と思ったのだけれど、その前にscikit-learnのGMMライブラリの使い方を簡単にまとめることにした。本格的に使う前に簡単なデ…

統計的声質変換 (4) パラレルデータの作成

統計的声質変換 (3) メルケプストラムの抽出(2015/3/4)の続き。 前回は変換元のclbさんと変換先のsltさんのメルケプストラムを一括抽出した。前回の最後の結果を見ると、二人のしゃべる速さが違うためメルケプストラムが時間方向にずれていることがわかっ…

統計的声質変換 (3) メルケプストラムの抽出

統計的声質変換 (2) ボイスチェンジャーを作ろう(2015/2/25)の続き。 前回は音声から抽出したメルケプストラムやピッチのパラメータを直接いじることで簡単なボイスチェンジャーを作った。今回からAさんの音声をBさんの音声に変換する規則を機械学習の手法…

統計的声質変換 (2) ボイスチェンジャーを作ろう

統計的声質変換 (1) ロードマップ(2015/2/11)の続き。 統計的声質変換の第二回ということでまずは統計的じゃない声質変換の枠組みで簡単なボイスチェンジャーを作ってみたい。いきなり本題とずれているけれどここをしっかり理解できていないと統計的な方は…

統計的声質変換 (1) ロードマップ

Pythonで音声信号処理(2011/5/14)のつづき。 @r9y9さんの以下のチュートリアル記事をきっかけに興味をもった統計的声質変換の実験をしてみたい。統計的声質変換とはAさんの声を別のBさんの声に変換する技術のこと。 統計的声質変換クッソムズすぎワロタ(…

TheanoをWindowsにインストール

Deep Learningを実装するのによく使われるTheanoというPythonライブラリをWindowsマシンにインストールしたのでそのときの記録。ただ使うだけだったらPythonとnumpy/scipyをインストールした後にpip installs Theanoで普通に使えていた。実際、GPUが貧弱なMa…

ALIENWARE X51を買った

年末に少しツイートしたけど6年ぶりにWindowsパソコンを新調した。今回はDellのALIENWARE X51 スプレマシーという機種を選んだ。デスクトップマシンだけど少し小型なので机の上に乗せられる。 Dell ALIENWARE X51 デスクトップPC(i7-4790/8GB/1TB/GTX760Ti/W…

Pythonに似ているようで微妙に違うJuliaを勉強した

前に一時期だけ音声信号処理を勉強していた(2011/5/14)ことあったけれど、その一環として@r9y9さんの統計的声質変換のチュートリアルをやってみようと思っている。統計的声質変換というのはAさんの声をBさんの声に変換するための統計モデルを学習するタス…

2015年目標

2015年にやりたいこと。 (1) Deep Learning Deep Learningの勉強。論文をサーベイして理論を深めるとともに、ライブラリ(Theano, Pylearn2, Caffe)を使っていろいろな実験をやりたい。最近は、先人によるチュートリアル記事も多くなってきたので非常に参考…

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

一様乱数の生成

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 を使っていました。よく使…

線形回帰による曲線フィッティング

線形回帰による直線フィッティング(2014/4/1)のつづき。今回は、線形回帰で曲線フィッティングをしてみます。PRMLによると、線形回帰で曲線のフィッティングをするためには、入力変数を非線形の基底関数(basis function)で変換すればよいそうです。今回…

線形回帰による直線フィッティング

パターン認識と機械学習(PRML)まとめ(2010/8/29)のつづき。PRML3章の線形回帰(Linear Regression)を実装してみます。そういえば、3章の実装はまるまる無視していた。何でだろう?今回は、受講している Courseraの機械学習コースの第一週目の課題を参考…

力学系とカオス入門を修了

ラブレス夫人も、バベッジに劣らずはっきりと気づいていたことであるが、解析機関の発明によって、ことに解析機関が「自分の尻尾を食べること」が可能になったときには、人類は機械化された知能をもてあそぶようになる。適度に複雑な再帰的システムはどんな…

多層パーセプトロンでMNISTの手書き数字認識

多層パーセプトロンで手書き数字認識(2014/2/1)の続き。今回は、簡易版のdigitsデータではなく、MNISTのより大規模な手書き数字データを使って学習してみます。 MNISTデータ MNISTは、28x28ピクセル、70000サンプルの数字の手書き画像データです。各ピクセ…

多層パーセプトロンで手書き数字認識

多層パーセプトロンが収束する様子(2014/1/23)の続き。数字認識は前にニューラルネットによるパターン認識(2005/5/5)をJavaで作りましたが今回はPythonです。今回は、多層パーセプトロンを用いて手書き数字を認識するタスクを実験します。今回からscikit…