タグ

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

  • ロジスティック回帰 - 人工知能に関する断創録

    今回は、ロジスティック回帰です。この方法はPRMLで初めて知りましたが、統計学の方では一般的な方法のようです。回帰という名前がついてますが、実際は分類のためのモデルとのこと。ロジスティック回帰では、クラス1の事後確率が特徴ベクトルの線形関数のロジスティックシグモイド関数として書けることを利用しています。 ここで、σ(a)は式(4.59)のロジスティックシグモイド関数です。 訓練データ集合 {x_n, t_n} (今度は、クラス1のときt_n=0, クラス1のときt_n=1なので注意)からパラメータwを最尤推定で求めます。尤度関数は、 と書けるので、誤差関数(尤度関数の負の対数)は、 となります。誤差関数を最小化するようなwを求めたいってことですね。で、普通だったら今までのようにwで偏微分して0とおいてwを解析的に求めるところですが、yにロジスティックシグモイド関数が入っているせいで解析的に

    ロジスティック回帰 - 人工知能に関する断創録
  • 2015年目標 - 人工知能に関する断創録

    2015年にやりたいこと。 (1) Deep Learning Deep Learningの勉強。論文をサーベイして理論を深めるとともに、ライブラリ(Theano, Pylearn2, Caffe)を使っていろいろな実験をやりたい。最近は、先人によるチュートリアル記事も多くなってきたので非常に参考になりそう。まずは追試から始めたい。 (2) Pythonによるモンテカルロ法入門 去年やり始めたプロジェクトを完成させたい。サンプリングやMCMCの理解も深めたい。 (3) pandasとscikit-learnの習得と活用 Pythonデータ分析ライブラリ(pandas)、機械学習ライブラリ(scikit-learn)を習得・活用していきたい。 Pythonによるデータ分析入門 ―NumPy、pandasを使ったデータ処理 作者: Wes McKinney,小林儀匡,鈴木宏尚,瀬戸山雅人,滝

    2015年目標 - 人工知能に関する断創録
  • 線形回帰による直線フィッティング - 人工知能に関する断創録

    パターン認識と機械学習(PRML)まとめ(2010/8/29)のつづき。 PRML3章の線形回帰(Linear Regression)を実装してみます。そういえば、3章の実装はまるまる無視していた。何でだろう? 今回は、受講している Courseraの機械学習コースの第一週目の課題を参考にしているのでPRMLと若干表記が違います。Courseraの課題ではOctaveというプログラミング言語で書いたのですが、ここではPythonを使います。 線形回帰による直線フィッティング 今回は、一変数の線形回帰で直線フィッティングする例を取り上げます。線形回帰は、「線形」という名前がついていますが、これはパラメータと変数の線形結合をモデルとして仮定するという意味で、直線でフィッティングするという意味ではないのだ!ここけっこう勘違いしやすい?というか講義で曲線フィッティングしているのに線形回帰ですとか言

    線形回帰による直線フィッティング - 人工知能に関する断創録
  • 多層パーセプトロンで手書き数字認識 - 人工知能に関する断創録

    多層パーセプトロンが収束する様子(2014/1/23)の続き。数字認識は前にニューラルネットによるパターン認識(2005/5/5)をJavaで作りましたが今回はPythonです。 今回は、多層パーセプトロンを用いて手書き数字を認識するタスクを実験します。今回からscikit-learnというPython機械学習ライブラリを活用しています。ただ、scikit-learnには多層パーセプトロンの正式な実装はない*1ため多層パーセプトロンのスクリプトはオリジナルです。今回から比較的大きなデータを扱うためなるべく高速に動作し、かつPRMLと変数名を合わせることで理解しやすいようにしました。 digitsデータ 手書き数字データは、MNISTというデータが有名です。PRMLの付録Aでも紹介されています。今回はいきなりMNISTではなく、scikit-learnのdigitsというより単純なデータセ

    多層パーセプトロンで手書き数字認識 - 人工知能に関する断創録
  • 多層パーセプトロンが収束する様子 - 人工知能に関する断創録

    多層パーセプトロンによる関数近似(2014/1/22)の続きです。 もう少しスクリプトを改造し、実際に各重みと出力がどのように収束するかアニメーションにしてみました。ほとんどの関数は最初に急激に変化したあとだんだん収束していく様子が見てとれます。|x|は最初は誤差が減らずローカルミニマムにはまったかな?と思ったのですが、しばらく待っていたら急激に誤差が減りました。よかった、よかった。 残りは http://www.youtube.com/channel/UC4DmXhmsKZT48cRD6znEXaw このアニメーションを実行するスクリプトです。matplotlibにwxPythonを組み合わせることでアニメーションを実現しています。このアニメーションの書き方は、短時間フーリエ変換(2011/7/16)でも使いました。 次回は、数字の手書きデータを認識するニューラルネットを作りたいと思いま

    多層パーセプトロンが収束する様子 - 人工知能に関する断創録
  • 多層パーセプトロンによる関数近似 - 人工知能に関する断創録

    パターン認識と機械学習(PRML)まとめ(2010/8/29)の続きです。以下、つづくかも?になってましたが、2014年はDeep Learningを勉強しよう(2014/1/4)と思っているので、関連するニューラルネットワーク関係の実験結果をもう少し追記します。 今回は、PRMLの5章ニューラルネットワークの中から図5.3にある多層パーセプトロンによる関数近似をPythonで実装してみました。 上の図にあるようにxを入れたときにsin(x)の近似値を出力するようなニューラルネットワークを学習します。もっと詳しく言うと (x, sin(x)) のたくさんの組(訓練データ)を教師データとして用いて、xを入れたときにsin(x)の近似値を出力するようにニューラルネットワークの重みを更新します。 多層パーセプトロン(Multilayer perceptron) p.228にあるようにバイアスパラ

    多層パーセプトロンによる関数近似 - 人工知能に関する断創録
  • パターン認識と機械学習(PRML)まとめ - 人工知能に関する断創録

    2010年は、パターン認識と機械学習(PRML)を読破して、機械学習の基礎理論とさまざまなアルゴリズムを身につけるという目標(2010/1/1)をたてています。もうすでに2010年も半分以上過ぎてしまいましたが、ここらでまとめたページを作っておこうと思います。ただ漫然と読んでると理解できてるかいまいち不安なので、Python(2006/12/10)というプログラミング言語で例を実装しながら読み進めています。Pythonの数値計算ライブラリScipy、Numpyとグラフ描画ライブラリのmatplotlibを主に使ってコーディングしています。実用的なコードでないかもしれませんが、ご参考まで。 PRMLのPython実装 PRML読書中(2010/3/26) 多項式曲線フィッティング(2010/3/27) 最尤推定、MAP推定、ベイズ推定(2010/4/4) 分類における最小二乗(2010/4/

    パターン認識と機械学習(PRML)まとめ - 人工知能に関する断創録
  • ライフゲームの世界 - 人工知能に関する断創録

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

    ライフゲームの世界 - 人工知能に関する断創録
  • 最尤推定、MAP推定、ベイズ推定 - 人工知能に関する断創録

    1.2.5 曲線フィッティング再訪 1.2.6 ベイズ曲線フィッティング のところを実装してみます。前回は、最小二乗法で曲線フィッティングをしたけど、ベイズ的な方法で解こうって話のようです。この2つの節では、 最尤推定 最大事後確率(MAP)推定 ベイズ推定 という3つのパラメータ推定方法が曲線フィッティングという具体例で説明されてます。他の教科書では抽象的に定式化されていて違いがよくわからなかったけど、この章では曲線フィッティングという具体例に基づいて説明されているのでわかりやすいと感じました。 最尤推定 まず、最尤推定のプログラムです。実は、最尤推定で対数尤度(1.62)を最大化することは、最小二乗法の二乗和誤差関数E(w)の最小化と等価なのでwの求め方は最小二乗法(2010/3/27)とまったく同じです。 最尤推定では、目標値tの予測分布を求めるためもう1個予測分布の精度パラメータ(

    最尤推定、MAP推定、ベイズ推定 - 人工知能に関する断創録
  • ナイーブベイズを用いたテキスト分類 - 人工知能に関する断想録

    今までPRMLを読んで実装を続けてきましたが、10章からは難しくて歯が立たなくなってきたのでここらで少し具体的な応用に目を向けてみようと思います。機械学習の応用先としては画像の方が結果を見ていて面白いんですが、当面は自然言語処理を取り上げます。そんなわけで一番始めの応用は機械学習と自然言語処理の接点として非常に重要なテキスト分類(Text Classification, Text Categorization)の技法たちを試していきたいと思います。テキスト分類は文書分類(Document Classification)という呼び方もあります。テキストと文書は同じ意味です。最初なので自分の知識の整理と入門者への紹介のためにちょっと丁寧にまとめてみました。 テキスト分類とは テキスト分類とは、与えられた文書(Webページとか)をあらかじめ与えられたいくつかのカテゴリ(クラス)に自動分類するタス

    ナイーブベイズを用いたテキスト分類 - 人工知能に関する断想録
  • Earth Mover's Distance (EMD) - 人工知能に関する断創録

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

    Earth Mover's Distance (EMD) - 人工知能に関する断創録
  • SPTKの使い方 (1) インストール・波形描画・音声再生 - 人工知能に関する断創録

    SPTK(Signal Processing Toolkit)という音声信号処理のツールの使い方を紹介していきます。 SPTKには、音声を分析するための豊富なコマンドが約120個も提供されています。今までPythonで窓関数、FFT、MFCC、LPCなどを苦労して実装してきました(Pythonで音声信号処理)が、これらの代表的な音声処理は、SPTKで提供されているコマンドを組み合わせるだけで簡単に実行できます。 SPTKには、分厚いマニュアルと豊富なサンプル集がついているのでそれをベースに少しずつ使い方を整理していきたいと思います。今後の音声プロジェクトでも使用していく予定です。 インストール 主にLinuxマシンが対象のツールなのでソースからのコンパイルが必要。WindowsならCygwinやMinGWが必要でした。SPTK-3.5.tar.gzをダウンロードして tar xvzf SP

    SPTKの使い方 (1) インストール・波形描画・音声再生 - 人工知能に関する断創録
  • テキストからWikipedia見出し語を抽出 - 人工知能に関する断創録

    WindowsでMeCab Pythonを使う(2010/11/21)のつづきです。形態素解析を使ってると単語が変なところで切れていたり、未知語が多かったりと不満点が出てきます。また、応用によっては、形態素ではなく、複合語単位で抽出したいということもしばしばあります。たとえば、 人工知能は、コンピュータに人間と同様の知能を実現させようという試み、あるいはそのための一連の基礎技術をさす。 人工知能という名前は1956年にダートマス会議でジョン・マッカーシーにより命名された。 現在では、機械学習、自然言語処理、パターン認識などの研究分野がある。(Wikipedia人工知能』を改変)という文章をMeCabで形態素解析して名詞のみ取り出すと、 人工 知能 コンピュータ 人間 同様 知能 実現 試み ため 一連 基礎 技術 人工 知能 名前 1956 年 ダート マス 会議 ジョン マッカーシー

    テキストからWikipedia見出し語を抽出 - 人工知能に関する断創録
  • PythonでAmazon Product Advertising APIを使う - 人工知能に関する断創録

    以前、Amazon Web Serviceで書籍情報を取得する(2008/12/20)というエントリを書きましたが、2009年8月15日から新しく認証が導入されてそのままでは使えなくなっていることに気がつきました。サービス名もProduct Advertising APIに変更されたそうです。AmazonWebサービスはときどき使いたくなるのでPythonから使う方法を改めて調べてみました。以下のサイトを参考にさせていただきました。 Product Advertising API アマゾンAPIを使うのに2009年8月15日から認証が必要になるらしい AmazonアソシエイトWebサービス改めProduct Advertising APIの電子署名について調べてみました Python + Amazon = Pyzon amazon.py まず、Pyzonを参考にアイテムID(ASIN、I

    PythonでAmazon Product Advertising APIを使う - 人工知能に関する断創録
  • 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特徴量の抽出 - 人工知能に関する断創録
  • 3日で作る高速特定物体認識システム (1) 物体認識とは - 人工知能に関する断創録

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

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

    OpenCVのプログラムを統合開発環境EclipseとC/C++コンパイラMinGWで開発するためのセットアップ方法をまとめておきます。Windows環境でVisual StudioをインストールしなくてもOpenCVプログラムを開発できます。 1. MinGWのインストール ここからMinGW-5.1.6.exe(2009/10/15現在)をダウンロード。インストール途中でg++ compilerとMinGW Makeオプションをチェック。 2. Eclipseのインストール ここからEclipse IDE for C/C++ Developers(Eclipse CDT)をダウンロード。解凍するとeclipseフォルダができるのでC:\eclipseなどに移動。 3. OpenCVのインストール ここからOpenCV-2.0.0a-win32.exe(2009/10/15現在)をダウン

    EclipseでOpenCV - 人工知能に関する断創録
  • 類似画像検索システムを作ろう - 人工知能に関する断創録

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

    類似画像検索システムを作ろう - 人工知能に関する断創録
  • 眼の実装 - 人工知能に関する断創録

    OpenCVっていうコンピュータビジョンのライブラリを使うと拡張現実でもっと高度なことができるらしい。画像認識、画像理解、コンピュータビジョンも人工知能の範疇だけどまったく勉強したことなかったのでこれを機会に基礎は習得したい。とりあえず下の三冊購入。ざっと読んでみたけど OpenCVプログラミングブック(実践サンプル集 + リファレンス) 詳細OpenCV(理論 + ライブラリ解説) コンピュータビジョン(理論) という感じかな。理論も知りたかったので評判のよい『コンピュータビジョン』を購入したけどまったくのど素人には少々むずかしすぎた。しばらく詳細OpenCVで勉強してからあらためてチャレンジしたい。ところで、詳細OepnCVの帯に面白いことが書いてあった。 このによると、OpenCVなる技術を使えば「コンピュータの目」を作れるそうです。 磯光雄(『電脳コイル』監督) へぇ〜。でも目は

    眼の実装 - 人工知能に関する断創録
  • 拡張現実 - 人工知能に関する断創録

    セカイカメラ(リンク切れ)で拡張現実(Augmented Reality: AR)という技術を初めて知ったのですがこれがすごく面白い。一言で言うと現実世界にデジタル情報をオーバーラップする技術です。ARToolkitというライブラリが公開されていて、WebカメラとOpenGLの知識があれば比較的簡単にプログラムが組めます。工学ナビさんのページを参考に今日一日かけてせっせとプログラムを書いてました(基的にC/C++なので面倒ですがPythonラッパーもあるようです)。プログラムの内容は、ARToolkitのHiroというマーカーの上に OpenGLのティーポットを描画 NeHeのキューブを描画 写真を重ね合わせて描画 Youtubeからダウンロードした動画を描画 です。以下、プログラムのキャプチャー動画です。面白いでしょ? 拡張現実にはいくつか方法があるそうですが、ARToolkitはカメ

    拡張現実 - 人工知能に関する断創録