はじめに
chatGPTをはじめとする大規模言語モデルや画像認識などのディープラーニングは現代のホットな技術の一つです。ただ実際にディープラーニングや機械学習の技術書を見ると、数学からは遠のいていた社会人からすれば複雑な数式に挫折することもあるでしょう。(理系にしろそうでないにしろ)
今回は大学初年度までに習う数学のうち知ってそうだけど知らないものをいくつか取り上げたいと思います。チェックボックス的な使い方を想定し, もしパッとみてわからないものがあれば復習するような準備運動的な使い方をしてもらうことを想定しています。
以下の形式でいきたいと思います。
*「数学用語」* とは?
一言で言うと・・・
どこで使う?・・・
実際の例
目次
- 偏微分
- ベクトル内積
- 転置行列
- 逆行列
- 線形変換
- 固有値・固有ベクトル
- 離散型確率変換・連続型確率変換
- 条件付き確率
- 最尤推定
- ベイズ推定
紹介
偏微分
偏微分とは?
関数fにたくさんの変数があるとき、「ある1つの変数だけをちょっと動かしたときに、結果がどれくらい変わるか(微分)」 を調べるのが偏微分です。
例えば関数fがx, y, zの3つの変数を持つ時
$$
fx = \frac{∂f(x,y,z)}{∂x}
$$
をfをxで偏微分することを表します
どこで使う?
ニューラルネットの学習では, 重みを少しずつ変えながら「誤差(損失関数)」を小さくします。この時に必要なのが偏微分です. 誤差を関数と見立て、それを減少する方向に動かすための方向を求めるわけです.
イメージ
山の地形を考えてください。山をどの方向に降りれば一番早く谷に着けるか?
このとき、東西にちょっと進んだらどれだけ高さが下がる?南北に進んだら?をそれぞれ計算するのが偏微分です。
ベクトル内積
一言でいうと
ベクトル(矢印みたいなもの)の「向きと長さのかけ合わせの度合い」
$$
u \cdot v = |u||v| cosθ
$$
大きさと向きの演算となっている
どこで使う?
類似度を表現する際に利用する. CNNの畳み込み層でフィルターとの内積計算を行うことでフィルターと入力がどれだけ似ているかを取り出す(畳み込み層)
$$
cosθ = \frac{u \cdot v}{|u||v|}
$$
すればコサインで類似度を表現できる (1だと同じベクトル, -1だと真逆のベクトル)
イメージ
2本の矢印を考えて, どれくらい同じ方向を向いているかを数値化するもの.向きが同じなら大きい、90度ならゼロになる
転置行列
一言でいうと
行と列をひっくり返した行列のこと
A=\begin{pmatrix}
a & b & c\\
d & e & f
\end{pmatrix}
として
A^{ \mathrm{ T } } =
\begin{pmatrix}
a & d \\
b & e \\
c & f
\end{pmatrix}
どこで使う?
ニューラルネットで行列の形を合わせるときや内積を行列で表すとき
つまり計算できないので無理やり形を合わせている
イメージ
行列が表なら、右上と左下を線でつないで折り返す感じです
逆行列
一言でいうと
行列の掛け算で「1みたいな役割」をするもの。例えば2×2だったら
A=\begin{pmatrix}
a & b\\
c & d
\end{pmatrix}
$A ^ {-1} A = I$ となる時 $A ^ {-1}$ を逆行列とする
2×2行列の時だけ公式が存在する
A ^ {-1} = \frac{1}{ad-bc}\begin{pmatrix}
d & -b \\
-c & a
\end{pmatrix}
この場合の逆行列の存在する条件は $ ad-bc ≠ 0 $ となり、$det$を用いて以下で定義する
$det A = ad-bc$
どこで使う?
学習時の最適化や、多変量解析で方程式を解くときに出てきます。
イメージ
普通の数字だと 2 の逆数は 1/2 です。同じように行列にも逆数のような「逆行列」があります。
線形変換
一言でいうと
ベクトルに対して直線的に伸ばしたり縮めたり回転させたりする操作
$
u=Wv
$
なおWは行列を表す.
どこで使う?
ニューラルネットの各層は「線形変換 + 活性化関数」でできています.
l番目の層として
$
u^{l}=W^{l}h^{l-1} + b^{l}
$
$
h^{l}=f(u^{l})
$
ただしlは層の番号(1からスタート), bは重みを表す
またfは非線形の活性化関数とする
イメージ
図形を引っ張ったり回転させて形を変える操作
行列はこの線形変換を表す
固有値・固有ベクトル
一言でいうと
行列で変換したときに、方向が変わらない特別なベクトルと、その伸び縮みの倍率。
$
Ax=λEx
$
変形すると
$
(A-λE)x = 0
$
となり, 逆行列が存在するとしたらx=0という自明な解しか持たなくなる. そのため 逆行列が存在しない時にこの式を成り立たせる固有値λが存在する. 数式化すると以下
$
det (A-λE) = 0
$
どこで使う?
データに対する特徴量抽出を行う際の主成分分析(PCA)
行列の性質調査
イメージ
回転させたり伸ばしたりする変換の中で、「この方向だけは方向が変わらない」という特別な向きが固有ベクトル。その時どれくらい伸びるかが固有値です。
離散型確率変数・連続型確率変数
一言でいうと
離散型確率変数とはサイコロの目のように、数えられる結果をとる確率変数
連続型確率変数とは温度や身長のように、無限に細かい値を取れる確率変数
どこで使う?
カテゴリ分類のラベルや、二値(0 or 1)のデータなど
正規分布(ガウス分布)など様々なデータ分布を表現するのに使う
イメージ
例:1〜6の目が出るサイコロ, コインの表裏など
例:人の身長は155.2cmとか、160.873cmとか、連続して値を取れる
身長170cmの人出る確率は?を求める時は無数の範囲から170cmビタである確率を求めなければならないため, 連続型確率変数ではこの値は0となる
条件付き確率
一言でいうと
ある条件がわかったときに、別の出来事が起こる確率。
$
P(X|D) = \frac{P(X∩D)}{P(D)}
$
Dが起きている要素に対してDが起きていてXも起きている要素を割り算することで求められるからです.
どこで使う?
スパムフィルタ(メールが「スパム単語」を含むとき、スパムの確率)
音声認識(ある音を聞いたとき、どの単語か)
推論全般(Aが起きたときにBが起こる可能性)
イメージ
雨が降っている(条件)ときに、傘をさしている人に出会う確率。
「ただの確率」ではなく「○○という状況のとき」という条件が付く
最尤推定(MLE: Maximum Likelihood Estimation)
一言でいうと
観測データを一番もっともらしく説明できるパラメータを探す方法。
例えば何かが起こる確率をθとして
$
\frac{∂L(θ)}{∂θ} = 0
$
となるθを求めることをいう
どこで使う?
- モデルの学習(回帰分析、分類モデル)
- 正規分布の平均・分散推定
- ニューラルネットの重み最適化(誤差関数を最小化するのと同じ考え方)
イメージ
お店で売れたケーキの重さを何度も測ったとき、「このデータが一番起こりそうな平均と分散はどれか?」を探す感じ
ベイズ推定
一言でいうと
元々の仮説(事前情報)と観測データを組み合わせてより現実的な確率を更新する方法
ベイズの定理に基づく. 以下でベイズの定理について説明します.
条件付き確率の式より事象Dが起きた場合にXが起きる確率は以下で求められる
$
P(X|D) = \frac{P(X∩D)}{P(D)}
$
一方で
$
P(D|X) = \frac{P(D∩X)}{P(X)}
$
ここで $P(X∩D) = P(D∩X)$ より
$
P(X|D)P(D) = P(X∩D) = P(D|X)P(X)
$
最終系のベイズの定理が以下
$
P(X|D) = P(X∩D) = \frac{P(D|X) P(X)}{P(D)}
$
どこで使う?
- スパム判定などのベイズ分類器
- 未知パラメータの推定(ベイズ回帰)
- 強化学習やフィルタ(カルマンフィルタ、粒子フィルタ)
イメージ
占い師が「Aさんは雨女」と信じていて、天気のデータを見ながら「やっぱり今日は晴れだから雨女説はちょっと下げよう」と仮説を修正していく感じ