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 の値を保持しておかないと 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 歩ずつ発火する、といったものをその場で触れます。
- 図解: https://manga-epoch.pages.dev/pub/epoch/arc1/figures
- 本編(第 1 巻は全編無料・登録不要): https://manga-epoch.pages.dev/
同じところで詰まっている方の役に立てば幸いです。試験、お互いがんばりましょう。