タグ

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

  • Theanoによる畳み込みニューラルネットワークの実装 (1) - 人工知能に関する断創録

    Theanoによる多層パーセプトロンの実装(2015/6/18)のつづき。今回は、Deep Learning Tutorialの畳み込みニューラルネットワーク(Convolutional Neural Network: CNN, ConvNet)を実装してみる。 CNNは人間の視覚野を参考にした手法であり、画像認識に特化したDeep Learningアルゴリズムである。ImageNetの物体認識コンテストでぶっちぎりの成果を上げた手法はさまざまな工夫があるもののこのCNNをベースにしている。 当は一般物体認識の実験をやりたいところだけどお楽しみは後に残しておいて、まずはMNISTの手書き数字認識を追試して感触をつかみたい。 ソースコード全体はここに置いた。 畳み込みニューラルネットワーク まず今回実装する畳み込みニューラルネットワーク(CNN)の構成を図でまとめてみた(Deep Lear

    Theanoによる畳み込みニューラルネットワークの実装 (1) - 人工知能に関する断創録
    kimutansk
    kimutansk 2015/09/28
    畳み込みNNって畳み込み層とプーリング層で画像の特徴をシャープ/位置感度低下をかけて最後に多層パーセプトロンに渡す方式でしたか。ようやく概要理解。
  • 多層パーセプトロンで手書き数字認識 - 人工知能に関する断創録

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

    多層パーセプトロンで手書き数字認識 - 人工知能に関する断創録
    kimutansk
    kimutansk 2014/02/01
    実際にコードまで含めて公開されているのは何かとありがたいですねぇ・・・
  • 多層パーセプトロンが収束する様子 - 人工知能に関する断創録

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

    多層パーセプトロンが収束する様子 - 人工知能に関する断創録
    kimutansk
    kimutansk 2014/02/01
    こういう風に収束とループ、エラーが見えると度合いがよくわかりますね。
  • 多層パーセプトロンによる関数近似 - 人工知能に関する断創録

    パターン認識と機械学習(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にあるようにバイアスパラ

    多層パーセプトロンによる関数近似 - 人工知能に関する断創録
    kimutansk
    kimutansk 2014/02/01
    Pythonでライブラリを使って書けば意外に短い。てことはまずはこのあたりのライブラリの使い方を覚える所からですかねぇ
  • パターン認識と機械学習(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)まとめ - 人工知能に関する断創録
  • ニューラルネットによるパターン認識 - 人工知能に関する断創録

    3層パーセプトロンと呼ばれるニューラルネットを用いたパターン認識のサンプルです。ニューラルネットがどういうものかという解説はまた後でしますが、ここではサンプルの遊び方だけ書いておきます。まあゲームではないんですが・・・ pattern_recognition.jar Pythonによる実装 多層パーセプトロンでMNISTの手書き数字認識(2014/2/5) 操作法 起動すると下のようなウィンドウが表示されます。 左側がパターン入力画面です。マウスでクリックするとセルが赤く塗りつぶされます。右側は情報パネルです。プログラムからの出力情報が表示されます。右下がコントロールパネルです。いろいろなボタンがあります。 まず0〜9までの数字の認識を試してみます。 パターン入力画面に上図の0のパターンを入力して追加ボタンを押してください。追加ボタンを押すと今入力したパターンが訓練データとして保存されます

    ニューラルネットによるパターン認識 - 人工知能に関する断創録
    kimutansk
    kimutansk 2014/02/01
    この位の式で算出できるなら、確かにアルゴリズム自体は平易、となりますね。
  • 1