タグ

ブックマーク / aidiary.hatenablog.com (14)

  • Pythonによるモンテカルロ法入門 - 人工知能に関する断創録

    PRMLの11章で出てくるマルコフ連鎖モンテカルロ法(Markov chain Monte Carlo methods: MCMC)。ベイズでは必須と呼ばれる手法だけれどいまいち理屈もありがたみもよくわからなくて読み飛ばしていました。 最近、ボルツマンマシンを勉強していて、ベイズと関係ないのにマルコフ連鎖やらギブスサンプラーやらが出てきて格的にわからなくなってきたのでここらで気合を入れて勉強し直すことにしました。 参考にした書籍は「Rによるモンテカルロ法入門」です。PRMLと同じく黄色いなので難易度が高そう・・・このはR言語を使って説明がされていますが、それをPythonで実装しなおしてみようかなーと計画中。numpy、scipyの知らなかった機能をたくさん使うので勉強になりそう。 ただRにしかないパッケージを使われると途中で挫折する可能性が高い・・・あと内容が難しすぎて途中で挫折す

    Pythonによるモンテカルロ法入門 - 人工知能に関する断創録
  • Earth Mover's Distance (EMD) - 人工知能に関する断創録

    Earth Mover's Distance (EMD) について調べたことを整理しておきます。EMDは、ユークリッド距離のような距離尺度の一つで、二つの分布の間の距離を測ることができます。言語処理ではあまり聞いたことなかったのですが、画像処理や音声処理では比較的有名な距離尺度のようです。 EMDが使える問題設定は下図のようになります。 EMDは特徴量と重みの集合(シグネチャと呼ぶ)で与えられる分布Pと分布Qの間の距離です。ここで、特徴量間では距離 が定義されているのが前提です。特徴量がベクトルのときはユークリッド距離、特徴量が確率分布のときはカルバック・ライブラー距離(情報量)などです。EMDは、特徴量の集合が2つ与えられたときに、1個1個の特徴量間の距離をもとに、特徴量集合間の距離を求められるんですね。これはすごい。 重みは具体的な応用によって使い方が変わりますが、その特徴量の重要度を

    Earth Mover's Distance (EMD) - 人工知能に関する断創録
  • 3日で作る高速特定物体認識システム (2) SIFT特徴量の抽出 - 人工知能に関する断創録

    3日で作る高速特定物体認識システム (1) 物体認識とは(2009/10/18)の続きです。 今回は、画像からSIFT (Scale-Invariant Feature Transform) という局所特徴量を抽出するところを作ってみようと思います。 SIFT特徴量の抽出 まずは、局所特徴量の代表ともいえるSIFTを試してみます。OpenCVにはSIFTを抽出する関数がなかったのでRob Hess氏がC言語で実装したライブラリを試してみます。内部でOpenCVを使っているので事前にOpenCVのインストールが必要です。実装はOpenCV 1.1でされているみたいですが、2.0でもちょっと手直しすると動きました。Rob Hess氏のホームページからSIFT Feature Detectorのzip版を落とします。 (注)Hess氏のサイトが更新されたようで現在はGitHub上のOpenSIF

    3日で作る高速特定物体認識システム (2) SIFT特徴量の抽出 - 人工知能に関する断創録
  • Visual Wordsを用いた類似画像検索 - 人工知能に関する断創録

    類似画像検索システムを作ろう(2009/10/3) 3日で作る高速特定物体認識システム(2009/10/18) に続くOpenCVプロジェクト第三弾です。今回は、上の二つをふまえてカラーヒストグラムではなく、局所特徴量(SIFTやSURF)を用いた類似画像検索を試してみます。局所特徴量はグレースケール画像から抽出するため、カラーヒストグラムと違って色は見ていません。画像の模様(テクスチャ)で類似性を判定します。 実験環境は、Windows 7、MinGW C++コンパイラ、OpenCV2.0、Python 2.5です。EclipseでMinGWを使う方法はEclipseでOpenCV(2009/10/16)を参照してください。Visual C++にはないディレクトリスキャン関数を一部使っているのでVisual C++を使う場合は、少しだけ修正が必要です。 Bag-of-Visual Wor

    Visual Wordsを用いた類似画像検索 - 人工知能に関する断創録
  • SciPyでベクトル量子化 - 人工知能に関する断創録

    ベクトル量子化(Vector Quantization: VQ)とは、ベクトルで表されたデータ集合を有限個の代表的なパターン(セントロイド)に置き換える処理のことです。代表パターン(セントロイド)のリストはコードブック(code book)と呼ばれます。また、クラスタの番号をコードと呼びます。各ベクトルデータは、距離が一番近いコードに置き換えられます。大量のデータを少ない代表パターンで置き換えることができるためデータの圧縮に使えます。ただし、コードブックから元のデータは復元できないため非可逆圧縮になります。 コードブックを学習するためのアルゴリズムの代表例がk-meansクラスタリングです。ベクトルデータをクラスタリングして、各データをそのデータが属するクラスタのセントロイドに置き換えることでベクトル量子化が実現できます。 ベクトル量子化の応用 ベクトル量子化の応用例の一つに、前に取り上げ

    SciPyでベクトル量子化 - 人工知能に関する断創録
  • WindowsでMeCab Pythonを使う - 人工知能に関する断創録

    語の文章を単語に分割するには形態素解析を使います。日語の形態素解析には、ChaSen、MeCab、Yahoo!形態素解析などがあります。ナイーブベイズを用いたブログ記事の自動分類(2010/7/3)でMeCabをPythonから使う方法を簡単にまとめましたが、MeCabはよく使うので再度まとめ直して独立したエントリにしました。Yahoo!形態素解析の使い方は、Yahoo!形態素解析API(2009/4/15)で書きました。 Windowsへの導入方法 MeCabは高性能な形態素解析モジュールでPythonRubyPerlJavaなどさまざまな言語から使えます。Mac OS XとLinuxでは簡単にコンパイルしてインストールができるのですが、WindowsではMinGWやVisual Studioのインストール、コードの修正が必要でかなり面倒くさい。そこで、Pythonモジュー

    WindowsでMeCab Pythonを使う - 人工知能に関する断創録
  • ライフゲーム - 人工知能に関する断創録

    人工知能というより人工生命の分野ですが最初はライフゲームを作ってみます。ライフは人生という意味もありますがライフゲーム人生ゲームとはまったく関係ありません。まず、フィールド(黒い部分)をマウスクリックすると、黄色い■が出てきます。もう一度押すと■が消えます。キーボードの上下左右キーで青色のカーソルを動かしてスペースキーで描くこともできます。細かい図形を描くときはキーボードの方が便利です。キャンバスに適当に描いたら、Sキーを押してください。徐々に図形が変化していきます。もう一度Sキーを押すと止まります。またNキーを押すと1ステップずつ経過をみることができます。Cキーを押すとフィールドをきれいにします。Rキーを押すと適当に■をばらまきます。 pylife.py ライフゲームとは ライフゲームは1970年ごろにイギリスの数学者コンウェイが考案したゲームです。ゲームといってもユーザにできることは

    ライフゲーム - 人工知能に関する断創録
  • ライフゲームの世界 - 人工知能に関する断創録

    ニコニコ動画の複雑系コミュニティの発起人のはむくんがライフゲームの世界というとても面白い動画を投稿されています。Twitterでは何度かツイートしてたけど完結したのでブログでも紹介させていただきます。 ライフゲームの世界1 John Horton Conwayが提案したライフゲーム(Conway's Game of Life)の基的なルールを解説しています。また頻繁に現れる4種の物体(ブロック、蜂の巣、ブリンカー、グライダー)を紹介しています。最後の作品紹介は、P416 60P5H2V0 gunというすさまじいパターンが出てきます。グライダー銃から発射したグライダーたちが滑走路を通ります。グライダーの集合先では、発射された複数のグライダーが合体して宇宙船が組み立てられます。 ライフゲームの世界2 いろんな振動子(パルサー、タンブラー、銀河)が鑑賞できます。作品紹介では大量の振動子が勢揃い

    ライフゲームの世界 - 人工知能に関する断創録
    bluele
    bluele 2013/03/04
  • 類似画像検索システムを作ろう - 人工知能に関する断創録

    C++版のOpenCVを使ってカラーヒストグラムを用いた類似画像検索を実験してみました。バッチ処理などのスクリプトはPythonを使ってますが、PerlでもRubyでも似たような感じでできます。 指定した画像と類似した画像を検索するシステムは類似画像検索システムと言います。GoogleYahoo!のイメージ検索は、クエリにキーワードを入れてキーワードに関連した画像を検索しますが、類似画像検索ではクエリに画像を与えるのが特徴的です。この分野は、Content-Based Image Retrieval (CBIR)と呼ばれており、最新のサーベイ論文(Datta,2008)を読むと1990年代前半とけっこう昔から研究されてます。 最新の手法では、色、形状、テクスチャ、特徴点などさまざまな特徴量を用いて類似度を判定するそうですが、今回は、もっとも簡単な「色」を用いた類似画像検索を実験してみます

    類似画像検索システムを作ろう - 人工知能に関する断創録
    bluele
    bluele 2012/08/21
    カラーヒストグラムを用いた検索処理
  • 線形SVM - 人工知能に関する断創録

    下巻に入って7章のサポートベクトルマシン(Support Vector Machine: SVM)を実装してみます。SVMに関しては、有名なSVMのライブラリ(libsvm)を使ったことがあるだけで、アルゴリズム詳細はPRMLで初めて学習しました。なので変なことを書いていたらコメント欄で指摘してもらえると助かります。 まずは、一番簡単な線形SVMを実装してみます。今までと同様に直線(超平面)でデータが完全に分離できる場合です。PRMLの7章には特に説明がありませんが、カーネル関数に下の線形カーネル(データのただの内積)を用いた場合に相当するようです。このカーネル関数を多項カーネルやガウシアンカーネルに変更すると線形分離不可能なデータも分類できるようになるとのこと。非線形SVMは次回ためしてみます。 まず、SVMの識別関数は、式(7.1)で表せます。 今までと違ってバイアスパラメータをまとめ

    線形SVM - 人工知能に関する断創録
  • Pythonでゲーム作りますが何か? - 人工知能に関する断創録

    このサイトでは、プログラミング言語PythonPythonゲーム用ライブラリPygameを用いてゲーム制作の過程やテクニックをまとめています。主に自分の知識の整理に使うつもりですが、これからPythonを学んでゲームを作ってみようという方の参考になれば幸いです。 Pygameは知らなくても大丈夫ですが、Pythonの基は知っていることを前提にしています。 Pythonで書いたプログラムはWindowsでもMacでもLinuxでも動きます。 ソースコードの著作権を主張することはないので自由に使ってください。 記事下方にあるナビゲーションはほとんど役に立ちません。このページを起点としてリンク先へ、読んだら戻るといった使い方が楽だと思います。 NEW! 全ソースコードをGitHubのリポジトリとして公開しました。右下のDownload ZIPからまとめてダウンロードできます(2014/9

  • ナイーブベイズを用いたブログ記事の自動分類 - 人工知能に関する断創録

    カイ二乗値を用いた特徴選択(2010/6/25)の続きです。今まで使ってきた20 Newsgroupsというデータは英語文書でかつ元ネタがよく分からずあまり面白くなかったので、今回はこのブログ(人工知能に関する断想録)の記事を分類してみます。このブログの各記事には私の判断でカテゴリをつけています。たとえば、この記事は[機械学習][自然言語処理]です。カテゴリのリストはこのブログの左メニューにあります。この前、少し整理したので全部で18のカテゴリがあります。新しい記事を書いたとき自動でカテゴリを割り振ることはできるのでしょうか? (注)プログラミング言語はPythonを使っています。シリーズもので以前作ったコードを再利用してるので検索で飛んできた人はナイーブベイズを用いたテキスト分類(2010/6/13)から順に読んでください。 はてなダイアリーデータのダウンロードと整形 まず、はてなダイア

    ナイーブベイズを用いたブログ記事の自動分類 - 人工知能に関する断創録
  • 3日で作る高速特定物体認識システム (3) SURFの抽出 - 人工知能に関する断創録

    3日で作る高速特定物体認識システム (2) SIFT特徴量の抽出(2009/10/24)の続きです。あっ、3日経っちゃいました。 今回は、SIFTとは別の局所特徴量であるSURF(Speeded Up Robust Features)を抽出してみます。SURFのFはFeaturesなのでSURF特徴量とは言わないのかな?SIFTとは抽出方法は違いますが、画像からキーポイントと特徴ベクトルを抽出する点では同じです。抽出速度はSIFTより数倍高速だそうですが、精度は多少落ちるとのこと。リアルタイム処理したいときはこっちのほうがよさそうです。また、OpenCVにもすでに実装されています。SURFの詳しいアルゴリズムは後で論文を読むとしてとりあえず試してみます。 画像からSURFを抽出する 以下のプログラムは、画像からSURFを抽出して特徴点を描画し、特徴量をファイルへ格納するプログラムです。この

    3日で作る高速特定物体認識システム (3) SURFの抽出 - 人工知能に関する断創録
  • 3日で作る高速特定物体認識システム (1) 物体認識とは - 人工知能に関する断創録

    情報処理学会の学会誌『情報処理』の2008年9月号(Vol.49, No.9)に「3日で作る高速特定物体認識システム」という特集記事があります。OpenCVを用いた面白そうなプロジェクトなのでレポートにまとめてみようと思います。3日でできるかはわからないけど。 残念ながらこの記事はPDFを無料でダウンロードすることができません(CiNiiでオープンアクセス可能になったみたいです)。なので会員以外で元記事が読みたい人は図書館でコピーする必要があるかも・・・また、2009年9月号の人工知能学会誌にも物体認識の解説「セマンティックギャップを超えて―画像・映像の内容理解に向けてー」があります。こちらも非常に参考になりますが同様にPDFが手に入りません・・・。他にもいくつかわかりやすい総説論文へのリンクを参考文献にあげておきます。 物体認識とは 物体認識(object recognition)は、画

    3日で作る高速特定物体認識システム (1) 物体認識とは - 人工知能に関する断創録
  • 1