第0章:なぜ微分積分が必要か?(ポケモンで学ぶ導入)
0-1. 機械学習における「変化率」と「最適化」
● 概念:
機械学習では、損失関数(誤差)を最小にするパラメータを求めます。そのために、関数の「どこで一番小さくなるか(極小点)」を探す必要があります。
これには「変化率」=**導関数(微分)**が必須です。
● ポケモンの例:
例えば、「ポケモンが伝説かどうか」を予測するロジスティック回帰モデルを考えます。
特攻(Sp. Atk)とすばやさ(Speed)を特徴量として、
- 特攻が高い → 伝説っぽい?
- すばやさも高い → さらに伝説っぽい?
としたときの 仮説関数 は:
$$
h_\theta = \frac{1}{1 + \exp\left(-(\theta_0 + \theta_1 \cdot \text{SpAtk} + \theta_2 \cdot \text{Speed})\right)}
$$
これは **シグモイド関数(ロジスティック関数)**であり、0〜1の確率を出力します。
● 微分の使いどころ:
このモデルが**「どれだけ間違っているか」**を測る損失関数:
$$
J(\theta) = -\frac{1}{n} \sum_{i=1}^{n} \left[ y_i \log h_\theta(x_i) + (1 - y_i) \log (1 - h_\theta(x_i)) \right]
$$
この関数を 最小化するには微分して傾きを調べる必要がある。
よって「伝説度を予測するモデル」を作るには微分が必須。
0-2. 統計モデルと確率密度の積分表現
● 概念:
連続確率分布(正規分布など)では、「ある範囲にある確率」は面積=積分で求めます。
● ポケモンの例:
たとえば、ポケモンのHPが正規分布すると仮定したとき:
- 平均:$\mu = 70$
- 標準偏差:$\sigma = 15$
「HPが100以上である確率」は:
$$
P(X \geq 100) = \int_{100}^{\infty} \frac{1}{\sqrt{2\pi \cdot 15^2}} \exp\left( -\frac{(x - 70)^2}{2 \cdot 15^2} \right) dx
$$
これは積分計算でしか出せない → 統計的判断には積分が必須。
0-3. 微積と線形代数・確率・統計のつながり
| 領域 | 例(ポケモン文脈) | 必要な数学 |
|---|---|---|
| 微分 | 損失最小化、成長率、勾配降下法 | 導関数、偏微分 |
| 積分 | 確率分布、期待値、Zスコア | 定積分 |
| 線形代数 | 種族値をベクトル化し、類似ポケモン検索 | 行列・内積 |
| 統計学 | 「HPの平均・分散・正規性」などの記述統計、推測統計 | Zスコア、平均、分散 |
| 機械学習 | ロジスティック回帰、線形回帰、ニューラルネット | 多変数関数、最適化 |
0-4. 主な応用と微積との関係
| 応用手法 | 数学的操作 | 関連分野 | |
|---|---|---|---|
| 最小二乗法 | 誤差の二乗和を最小化(微分で最小値) | 回帰分析 | |
| 最尤推定 | 対数尤度を最大化(勾配=0で解く) | 統計推定 | |
| 勾配降下法 | $\theta := \theta - \eta \cdot \nabla J(\theta)$ | 最適化 | |
| ベイズ推論 | 周辺尤度は積分 (\int p(x | \theta)p(\theta)d\theta) | 統計・積分 |
| 正規分布 | 密度関数が指数関数+積分 | 確率論 | |
| 損失関数 | 出力と正解の誤差(例えば交差エントロピー) | モデリング |
まとめ
ポケモンのような具体例でも、「最強ポケモンを予測する」には、損失関数の最小化(微分)、確率分布の積分が不可欠。
統計モデル・機械学習を使いこなすには、微分積分がその基盤となる。
第1章:微分の基本と応用(導関数による変化率)
1-1. 微分の定義(極限を使った導関数)
● 数学的定義:
関数 $f(x)$ の導関数は次の極限で定義されます:
$$
f'(x) = \lim_{h \to 0} \frac{f(x+h) - f(x)}{h}
$$
これは「xがhだけ変化したときの、出力の変化率」を表します。
● ポケモンの例(攻撃力の変化率):
たとえば、レベルに応じて攻撃力(Attack)が変化するとしましょう。
Attack = $A(L) = 10 + 2L + 0.1L^2$
このとき、レベルLにおける攻撃力の変化率(=微分)は:
$$
A'(L) = \frac{d}{dL} (10 + 2L + 0.1L^2) = 2 + 0.2L
$$
つまりレベルが上がるごとに、攻撃力の増加速度も変化します。
1-2. 合成関数と積・商の微分
● 公式(例):
- 合成関数:$\frac{d}{dx} f(g(x)) = f'(g(x)) \cdot g'(x)$
- 積の微分:$\frac{d}{dx}[f(x)g(x)] = f'(x)g(x) + f(x)g'(x)$
● ポケモンの例(相性倍率と攻撃力):
ダメージ = Attack × 相性補正(たとえば炎→草 = 2.0)
もし相性補正も天候や特性で変動し、複数の関数の積になる場合、
その合成関数の微分が必要になります。
1-3. 微分と接線・変化率
● 定義:
接線の傾き=その点での導関数の値。
● ポケモンの例(HP成長のグラフ):
HP = $H(L) = 50 + 3L - 0.05L^2$
$$
H'(L) = 3 - 0.1L
$$
レベルL=10での接線の傾きは:
$H'(10) = 3 - 1 = 2$
これは「このレベルではHPが1上がると、成長率は+2」ということ。
1-4. 導関数と最小・最大(最適化)
● 条件:
- 最大 or 最小:$f'(x) = 0$
- 増減の判定:$f'(x) > 0$:増加,$< 0$:減少
● ポケモンの例(最適レベルでの最大効果):
例:あるわざのダメージ量が次のようにモデル化されたとします:
$$
D(L) = -0.5L^2 + 8L + 100
$$
$$
D'(L) = -1.0L + 8
\Rightarrow D'(L) = 0 \Rightarrow L = 8
$$
つまりレベル8で最大ダメージ → 微分で最大化が可能
● 応用例まとめ
| 応用項目 | 微分との関係 |
|---|---|
| 損失関数の最小化 | 誤差関数の傾きを求め、最も小さい場所を探す(微分ゼロ) |
| 勾配降下法 | 微分(傾き)を元に、関数を少しずつ下っていくアルゴリズム |
| 活性化関数の微分 | ニューラルネットで逆伝播に必要(例:sigmoidの微分=s(1-s)) |
| ポケモン種族値分析 | 種族値関数の最大・最小、上昇スピードを調べて最適育成パターンを探ることが可能 |
Python簡易コード例(ポケモンのHP変化率)
import numpy as np
import matplotlib.pyplot as plt
# レベルとHP関数
L = np.linspace(1, 100, 100)
H = 50 + 3*L - 0.05*L**2
dH = 3 - 0.1*L # 微分
# プロット
plt.plot(L, H, label='HP')
plt.plot(L, dH, label="dHP/dL (Growth Rate)", linestyle='--')
plt.xlabel("Level")
plt.ylabel("HP / Growth Rate")
plt.title("HP and Its Growth Rate (Differentiation)")
plt.legend()
plt.grid()
plt.show()
第2章:偏微分と多変数関数の最適化
● 内容
2-1. 多変数関数と偏微分の定義
-
2変数以上の関数 $f(x, y)$ において、ある1変数を固定して他の変数で微分する操作。
-
例:$f(x, y) = x^2 + 3xy + y^2$
- $\frac{\partial f}{\partial x} = 2x + 3y$
- $\frac{\partial f}{\partial y} = 3x + 2y$
2-2. 勾配ベクトルと最急降下法
-
勾配ベクトル:全ての偏微分を並べたベクトル。
$\nabla f(x, y) = \left(\frac{\partial f}{\partial x}, \frac{\partial f}{\partial y}\right)$ -
最急降下法(Gradient Descent):
$\theta_{t+1} = \theta_t - \eta \nabla f(\theta_t)$- $\eta$:学習率(step size)
- $\theta$:パラメータベクトル
2-3. ヘッセ行列と凸最適化(簡易)
- ヘッセ行列(Hessian):2階の偏微分を並べた行列。
$H_f(x, y) = \begin{bmatrix} \frac{\partial^2 f}{\partial x^2} & \frac{\partial^2 f}{\partial x \partial y} \ \frac{\partial^2 f}{\partial y \partial x} & \frac{\partial^2 f}{\partial y^2} \end{bmatrix}$ - 凸関数であれば、ヘッセ行列が正定値 $\Rightarrow$ 最小点の存在が保証される。
● 応用例
線形回帰:損失関数の偏微分によるパラメータ更新
- 目的:$y = X\beta + \epsilon$
- 損失関数(最小二乗誤差):
$J(\beta) = \frac{1}{2}(y - X\beta)^T(y - X\beta)$ - 勾配:
$\nabla J(\beta) = -X^T(y - X\beta)$ - 更新式:
$\beta \leftarrow \beta - \eta \nabla J(\beta)$
ロジスティック回帰の導出と勾配
- 仮定:$p(y=1|x) = \sigma(w^T x) = \frac{1}{1 + e^{-w^T x}}$
- ロス関数:交差エントロピー誤差
- 勾配:
$\nabla L(w) = X^T(\sigma(Xw) - y)$
ニューラルネットにおける重みの更新
-
誤差逆伝播法(Backpropagation)により、
- 各重みについて偏微分を行い、
- 勾配を計算し、
- 最急降下法で更新。
-
活性化関数の導関数($\sigma'$)が必要。
※ピカチュウが標高 $h(x, y)$ メートルの山を登るイメージで説明可能:
- $x$:東西方向、$y$:南北方向の位置(単位は m)
- $\nabla h(x, y)$:ピカチュウの位置における一番急な登り方向(勾配ベクトル)
- ピカチュウは最急な下り方向($-\nabla h(x, y)$)へと進んで谷底(最小値)を目指す。
- 山の形が凸なら、どの方向に歩いても必ず谷にたどり着ける(最適解の存在)
第3章:積分の基本と統計的解釈 〜ポケモンと学ぶ〜
● 内容
3-1. 定積分と不定積分の定義
-
不定積分:関数 $f(x)$ の原始関数 $F(x)$ を求める操作。
$$
\int f(x)dx = F(x) + C
$$ -
定積分:区間 $[a,b]$ の範囲での面積。
$$
\int_a^b f(x)dx
$$
3-2. 面積=確率の解釈(確率密度関数の直感)
-
ポケモンのすばやさ(Speed)の分布を例に:
- すばやさが $x$ である確率は0だが、ある範囲(例:80~100)にある確率は面積として定義される。
- 正規分布(ガブリアスなど)なら、曲線下の面積が「その範囲にいる確率」。
3-3. 変数変換と積分(u変換)
-
複雑な関数をシンプルな変数に置き換えて積分しやすくする技法:
$$
u = g(x) \Rightarrow \int f(g(x))g'(x) dx = \int f(u) du
$$
3-4. 正規分布と積分(誤差関数)
-
ポケモンの「体力(HP)」の分布を正規分布としたとき、
$$
f(x) = \frac{1}{\sqrt{2\pi\sigma^2}} \exp\left(-\frac{(x - \mu)^2}{2\sigma^2}\right)
$$この関数の積分が「確率」となる。
● 応用例
確率密度関数の積分:全体が1になること
-
例:すばやさの確率分布 $f(x)$ に対して、
$$
\int_{-\infty}^{\infty} f(x) dx = 1
$$
期待値の定義:積分で表す
-
ポケモンのこうげき値 $X$ の期待値は:
$$
\mathbb{E}[X] = \int_{-\infty}^{\infty} x f(x) dx
$$
ベイズ推論における周辺尤度
-
ポケモンのタイプ分布や、隠れた特性(Hidden Ability)に関する推論では、
$$
p(x) = \int p(x|\theta)p(\theta)d\theta
$$のような積分を利用。
第2章:偏微分と多変数関数の最適化
● 内容
2-1. 多変数関数と偏微分の定義
-
2変数以上の関数 $f(x, y)$ において、ある1変数を固定して他の変数で微分する操作。
-
例:$f(x, y) = x^2 + 3xy + y^2$
- $\frac{\partial f}{\partial x} = 2x + 3y$
- $\frac{\partial f}{\partial y} = 3x + 2y$
2-2. 勾配ベクトルと最急降下法
-
勾配ベクトル:全ての偏微分を並べたベクトル。
$\nabla f(x, y) = \left(\frac{\partial f}{\partial x}, \frac{\partial f}{\partial y}\right)$ -
最急降下法(Gradient Descent):
$\theta_{t+1} = \theta_t - \eta \nabla f(\theta_t)$- $\eta$:学習率(step size)
- $\theta$:パラメータベクトル
2-3. ヘッセ行列と凸最適化(簡易)
- ヘッセ行列(Hessian):2階の偏微分を並べた行列。
$H_f(x, y) = \begin{bmatrix} \frac{\partial^2 f}{\partial x^2} & \frac{\partial^2 f}{\partial x \partial y} \ \frac{\partial^2 f}{\partial y \partial x} & \frac{\partial^2 f}{\partial y^2} \end{bmatrix}$ - 凸関数であれば、ヘッセ行列が正定値 $\Rightarrow$ 最小点の存在が保証される。
● 応用例
線形回帰:損失関数の偏微分によるパラメータ更新
- 目的:$y = X\beta + \epsilon$
- 損失関数(最小二乗誤差):
$J(\beta) = \frac{1}{2}(y - X\beta)^T(y - X\beta)$ - 勾配:
$\nabla J(\beta) = -X^T(y - X\beta)$ - 更新式:
$\beta \leftarrow \beta - \eta \nabla J(\beta)$
ロジスティック回帰の導出と勾配
- 仮定:$p(y=1|x) = \sigma(w^T x) = \frac{1}{1 + e^{-w^T x}}$
- ロス関数:交差エントロピー誤差
- 勾配:
$\nabla L(w) = X^T(\sigma(Xw) - y)$
ニューラルネットにおける重みの更新
-
誤差逆伝播法(Backpropagation)により、
- 各重みについて偏微分を行い、
- 勾配を計算し、
- 最急降下法で更新。
-
活性化関数の導関数($\sigma'$)が必要。
※ピカチュウが標高 $h(x, y)$ メートルの山を登るイメージで説明可能:
- $x$:東西方向、$y$:南北方向の位置(単位は m)
- $\nabla h(x, y)$:ピカチュウの位置における一番急な登り方向(勾配ベクトル)
- ピカチュウは最急な下り方向($-\nabla h(x, y)$)へと進んで谷底(最小値)を目指す。
- 山の形が凸なら、どの方向に歩いても必ず谷にたどり着ける(最適解の存在)
第4章:関数近似とテイラー展開
● 内容
4-1. 関数の近似とテイラー展開
-
関数 $f(x)$ を点 $a$ の近傍で多項式で近似する方法:
$$
f(x) \approx f(a) + f'(a)(x - a) + \frac{f''(a)}{2!}(x - a)^2 + \cdots
$$
4-2. 一次近似とニュートン法
-
一次テイラー展開による近似:
$$
f(x) \approx f(a) + f'(a)(x - a)
$$ -
ニュートン法:
$$
x_{n+1} = x_n - \frac{f(x_n)}{f'(x_n)}
$$
4-3. 誤差評価と収束性
- 近似誤差の評価:高次の項が小さければ精度が高い。
- 収束性の条件:導関数の挙動に依存。
● 応用例
ニュートン法による最適化
- 損失関数の極小値を求める際、2階導関数を使って効率的に最適点を探る。
活性化関数や損失関数の近似評価
- sigmoid関数やReLUをテイラー展開して、ニューラルネットの解析に利用。
確率分布の近似(正規近似、ロジスティック近似)
- 二項分布を正規分布で近似する(中心極限定理)など。
- ポケモンの命中率や急所率の計算にも応用可能。