#はじめに
今年もつつがなく1か月が過ぎてしまったので、思い立って新しいことを始めようと思いました。
で、プログラミングやってみよう→目標はAI? Deep Learning? を人並みに理解する(暫定)→本読むか→読んだからにはアウトプットしたい、となって、Qiitaに備忘録がてら初投稿した次第です。
とりとめのない感想と疑問点(と後で調べたこと)がほとんどなので、「初心者の理解ってこんなもんかね」と眺めていただければありがたいです(もっと書くべき箇所、次に読むべき本、さらにやるべきこと等アドバイスいただけたらもっとありがたいです)。
なお、『ゼロから作る~』の本をお持ちの方は、お手数ですが手元に置いていただくとページ数等参照できるかと思います。
#前提(読む前のわたしのスペック)
- 大学の文系学部卒
- Deep Learningと全然関係ない職業
- 数学は好き(大学への数学とかやってた)
- プログラミング歴2日(昨日(2022/02/04)ProgateでPythonコースを修了?した)
- 読書はする方(新書が主)
- 機械学習とDeep Learningの違いもよくわかってない
#読んだ本と選んだ理由
『ゼロから作るDeep Learning ―Pythonで学ぶディープラーニングの理論と実装』[初版第14刷](斎藤康毅 著)
- Deep Learningでググったら結構おすすめされていた
- 帯の「20万人の読者が選んだディープラーニング入門書の決定版!」にベットした
- 本屋さんでパラパラめくった限りでは、Python初心者でも読み通せそうだった
- おらいりーの装幀がエンジニアっぽい!
#読んだ感想・メモ
##1章 Python入門
- Numpyって「なんぱい」って読むの? 「にゅんぱい」?(p.1)
- なんぱい or なむぱい
- あとpandasはpanel dataが由来なのウケるな
- 「ライブラリー」じゃなくて「ライブラリ」なのがかっこいい(p.2)
- JIS規格が「情報処理」の分野に限り、3音以上の用語の末尾伸ばし音は省略するらしい
- 読みが「らいぶらりー」だとしたら、「あはれ」を「あわれ」と読む趣き
- Anacondaの由来はPythonのシンボルのヘビから?(p.3)
- わからん
- 「あっ、これProgateでやったところだ!」(p.4~11)
- さらっとコラムでテンソルが出てきてびびった(p.14)
- Matplotlibのグラフの描画、arrangeメソッドで細かく刻んで生成するって考え方がおもしろい(p.16)
- シャーペンで紙に描くのってアナログ(デジタルの逆)なんだなあと改めて思った
##2章 パーセプトロン
- 神経細胞の発火からパーセプトロンを思いつくの天才か
- パーセプトロンからAND、NAND、ORゲートを組み上げていくの、『原論』感ある(p.23~25)
- 違ったらすみません
- カラスマークのコラム、読書2週目以降に効いてきて本が立体的に見えそう
- パーセプトロンのパラメータを決めているのは人間(p.25)、とか
- 「2.4 パーセプトロンの限界」で突然デカルト座標系が出てくるのも何となく意味ありげ(p.29)
- NANDゲートの組み合わせだけでコンピュータの処理を再現可能(p.35)
- すごいけどなぜ
##3章 ニューラルネットワーク
- 導入の「パーセプトロンについては良いニュースと悪いニュースがありました」(p.39)って文読んで、思わず奥付の著者名見てしまった
- 翻訳調の文章の方が論理的に正確な文章が書ける? もしかして英語で草稿書いて和訳してる?
- でもこの文体好き
- シグモイド関数どこから出てきた(p.45)
- シグマ(ς)っぽいからしぐもいど
- odds(確率pに対して、その事象が起こる確率を起こらない確率で割った値)の対数(logit)、をpの関数とみなしたもの(logit関数)の逆関数
- 微分が簡単、二値分類から多クラス分類に拡張可能(ソフトマックス関数)
- MNIST(p.72)←なんて読むの
- えむにすと、らしい
- ModifiedされたNIST(米国立標準技術研究所)のデータベース
- あと誰がこんなたくさんのデータセット用意したの
- そりゃNISTか
- えむにすと、らしい
##4章 ニューラルネットワークの学習
- 「これはとても素晴らしいニュースです!」(p.83)
- 人から機械への「パラダイムシフト」の図、わかりやすい(p.86)
- 「人が問題解決」→「人が特徴量を抽出(SIFT、SURF、HOG等)、それを機械(SVM、KNN等の識別器)が学習」→「機械が特徴量までも学習(ニューラルネットワーク(層を深くしたのがディープラーニング)」
- ディープラーニングは、「end-to-end machine learning」と呼ばれることがあります(p.86)
- やっぱりカラスは神
- ここページの端を三角に折った
- 過学習(overfitting)を避けることは、機械学習の重要な課題(p.87)
- 人間の学習にこじつけてゆるふわ評論書けそう
- 書かない
- 人間の学習にこじつけてゆるふわ評論書けそう
- 交差エントロピー誤差?(p.89)
- 2事象それぞれの確率の非類似性の指標(以下ソースはWikipedia)
- エントロピーはある事象が起きた際、それがどれだけ起こりにくいか(珍しい出来事ならより多くの情報を含んでいる)
- Wikipediaの「情報量」の記事読んでたら、「エントロピー」がゲシュタルト崩壊した
- わかったようでわからないから、時間あるときに数式を追ってみることにする
- 数値微分(p.99 コラム等)、1章のグラフの描画と通ずるデジタルの感動がある
- 勾配(すべての変数の偏微分をベクトルとしてまとめたもの)につながるなら、これぞニューラルネットワークの中核では?
- 発明者は損失関数とどっちから先に思いついたんだろうか
- 損失関数もコアだよね
- 損失関数の値が減るgraphが自分で描けたところで、「学習」を学習した(p.119)
- ミニバッチの損失関数の値を減らしたい→そのために各重みパラメータの勾配を求める、で、更新するのがニューラルネットワークの学習手順(p.113)
- 確率的(∵無作為にミニバッチのデータを選んでるから)勾配降下法(SGD:Stochastic Gradient Descent)という
- 「情報」の期末試験の穴埋め問題で書かされそう
- ここもページの端を折った
- 確率的(∵無作為にミニバッチのデータを選んでるから)勾配降下法(SGD:Stochastic Gradient Descent)という
##5章 誤差逆伝播法
- 誤差逆伝播法:ニューラルネットワークの学習手順中「勾配を求める」第2の方法(p.123)
- 計算グラフ上の逆伝播に対応するのが、連鎖律(「局所的な微分」を伝達する原理)(p.129)
- 図が多用されていて分かりやすい!(p.124等多数)
- 誤差逆伝播法の実装、手が疲れた(p.157~)
- 「レイヤによるモジュール化によって、ニューラルネットワークでは、レイヤを自由に組み合わせることができ、自分の好きなネットワークを簡単に作ることができるようになるのです」(p.163)
- ニューラルネットワーク、完全に理解した(なお)
- 勾配確認(数値微分と誤差逆伝播法の結果を比較して、後者の実装に誤りがないことを確認するやつ)、実務でもよくやるのかな?(p.161)
#ここまでを振り返って
- Python難しい! 数式分からない! よりも、ニューラルネットワークの仕組みがどんどん見えてくる面白さが打ち勝った
- 書籍代3,400円+税でこの満足度は非常にコスパ高い
- 数学かじっといてよかった(微積分やら線形代数やら)
- でもまだ正確な理解には及んでいない感ある
- Affine変換とかentropyとかをもっと俯瞰した文脈で分かってたらもっと感動できるのかも
- 機械学習とDeep Learningの違いはおぼろげながら分かったと思う(たぶん)
- Pythonでの実装、もしかして手打ちじゃなくてソースコードのコピペでもよかった?
- 6章からもがんばります!