応用数学・機械学習

動画講義の要約

応用数学機械学習について。 導き方込みで忘れていたものについて抜粋して復習。

応用数学

逆行列の求め方

行の基本変形

  • ある行を定数倍する
  • 二つの行を交換する
  • ある行の定数倍を別の行に加える

掃き出し法

行列Aの右隣に単位行列Iをつけ、行基本変形を行い、[I B]に変形する。 つまり [A I] => [I B] この行列Bが行列Aの逆行列𝐴−1

行列式


  \left|
    \begin{array}{ccc}
      a_{11} & a_{12} & a_{13} \\
      a_{21} & a_{22} & a_{23} \\
      a_{31} & a_{32} & a_{33}
    \end{array}
  \right|

行列式とは

正方行列の指標の一つでスカラーで表される大きさみたいなもの。 よく使われるのが、逆行列が存在するかどうかを確認する時で、この行列式の値が0の時、 存在にしない。ということになる。

2次元


 A = \left(
    \begin{array}{ccc}
      a & b \\
      c & d
    \end{array}
  \right)

  \mathrm{det}A = |A| = ad-bc

3次元


 A = \left(
    \begin{array}{ccc}
      a _ {11} & a _ {12} & a _ {13} \\
      a _ {21} & a _ {22} & a _ {23} \\
      a _ {31} & a _ {32} & a _ {33}
    \end{array}
  \right)

  \mathrm{det}A = |A| = a _ {11}\left|
    \begin{array}{ccc}
      a _ {22} & a _ {23} \\
      a _ {32} & a _ {33}
    \end{array}
  \right|
  - a _ {21}\left|
    \begin{array}{ccc}
      a _ {12} & a _ {13} \\
      a _ {32} & a _ {33}
    \end{array}
  \right|
 + a _ {31}\left|
    \begin{array}{ccc}
      a _ {12} & a _ {13} \\
      a _ {22} & a _ {23}
    \end{array}
  \right|

固有値,固有ベクトル


  \left(
    \begin{array}{ccc}
    1 & 4  \\
    2 & 3
    \end{array}
  \right)
  \left(
    \begin{array}{ccc}
    1   \\
    1
    \end{array}
  \right)
  =
   \left(
    \begin{array}{ccc}
    5   \\
    5
    \end{array}
  \right)
   \left(
    \begin{array}{ccc}
    1   \\
    1
    \end{array}
  \right)

  = 5 \left(
    \begin{array}{ccc}
    1   \\
    1
    \end{array}
  \right)

固有値は5, 固有ベクトルは(1,1)

固有値分解

正方行列Aが固有値λ、固有ベクトル \vec{a} を持つとき、

$$ A = V \Lambda V ^ {-1} $$

と分解されること。

ただし Vは固有値ベクトル $$ (\vec{v} _ {1},\vec{v} _ {2},\vec{v} _ {3} , ...) $$

Λは固有値の対角行列 (3*3の正方行列の場合)


  \left(
    \begin{array}{ccc}
    \lambda _ {1}  & 0  & 0 \\
    0  & \lambda _ {2}  & 0 \\
    0 & 0  & \lambda _ {3}
    \end{array}
  \right)

固有値固有ベクトルは複数ある場合もあるので。

固有値分解のメリット

  • ゼロに近い固有値は行列全体に与える影響が小さいため、この固有値を無視すること(次元削減)で、高精度で近似計算できる
  • 近似することで、計算コストが下げられたり、データ量が減らせたり出来る
  •  A ^ {n}の計算がラク

特異値分解


M \vec{v} = \sigma \vec{u}

M ^ T \vec{u} = \sigma \vec{v}

この時このように分解できる事を特異値分解という.


M = USV ^ {-1}

特異値分解 求め方

$$ M = USV ^ {T} $$

両辺に転置をかける $$ MM ^ {T} = USV ^ {T} * (USV ^ {T}) ^ {T} $$

転置の転置は順序が変わる。

$$ (USV ^ {T}) ^ {T} = VS ^ {T} U ^ {T} $$

なので $$ MM ^ {T} = USV ^ {T} * VS ^ {T} U ^ {T} $$

$$ V ^ {T} * V = I $$ 単位行列になるので消える。

$$ MM ^ {T} = USS ^ {T} U ^ {T} $$

Sは対角行列らしいので、

$$ MM ^ {T} = US ^ 2 T $$

これは $$ MM ^ {T} $$ を固有値分解した形  

$$ P A P ^ {-1} $$ に相当する。

すわなち Uを決定するには、

$$ MM ^ {T} $$ を固有値分解すればよい。

特異値分解のメリット

正方行列でなくても分解が出来る。

ベイズ

条件

$$ P(A)P(B|A)= P(B)P(A|B) $$

Aが起きる確率 * Aが起きた条件でBが起きる確率 = Bが起きる確率 * Bが起きた条件でAが起きる確率

確率変数

ある変数の値をとる確率が存在する変数のことです。例えば、さいころを投げて出る目は{1, 2, 3, 4, 5, 6}のいずれかであり、それぞれの目が出る確率は1/6であることから、サイコロの目が確率変数と言える。

$$ P(X) = 1/6 (X =1,2,3,4,5,6) $$

確率分布

確率変数がとる値と、その値がとる確率の対応の様子の対応のこと。 サイコロの場合の確率分布。シンプルだけどイメージがつきやすい。

確率変数 確率
1 1/6
2 1/6
3 1/6
4 1/6
5 1/6
6 1/6

コインの場合の確率分布。これもシンプルだけどイメージがつきやすい。

確率変数 確率
表(=1) 1/2
裏(=0) 1/2

期待値

一回の試行で、確率変数が出す値の平均値。 確率変数Xのとる値をx1,x2,x3,....xn,それに対応する確をp1,p2,p3,....pnとする場合 期待値Eは $$ E = \sum_{i=0}^n x _ {i} p _ {i} $$

サイコロの場合は $$ E = 1 * 1/6 + 2 * 1/6 + ・・・・ + 6 * 1/6 = 3.5 $$

一回サイコロ振ると、3.5が出るという感じ。

分散

データの散らばり具合を示す指標。


\sigma ^ {2} = \frac {1} {n} \sum _ {i=1} ^ n (x _ {i} - \bar {x} ) ^ {2}

共分散

分散を二つのデータに拡張する。


\sigma _ {xy} = \frac{1}{n} \sum_{i=1}^n (x _ {i} - \bar{x}) (y _ {i} - \bar{y})

以下のURLも普通に分かりやすかった。  

(参考) http://arduinopid.web.fc2.com/P6.html

標準偏差

分散にルートする。


\sigma  = \sqrt { \frac{1}{n} \sum_{i=1}^n (x _ {i} - \bar{x}) ^ {2} }

自己情報量


I(x) = - \log (P(x)) = \log (W(x))

シャノンエントロピー

自己情報量の期待値 
H(x) =  E(I(x)) = -E \log (P(x)) = \sum (P(x) \log P(x))

カルバックライブラーダイバージェンス

同じ事象・確率変数における異なる確率分布P,Qの違いを表す。 P、Q を離散確率分布とするとき、P の Q に対するカルバック・ライブラー情報量は以下のように定義される。

$$ D _ {KL} (P||Q)= \sum _{i} P(i) \log \frac {P(i)}{Q(i)} $$

機械学習

自分のためにやってるので、理解してそうなところは省略気味に、理解が浅いところを中心にまとめる。

線形回帰モデル

データを関数にして予測する、というのが回帰分析で、そのグラフが線形な場合は線形回帰という。

説明変数が1次元(一つだけのx)の時で考えてみる。

予測グラフ $$ \hat{y} = \omega _ {1} x + \omega _ {0} $$

現状のデータを下のように考える。予測された方程式からの誤差が今の実測値である。 $$ y = \omega _ {1} x + \omega _ {0} + \epsilon $$

平均二乗誤差

データの個数をn_train個とすると $$ E = \frac {1} {n _ {train}} \sum _ {i=1}^ {n_{train}} ( ( \omega _ {1} x + \omega _ {0} ) - y) ^ 2 $$

要するに予測値と実データの差の2乗和平均

 最小二乗法

上記式が最小となるような(誤差が一番少ない)ω0,ω1を求める。解析的にとけるらしい。 そうするとω0,ω1がもとまり、予測グラフが出来上がる。

非線形回帰モデル

そのグラフが非線形な場合は線形回帰。

線形回帰時のxをφ(x)とする。もうyはxの1次関数ではないので。 xについてには非線形だが、重みについては線形のまま。 φは多項式とする。(たとえば j = 9なら9次関数)

$$ \phi _{j} = x ^ j $$

i番目のデータ .基底関数がk個 $$ y _ {i} = \omega _ 0 + \sum _ {j=1}^ {k} \omega _ {j} \phi _{j} (x _ {i}) + + \epsilon _ {i} $$

説明変数がm個

$$ x _ {i} = (x _ {i1}, x _ {i2}, ....,x _ {im}) $$

未知パラメータ(ω0やω1など)は線形回帰モデルと同様に最小2乗法や最尤法により推定する。

$$ \hat {y} = \phi \hat \omega $$

$$ \hat \omega = (\phi ^ {t} \phi ^ {-1}) \phi ^ {t} y $$

過学習

基底関数を増やすと(6次関数,7次関数, .....)、確かにテストデータに対しては精度は上がるが、検証データに対して同じように精度が上がるとは限らない。→ 過学習

正則化

パラメータの値が大きいと過学習が起きやすい。 そのためにパラメータの大きくなりすぎないように、パラメータの関数を追加する。

この関数の事を正則化項、あるいは罰則化項という。2次関数の時L2ノルム、1次の時はL1ノルム

ロジスティック回帰

分類問題.ベルヌーイ分布を利用する。1回の試行での確率 $$ P(y) = p ^ y (1 - p) ^ {1 -y} $$

すなわち。確率変数が y = 0 or 1の離散値と仮定 y = 1の時、 $$ P(1) = p ^ 1 (1 - p) ^ {1 -1} = p (1 - p) ^ {0} = p $$

確率変数 y = 0の時、 $$ P(0) = 1 - p $$

n回の試行での同時確率

1回目 $$ P(y ^ {1}) = p ^ {y ^ {1}} (1 - p) ^ {1 -y ^ {1}} $$

2回目 $$ P(y ^ {2}) = p ^ {y ^ {2}} (1 - p) ^ {1 -y ^ {2}} $$

つまりn回の試行で、y1,y2,....ynが同時におこる確率は

$$ P(y1,y2,....yn;p) = \prod_{i=1}^n p ^ {y ^ {i}} (1 - p) ^ {1 -y ^ {i}} $$

y1,y2,...ynは既知。たとえばコイン投げだと、1回目 表、 2回目 裏... で、これからその背後にある確率pを求めたい。

尤度関数とは

上記式において、データを固定しパラメータを変化させる事。 上記だとy1,y2,...ynは既知のデータ確率pが未知のパラメータにあたる。 となると、 上記式はy1,y2,...ynは固定で変数ではなくなるので、確率pをパラメータとする関数とみなせる。 これを尤度関数という。

シグモイド関数

入力を何かしらの重みで変換し、シグモイド関数(αとする)を使用して確率へと変換させると考えると

$$ p _ 1 = \alpha (w ^ T x _ 1) $$

$$ p _ n = \alpha (w ^ T x _ n) $$

とおいていけるので、結局尤度関数は ωの関数となり、これがパラメータ。

最尤推定

尤度を最大にするパラメータ(上記の場合だとω)を求める推定方法。 ωの成分はω0,ω1など。ω => ω0,ω1, ...とし、対数をとる。

$$ - \log L (\omega _ 0, \omega _ 1, ... ,\omega _ m) = \sum_{i=1}^n ( y _ {i} \log p _ {i} + (1 - y _ {i}) \log (1 - p _ {i})) $$

↑ EとするとEが最小になる ω0,ω1...を探す

勾配降下法

解析的には解けない。 Eが最小になる方向にどんどん進んでいく。 Eを パラメータで微分し、その方向で進んでいく。

確率的勾配法

勾配降下法を用いる時、全データだと計算量が多いので、いくつかにピックアップして計算をすすめていく。

主成分分析

たくさんの説明変数があるグラフで、より重要な説明変数だけに絞ったり、もしくは別の説明変数に変換したりして 要約しなおす分析のやり方。

次元圧縮するという事。これは、分散が最大となる方向に線形変換する。

k近傍法

教師あり学習の分類問題。 学習データを座標上ににプロット、そこに未知のデータが入ってくる。 そこから距離が近い順に任意のK個を取得し、多数決でデータが属するクラスを推定する。

f:id:foino74:20210107225128p:plain

kmeans

教師なし学習の分類問題 データの集合が座標上に存在するとする。

(参考) https://toukei-lab.com/k-means

f:id:foino74:20210107225220p:plain

SVM

分類問題の一つ。クラスを明確に分ける境界線を引くための手法 主に2値分類について使われる。データの集合が座標上に存在するとする。

この図でいうと、決定境界の左右の線がサポートベクトルで真ん中の決定境界がちょうど中間のベクトル。このベクトルがマージンが最大化されたベクトルになるので、この線で境界線を引いて分類する手法をSVMという。

f:id:foino74:20210107225236p:plain

https://kenyu-life.com/2019/02/11/support_vector_machine/