家のチューリップ / 2022年4月14日
昨日より最高気温が15度ぐらい低く、だいぶ寒い一日。寒暖差があるからそう感じてるだけで、2・3月にくらべたらこれでもだいぶ暖かいのだけど。
冬に球根を植えたチューリップが数日前から咲き出す。穴ほって植えるだけ(簡単といいつつも、ほぼ妻がやってくれたのだが…)で咲いて偉い。寒かったり明け方や曇りの陽が出ていない時は花が開かず、暖かく陽がさすと花が開く。健気な感じが微笑ましい。
芝桜の花びらも色々なタイプがあるなぁ。これは白とピンクのブレンド。
ベクトル・行列からはじめる最適化数学読み進めは14章、最小二乗識別。2クラス分類と多クラス分類を最小二乗法で行う方法の解説。多クラス分類は二クラス分類をN種分やってargmaxをとるのだけど、N種やるのは計算機効率が悪いがQR分解した結果を使いまわすことで大幅に計算量を削減できる。もしくはワンホット化した値を使う。
機械学習では通常2クラス分類は0,1を当てるのだけど、この本ではわかりやすくするために-1,1を使っていてなるほど。0,1なら0.5が中心だが、-1,1で0が中心のほうが理解しやすいなぁ。softmaxも使わず、シンプルで分かりやすい解説。
章の最後に、ランダムな値を作って説明変数の積をとったものをmax(0, x)
な、いわゆるReLU関数に通して非線形化して特徴量を水増しする。この水増し特徴量を加え、最小二乗法でクラス分類すると、水増し前は約86%の正解率が、水増し後は95%強ほどになってえっビックリ。自分でも書いて試して腑に落ちた、なるほど線形関数では結局特徴表現は変わらないので、非線形化することで意味のある特徴になるのか。なお非線形化しないと、正解率はほぼ変わらない。
ついでに最小二乗解の計算に結構時間がかかっていたので、numpyからjaxに書き換えて試す。ほぼnumpyママ動くし、colabのGPU上で超簡単に動かせて、numpyなら24秒ほどの処理が1-2秒ほどに。3分ぐらいの処理は20秒ほどに。おおお、jaxいいじゃん。こういうやつが欲しかった。