STEP 3:多層パーセプトロン(MLP)

🧠 STEP 3: 多層パーセプトロン(MLP)

層を重ねることで複雑な問題を解決する仕組みを理解しよう

📋 このステップで学ぶこと

  • なぜ多層構造が必要なのか
  • 隠れ層の役割と意味
  • XOR問題を多層パーセプトロンで解決する
  • 順伝播(Forward Propagation)の仕組み
  • ニューラルネットワークの表現力

🎯 1. なぜ多層構造が必要なのか?

1-1. 単層パーセプトロンの限界を振り返る

STEP 2で学んだように、単層パーセプトロンには大きな限界がありました。

❌ 単層パーセプトロンの限界
  • 線形分離可能な問題しか解けない:1本の直線で分けられる問題のみ
  • XORゲートが作れない:「どちらか一方だけ1」という判断ができない
  • 複雑なパターンは認識できない:画像認識などは到底不可能

1-2. 解決策:パーセプトロンを重ねる

この限界を突破するアイデアは、とてもシンプルです。
「パーセプトロンを複数の層に重ねる」だけです!

💡 例え話:レゴブロックのように組み立てる

単純なパーセプトロンは、1個のレゴブロックのようなものです。
1個だけでは単純な形しか作れませんが、たくさん組み合わせれば複雑な形も作れます

同じように、パーセプトロンを何層にも重ねることで、
複雑な問題も解けるようになります!

1-3. 多層パーセプトロン(MLP)とは?

📖 多層パーセプトロン(MLP)の定義

MLP = Multi-Layer Perceptron(マルチレイヤー・パーセプトロン)

パーセプトロンを3層以上に重ねたニューラルネットワークのことです。

3つの層で構成されます:

  • 入力層(Input Layer):データを受け取る層
  • 隠れ層(Hidden Layer):中間で処理を行う層(1層以上)
  • 出力層(Output Layer):最終結果を出力する層

1-4. 多層パーセプトロンの構造図

以下の図は横スクロールできます。

【多層パーセプトロンの構造】 入力層 隠れ層 出力層 (Input) (Hidden) (Output) ───── ──────── ──────── x₁ ●─────────●─────────● y₁ ╲ ╱ ╲ ╱ ╲ ╱ ╲ ╱ ╲ ╱ ╲ ╱ ╳ ╳ ╱ ╲ ╱ ╲ ╱ ╲ ╱ ╲ ╱ ╲ ╱ ╲ x₂ ●─────────●─────────● y₂ 【データの流れ】 入力(x₁, x₂) → 隠れ層で処理 → 出力(y₁, y₂) ・入力層:外部からデータを受け取る ・隠れ層:入力を組み合わせて新しい特徴を作る ・出力層:最終的な判断を出力する
💡 なぜ「層を重ねる」と複雑な問題が解けるのか?

単層パーセプトロンは1本の直線で分類しようとします。
しかし、層を重ねると、曲線や複雑な境界で分類できるようになります。

これを「非線形な変換が可能になる」と言います。
XOR問題も、この非線形な変換によって解決できます!

🔍 2. 隠れ層の役割

2-1. なぜ「隠れ層」と呼ぶのか?

隠れ層(Hidden Layer)とは、入力層と出力層の間にある層のことです。

🧩 「隠れ」の意味

ニューラルネットワークを外から見ると:

  • 入力層:外から見える(何を入力したか分かる)
  • 出力層:外から見える(何が出力されたか分かる)
  • 隠れ層:外から見えない(中で何をしているか分からない)

中間の処理が「隠れている」ので、隠れ層(Hidden Layer)と呼びます。

2-2. 隠れ層は何をしているのか?

隠れ層の最も重要な役割は、「新しい特徴を作り出す」ことです。

🎯 隠れ層の3つの役割

役割1:入力の「組み合わせ」を作る

元の入力x₁, x₂から、新しい特徴s₁, s₂を作り出します。
例:s₁ = NAND(x₁, x₂), s₂ = OR(x₁, x₂)

役割2:非線形な変換を可能にする

活性化関数を通すことで、直線では表せない複雑なパターンを表現できます。

役割3:階層的な特徴抽出

単純な特徴から、段階的に複雑な特徴を抽出していきます。

2-3. 具体例:顔認識の場合

隠れ層の役割を、顔認識の例で理解しましょう。

🎨 顔認識における各層の役割

入力層:

画像のピクセル値をそのまま受け取る(例:100×100=10,000個の数値)

隠れ層1(浅い層):

エッジ(輪郭)を検出する
「ここに縦線がある」「ここに横線がある」

隠れ層2(中間の層):

パーツを認識する
「これは目だ」「これは鼻だ」「これは口だ」

隠れ層3(深い層):

顔全体の形状を理解する
「目と鼻と口がこの配置なら、顔だ」

出力層:

「この人は誰か」を判定する
「Aさんである確率90%、Bさんである確率5%…」

【層が深くなるにつれて、抽出される特徴が変わる】 入力層 → ピクセル値(生のデータ) ↓ 隠れ層1 → エッジ(線の方向) ← 単純な特徴 ↓ 隠れ層2 → パーツ(目、鼻、口) ← 中程度の特徴 ↓ 隠れ層3 → 全体の形状(顔の構造)← 複雑な特徴 ↓ 出力層 → 判定結果(誰の顔か)
💡 これがディープラーニングの本質!

隠れ層を何層も重ねることで、
単純な特徴 → 中程度の特徴 → 複雑な特徴と、
段階的に抽象度の高い特徴を学習できます。

これが「Deep(深い)」Learningの意味です!

✅ 3. XOR問題を多層パーセプトロンで解決する

STEP 2で「単層では解けない」と言ったXOR問題を、多層パーセプトロンで解決しましょう!

3-1. XOR問題の復習

🔴 XORゲートの真理値表

「2つの入力が異なるときだけ1を出力」するゲートです。

x₁ x₂ y(出力) 説明
0 0 0 両方0(同じ)→ 0
0 1 1 異なる → 1
1 0 1 異なる → 1
1 1 0 両方1(同じ)→ 0

3-2. XORを分解して考える

XORを直接作ることはできませんが、NAND、OR、ANDの組み合わせで作れます!

💡 XORの分解公式

XOR(x₁, x₂) = AND( NAND(x₁, x₂), OR(x₁, x₂) )

つまり:
ステップ1:x₁とx₂からNANDとORを計算する(隠れ層)
ステップ2:NANDの結果とORの結果からANDを計算する(出力層)

3-3. 多層パーセプトロンの構造

以下の図は横スクロールできます。

【XORゲートの多層パーセプトロン構造】 入力層 隠れ層 出力層 ───────── ────────── ────────── ┌──────┐ x₁ ──────────────→│ NAND │──→ s₁ ──┐ ╲ └──────┘ │ ┌─────┐ ╲ ├───→│ AND │───→ y (XOR) ╲ │ └─────┘ ╲ ┌──────┐ │ x₂ ──────────────→│ OR │──→ s₂ ──┘ └──────┘ 【データの流れ】 1. 入力 x₁, x₂ を受け取る 2. 隠れ層でNANDとORを計算 → s₁, s₂ を出力 3. 出力層でANDを計算 → 最終出力 y

3-4. 計算の流れを詳しく見てみよう

4つの入力パターンすべてについて、計算してみましょう。

📊 XOR(0, 0) の計算

入力:x₁=0, x₂=0

隠れ層の計算:

  • s₁ = NAND(0, 0) = 1(両方0なので、NANDは1)
  • s₂ = OR(0, 0) = 0(両方0なので、ORは0)

出力層の計算:

  • y = AND(1, 0) = 0(両方1でないので、ANDは0)

結果:XOR(0, 0) = 0 ✅ 正解!

📊 XOR(0, 1) の計算

入力:x₁=0, x₂=1

隠れ層の計算:

  • s₁ = NAND(0, 1) = 1(両方1ではないので、NANDは1)
  • s₂ = OR(0, 1) = 1(どちらかが1なので、ORは1)

出力層の計算:

  • y = AND(1, 1) = 1(両方1なので、ANDは1)

結果:XOR(0, 1) = 1 ✅ 正解!

📊 XOR(1, 0) の計算

入力:x₁=1, x₂=0

隠れ層の計算:

  • s₁ = NAND(1, 0) = 1(両方1ではないので、NANDは1)
  • s₂ = OR(1, 0) = 1(どちらかが1なので、ORは1)

出力層の計算:

  • y = AND(1, 1) = 1(両方1なので、ANDは1)

結果:XOR(1, 0) = 1 ✅ 正解!

📊 XOR(1, 1) の計算

入力:x₁=1, x₂=1

隠れ層の計算:

  • s₁ = NAND(1, 1) = 0(両方1なので、NANDは0)
  • s₂ = OR(1, 1) = 1(どちらかが1なので、ORは1)

出力層の計算:

  • y = AND(0, 1) = 0(両方1でないので、ANDは0)

結果:XOR(1, 1) = 0 ✅ 正解!

3-5. Pythonで実装してみよう

STEP 2で作成したAND、OR、NANDゲートを組み合わせて、XORゲートを作ります。

📝 コードの構成

1. 基本ゲート関数(STEP 2で作成済み)
AND、OR、NANDの3つの関数を定義します。

2. XOR関数(今回作成)
隠れ層でNANDとORを計算し、出力層でANDを計算します。

3. 動作確認
4つの入力パターンすべてをテストします。

# ===== 基本ゲート関数(STEP 2で作成済み)===== def AND(x1, x2): “””ANDゲート:両方1のときだけ1を出力””” w1, w2, b = 0.5, 0.5, -0.7 tmp = x1*w1 + x2*w2 + b return 1 if tmp > 0 else 0 def OR(x1, x2): “””ORゲート:どちらか1つでも1なら1を出力””” w1, w2, b = 0.5, 0.5, -0.2 tmp = x1*w1 + x2*w2 + b return 1 if tmp > 0 else 0 def NAND(x1, x2): “””NANDゲート:ANDの逆(両方1のときだけ0を出力)””” w1, w2, b = -0.5, -0.5, 0.7 tmp = x1*w1 + x2*w2 + b return 1 if tmp > 0 else 0 # ===== XORゲート(多層パーセプトロン)===== def XOR(x1, x2): “””XORゲート:2つの入力が異なるときだけ1を出力””” # 隠れ層の計算 s1 = NAND(x1, x2) # NANDの結果 s2 = OR(x1, x2) # ORの結果 # 出力層の計算 y = AND(s1, s2) # NANDとORの結果をANDで組み合わせる return y # ===== 動作確認 ===== print(“=== XORゲートの動作確認 ===”) print(f”XOR(0, 0) = {XOR(0, 0)}”) print(f”XOR(0, 1) = {XOR(0, 1)}”) print(f”XOR(1, 0) = {XOR(1, 0)}”) print(f”XOR(1, 1) = {XOR(1, 1)}”)
実行結果:
=== XORゲートの動作確認 ===
XOR(0, 0) = 0
XOR(0, 1) = 1
XOR(1, 0) = 1
XOR(1, 1) = 0
🎯 XOR問題解決のポイント
  • 単層では不可能だったXORが、2層(隠れ層+出力層)で可能に!
  • 隠れ層で新しい特徴(s₁=NAND, s₂=OR)を作成
  • 出力層でそれらを組み合わせて(AND)最終判断
  • これが多層パーセプトロンの威力です!

⚡ 4. 順伝播(Forward Propagation)

4-1. 順伝播とは?

順伝播(じゅんでんぱ)とは、入力から出力へ、順番に計算を進めていく処理のことです。

📖 順伝播の意味

Forward Propagation(フォワード・プロパゲーション)
= 前方(Forward)へ伝播(Propagation)する

つまり、「前へ前へと計算を進める」という意味です。
入力層 → 隠れ層 → 出力層 と、左から右へ計算が進みます。

4-2. 順伝播の計算手順

各層で行う計算は、次の2ステップです。

【各層で行う計算】 ステップ1:重み付き和を計算 ───────────────────────────── z = w₁×x₁ + w₂×x₂ + … + b ・各入力(x)に重み(w)を掛けて合計 ・バイアス(b)を足す ステップ2:活性化関数を適用 ───────────────────────────── a = f(z) ・ステップ関数、シグモイド関数、ReLUなど ・非線形な変換を行う ステップ3:次の層へ渡す ───────────────────────────── この層の出力(a)が、次の層の入力になる

4-3. 順伝播の流れを図で理解する

以下の図は横スクロールできます。

【順伝播の全体の流れ】 入力層 隠れ層 出力層 ──── ────── ────── x₁ ──→ [重み付き和] ──→ [活性化] ──→ h₁ ──→ [重み付き和] ──→ [活性化] ──→ y₁ x₂ ──→ [重み付き和] ──→ [活性化] ──→ h₂ ──→ [重み付き和] ──→ [活性化] ──→ y₂ ↑ ↑ 第1層の処理 第2層の処理 【詳細な計算の流れ】 1. 入力を受け取る:x = [x₁, x₂] 2. 隠れ層の計算: – 重み付き和:z₁ = W₁・x + b₁ – 活性化:h = f(z₁) 3. 出力層の計算: – 重み付き和:z₂ = W₂・h + b₂ – 活性化:y = f(z₂) 4. 出力を返す:y = [y₁, y₂]

4-4. NumPyを使った順伝播の実装

ここでは、NumPyを使って順伝播を実装してみます。
※NumPyは数値計算ライブラリで、行列の計算が簡単にできます。

📝 コードの解説(パート1:準備)

import numpy as np

NumPyライブラリを「np」という名前で読み込みます。

def sigmoid(x):

シグモイド関数を定義。0〜1の値を出力する活性化関数です。
(詳しくはSTEP 4で学習します)

return 1 / (1 + np.exp(-x))

シグモイド関数の計算式。np.expは指数関数(eのx乗)です。

📝 コードの解説(パート2:ネットワークの設定)

X = np.array([1.0, 0.5])

入力データ。x₁=1.0, x₂=0.5 の2つの値。

W1 = np.array([[0.1, 0.3, 0.5], [0.2, 0.4, 0.6]])

第1層(入力→隠れ層)の重み。2×3の行列。

B1 = np.array([0.1, 0.2, 0.3])

第1層のバイアス。3つの値(隠れ層のニューロン数分)。

W2, B2

第2層(隠れ層→出力層)の重みとバイアス。

📝 コードの解説(パート3:順伝播の計算)

A1 = np.dot(X, W1) + B1

隠れ層の重み付き和を計算。np.dotは行列の掛け算(内積)です。

Z1 = sigmoid(A1)

隠れ層の活性化。シグモイド関数を適用して0〜1の値に変換。

A2 = np.dot(Z1, W2) + B2

出力層の重み付き和を計算。隠れ層の出力Z1を入力として使用。

Y = sigmoid(A2)

出力層の活性化。最終的な出力を得る。

import numpy as np # ===== 活性化関数 ===== def sigmoid(x): “””シグモイド関数:0〜1の値を出力””” return 1 / (1 + np.exp(-x)) # ===== ネットワークの設定 ===== # 入力(2ユニット) X = np.array([1.0, 0.5]) # 第1層(入力層→隠れ層)の重みとバイアス W1 = np.array([[0.1, 0.3, 0.5], [0.2, 0.4, 0.6]]) B1 = np.array([0.1, 0.2, 0.3]) # 第2層(隠れ層→出力層)の重みとバイアス W2 = np.array([[0.1, 0.4], [0.2, 0.5], [0.3, 0.6]]) B2 = np.array([0.1, 0.2]) # ===== 順伝播の計算 ===== print(“【順伝播の計算過程】”) print(f”入力: {X}”) print() # 隠れ層の計算 A1 = np.dot(X, W1) + B1 # 重み付き和 print(f”隠れ層の重み付き和: {A1}”) Z1 = sigmoid(A1) # 活性化 print(f”隠れ層の出力(活性化後): {Z1}”) print() # 出力層の計算 A2 = np.dot(Z1, W2) + B2 # 重み付き和 print(f”出力層の重み付き和: {A2}”) Y = sigmoid(A2) # 活性化 print(f”最終出力: {Y}”)
実行結果:
【順伝播の計算過程】
入力: [1.  0.5]

隠れ層の重み付き和: [0.3 0.7 1.1]
隠れ層の出力(活性化後): [0.57444252 0.66818777 0.75026011]

出力層の重み付き和: [0.51615984 1.0212736 ]
最終出力: [0.62624937 0.73522793]
💡 順伝播のポイント
  • 左から右へ(入力 → 出力)計算を進める
  • 各層で重み付き和 → 活性化関数の2ステップ
  • 前の層の出力が、次の層の入力になる
  • これが「順伝播(Forward Propagation)」

※後のステップで学ぶ「誤差逆伝播法(Backpropagation)」は、
 逆方向(出力 → 入力)に計算を進める処理です。

🚀 5. ニューラルネットワークの表現力

5-1. 層を増やすとどうなる?

層を増やす(ネットワークを深くする)と、より複雑なパターンを学習できるようになります。

【層の深さと表現力の関係】 1層(単層パーセプトロン) ──────────────────────────── ・直線でしか分類できない ・AND、OR、NANDは可能 ・XORは不可能 ・例:「体重が60kg以上なら太っている」 2層(1つの隠れ層) ──────────────────────────── ・曲線で分類できる ・XORが可能 ・任意の連続関数を近似できる(理論上) ・例:「BMIが25以上なら太っている」 3層以上(ディープニューラルネットワーク) ──────────────────────────── ・非常に複雑なパターンも学習可能 ・階層的な特徴抽出が可能 ・画像認識、音声認識、自然言語処理 ・例:「写真を見て肥満度を判定」

5-2. 万能近似定理

ニューラルネットワークには、驚くべき理論的な裏付けがあります。

🎯 万能近似定理(Universal Approximation Theorem)

「1つの隠れ層を持つニューラルネットワークは、
任意の連続関数を近似できる」

これは1989年にGeorge Cybenkoによって証明された定理です。
理論上は、2層のネットワークでどんな問題も解けるということです!

ただし、注意点があります:

  • 隠れ層のニューロン数が膨大になる可能性がある
  • 学習が困難になることがある
  • 実用的には深いネットワークの方が効率的

5-3. なぜ「深く」するのか?

万能近似定理があるのに、なぜわざわざ層を深くするのでしょうか?

🏔️ 深いネットワークの3つの利点

利点1:階層的な特徴抽出

浅い層:単純な特徴(エッジ、色)
中間層:中程度の特徴(パーツ)
深い層:複雑な特徴(全体像)
→ 人間の認知プロセスに似ている

利点2:パラメータ効率

同じ問題を解くのに、浅いネットワークより少ないパラメータで済む
→ 学習が速く、メモリも少なくて済む

利点3:汎化性能

見たことのないデータにも対応しやすい
→ 過学習(訓練データに特化しすぎること)を防ぎやすい

5-4. ディープラーニングの本質

💡 「Deep」の意味

Deep Learning(ディープラーニング)の「Deep」は、
「層が深い」という意味です。

多層パーセプトロンをさらに深くすることで:

  • 10層、50層、100層、1000層…
  • 人間の脳に近い、高度な認識能力を実現
  • 画像認識、音声認識、自然言語処理など

これがディープラーニング(Deep Learning)です!

【代表的なディープラーニングモデルの層数】 AlexNet (2012年) : 8層 VGGNet (2014年) : 16〜19層 GoogLeNet (2014年) : 22層 ResNet (2015年) : 50〜152層 GPT-3 (2020年) : 96層 GPT-4 (2023年) : 非公開(さらに深いと推測) → 年々、より深いネットワークが使われるようになっています

📝 STEP 3 のまとめ

✅ このステップで学んだこと
  • 多層パーセプトロン(MLP)は、パーセプトロンを3層以上に重ねたもの
  • 隠れ層は、中間で新しい特徴を作り出し、非線形な変換を可能にする
  • XOR問題は、NAND・OR・ANDの組み合わせ(2層)で解決できる
  • 順伝播は、入力から出力へ順番に計算を進める処理
  • 層を深くすることで、複雑なパターンを効率的に学習できる
  • 万能近似定理:1つの隠れ層で任意の連続関数を近似できる
💡 覚えておきたいポイント

多層パーセプトロンは、ディープラーニングの基礎です。

単層では不可能だったXOR問題が、層を重ねることで解決できました。
これが「Deep(深い)」の意味であり、ディープラーニングの本質です。

次のSTEP 4では、活性化関数を詳しく学び、
ニューラルネットワークをより強力にする方法を理解しましょう!

📝 練習問題

問題1 やさしい

多層パーセプトロンの構成

多層パーセプトロンについて正しいものを選んでください。

  • A. 入力層と出力層の2層で構成される
  • B. 隠れ層は必ず1層だけである
  • C. 入力層、隠れ層、出力層の3層以上で構成される
  • D. 隠れ層は外から直接見ることができる
正解:C

なぜCが正解なのか?

多層パーセプトロン(MLP)は、「入力層」「隠れ層」「出力層」の3層以上で構成されます。
「多層」という名前の通り、複数の層を持つことが特徴です。

他の選択肢の解説:

Aが間違いの理由:
2層だけ(入力層と出力層のみ)では「多層」とは言いません。
これは単層パーセプトロンと同じで、XORのような問題は解けません。

Bが間違いの理由:
隠れ層は1層でも、2層でも、100層でもOKです。
深いネットワーク(ディープラーニング)では、隠れ層が数十〜数百層になることもあります。

Dが間違いの理由:
「隠れ層」は「Hidden Layer」の訳で、外から見えないという意味です。
入力と出力は外から見えますが、中間の処理は隠れています。

問題2 やさしい

XOR問題の解決

XORゲートを実現するために使った論理ゲートの組み合わせは?

  • A. AND と OR のみ
  • B. NAND と OR と AND
  • C. NOT と AND のみ
  • D. OR のみ
正解:B

なぜBが正解なのか?

XORゲートは、NAND、OR、ANDの3つのゲートを組み合わせて作ります。

XOR(x₁, x₂) = AND( NAND(x₁, x₂), OR(x₁, x₂) ) 【構造】 隠れ層:NANDとORを計算 出力層:その結果をANDで組み合わせる

なぜこの組み合わせでXORが作れるのか?

  • NAND:「両方1ではない」ことを検出(片方だけ1、または両方0のとき1)
  • OR:「少なくとも1つは1」ことを検出(片方でも1なら1)
  • AND:両方の条件が満たされたときだけ1

NANDとORの両方が1になるのは、「片方だけ1」の場合だけです。
これがまさにXORの定義と一致します!

問題3 ふつう

順伝播の理解

順伝播(Forward Propagation)について正しくないものを選んでください。

  • A. 入力から出力へ順番に計算を進める
  • B. 各層で重み付き和と活性化関数を計算する
  • C. 出力から入力へ逆向きに計算を進める
  • D. 前の層の出力が次の層の入力になる
正解:C

なぜCが間違いなのか?

順伝播(Forward Propagation)は、入力から出力へ順番に計算を進めます。
「出力から入力へ逆向き」ではありません。

【順伝播の方向】 入力層 → 隠れ層 → 出力層 ↓ ↓ ↓ 前へ 前へ 前へ 「Forward」= 前方へ進む

「逆向きに計算」とは?

Cで述べている「出力から入力へ逆向きに計算」するのは、
誤差逆伝播法(Backpropagation)と呼ばれる別の処理です。

これは、学習時に「誤差を逆向きに伝えて重みを更新する」ための計算で、
後のSTEP(STEP 10)で詳しく学習します。

覚え方:

  • Forward(順伝播):前へ進む = 入力 → 出力(予測を行う)
  • Backward(逆伝播):後ろへ戻る = 出力 → 入力(学習を行う)
問題4 ふつう

隠れ層の役割

隠れ層の役割について最も適切なものを選んでください。

  • A. データの入力を受け取る
  • B. 最終結果を出力する
  • C. 中間で特徴を抽出し、非線形な変換を可能にする
  • D. ネットワークを見やすくするための装飾
正解:C

なぜCが正解なのか?

隠れ層の最も重要な役割は、「中間で特徴を抽出し、非線形な変換を可能にする」ことです。

隠れ層の具体的な役割:

  • 新しい特徴を作る:入力の組み合わせから、新しい表現を生成
  • 非線形な変換:直線では表せない複雑なパターンを表現
  • 階層的な抽出:単純な特徴から複雑な特徴へ段階的に処理

他の選択肢の解説:

Aが間違いの理由:「データの入力を受け取る」のは入力層の役割です。

Bが間違いの理由:「最終結果を出力する」のは出力層の役割です。

Dが間違いの理由:隠れ層は装飾ではなく、ネットワークの核心的な処理を担います。
隠れ層がなければ、XORのような非線形問題は解けません。

問題5 むずかしい

万能近似定理

万能近似定理について正しいものを選んでください。

  • A. 1つの隠れ層で任意の連続関数を近似できる
  • B. 深いネットワークは全く必要ない
  • C. 2層のネットワークで全ての問題を効率的に解ける
  • D. 隠れ層がなくても任意の関数を表現できる
正解:A

万能近似定理とは?

1989年にGeorge Cybenkoが証明した定理で、
「1つの隠れ層を持つニューラルネットワークは、任意の連続関数を近似できる」
という内容です。

他の選択肢の解説:

Bが間違いの理由:
万能近似定理は「理論上は可能」という話です。実際には:

  • 隠れ層のニューロン数が膨大になる可能性がある
  • 学習が困難になることがある
  • 深いネットワークの方が効率的に学習できる

だからこそ、ディープラーニングでは深いネットワークが使われています。

Cが間違いの理由:
「近似できる」と「効率的に解ける」は別の問題です。
理論上は2層で可能でも、実用上は深いネットワークの方が効率的です。

Dが間違いの理由:
隠れ層がない(単層パーセプトロン)では、線形な関数しか表現できません。
XORのような非線形関数は、隠れ層がないと表現できません。

重要な理解:

万能近似定理は「理論的な可能性」を示したもので、
「実用的な効率性」を保証するものではありません。
これが、ディープラーニング(深いネットワーク)が発展した理由です!

📝

学習メモ

ディープラーニング基礎 - Step 3

📋 過去のメモ一覧
#artnasekai #学習メモ
LINE