対象読者
(書籍内記載)
機械学習に興味を持ち始めて理論を勉強してみたいと思っているエンジニア。
(主観)
- 機械学習の実装を触ったことがあるが、数学的な理論づけを知らない学生、社会人。
- scikit-learn内蔵のライブラリのブラックボックスが気になる方。
- 機械学習向きの数学を初めて学ぶ方。
- 高校数学(微積、ベクトル)について基礎的な知識がある方。
- 線形代数を学んだ後だとなお良い。
何を学べるか
回帰、分類のそれぞれのアルゴリズムの根底にある数式について学べます。多くのアルゴリズムを紹介するのではなく、押さえるべき学習手法の基礎を反映した少数にスポットライトを当てて、順序立てて解説されています。それぞれの解説のあと、モデルの評価方法についても言及されます。
魅力
数式の導出がとても慎重です。私は主観で数学が苦手ですが、それでも2〜3日で一冊読み終わり、確かな力になっています。
おそらく、理論に手を出した方ならわかると思いますが、機械学習の理論は、踏み込んだ瞬間から難解な数式に満ち溢れています。しかし、それらは、ベースの考え方の上に、先人が性能と可読性の向上のために改善した姿であると実感するはずです。
図や具体例が頻繁に用いられているため、高校数学の復習も特には必要ないでしょう。
参考資料
以下、私のノートです。大まかな流れは掴めるでしょう。参考までに。
機械学習を理解するための数学の基本
「理論」の側面を強化することを期待する
2024/9/19 読了
Chapter 2 回帰
データの分布に沿う関数を見つける
目的関数 : 誤差の二乗和
- 絶対値ではいけないのか
- 絶対値でもOK。ただし、二乗だと微分がとてもやりやすい。
- 1/2がかけられているのはなぜか
- 目的関数を微分した時に、係数が綺麗になるため。正の数で定数倍しても、グラフが最小値をとる時のxの値は変化しない。
最小化問題 : 目的関数(誤差)を小さくすることが目的
目的関数を微分して、導関数を求めます。導関数の符号と逆方向にパラメータを更新していけば、自然と最小値の方向に動いていくためです。
⇒ 最急降下法(勾配降下法)
最急降下法の弱点 : 計算に時間がかかることと、局所解に捕まってしまうこと。
グラフの形や初期位置によって、全体の最小値ではなく、初期位置近辺の凹部分に収束してしまいます。これを解決する方法が、確率的勾配降下法とミニバッチ法です。
確率的勾配降下法 : パラメータ更新式からΣ(総和記号)を消し、ランダムに選んだ学習データを用いてパラメータを更新します。
ミニバッチ法 : 最急降下法と確率的勾配降下法の中間的な方法で、全データからランダムに選ばれた少数のデータ(ミニバッチ)を使ってパラメータを更新します。
目的関数の微分 : 合成関数の微分を多用します。
多項式回帰 : 多項式の次数を増やした関数を使う手法です。
重回帰 : 複数の変数を扱う回帰分析です。
Chapter 3 分類
重みベクトルを探す ⇒ そのベクトルの法線ベクトルが分類する直線となる
パーセプトロン : 複数の入力を受け取り、それぞれの値に重みをかけて足し上げたものを出力するモデル。弱点は、線形分離可能な問題しか解けないこと。
内積 : 正のとき、二つのベクトルがなす角は180度未満。負のとき、180度より大きい。ベクトルの類似度の指標になります。
重みベクトルの更新 :
まず、ランダムに重みベクトルωを定義し、それに従ってクラス分類関数を定義します。
次に、入力をクラス分類関数に代入し、正解ラベルと同じであればωは変化しません。異なる場合、入力ベクトル(正解ラベルが1のときそのまま、-1のときは向きを反転)とωを合成し、新たなωとします。
このようにして定義された新しいωは、新しいクラス分類関数を形成します。
ロジスティック回帰
シグモイド関数 : クラス分類関数の一つ。入力が0のとき出力は0.5になり、出力が0〜1に収まるため、確率として扱うことができます。
目的関数 : 尤度関数。ただし、計算を容易にするために、対数尤度関数を使用するのが一般的です。
目的関数を導出できたら、微分してパラメータ更新式を出します。
コメント