moxt

Just another Blog site

ディープラーニングが気になる

      2015/07/03

ダラダラとメモ。

スライド・ブログ

  • http://www.slideshare.net/kazoo04/deep-learning-15097274
  • http://www.slideshare.net/nlab_utokyo/deep-learning-40959442
  • http://qiita.com/icoxfog417/items/65e800c3a2094457c3a0
  • http://blog.jubat.us/2012/08/blog-post_27.html

    • 特徴抽出とは

論文

* http://cs.stanford.edu/people/karpathy/deepvideo/deepvideo_cvpr2014.pdf

OSS

  • http://caffe.berkeleyvision.org/

インストール

  • http://masabloggers.blogspot.jp/2014/10/deeplearningframework-caffe-install.html
    * http://reiji1020.hatenablog.com/entry/2014/11/27/175140

メモ

ディープラーニングはニューラルネットを何層も重ねたもの。
ニューラルネットワークは単純パーセプトロンを組み合わせたもの。
単純パーセプトロンは人間のニューロンを模した分類器。
生情報→前処理→特徴抽出→分類(?)
次元圧縮法
* 主成分分析

  • データセットとは
    • 学習する対象…かな
    • ネコの種類を識別する、とかなら画像と品種(ロシアンブルーとか)を対応付けた大量データのことをデータセットと呼ぶのだろうか。
    • cat.jpg => 23(ロシアンブルー) 的な?
    • 独自のデータセットを用意するの大変そうだなあ。。
  • リファレンスモデルとは
    • ディープラーニングはニューラルネットを複数組み合わせた複合体で、各々にパラメータが存在してる。通常そのパラメータを弄って良いパフォーマンスを出す。リファレンスモデルはそのチューニングが予め行われているディープラーニング(の構成)。

CaffeはILSVRC2012データセットで学習済みのリファレンスモデルを配布しているので、それを使ってすぐに分類を実行することができます。

よく分からないが、ベンチマーク的な存在だとおもう。
このベンチマークより、X%精度が向上したよ。『オーッ』って。やるための踏み台。

機械学習と情報の次元との関係

機械学習って何?

よく分からない。
複雑な現象を抽象化することで法則性を見出したり、モノ同士の類似具合を計算したり、いろいろやれる気がする。

生情報はそのままでは使えない

http://qiita.com/IshitaTakeshi/items/4607d9f729babd273960

基本的には情報をベクトル化して、そのベクトル間の距離を測る
距離が近ければ、その情報は似てるor同じとみなせるし、離れていれば違うものとみなせる。
画像などを素直にベクトル化すると次元数が数千以上になる。
この大きなベクトルを比較するのは高い計算量となる。また、良い結果も望めない。
なので、比較する上で有用な情報を残しつつベクトルの次元を削減することが求められる。

上のQiitaの例ではリンゴとブドウの比較例を挙げており、対象の色に着目することでベクトルの次元を大きく削減している。
『青色の濃度』と『赤色の濃度』だけに注目すればよくなっている。
この過程を『特徴抽出』という。

脳の一次視覚野の研究

http://enterprisezine.jp/article/detail/6471?p=3

見たものを処理するとき2つのニューロンが発火している

  • 単純性細胞
    • 特定傾きを持つ線分やエッジに反応する
  • 複雑性細胞
    • 単純性細胞のとりまとめを行う

ディープラーニングにも学習は必要

2種類の学習法

  • 教師あり学習

単純パーセプトロンであれば「勾配法」とよばれる学習方法で重みを調整することができる。
単純パーセプトロンの複雑な組み合わせであるニューラルネットワーク、しかも複数の層からなっている場合は中間層で正解と比較する必要があるが、正解がない段階で中間層と比較することはできない。

そこで、勾配法を拡張した「誤差逆伝播法」という手法で学習を行う。

出力層から得られた誤差を前の層にもどして、その誤差に対して中間層がどれだけ寄与しているか計算して中間層のパラメータを調整するというもの。

ニューラルネットワークの層数が多くなったり、ユニット同士の結合が複雑になると学習が困難になるという問題がある。

  • 教師なし学習

オートエンコーダ

出力が入力をできるだけ再現できるように重みを調整することで、効率よくデータの次元圧縮を行えるようなニューラルネットワークを学習するための仕組みです。

オートエンコーダによって元情報の情報量を保ちつつ次元圧縮を行う。この圧縮結果が各層の特徴となる

畳み込みニューラルネットワーク

http://vaaaaaanquish.hatenablog.com/entry/2015/01/26/060622

すげー良い記事です。

起源

パーセプトロン→ニューラルネット→多層ニューラルネットと順調に肥大化した構造物
様々なパーセプトロンを沢山組み合わせることで、対象の関数(らしきもの)い近似させていこう、という試み。

多層ニューラルネットは多くの計算リソースを使う。
これは現代まで続くハードウェアの進化によって克服されてきてる。

多層ニューラルネットの各パーセプトロンの重みを更新し、誤差を最小化することを目指すが中間層たちは誤差を知ることもできなかった。これは上記にかいた『誤差逆伝播法』によって対処できる。出力の誤差を入力層に向かって伝播させることで再学習を行う狙いだ。
しかし、出力層付近のパーセプトロンの再学習はできるが入力層に近づくにつれ誤差が減衰してしまうためほとんど再学習されない問題がおきた。

これを克服するために考案された1つの手法が『畳み込みニューラルネットワーク』とよばれるもの。

手法を理解する

 - プログラミング

  • このエントリーをはてなブックマークに追加
  • follow us in feedly

  関連記事

no image
RubyMine(OSX)でGit操作するときのコマンド集

GITを操作系のポップアップを表示したい

no image
goで無限ループ

しょうもないが忘れるので。。

no image
Androidアプリを実機デバッグしたいのにNo debuggable applicationsと表示される時の対処例

Tools > …

large_v
Dockerでよく使うコマンド

随時追加 Contents1 …

no image
YosemiteでRubyMineが起動できない

yosemiteからjavaが1.7系になってる。 一方、rubymineは1.6系を想定している。 …

no image
単語の出現頻度をlinuxコマンドだけで調べたい

無駄にpythonとか使おうとしてた。。 楽にできて良かった。 …

no image
意識低いRuby on Rails再入門4

下記の内容を読んでテスト系の処理をすっ飛ばしたメモ。 http://railstutorial.jp/chapters/sign-in-sign-out?version=4.0#top …

LJ_Gsz28
コードを雑に読むアプローチでScrapyを入門する

Scrapyはスクレイピング用フレームワークなので、登場人物多すぎてよく分からない。 彼らの関係性や役割を理解を深めるために『Data …

no image
Bower再入門

Contents1 Bowerとは何なのか2 …

no image
DockerでNginxしたい

Contents1 Dockerfileを用意する2 …