チャットでちょっと纏めてみると言ってしまったので書きます!と言いたいところですが、巷に良い資料があふれているので、そちらの一部を載せておきます。
一般向けのDeep Learning
Deep Learningと画像認識 ~歴史・理論・実践~
他にもSlideShareとかQiitaとかに結構上がっていますので興味があれば検索を掛けていただければ…
しかしこれで書き終わるのもなんですので、使ってるライブラリの紹介と半年使用してきた感想を…
[hr]
DeepLearning(以下DL)はあくまで超多層のニューラルネットなので色々な実装があります。(確か上で紹介したスライドにも乗ってた気がします)
自分はその内のCNNというアルゴリズムをCaffeというライブラリで使っています。
このライブラリは結構新しい理論の実装も早くて、割と安定しているので愛用しています。
個人的にはPythonを使わずにC++でも使えるのが大きいです。
残念な点としてはWindows用が公式には置いていないところと、GPUの並列化に対応していないところでしょうか。
前者は非公式ですが有志の方がVSで使えるようにして下さっているらしいので、一応使えないことはなさそうですが確認していません。
後者はそういうブランチがあるんですが、開発が進んでいなかった気がします。
[hr]
半年間使用してきた感想ですが、正直なところDLは魔法であって魔法でないというところでしょうか。
最近一般の情報としてDLが取り上げられ始め、「この技術は凄い!なんでもできる!」と持ち上げられてはいますが、使っている側からとしてはそう簡単には言えないなぁと言う感じです。
というのも、調節すべきパラメーターが多すぎることと、そのパラメーターを少しでも動かすとどうなるかわからないことと、結果が出るまでに時間が凄くかかってしまうからです。
私は囲碁AIに対してDLを使用していましたが、ある程度複雑なネットワーク構造を使おうとすると、一回の学習にGTX970を7日間動かす必要があり、調整するパラメーターは数十、数百とあるので魔法には程遠いかなぁと思っています。
ただ、すでにあるネットワーク構造でもある程度の精度は出るので、精度を追い求めないのであれば簡単に高精度のものができるため魔法だなぁとも思えるわけです。
例えばここの人はOpenCVとDLを使ってアニメキャラの判別を行っていますが、この人はCaffeに付いているCifar10のデモ用ネットワークで96%の精度を出しています。
他にも必要とするデータ量が半端ないといところも結構辛いなぁと思うところだったりします。
上で上げたアニメキャラの判別では3万のデータを取ってきているみたいですし、自分の囲碁の場合は2400万のデータを使っていたりします。
さらに辛いのは、オリジナルの画像分類の場合はその莫大な量のデータに対してちゃんと学習用のラベルを付けなければならないということです。(教師あり学習なので)
これが本当に辛くてしかたがないです。
囲碁から通常の画像の分類にシフトしたときデータセットを作るところで一度頓挫してしまいました。
Webからクローリングする手法を始めとっていましたが、意外とラベルがついていなかったり、そもそもラベルと一致しない画像だったり。
仕方ないのでデータ量を減らして手動でラベル付をすると、明らかにデータ量が足りなくなって上手く学習できず、結局気合でデータ量を増やしたりと大変でした。
[hr]
DLについて適当に書いてみたわけですが、理解したければ実際に使ってみなければわからないとおもいます。
よくある猫の画像認識でもいいですし、DQNを実装してブロック崩しを学習させるでもいいですし、ゲームのリプレイ動画を学習させて何かを抽出するとかでもいいですし、やろうと思えば何にでも使えると思います。(もちろん結果が出るかは別にして)
個人的にはなにかゲームに利用できないかなぁと思っていますが、思いついていません。
もし自分でやる気はないけど何かアイデアを思いついた!みたいなのがあれば教えていただければ幸いです。
読みにくい文章ですが最後まで読んでいただき有り難うございます。
何かあればコメントやメッセージ残していただければ(わからなくても)答えさせていただくのでお気軽にどうぞ。
DeepLearningについて(手抜きしてます)
Re: DeepLearningについて(手抜きしてます)
つい先日から私もDeepLearningについて勉強していたので渡りに舟、経験者の体験がとても参考になりました。
まだ少し調べただけなので、DeepLearningやニューラルネットワークについてはサンプルすら動かしたことのない全くの無知なのですが。
一回の学習で7日必要で調整するパラメータが大量にあるとなると、なんとも気の遠くなりそうな話ですね・・・。
そういった作業に加えて、教師付き学習のために主動でラベル付けが必要になるとなると、想像を絶する苦労が待ってそうな気がします・・・。
(まだろくに調べてないからこれくらいしか言えない)
あまりにもジャストタイミングだったのでちょっとビックリしました。もう少し調べたらもっとマシなコメントします。
まだ少し調べただけなので、DeepLearningやニューラルネットワークについてはサンプルすら動かしたことのない全くの無知なのですが。
一回の学習で7日必要で調整するパラメータが大量にあるとなると、なんとも気の遠くなりそうな話ですね・・・。
そういった作業に加えて、教師付き学習のために主動でラベル付けが必要になるとなると、想像を絶する苦労が待ってそうな気がします・・・。
(まだろくに調べてないからこれくらいしか言えない)
あまりにもジャストタイミングだったのでちょっとビックリしました。もう少し調べたらもっとマシなコメントします。