【書評】『Python機械学習プログラミング 達人データサイエンティストによる理論と実践』
衝撃的だ。
このような本は出会ったことがない。
こんなに実践的で理論的で書かれておりvalueがある本を知らない。
本書はPythonで機械学習を勉強するための本だ。
この分野は様々な本が出ているが、こんなにも色々と書かれている本を知らないし、こんなにもvalueがある本を私は知らない。
本書の最後をそのまま引用しよう。
「機械学習の刺激的な旅(中略)を楽しんでいただけただろうか。(中略)この分野の基本的なテーマは全て取り上げた。それらの手法を実際に手に取り、現実の問題を解決するための準備はもう十分に整っているはずだ。」
そうこの本に機械学習について
全て
書かれているのだ。
あとは実装すればいいだけ。
しかも、サンプルコードが全てネット上に上がっている。
こんな素晴らしい本がたったの4,000円。
なんていい世界なんだ。
L1正則化とL2正則化について
絶対忘れそうなので、まとめておく。
(機械学習の本を読んでいると当たり前のように出てくるのですが
当たり前なんですか?)
まず、ちゃんと言葉の整理。
『正則化』
wikipedia先生曰く
「正則化(せいそくか、英: regularization)とは、数学・統計学において、特に機械学習と逆問題でよく使われるが、機械学習で過学習を防いだり、逆問題での不良設定問題を解くために、追加の項を導入する手法である。モデルの複雑さに罰則を科すために導入され、なめらかでないことに罰則をかけたり、パラメータのノルムの大きさに罰則をかけたりする。」
要は
『L1正則化』
不要なパラメータを削りたいことを削る時に使う
『L2正則化』
過学習を抑止するのに役にたつ
この図を見れば一目瞭然!!
(理解するまで30分かかった汗)
(引用:
http://tjo.hatenablog.com/entry/2015/03/03/190000)
最後に3つ言わせてくれ。
・L1L2の「L」の何の略だ?(ルベーグ??)
・こんなことを当たり前のように書くのやめてほしい
・大学の時に教授がノルムノルムとか言っていたけど、もはやキレイだなぁとしか思わない
参考
https://ja.wikipedia.org/wiki/正則化
http://tjo.hatenablog.com/entry/2015/03/03/190000
【機械学習】LPノルムってなんだっけ?
https://qiita.com/kenmatsu4/items/cecb466437da33df2870
Lpノルム
最近のAIについて思っていること
『最近のAIについて思っていること』
AIについてかなり表面的な情報しかとってませんが、思うことがあります。
AIって大きく分けると、
「教師あり学習」
「教師なし学習」
「強化学習」
3つあります。
「教師あり学習」は、
答えを与えるとそれに近いかどうか判別してくれます。
なので、猫の画像を見せておけば、新たに与えた画像が猫であるかどうか判別できます。
動画は画像の集合なので、人が通ったかどうかなんてことも判別できるわけです。そのため、自動運転なんかもできちゃいます。
AIは目を手に入れた!ってのが正しいのはこのためです。
「教師なし学習」は、
主に分類をする際に使われます。
当社のターゲットってどういう風に分類できるんだっけ?みたいな際に使えるし、教師なし学習を教師あり学習にする方法とかもあって、この商品を買ってくれやすいかどうかの分類なんてのもできます。
さて、問題は「強化学習」です。
強化学習って一般に「ある環境内におけるエージェントが、現在の状態を観測し、取るべき行動を決定する問題を扱う機械学習の一種」。
(普通の人には理解不能です)
強化学習を社会実装するのが難しいのです。
アルファ碁は強化学習なんですが、ディープマインド社はなんで「囲碁」をやっているかといえば、このくらいしか社会実装できないからです。
「教師あり学習」みたいに「車の自動運転」みたいなことはできないわけです。
正確には、強化学習を使って社会実装できるものは教師あり学習で社会実装できます。(たぶん)
なので、
強化学習をほいほい実装できるような世界の天才達の脳を、
なにに使うのかをマジで考えて、それを提示できるリーダーに全てかかっていると思います。
強化学習を使うと良いものの例。
今までのデータはあるが本当にそれがベストかどうかわからないようなことに使うとよいです。
そうすると今までのベターからベストを導いてくれます。
(こういうもので、パイがでかいものってなんだ?)
こういう世の中になるといいと思う
こういう世の中になるといいと思う
テクノロジーは常に進化しており、新しいテクノロジーはいくらでも出てきているし今後もそうである。
この”テクノロージー”とエンジニアはどうやって向き合っていけばいいか。
結論はこうだ。
エンジニアは決して「このテクノロジーを使ってある問題を解決しよう」といった態度をとるべきではない。
「ある問題があった際に、このテクノロジーを使えば解決できる」という態度をとるべきである。
例えば、いくらデータベースが進化したからと言っても、データベースを使ってデータをストックして、業務効率化をしようといった提案をするべきではない。
業務効率化という問題がある際に、データベースの利用といった方法で問題を解決すべきだ。
なぜか。
それはそのテクノロジーが最適であるかどうかわからないからである。
昨今のAIのニーズを見ていると違和感しかない。その違和感は、前者だからだ。AIを使って投資のレコメンドとかそのようなものしかない。
これが真の解決策であるだろうか。
〇〇という問題があるから、××を使おうというのが正しい解決策であると思うのだ。
そのためにエンジニアはありとあらゆる分野に目を向ける必要があるし、常に新しいテクノロジーを学ぶ必要があると思った次第。
精進します。
以上。
今年買って1番よかったもの
こんな写真が簡単に撮れちゃう一眼レフです。
【書評】『ゼロから作るDeepLearning』斎藤 康毅 著
この業界ではとても有名な本書。
今更感がありますが、読みました。
結構良い本です。
↓昨年の1位はこの本です。
ITエンジニアに読んでほしい!技術書・ビジネス書 大賞 2017より引用
良かった点と微妙な点を書きます。
良かった点は5つ。
1.第2章パーセプトロンの話がコンピュータの本質的な話をしている気がして感動できる。
人工知能「冬の時代」が到来 - THE ZERO/ONE より引用
2.気合いで読めば丸一日で読める
全部は写経は無理かもしれませんが読めます。
3.pythonに慣れることができる
pythonの変数を宣言しない感じとか、インデックスに意味がある感じとかわかります。
4.チューニングの方法がわかる
6章にまとめて書いてあってとても良いです。
DeepLearningはなんかこうすると良いといった法則があるのでそれを知れて良かったです。
5.第5章の逆伝播の説明が、「まぁ」わかりやすい
「まぁ」が入るのがポイントです。
微妙な点
(著者としては当たり前な話でしょうが)
1.偏微分がわからないと多分読めません
ちゃんと書いてあるぶん、ある程度の知識は必要です。
2.初めてプログラミングする人には、、、
ゼロからって書いてあるから、買って勉強しようとするプログラミング未経験者は多分無理です。
カレントディレクトリを移動できない人は、3章で詰まります。
(私はそもそもオープンにソース公開されていることに知らず、詰まりました)
3.結局は、データの前処理な気がしました、、、
MNISTに対する前処理のところがサンプルコードでは既にされいるので、いざ何かに適用するとすると、そこに膨大な時間がかかるかと思いました。
(それはそうですよね)
結論:
DeepLearningの理論をかじったことがあって、pythonでディレクトリの移動なんてググれば余裕だぜ!っていうpython未経験者にはオススメです。
(狭いですが、いるかと思います)