AI・機械学習の数理

公式と例題で学ぶ ML特有の計算
このページの使い方

AI・機械学習で頻出の計算問題を「公式」→「例題」→「解答の流れ」のセットで解説します。実際に数字を追って計算の感覚をつかみましょう。

1. ニューロンモデル
ニューラルネットワークの1つのニューロンって、数式でどう表せるの?
1つのニューロンは「入力の重み付き和 + バイアス」を計算し、それを「活性化関数」に通す、というシンプルな構造です。
ニューロンの計算式

① 重み付き和(総入力)を求める:

u = w₁x₁ + w₂x₂ + … + wₙxₙ + b

(w = 重み、x = 入力、b = バイアス)

② 活性化関数に通す:

y = f(u)

(f = 活性化関数、y = 出力)

ニューロンモデル x₁ x₂ x₃ w₁ w₂ w₃ Σ + b → f(u) b y 入力 出力 活性化関数
例題:ニューロンの出力計算

問題: 入力 x₁=1.0, x₂=0.5、重み w₁=0.6, w₂=0.8、バイアス b=−0.5 のニューロンがある。活性化関数がステップ関数(u≧0 なら 1、u<0 なら 0)のとき、出力を求めよ

解答の流れ

① 重み付き和を計算:

u = w₁x₁ + w₂x₂ + b = 0.6×1.0 + 0.8×0.5 + (−0.5)

= 0.6 + 0.4 − 0.5 = 0.5

② 活性化関数を適用:

u = 0.5 ≧ 0 なので、y = 1

2. 活性化関数
活性化関数にはどんな種類があるの?
G検定で押さえるべき主な活性化関数を、公式・特徴・計算例とセットで見ていきましょう。
主な活性化関数
名前公式出力範囲主な用途
ステップ関数u≧0→1、u<0→0{0, 1}パーセプトロン(歴史的)
シグモイド関数σ(u) = 1 / (1 + e−u)(0, 1)二値分類の出力層
tanh(双曲線正接)tanh(u) = (eu − e−u) / (eu + e−u)(−1, 1)RNNの隠れ層
ReLUf(u) = max(0, u)[0, ∞)中間層の標準(最も広く使用)
ソフトマックス関数yₖ = euₖ / Σeuᵢ(0, 1) 合計=1多クラス分類の出力層
例題:シグモイド関数

問題: u = 2.0 のとき、シグモイド関数の出力を求めよ(e ≈ 2.718 として計算)

解答の流れ

σ(u) = 1 / (1 + e−u) に u = 2.0 を代入:

u が大きいほど 1 に近づき、u = 0 のとき ちょうど 0.5 になる。

例題:ReLU

問題: 入力 u = −3, 0, 2.5 のそれぞれに ReLU を適用した出力を求めよ

解答の流れ

ReLU: f(u) = max(0, u)(0以下は0、正はそのまま)

とてもシンプル!計算が速く、勾配消失が起きにくいため中間層で標準的に使われる。

例題:ソフトマックス関数

問題: 3クラス分類で出力層の総入力が u₁=2.0, u₂=1.0, u₃=0.1 のとき、各クラスの確率を求めよ

解答の流れ

① 各 euₖ を計算:

② 合計を求める:

Σ = 7.389 + 2.718 + 1.105 = 11.212

③ 各クラスの確率:

合計 = 0.659 + 0.242 + 0.099 = 1.000 ✓(確率の合計は必ず1)

3. 畳み込み演算
CNNの畳み込みって、実際どう計算するの?
フィルタ(カーネル)を入力画像の上でスライドさせながら、重なった部分の要素同士をかけて合計する操作です。これにより画像の特徴(エッジ、模様など)を抽出します。
畳み込みの計算ルール
  • フィルタを入力の左上から順にスライドさせる
  • 重なった領域で「対応する要素同士をかけて、全部足す」
  • ストライド:フィルタをずらす幅(1なら1ピクセルずつ)
  • パディング:入力の周囲をゼロで埋める処理
  • 出力サイズ = (入力サイズ − フィルタサイズ + 2×パディング) / ストライド + 1
例題:畳み込みの計算

問題: 以下の4×4の入力に、2×2のフィルタをストライド1で畳み込みを行い、出力の左上の値を求めよ

入力:

1201
3120
1031
2102

フィルタ:

20
13
解答の流れ

① 左上の2×2領域にフィルタを重ねる:

入力フィルタ
121×2 = 2
202×0 = 0
313×1 = 3
131×3 = 3

② 合計する:

2 + 0 + 3 + 3 = 8(これが出力の左上の値)

③ 出力サイズの計算:

(4 − 2 + 2×0) / 1 + 1 = 3×3

畳み込み演算のイメージ 入力(4×4) 12 31 01 20 10 31 21 02 フィルタ(2×2) 2 0 1 3 出力(3×3) 8 フィルタをスライドさせながら「要素ごとの積の合計」を出力に記録する
4. 学習済みモデルの精度の計算
AIモデルの「精度」ってどうやって測るの?
分類モデルの性能は混同行列をもとに、いくつかの指標で評価します。「陽性(Positive)」「陰性(Negative)」の判定結果と実際の正解を2×2のマスに整理するのがスタートです。
混同行列(Confusion Matrix)
予測: 陽性(P)予測: 陰性(N)
実際: 陽性TP(True Positive / 真陽性)
正しく「陽性」と判定
FN(False Negative / 偽陰性)
陽性なのに「陰性」と誤判定
実際: 陰性FP(False Positive / 偽陽性)
陰性なのに「陽性」と誤判定
TN(True Negative / 真陰性)
正しく「陰性」と判定
精度指標の公式
指標公式意味
正解率(Accuracy)(TP + TN) / (TP + FP + FN + TN)全体のうち正しく判定できた割合
適合率(Precision)TP / (TP + FP)「陽性」と予測したもののうち、本当に陽性だった割合
再現率(Recall)TP / (TP + FN)実際の陽性のうち、正しく「陽性」と予測できた割合
F値(F1スコア)2 × 適合率 × 再現率 / (適合率 + 再現率)適合率と再現率の調和平均
適合率を重視

「陽性と判定したものが本当に陽性か」が重要なとき。迷惑メール判定:正常メールを迷惑と誤判定(FP)すると困る

再現率を重視

「陽性を見逃さない」ことが重要なとき。がん検診:がんを見落とす(FN)と命に関わる

例題:混同行列から各指標を求める

問題: あるスパムメール判定モデルの結果が以下のとき、正解率・適合率・再現率・F値を求めよ

予測: スパム予測: 正常
実際: スパムTP = 80FN = 20
実際: 正常FP = 10TN = 90
解答の流れ

① 正解率(Accuracy):

= (TP + TN) / 全体 = (80 + 90) / (80 + 10 + 20 + 90) = 170 / 200 = 0.85(85%)

② 適合率(Precision):

= TP / (TP + FP) = 80 / (80 + 10) = 80 / 90 ≈ 0.889(88.9%)

「スパムと判定したもの」のうち88.9%が本当にスパム

③ 再現率(Recall):

= TP / (TP + FN) = 80 / (80 + 20) = 80 / 100 = 0.80(80%)

実際のスパム100件のうち80件を正しく検出

④ F値(F1スコア):

= 2 × 0.889 × 0.80 / (0.889 + 0.80) = 2 × 0.711 / 1.689 = 1.422 / 1.689 ≈ 0.842

5. データ処理(正規化・標準化)
学習の前にデータの「前処理」が必要って聞いたけど?
特徴量のスケール(値の範囲)がバラバラだと学習がうまくいかないことがあります。スケールを揃える代表的な方法が正規化(Min-Max)標準化(Z-score)です。
正規化と標準化の公式
手法公式結果の範囲使い分け
正規化(Min-Max) x' = (x − x_min) / (x_max − x_min) [0, 1] 値の範囲を0〜1に揃えたいとき
標準化(Z-score) z = (x − μ) / σ 平均0、標準偏差1 正規分布を仮定できるとき
例題:正規化(Min-Max)

問題: データ {20, 40, 60, 80, 100} を正規化せよ

解答の流れ

x_min = 20、x_max = 100 なので x' = (x − 20) / (100 − 20) = (x − 20) / 80

元の値 x計算正規化後 x'
20(20−20)/800.000
40(40−20)/800.250
60(60−20)/800.500
80(80−20)/800.750
100(100−20)/801.000
例題:標準化(Z-score)

問題: 平均 μ=50、標準偏差 σ=10 のデータで、x=70 の標準化値を求めよ

解答の流れ

z = (x − μ) / σ = (70 − 50) / 10 = 20 / 10 = 2.0

「平均から標準偏差2つ分だけ大きい」ことを意味する。

6. 回帰方程式
回帰って何をする計算なの?
回帰分析は、データの傾向を直線(や曲線)の式で表すことです。最もシンプルな単回帰は「y = ax + b」の直線で、a(傾き)とb(切片)を最小二乗法で求めます。
単回帰の式と最小二乗法

回帰方程式:ŷ = ax + b

a(傾き)= Σ(xᵢ − x̄)(yᵢ − ȳ) / Σ(xᵢ − x̄)²

b(切片)= ȳ − a × x̄

目的:実際の値 y と予測値 ŷ の差(残差)の2乗の合計を最小にする直線を求める

例題:単回帰の計算

問題: 以下のデータから回帰方程式 ŷ = ax + b を求めよ

xy
13
25
36
48
解答の流れ

① 平均を求める:

x̄ = (1+2+3+4)/4 = 10/4 = 2.5

ȳ = (3+5+6+8)/4 = 22/4 = 5.5

② 偏差と積の表を作る:

xᵢyᵢxᵢ−x̄yᵢ−ȳ(xᵢ−x̄)(yᵢ−ȳ)(xᵢ−x̄)²
13−1.5−2.53.752.25
25−0.5−0.50.250.25
360.50.50.250.25
481.52.53.752.25
合計8.005.00

③ 傾き a を求める:

a = 8.00 / 5.00 = 1.6

④ 切片 b を求める:

b = ȳ − a × x̄ = 5.5 − 1.6 × 2.5 = 5.5 − 4.0 = 1.5

⑤ 答え:ŷ = 1.6x + 1.5

例えば x=5 のときの予測値は ŷ = 1.6×5 + 1.5 = 9.5

7. データ点の間の距離
機械学習で「距離」を使うってどういうこと?
k近傍法やk-meansクラスタリングなど、多くのアルゴリズムが「データ同士がどれだけ近いか」を測ります。距離の定義にはいくつか種類があります。
主な距離の公式
距離公式(2次元の場合)特徴
ユークリッド距離 d = √{(x₁−x₂)² + (y₁−y₂)²} 最も一般的。直線距離(ピタゴラスの定理)
マンハッタン距離 d = |x₁−x₂| + |y₁−y₂| 碁盤の目のように縦横のみ移動する距離
コサイン類似度 cos θ = (a·b) / (|a|×|b|) ベクトルの方向の近さ(−1〜1)。1に近いほど類似
ユークリッド距離 vs マンハッタン距離 A(1,1) B(4,5) ユークリッド = 5 横3 縦4 ユークリッド距離 √{(4−1)²+(5−1)²} = √{9+16} = √25 = 5 マンハッタン距離 |4−1| + |5−1| = 3 + 4 = 7
例題:コサイン類似度

問題: ベクトル a = (1, 2) と b = (3, 1) のコサイン類似度を求めよ

解答の流れ

① 内積を求める:

a · b = 1×3 + 2×1 = 3 + 2 = 5

② 各ベクトルの大きさを求める:

|a| = √(1² + 2²) = √5 ≈ 2.236

|b| = √(3² + 1²) = √10 ≈ 3.162

③ コサイン類似度:

cos θ = 5 / (2.236 × 3.162) = 5 / 7.071 ≈ 0.707

1に近い → 方向が比較的似ている(45°の角度)

8. 相互情報量
相互情報量って何を測る指標なの?
相互情報量(Mutual Information)は、2つの確率変数がどれだけ互いに情報を共有しているか(相互依存性)を測る指標です。独立なら 0、関連が強いほど大きな値になります。
相互情報量の公式

I(X; Y) = Σ Σ P(x, y) × log₂{ P(x, y) / (P(x) × P(y)) }

x∈X、y∈Y のすべての組み合わせについて足し合わせる

  • P(x, y):同時確率(x と y が同時に起きる確率)
  • P(x)、P(y):周辺確率(それぞれ単独の確率)
  • X と Y が独立なら P(x,y) = P(x)×P(y) なので log の中が 1 → I = 0
例題:相互情報量の計算

問題: 天気 X = {晴, 雨} と気分 Y = {良い, 悪い} の同時確率が以下のとき、相互情報量 I(X; Y) を求めよ

気分:良い気分:悪い周辺確率 P(x)
0.450.050.50
0.100.400.50
周辺確率 P(y)0.550.451.00
解答の流れ

各組み合わせで P(x,y) × log₂{P(x,y) / (P(x)×P(y))} を計算:

(x, y)P(x,y)P(x)×P(y)P(x,y)/(P(x)×P(y))log₂P(x,y)×log₂
晴, 良い0.450.50×0.55=0.2750.45/0.275≈1.636≈0.7100.45×0.710≈0.320
晴, 悪い0.050.50×0.45=0.2250.05/0.225≈0.222≈−2.1700.05×(−2.170)≈−0.109
雨, 良い0.100.50×0.55=0.2750.10/0.275≈0.364≈−1.4590.10×(−1.459)≈−0.146
雨, 悪い0.400.50×0.45=0.2250.40/0.225≈1.778≈0.8300.40×0.830≈0.332

合計:I(X; Y) = 0.320 − 0.109 − 0.146 + 0.332 ≈ 0.397 ビット

0 より大きい → 天気と気分は独立ではない(関連がある)

直感的にも「晴れだと気分が良い、雨だと悪い」という関連がデータに現れている。

相互情報量のイメージ(情報理論の視点) H(X) 天気の情報量 H(Y) 気分の情報量 I(X;Y) 相互情報量 2つの変数が共有する情報量 = 重なり部分
このページのポイント