前回は、パーセプトロンを多層化することで、XOR問題を解くことができるようになるということを図を用いながら、手順立てて証明しました。
【仕組み解説】全結合層をゼロから実装しよう:多層化でXOR問題を解決する-多層パーセプトロン-(NN #4)
XOR問題の解決策である多層パーセプトロン(MLP)を導入。多層化の設計思想と、ニューラルネットワークの基礎となる構造を学びま
今回は、前回の内容と反しているように感じるかもしれませんが、多層化だけでは、XORを解けない!? “活性化関数”がなぜ必要なのか考えてみます。
XOR問題
XOR問題とは、XOR(排他的論理和)をパーセプトロンで表現できるか?という問題です。
多層化だけだと解けない?
1. 「層を重ねる」だけでは意味がない?
前回は、NANDやORを組み合わせればXORができると言いました。NANDやORは二つの入力に重みをかけてバイアスを足したもので表せましたね。
でも、もしパーセプトロンの間にあるのが「ただの掛け算と足し算(線形)」だけだったら、どうなるでしょう?
「あれ?ANDとORも「ただの掛け算と足し算」じゃなかった?」と思うかもしれません、ちょっと振り返ってみましょう。ANDとORの処理を見てみると、最後に”0を超えたら”1″を出す処理”をしていましたね、ここでは、この処理がなかったときを考えてみます。
【仕組み解説】全結合層をゼロから実装しよう:パーセプトロンとは?(NN #2)
NNの最小単位「パーセプトロン」をゼロから実装。ニューロンの仕組みや活性化前の出力を解説し、多層化の必要性を理解します。
ただの掛け算と足し算を数学的に見ると、こうなってしまいます。
- 1層目の計算: \(y = Ax\) (\(A\)は重み)
- 2層目の計算: \(z = By\) (\(B\)は重み)
- 合体させると: \(z = B(Ax) = (BA)x\)
\(BA\) は、結局まとめて「新しい1つの行列 \(C\)」にできてしまいます。
(行列は、簡単に言えば、連立方程式をまとめて書いたようなものです。)
つまり、「ただの掛け算と足し算だけだと、何層重ねても、結局は1層の計算(1本の直線)と同じことしかしていない」ことになってしまうんです。これでは、XORの壁は越えられません。

動画 線形の変換だけをしたときのイメージ
比率は変わっているのがわかると思いますが、結局は直線のままです。
2. 活性化関数の役割=「空間を歪める」
ここで登場するのが、活性化関数(シグモイド関数やReLUなど)です。
これらは「非線形」の性質を持っています。andやorの”0を超えたら”1″を出す処理”も非線形です。
- 線形(活性化関数なし): 入力された空間を、回転させたり拡大縮小したりするだけ。紙の上に描かれた図形を、紙ごと回すようなものです。
- 非線形(活性化関数あり): 入力された空間を、「曲げる」「歪める」「畳む」ことができます。
XOR問題を解くために、活性化関数は以下のような仕事をしています。
- 座標変換: 元の入力データ \((x_1, x_2)\) を、中間層と活性化関数を通すことで、別の空間(たとえば \(h_1, h_2\) という座標)に飛ばします。
- 歪み: このとき、活性化関数(例えばReLUならマイナスを0にする、シグモイドならS字に潰す)が空間をグニャッと歪めます。
- 分離: 歪められた結果、元の空間ではバラバラだった「0のグループ」と「1のグループ」が、新しい空間では「直線一本で分けられる配置」に移動しているのです。

動画 折り曲げるような非線形変換のイメージ
3. XORを解くイメージ図
これを視覚的にイメージすると、こんな感じです。
- 入力空間: \((0,0)\)と\((1,1)\)が同じグループ(黒)、\((0,1)\)と\((1,0)\)が同じグループ(白)。直線では分けられません。
- 中間層+活性化関数: 空間を「グニャッ」と折り曲げます。たとえば、紙の両端(白グループ)を持ち上げて、真ん中(黒グループ)を沈めるようなイメージ。
- 出力層: 折り曲げられた空間なら、その間に「1枚の板(直線)」を差し込むだけで、白と黒を分けることができます!
つまり、活性化関数を導入する考え方というのは、
「直線を引いて分けるのが無理なら、データの方をグニャッと動かして、直線で分けられる配置に変えてしまえばいいじゃない」
という、ちょっと強引で賢い発想です。
式にすると、非線形だけだと解けないため、出力に、活性化関数をかけているので以下のような感じになります。
\[ z = B(\text{活性化}(Ax))\]
まとめと次回:
- 層を重ねる意味: 複雑な表現をするための「枠組み」を作る。
- 活性化関数の意味: 線形な世界を壊し、空間を歪めることで、層を重ねた効果を本当に発揮させる(線形分離可能にする)。
この2つが揃って初めて、XORのような複雑な問題が解けるようになります。
活性化関数がなぜ必要なのか理解できたと思います。次回はここまでに学んできたパーセプトロンと多層化及び、活性化関数を具体的にどんなふうに全結合層として実装するのか紹介します。
【仕組み解説】全結合層をゼロから実装しよう:全結合層とは?-アフィンレイヤー-(NN #6)
全結合層を数学的に扱うための概念、アフィンレイヤーを解説。NNの「層」の順伝播処理をゼロから理解します。
ゼロから作る全結合層
ゼロから作る全結合層シリーズでは、初心者でも理解しやすいように、 「パーセプトロンの仕組み」から「全結合層の実装」までを...
ここまで読んでいただきありがとうございます。
では、次の記事で。 lumenHero