質問: 自分で人工知能を実装したいと考えています。 DeepLearningとニューラルネットを実装したいです。 単回帰と木構造は理解しています。言語はC++ができます。 用途としては、ニューラルネットで文字識別を実装してみたいです。DeepLearningはどういうことに使えるか把握していない状態ですが、こちらも文字識別で動作確認をしたいです。 良い書籍やウェブサイトはありますか?
回答: どのあたりまでご存知で、どのあたりをご存知でないかが質問文からはわかりにくいため、やや冗長な回答となります。尚、私自身は実装を行ったことはなく、あくまでフレームワークなどを試しに触っているレベルの1ユーザです。 背景知識 * ゼロから始めるDeepLearning_その1_ニューラルネットとは - 分からんこと多すぎ ニューラルネットを実装するにあたって、その基本的な背景を知っていると良いかもしれません。 この方の連載記事を読み進めると、制限ボルツマンマシン(RBM)などについて概要を知ることが出来そうです。論文へのリンクもありました。 * Theano で Deep Learning <3> : 畳み込みニューラルネットワーク - StatsFragments また、畳み込みニューラルネットについては上の記事が、概念的にはわかりやすく思いました。(これに限らず、Webには色々な日本語の資料が転がっています) * DEEP LEARNING ディープラーニングはネタとして新しいので、日本語でまとまった記事を探すのは難しいかもしれんが、英語でよければ、MIT Pressがドラフト版を公開しています。 その他slideshareやQiitaにもDeep Learningに関する日本語の発表資料がありますので、検索してみると良いかもしれません。 実装について * Pylearn2 `python`や`MATLAB`向けのライブラリは多いので、その実装を読んで`C++`に変換するということは可能かもしれません。一例として`Pylearn2`を挙げておきます。 * yusugomori/DeepLearning この方は複数の言語でDeep Learningの実装例を公開しています。(`C++`もあります) * Caffe おそらく最近のDeep Learning人気に火を付けた話題のフレームワークではないかと思います。実装は`C++`ですしコードリポジトリも公開されているので、中身を確認することが可能です。 もしかしたら 文字識別がメインの目的ではないと思いますがニューラルネットを使わなくとも文字識別は可能です。 O'Reilly Japan - 実践 コンピュータビジョン は`python`で説明を進める本ですが、`SIFT`や`HOG`といったアルゴリズムについてざっくり紹介があったように思います。