【読書感想文】ゼロから作るDeep Learning Pythonで作るんだって・・・【ラジコン自動運転?】

スポンサーリンク
広告

プログラムの本って、ほとんど買わない(笑)

Gitがあったり、ネット上にいろんな情報が出ているので、学生時代は沢山かったけど、それ以降は、ほとんとプログラムの本は買わないんですよね。。 Microsoft全盛時代はMSDNとかをとっていたり、S言語やRをやっていたころは、Wikiが出てきていて、その方が、コードをコピペできたりしてよかった。。 今は、コードにあふれているような状況だから、何からやったらいいか分かんないよねぇ~。。僕らの頃の方が勉強の最初のステップは楽だったかも。。でも今のことは全然わからない(笑)。。

で・・・学生時代に、ニューラルネットでロボットを動かすのをやってたこともあったり、最近ラジコンも。。こんなのに興味があったりで・・

【妄想企画】Raspberry Pi 2 と OpenCV 3でラジコンの自動運転!?レースできたらおもろそう
まずは、この動画 OpenCV でpythonでニューラルネットワークで、ラジコンを自動運転しています。 OpenCV Python ...

DeepLearningのこと、Pythonのこと少し勉強してみようかと思って、こんな本を買ってみました。

そういえば、2~3年前に、大学の同期から、FacebookのMessageがあって、「Deeplearningって凄そうだけど、どんなものなの?新しいの?」って聞かれて少し調べたんですが、「当時のバックプロバケーションは3段の層だったんだけど、それが増えたんだよね。計算機のパワーやメモリが増えたから学習できることが増えたんじゃないの?」なんて、バックプロバケーションができた時に、多くの人に言われた「パーセプトロンの計算をシグモイド関数でできるようになったんだよね。計算機のパワーの話だよ」っていうのとほとんど同じ答えをしている(笑)

最近、この本を読んで、いろいろ見過ごしていることが、多いのかな?と反省している(笑)

【読書感想文】〈インターネット〉の次に来るもの 未来を決める12の法則【不可避】
未来は予想できるのか? 新しい技術などが次々に出てきて、時代というか世の中がどんどん変わっていきます。そんな時代に、未来は予想できるのか?...

内容

この本は、DeepLearningを使うということの本というよりは、Anaconda、PythonのNumPyライブラリを使って、ニューラルネットの基礎になる行列計算について、各層の計算が何をしているか?学習はどうしているか?ということを解説している本だと思いました。DeepLearningまで、書かれていますが、MINSTの手書き文字を例題にして、パーセプトロンの時代から、バックプロバケーション、CNN(コンボリューションニューラルネット)など最近使われている計算方法について、書かれています。

なんとなくですが・・・

Yann LeCun's Home Page
Yann LeCun's Home Page

に書かれている手法を順序をおって学んでいくという感じです。

DeepLearningを学ぼうと思っている人には、かなり適切な内容なのかな?って思います。

実際にDeepLearningに関することが書かれているのは、8章のみで、8章は、ほとんどがDeepLearningで学習した事例集になっています。

この本で紹介されているPythonのコードは、Gitで手に入れることができるので、Pythonだけで、いろんな手法を試すことができるようになっています。

昔(1990年代)と今は何が違うの??

僕が知りたかったのは、ここですが、この本に書かれているところによると・・(この本、昔のパーセプトロンから始まってくれているので、僕にはわかりやすい。。)

  • ニューロンの活性を表すシグモイド関数よりReLU(ランプ)関数が使われていることが多い。

なぜこんな関数が使われるのか??っていうと、まだまだ計算資源が足りないからなんでしょうね。。シグモイドでも同じような形は作れますから・・・

  • 正規化層や、Dropoutという伝搬経路の欠落などを積極的に使っている

つ~ことは、昔のコンボリューションNN(CNN)とほとんど変わっていないんですね。。あとは、本当にさまざまなテクニックの世界になっていますね。

  • 層を深くするための学習の逆伝搬は、層をスキップして計算してたりする(笑) Microsoftさん、これって物理的には、どういう意味かな?(笑)←そういうことを言うのはオヤジなんでしょうねぇ(笑)
  • 非対称の形のネットや、サイズ違いのコンボリューション層を並列につなげてニューラルネット構成していたりする(笑) Googleさん これって、遠目で見るのと近くを見るってことかな?
  • DropOutっていう方法が面白いのは、それで過学習を回避しようとしているところ。これも計算資源削減?物理的には、ちょっと頭をぶつけて違うニューロン使っている感じですね(笑)
  • DQNっていう強化学習の近似関数を、CNNで作っている。DeepLearnigは、そこに使うのね。。っていうところが偉いんだろうな。Alpha-Goですね。これって。。

とりあえず、僕が興味あるのは、DQNとSegNetっていうやつだな。。ここから少しまた勉強しようっと。。

DQNの説明だと。。

DQNの生い立ち + Deep Q-NetworkをChainerで書いた - Qiita
#はじめにそもそもDQNが作りたかったわけじゃなくて、他の目的でChainerを使いたかったのでその練習にDQNを書いたんですが、せっかくだし公開しようと思いました 公開しました 。またどうせ公開…

これもOPEN AIでPythonライブラリになってる。。また試してみようっと。。ゲームの得点を全体の評価関数にして、ゲームの画面が入力層、ゲームの操作がアウトプット層になってる。。この方法で、あのハッカーは、自動運転とか作ってるのかな?。。なるほど。。

ゼロからDeepまで学ぶ強化学習 - Qiita
ロボットから自動運転車、はては囲碁・将棋といったゲームまで、昨今多くの「AI」が世間をにぎわせています。その中のキーワードとして、「強化学習」というものがあります。そうした意味では、数ある機械学習…

SegNetは、ケンブリッジの方法なんですね。。これだと、道がどこか?とか木があるからどけよ~とかわかるような気もする。。

SegNet: A Deep Convolutional Encoder-Decoder Architecture for Image Segmentation
We present a novel and practical deep fully convolutional neural network architecture for semantic pixel-wise segmentation termed SegNet. This core trainable se...

でも、CPUだけだと、時間がかかりそうですね。。

SegNetをUbuntuで試してみた
OpenCV 機械学習 Deep learning Caffe の環境構築の備忘録 関連する分野は、 画像認識 CV Computer Vision Windows Ubuntu Android

なるほどなぁ~

結局、データ量の増加と、計算機資源の増加に伴って問題となるのは、昔と同じで、実時間というか、許容できる時間で計算できるようにする工夫で、それらの積み重ねなんですね。

ニューラルネットの歴史を学ぶには、このスライドがいいかも。。この記事書いている時に見つけました(笑)

コメントを残していただけるとありがたいです

Loading Facebook Comments ...
%d人のブロガーが「いいね」をつけました。