寝ても起きてもテンソルテンソル!
いつものように入門書「TensorFlow2プログラミング実装ハンドブック」の通りに動かしています.わたしはPythonをほとんど知らないのでPythonのクラスのsourceを読んでも判らんので困っています.
第4章では初歩的なニューラルネットが登場します.W修正式の導出は第3章よりもややこしくなっています.ややこしくても原理は同じです.下図の出力に現れた誤差をWで偏微分しまくりです.
第4章は「ロジスティック回帰」という計算をニューラルネットでやる方法を説明しているのだけど、わたしはロジスティックとか回帰という言葉を知りません.統計用語でしょうか?
ともあれやろうとしていることはこうゆうことだと思います.
・N次元ベクトルデータXが無数にある
・Xをplotすると下図のように2つの山に分かれて分布しているとする
・Xに「赤」「青」という属性を与えて分類するのが最終目的
・その分類をニューラルネットの学習(勾配降下法)で最適化する
・Xの一部は教師データであり、赤青の正解を持っている
↓「勾配降下法」に依らずしても解く方法はあります.固有値ベクトルを求めて、固有値ベクトルを基底とする座標変換をして、原点より右側ならパターン赤、原点より左側ならパターン青、と分類するのでも構わないはずです.
そう考えるとこんな風に思います.
・ニューラルネットにベクトルXが入力され、Xの各要素に重みづけWが掛け算される・Wもベクトルだから、Xに重みづけWを掛けるのは「XとWの内積」を計算するのと同じである
・Wはニューラルネットの学習が進むにつれて修正されてゆき最終的には固有値ベクトル(=基底)に収斂してゆくのだろう
・Wが基底ならば、XとWの内積は座標変換計算そのものである
もっとも、ニューラルネットには心が無いので、そんな手の込んだ計算をしているとは自覚してません.人間がWの修正式を適切に設計してニューラルネットに組み込んでやったから赤青判定が上手に働いてるだけです.
虚しいです.
ヒトがWの修正式を解いてあげて、ヒトがニューラルネットに実装してあげなくちゃいけません.ニューラルネットには自力で学習方法を模索する能力は無いんです.つまり機械学習とは「教師あり学習のオートメーション化」に過ぎません.虚しいです.
第4章の後半では、画像を靴・ズボン・シャツ・バッグ、、、などに分類するより複雑な例が解説されています.28x28pixの画像が784次元ベクトルXとしてニューラルネットへ入力されます.784次元空間に占めるズボンの配置を特定するようなWの修正式がヒトによってニューラルネットに組み込まれています.スケールは大きくても原理は赤青分類と同じです.虚しい.
次回はTensorFlow2のsourceを追ってみます.
かしこ