まず最初に
ワイは数学が苦手です.
(きっぱり)
そんなワイにとって救世主と言える一冊を手に入れて読んでます. なかなか興味深い内容です.
Table of Contents
Software Design 別冊 “ITと数学”
技術評論社のIT関連の月刊誌 Software Design で過去に掲載された特集号をまとめ、さらに加筆された一冊です.
副題が”機械学習の基礎知識をトレーニング”とあり, 機械学習に必要な数学の知識をまとめたものです.
仕事で直接機械学習に関わっていませんが, 過去にディジタルフィルタの設計・開発に携わっていて、その中で適応フィルタについて勉強したことがあります.
適応フィルタも一種の機械学習と言えるのですが、フィルタの係数を決定する最小二乗法あたりが良くわかりません.
そのあたりがずっと気になっていて、この本で勉強しなおそうと思った次第.
50の手習い、って言うやつですねw.
この本のありがたいところ、その1
この本のとてもありがたいところが、かなりのページ数を割いて高校の数学の復習、
つまり
- 線形代数
- 微分・積分
これらを分かりやすく、丁寧に解説してます.
そういうと,
高校の教科書で勉強すればええやん
という人、言うひといますよね.
でもね、ちょっと思い起こしてください,
高校の教科書って分かりやすかったですか?
そんなことなかったと記憶してます. それはなぜか?
これって何に使うのかを教えられる前に数式があったから
なんですよね.
微分って会社に入ってから理解しました. (それだけ勉強してこなかった証拠ですがw)
ディジタル変調の開発で、波形の時間関数を一階微分すると角速度、二階微分すると角加速度が求められる、ということから、あー、なるほどね、と理解したわけです. (違ってたらすみません)
ともかく線形代数と微積分の利用目的を背景に分かりやすく説明されているのはワイにとっては救世主です.
特に行列はこんなに詳しく、そしてこういう時に使うんだよ、という解説はたすかります.
あとは統計学の基礎があると完璧なんですけど、それは確かSoftware Design のいつかの号で特集されていたはず.
この本のありがたいところ、その2
高校の数学の復習に加え、数学の勉強の仕方、専門書に出てくる数式の付き合い方にも言及しているところが嬉しいです.
いままで仕事でディジタルフィルタやディジタル変調関連の書籍や文献を読んだ経験ありますが、最初の背景と簡単な概念があって、そのすぐ後に
いきなり数式
最初は頑張って読むのですが、その数式が式変形する際
…このように書ける
おいおい、なんでそんな風に書けるんや、その理由が知りたいんや
…とか思うこと数知れず.
と言いながら自分で書いた文献にはそのままの数式書いたことあるし(笑)
そもそもそれらの文献はある程度の数学的な知識がある読者を対象にしているので、ワイのような読者はOut of Scope なのでしょう( ;∀;)
あと、プログラミングや技術的な質問は職場の同僚にできるけど、数学や英語の質問ってなんかするのがはばかれる、とか、恥ずかしい雰囲気ないですか?
おまえ、そんなもんも知らんのか?
みたいなこと言われたら嫌やなぁ…なんて.
この本を読むと、ワイと同じように思ってたことが書いてあります.
そして
- 文献を読んで出てくる数式が分からなければ飛ばして読んでも良い
- 数式が分からなくてもコードの実装は可能
- ただし、その技術の本質を理解するには数式の理解が必要
とあります. そして、
- 数式の行間を読むのは大事
- それを理解するには手を動かして式変換の過程を理解するのは重要
ともあります.
英語と同様、これを読んだら一発で理解できる、というものでは無く、地道に少しずつ勉強していくことが大事、というのを再認識した次第です.
数学の学び方が書かれている本って、そう無いと思いますよ. 貴重な1冊.
この本のありがたいところ、その3
この本でもう一つありがたいこと. 巻末の特集で関数型プログラミングの記事もあります.
現在仕事でC++を使っていますが、C++は未だ進化する言語で3年に一回、言語標準が更新されます. 最近のC++17などの機能はこの関数型プログラミングを理解しないと使いこなせないような気がしてます.
とはいえ、関数型プログラミングについて調べているのですが、これも今一つ雲をつかむような感じで理解がなかなか進みません.
この本で関数型プログラミングについて理解が進めば仕事に直接のプラスになると思っております.