統計学・機械学習のためのポケモン微分積分学



# 第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変化率）

```python
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をテイラー展開して、ニューラルネットの解析に利用。

#### 確率分布の近似（正規近似、ロジスティック近似）

* 二項分布を正規分布で近似する（中心極限定理）など。
* ポケモンの命中率や急所率の計算にも応用可能。