AI・機械学習で頻出の計算問題を「公式」→「例題」→「解答の流れ」のセットで解説します。実際に数字を追って計算の感覚をつかみましょう。
① 重み付き和(総入力)を求める:
u = w₁x₁ + w₂x₂ + … + wₙxₙ + b
(w = 重み、x = 入力、b = バイアス)
② 活性化関数に通す:
y = f(u)
(f = 活性化関数、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
| 名前 | 公式 | 出力範囲 | 主な用途 |
|---|---|---|---|
| ステップ関数 | 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の隠れ層 |
| ReLU | f(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 になる。
問題: 入力 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)
問題: 以下の4×4の入力に、2×2のフィルタをストライド1で畳み込みを行い、出力の左上の値を求めよ
入力:
| 1 | 2 | 0 | 1 |
| 3 | 1 | 2 | 0 |
| 1 | 0 | 3 | 1 |
| 2 | 1 | 0 | 2 |
フィルタ:
| 2 | 0 |
| 1 | 3 |
① 左上の2×2領域にフィルタを重ねる:
| 入力 | フィルタ | 積 |
|---|---|---|
| 1 | 2 | 1×2 = 2 |
| 2 | 0 | 2×0 = 0 |
| 3 | 1 | 3×1 = 3 |
| 1 | 3 | 1×3 = 3 |
② 合計する:
2 + 0 + 3 + 3 = 8(これが出力の左上の値)
③ 出力サイズの計算:
(4 − 2 + 2×0) / 1 + 1 = 3×3
| 予測: 陽性(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 = 80 | FN = 20 |
| 実際: 正常 | FP = 10 | TN = 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
| 手法 | 公式 | 結果の範囲 | 使い分け |
|---|---|---|---|
| 正規化(Min-Max) | x' = (x − x_min) / (x_max − x_min) | [0, 1] | 値の範囲を0〜1に揃えたいとき |
| 標準化(Z-score) | z = (x − μ) / σ | 平均0、標準偏差1 | 正規分布を仮定できるとき |
問題: データ {20, 40, 60, 80, 100} を正規化せよ
x_min = 20、x_max = 100 なので x' = (x − 20) / (100 − 20) = (x − 20) / 80
| 元の値 x | 計算 | 正規化後 x' |
|---|---|---|
| 20 | (20−20)/80 | 0.000 |
| 40 | (40−20)/80 | 0.250 |
| 60 | (60−20)/80 | 0.500 |
| 80 | (80−20)/80 | 0.750 |
| 100 | (100−20)/80 | 1.000 |
問題: 平均 μ=50、標準偏差 σ=10 のデータで、x=70 の標準化値を求めよ
z = (x − μ) / σ = (70 − 50) / 10 = 20 / 10 = 2.0
「平均から標準偏差2つ分だけ大きい」ことを意味する。
回帰方程式:ŷ = ax + b
a(傾き)= Σ(xᵢ − x̄)(yᵢ − ȳ) / Σ(xᵢ − x̄)²
b(切片)= ȳ − a × x̄
目的:実際の値 y と予測値 ŷ の差(残差)の2乗の合計を最小にする直線を求める
問題: 以下のデータから回帰方程式 ŷ = ax + b を求めよ
| x | y |
|---|---|
| 1 | 3 |
| 2 | 5 |
| 3 | 6 |
| 4 | 8 |
① 平均を求める:
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̄)² |
|---|---|---|---|---|---|
| 1 | 3 | −1.5 | −2.5 | 3.75 | 2.25 |
| 2 | 5 | −0.5 | −0.5 | 0.25 | 0.25 |
| 3 | 6 | 0.5 | 0.5 | 0.25 | 0.25 |
| 4 | 8 | 1.5 | 2.5 | 3.75 | 2.25 |
| 合計 | 8.00 | 5.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
| 距離 | 公式(2次元の場合) | 特徴 |
|---|---|---|
| ユークリッド距離 | d = √{(x₁−x₂)² + (y₁−y₂)²} | 最も一般的。直線距離(ピタゴラスの定理) |
| マンハッタン距離 | d = |x₁−x₂| + |y₁−y₂| | 碁盤の目のように縦横のみ移動する距離 |
| コサイン類似度 | cos θ = (a·b) / (|a|×|b|) | ベクトルの方向の近さ(−1〜1)。1に近いほど類似 |
問題: ベクトル 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°の角度)
I(X; Y) = Σ Σ P(x, y) × log₂{ P(x, y) / (P(x) × P(y)) }
x∈X、y∈Y のすべての組み合わせについて足し合わせる
問題: 天気 X = {晴, 雨} と気分 Y = {良い, 悪い} の同時確率が以下のとき、相互情報量 I(X; Y) を求めよ
| 気分:良い | 気分:悪い | 周辺確率 P(x) | |
|---|---|---|---|
| 晴 | 0.45 | 0.05 | 0.50 |
| 雨 | 0.10 | 0.40 | 0.50 |
| 周辺確率 P(y) | 0.55 | 0.45 | 1.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.45 | 0.50×0.55=0.275 | 0.45/0.275≈1.636 | ≈0.710 | 0.45×0.710≈0.320 |
| 晴, 悪い | 0.05 | 0.50×0.45=0.225 | 0.05/0.225≈0.222 | ≈−2.170 | 0.05×(−2.170)≈−0.109 |
| 雨, 良い | 0.10 | 0.50×0.55=0.275 | 0.10/0.275≈0.364 | ≈−1.459 | 0.10×(−1.459)≈−0.146 |
| 雨, 悪い | 0.40 | 0.50×0.45=0.225 | 0.40/0.225≈1.778 | ≈0.830 | 0.40×0.830≈0.332 |
合計:I(X; Y) = 0.320 − 0.109 − 0.146 + 0.332 ≈ 0.397 ビット
0 より大きい → 天気と気分は独立ではない(関連がある)
直感的にも「晴れだと気分が良い、雨だと悪い」という関連がデータに現れている。