ディープラーニングの基本を思い出した

就活するときにデータサイエンスを勉強していた一環でディープラーニングを少しやっていたのだが、その後興味が持続せず放っておいていた。最近興味が復活してきたので、もう一回やってみようと思って今日ディープラーニングの基礎を思い出していた。

とりあえず、前に通読した、

をぱらぱらと読み返したのと、新しく

Deep Learning with Python

Deep Learning with Python

を2章まで読んだ。

後者の本は著者が Keras の作者なんだけど、隙あらば Keras の自慢を入れてくるところと、今後の AI の発展について急に熱く語り出すところが良かった。

思い出したこと

よかった話

  • AI の定義:普通は人間がやるような知的なタスクを自動化するための努力
  • 古典的なプログラミングはデータと規則を入力して答えを得るが、機械学習ではデータと答えを入力して規則を得る
  • 機械学習の文脈での学習とは:入力データの有用な表現手法を正解データからのフィードバックの助けを借りて探すこと
  • ディープラーニングは人間の脳とは全く関係ない数学的モデルと考えるべき
  • Kaggle では、構造化データを扱う問題では gradient boost が、知覚的な問題ではディープラーニングが勝ってるので、結局みんな XGBoost と Keras の使い方を覚える必要がある
  • ディープラーニングで扱うデータは、ほとんどの場合以下のカテゴリのいずれかになる
  • numpyのブロードキャストの仕組み
    • 2つの array のndimが異なる場合は次元の拡張が起きる
    • 次元が揃ったら、サイズの小さい方の array が繰り返されて大きい方の array のサイズに合わせられる
  • ディープラーニングは行列演算の連鎖なので、結局連続した幾何学的変換であると思って良い。青色と赤色の紙を重ね合わせてぐしゃぐしゃに丸めることを考える。この状態を入力データとして、この丸まりを解きほぐしていって2枚のまっすぐな別々の紙に戻すのがディープラーニングで分類問題を解くことに対応する
  • ディープラーニングは、例えば467238647273856次元くらいでの話なので、勾配降下法などにおいて、1次元とか2次元での直感が通用すると思わないことが大事