メインコンテンツへスキップ
ブログ一覧に戻る
AI活用・LLM

ニューラルネットワークの基本:パーセプトロンから深層学習まで

2025年12月7日
最終更新: 2026年10月8日
7分で読めます

この記事でわかること

ニューラルネットワークの基本を、重み付き和とXORの架空計算から解説します。単一の判定、多層パーセプトロン、深層学習の違いを図解し、逆伝播と重み更新、学習と推論を区別。手で追えるPython例と一回の勾配更新、画像・言語・推薦の用途、データ分割や誤りの評価まで整理し、層数だけで性能を判断しない見方を紹介します。

2026年10月8日に、Googleのニューラルネットワーク教材、backpropagation、overfittingを再読しました。ノード・隠れ層・活性化関数が推論の表現を作り、逆伝播は勾配を計算しoptimizerが更新する役割を分けます。勾配消失・爆発やdead ReLU、dropoutは訓練上の論点で、層数だけで未知データへの強さは決まりません。学習と推論、訓練成績と汎化、教材計算と実データ評価を分離します。

入力に重みを掛けて足すことと、そこから学習することは別です。ニューラルネットワークを理解するときは、まず「入力から出力を計算する道」と「損失から重みを直す道」を分けてみましょう。猫と犬の画像を分類する例でも、出力が猫だったという事実だけでは、正しい特徴を学習できたかは分かりません。

30秒で要点

  • 一つのユニットは重み付き和に変換を加えます。非線形な変換を挟むことで、単純な直線だけでは分けられない関係も表せます。
  • 逆伝播は損失に対する勾配の計算、optimizerはその勾配を使う更新です。推論では通常、学習済みの重みを固定して出力を計算します。
  • 層を増やすだけで未知のデータに強くなるとは限りません。目的、比較対象、データの分け方、誤りの種類を先に決めます。

一つのユニットを手で計算する

ここからの数値は仕組みを確かめるための架空の教材です。入力をx₁=1、x₂=0、重みをw₁=0.6、w₂=0.4、バイアスをb=−0.5とすると、重み付き和zは次の値になります。

z = 0.6 × 1 + 0.4 × 0 − 0.5 = 0.1

パーセプトロンの簡単な例として、zが0より大きいとき1、それ以外は0を返すと決めれば、出力は1です。閾値をどちら側に含めるかもモデルの定義の一部です。ここではこのルールを一貫して使います。

表が収まらない場合は、横にスクロールできます

部品この例確認すること
入力1と0何を数値に変えたか
重み0.6と0.4各入力が和にどう寄与するか
バイアス−0.5判定境界をどこへ動かすか
変換zが正なら1出力をどう解釈するか

これは猫や犬の特徴量ではありません。画像分類では多数の入力と層を使うため、一つの重みを「猫らしさ」と名付ければ説明が完成するわけでもありません。PyTorchの公式教材では、重みとバイアスを持つLinearにReLUなどの非線形変換を組み合わせています。ReLUは正の値をそのまま、負の値を0へ変換する関数です。

XORで「層を足す意味」を確かめる

XORは、二つの入力が違うときだけ1を返す関係です。単一の線形判定を w₁x₁+w₂x₂+b>0 とすると、正解に必要な条件は、(0,0)でb≤0、(1,0)でw₁+b>0、(0,1)でw₂+b>0、(1,1)でw₁+w₂+b≤0です。

中央二つを足すとw₁+w₂+2b>0。一方、最初と最後の条件からw₁+w₂+2b≤0になり、両立しません。この限定したモデルでは、直線一本で四点を正しく分けられないと分かります。

そこで隠れた二つのユニットにORとNANDを計算させ、その出力をANDで合わせます。次の表と図は、学習済みモデルの成果ではなく、重みを人が決めた構成例です。

表が収まらない場合は、横にスクロールできます

x₁x₂h₁: ORh₂: NAND最終AND=XOR
00010
01111
10111
11100
架空のXOR回路。入力からORとNANDの二つの隠れユニットへ進み、そのANDが0、1、1、0を出す。推論の出力計算と、学習の損失・勾配・重み更新を分けて示す。
人が重みを指定したXOR教材。表の4入力をすべて確かめる。下段の学習手順は別の滑らかなモデルの説明で、段差関数のこの回路を逆伝播で学習したという意味ではない。

def step(z):
    return int(z > 0)

def xor(x1, x2):
    h1 = step(x1 + x2 - 0.5)       # OR
    h2 = step(-x1 - x2 + 1.5)      # NAND
    return step(h1 + h2 - 1.5)     # AND

inputs = [(0, 0), (0, 1), (1, 0), (1, 1)]
actual = [xor(a, b) for a, b in inputs]
assert actual == [0, 1, 1, 0]
print(actual)

入力層、隠れ層、出力層を持つ構造が多層パーセプトロンの基本です。非線形変換を入れずに線形変換だけを重ねても、合成した一つの重み付き和とバイアスの形にまとめられます。「段数を増やす」だけと「表せる関係を変える」は区別してください。

逆伝播と重み更新を分ける

学習は出力を正解と比較し、損失を小さくする方向へパラメータを調整する過程です。PyTorchの最適化教材も、勾配の計算とoptimizerによる更新を分けています。前回分の勾配を消す処理を含め、どの時点の値を使うかが重要です。

表が収まらない場合は、横にスクロールできます

段階実施すること混同しないもの
順伝播現在の重みから出力を計算正解との比較はまだ別
損失出力と正解のずれを数値化業務上の損害と常に同じではない
逆伝播各パラメータの勾配を計算この操作だけで重みが更新されるわけではない
更新学習率などに従って重みを変更必ず未知データの成績が上がる保証ではない
評価・推論更新せずに出力を確認学習時と同じ処理状態とは限らない

さらに小さな架空例で、出力 ŷ=w×2、正解1、損失 L=(ŷ−1)²、初期w=0.2とします。ŷ=0.4、L=0.36、勾配は 2×(0.4−1)×2=−2.4。学習率0.1の更新で w=0.2−0.1×(−2.4)=0.44、新しい出力は0.88、損失は0.0144になります。これは一つのデータに対する一回の計算であり、汎化や収束の証明ではありません。

パーセプトロンから深層学習へ

単純な判定ユニット、多層での表現、さらに多くの層を用いる深層学習という違いを理解する方が、「何層以上なら深い」という一律の線引きより役立ちます。層数だけでモデルの能力や適性は決まりません。学習方法、データ、計算資源、損失や評価の設計も関わります。

画像では医用画像の支援、運転支援、品質検査、自然言語では翻訳・要約・チャット、推薦では商品・コンテンツ・広告の候補選択などが検討対象になります。ただし用途名は導入成功の証拠ではありません。特に誤りの影響が大きい用途では、誤検知と見逃しの扱いや人の確認を別に決めます。

実務で試す前の五段階

  1. 目的と指標:猫と犬を分けたいのか、不良品を見逃したくないのか。正解率だけで足りるかを決める。
  2. 条件:入力の品質、利用時の変化、誤りを許容できる範囲を記録する。
  3. モデル選択:単純なルールや線形モデルも比較対象にし、複雑さを増す理由を明確にする。
  4. データと学習:学習用と評価用を分ける。同じ人・同じ製品の近いデータが両方に入り、成績が楽観的になっていないか確認する。
  5. 測定と改善:未知データの誤りを種類別に見る。正則化やモデル変更も、同じ評価条件で比べる。

人が経験から判断を変えることは直感の入口になりますが、ニューラルネットワークを人間の理解や創造性と同一視しないでください。データが増えれば必ず良くなるという法則としても扱えません。偏りや条件のずれを含むデータを増やした場合は、何を学ぶかから再点検します。

関連する仕組みと評価を読む

よくある質問(FAQ)