0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

G検定対策で暗記に逃げると落ちる 5 つの論点 — 全部、手を動かして数字で確かめた

0
Posted at

G 検定第 6 回の申込が始まりました(2026 年 9 月 11 日開始、10 月 29 日締切、試験は 11 月 6〜7 日)。
ここから 2 か月が学習期間です。

私は第 3 回(2026 年)に合格しました。そのとき一番つらかったのが、
「用語は言えるのに、なぜそうなるのかは言えない」状態のまま進むことでした。
G 検定は選択式なので、それでもある程度は取れてしまいます。だから余計に危ない。

この記事では、暗記で通り過ぎやすいのに、数字を出すと一瞬で腑に落ちる論点を 5 つ扱います。
全部、この記事のために実際に動かして出した値です。コードも載せるので、手元で再現できます。


1. 勾配消失は「なんとなく消える」のではない。0.25 の累乗で消える

暗記で済ませがちな説明

シグモイド関数を使うと層が深いときに勾配が消失するため、ReLU が使われる。

これは正しいのですが、なぜ消えるのかが抜けています。ここが穴のままだと、
「ReLU にすれば解決」以上のことが言えません。

数字を出す

シグモイド $\sigma(x) = 1/(1+e^{-x})$ の微分は $\sigma'(x) = \sigma(x)(1-\sigma(x))$ です。
この関数の最大値を出してみます。

import numpy as np
def sig(x): return 1 / (1 + np.exp(-x))
def dsig(x): s = sig(x); return s * (1 - s)

xs = np.linspace(-8, 8, 100001)
print(dsig(xs).max(), xs[dsig(xs).argmax()])
# → 0.25  (x = 0.0)

最大でも 0.25 です。 $x=0$ のときが一番大きく、そこから離れるほど小さくなります。

誤差逆伝播は連鎖律なので、層をさかのぼるたびにこの値が掛かります。
一番条件が良いときですら 0.25 倍ということは、

0.25^5  = 9.77e-04
0.25^10 = 9.54e-07
0.25^20 = 9.10e-13
0.25^30 = 8.67e-19

10 層で約 100 万分の 1($0.25^{10}=1/1{,}048{,}576$)、30 層では約 115 京分の 1 です。
「消える」というより、掛け算の性質としてそうなるしかないわけです。

実際のネットワークで測る

理屈だけでなく、実際に層を重ねて勾配の大きさを測りました
(各層 64 ユニット、重みは平均 0・標準偏差 $1/\sqrt{n}$ の正規分布、200 回の平均)。

層数 シグモイド ReLU
1 1.68e-01 6.48e-01
5 5.06e-04 1.54e-01
10 3.68e-07 2.56e-02
20 1.79e-13 6.62e-04
30 9.35e-20 2.05e-05

30 層で比べると、ReLU はシグモイドの約 220 兆倍の勾配が残っています。

rng = np.random.default_rng(0)
def measure(act, L, n=64, trials=200):
    g = []
    for _ in range(trials):
        h = rng.standard_normal(n); grad = np.ones(n)
        for _l in range(L):
            W = rng.standard_normal((n, n)) / np.sqrt(n)
            z = W @ h
            h = sig(z) if act == "sigmoid" else np.maximum(z, 0)
            d = dsig(z) if act == "sigmoid" else (z > 0).astype(float)
            grad = W.T @ (grad * d)
        g.append(np.abs(grad).mean())
    return np.mean(g)

for L in (1, 5, 10, 20, 30):
    print(L, measure("sigmoid", L), measure("relu", L))

試験で問われる形に戻すと

  • なぜ ReLU か → 正の領域で微分が 1 だから、掛けても小さくならない
  • ReLU の弱点は → 負の領域で微分が 0。一度その側に入った素子は勾配を返さなくなる(dying ReLU)
  • その対策は → Leaky ReLU(負側にわずかな傾きを残す)など

「0.25 の累乗」を一度見ておくと、この 3 つが別々の暗記項目ではなく一続きの話になります。


2. XOR が単層で解けないのは「性能不足」ではない。原理的に無理

暗記で済ませがちな説明

単層パーセプトロンは線形分離可能な問題しか解けない。XOR は解けない。

暗記としては十分ですが、**「学習を長く回せばいつか解けるのでは?」**という疑問が
残ったままの人は多いと思います。答えは「回しても無理」です。

動かしてみる

単層パーセプトロンに XOR を 1000 回学習させました。

X = np.array([[0,0],[0,1],[1,0],[1,1]], float)
y = np.array([0, 1, 1, 0], float)
w = rng.standard_normal(2) * 0.1; b = 0.0
for _ in range(1000):
    p = sig(X @ w + b); e = p - y
    w -= 0.5 * (X.T @ e) / len(X); b -= 0.5 * e.mean()
print(np.round(sig(X @ w + b), 3))
# → [0.5 0.5 0.5 0.5]

出力は 4 つとも 0.5 に収束しました。つまりどれも判定できていない状態です。
学習が足りないのではなく、損失を最小にすると「全部わからない」に落ち着く
これが「原理的に無理」の意味です。

紙の上では、1 本の直線で $(0,0),(1,1)$ と $(0,1),(1,0)$ を分けようとして
できないことを確かめれば同じ結論になります。

試験で問われる形に戻すと

  • 層を重ねる動機は「精度を上げたいから」ではなく、直線 1 本では表現できない領域を作るため
  • だから多層+非線形な活性化関数の両方が要る(線形関数を重ねても 1 枚の線形関数に潰れる)

ここまで繋がると、「なぜ活性化関数に非線形が必要か」という問いも同じ話として答えられます。


3. 誤差逆伝播は新しい発明ではない。連鎖律そのもの

微分の連鎖律 $\frac{\partial L}{\partial w} = \frac{\partial L}{\partial y}\cdot\frac{\partial y}{\partial w}$ を、
層の数だけ繰り返しているだけです。日本語にすると

出口のズレを入口へ配って、そのぶん重みをずらす

これだけです。「バックプロパゲーション」という語感から特別な手続きを想像しがちですが、
やっていることは高校数学の合成関数の微分です。

覚えるべきなのは手順ではなく順序です。

  1. 順伝播で予測を出す
  2. 出力層で誤差を測る
  3. 出力側から入力側へ、連鎖律で勾配を伝える
  4. 各層の重みを勾配の逆方向に動かす

1 の値を保持しておかないと 3 が計算できない、という依存関係まで押さえると、
「なぜ順伝播の途中結果をメモリに持つ必要があるのか」(=深いモデルがメモリを食う理由)も
同時に説明できます。


4. 「精度が足りなくて廃れた」は、少なくとも 1 つの例では事実と違う

エキスパートシステムの説明でよく見る「精度が実用に足りず廃れた」。
MYCIN に関しては、これは事実と違います。

1979 年に JAMA へ載った評価試験では、髄膜炎の 10 症例について処方を伏せて評価しました。

「受け入れられる」と判定された割合
MYCIN 65%
比較された感染症専門医 5 人 42.5% 〜 62.5%

専門医を上回っています。 それでも臨床には置かれませんでした。

理由は精度ではなく、知識の保守責任の所在です。ルールは書いた瞬間から古くなり、
現場が変われば破綻する。誤診したとき誰が責任を負うのかも決まらない。
G 検定で問われる「エキスパートシステムの限界」は、この知識獲得のボトルネックの話です。

試験で問われる形に戻すと

  • 限界=精度ではなく、知識をルールとして書き出し、保守し続けることの困難
  • 「暗黙知は書き出せない」(ポランニー)という論点と繋がる
  • そして、この行き止まりへの答えとして出てくるのが「データから学ばせる」機械学習

歴史の順番を覚えるのではなく、前の手法の行き止まりが次の手法の動機になっている
捉えると、順番が自然に出てきます。


5. 「第 3 次 AI ブームの要因」を 3 つ言えるか

ここは暗記で取れる項目ですが、因果で並べ直すと忘れません。

要因 なぜそれが効いたか
データ 学習に必要な量が、Web の普及で初めて揃った
計算資源 GPU の並列計算が、行列積の塊である NN と相性が良かった
アルゴリズム 事前学習・ReLU・ドロップアウト等で深く積んでも学習できるようになった

3 つ目が論点 1(勾配消失)と直結しています。
データと計算資源が揃っても、勾配が消えるままなら深いモデルは学習できない。
だから 3 つ揃って初めてブームになった、という因果で押さえられます。


まとめ

論点 暗記で済ませると 数字で見ると
勾配消失 「深いと消える」 σ' の最大が 0.25。累乗で消える
XOR 「線形分離できない」 1000 回回しても全部 0.5 に収束
誤差逆伝播 「BP という手法」 連鎖律そのもの。出口のズレを入口へ配る
エキスパートシステム 「精度不足で廃れた」 専門医を上回っていた(65% 対 42.5〜62.5%)
第 3 次ブーム 「3 つの要因」 3 つ目が 1 つ目の行き止まりへの答え

G 検定は範囲が広いので、全部をこの深さでやる時間はないと思います。
ただ、この 5 つは他の論点の土台になっているので、ここだけ数字で確かめておくと
周辺の問題がまとめて取れるようになります。


付記:手を動かす場所

上のコードはすべて NumPy だけで動きます。コピーして実行してみてください。

私自身は、覚えるのが苦痛だったので歴史の順に読める学習マンガと、
パラメータを動かせる図解
を作りました。重みを動かすと誤差が落ちる、
ルールが 1 歩ずつ発火する、といったものをその場で触れます。

同じところで詰まっている方の役に立てば幸いです。試験、お互いがんばりましょう。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?