FE EXAM

ニューラルネットワーク(Neural Network)

脳の神経回路を模した、ノードと重みで入力から出力を計算するモデル

INTERACTIVE VISUALIZATION
入力層
中間層
出力層
入力 (x₁, x₂)
0.60, 0.30
中間層 出力
0.64, 0.47, 0.69
最終出力 y
0.585
入力 x₁0.60
-11
入力 x₂0.30
-11
活性化関数
プリセット
前向き計算(フォワードプロパゲーション)入力 x₁・x₂ を 重み w で掛けて足し合わせ、バイアス b を加えてから活性化関数(シグモイド)に通します。中間層 3 ノードの出力がさらに出力層へ伝わり、最終出力 y が決まります。スライダーを動かすと、各ノードの値と出力が連動して変わります。
入力層中間層出力層x0.60x0.30h10.64h20.47h30.69y0.58正の重み負の重み(線の太さ=重みの大きさ)
計算式 y = f(Σ(wᵢxᵢ) + b)
h1 = f(1.20×0.60 + -0.80×0.30 + 0.10) = f(0.58) = 0.64
h2 = f(-0.60×0.60 + 1.50×0.30 + -0.20) = f(-0.11) = 0.47
h3 = f(0.90×0.60 + 0.70×0.30 + 0.05) = f(0.80) = 0.69
y = f(1.10×0.64 + -1.30×0.47 + 0.80×0.69 + -0.30) = 0.585
解説

🧠
ニューラルネットワークとは

入力中間出力

ニューラルネットワークとは、人間の脳の神経細胞(ニューロン)のつながりをまねた、データから自動でパターンを学ぶ計算モデルのことです。たくさんの小さな計算ユニット(=ノード)を層状に並べ、それらを「重み」でつないで情報を伝えていきます。

身近な例で考えると、会社の決裁の流れに似ています。担当者(入力層)が集めた情報を、課長たち(中間層)がそれぞれの判断基準で重み付けして整理し、最後に部長(出力層)が一つの結論を出す、というイメージです。重要視する情報ほど大きな「重み」がかかります。

上のツールで入力 x₁・x₂ のスライダーを動かすと、中間層の各ノードの値と最終出力 y が 連動して変化します。ノードをつなぐ線の色(緑=正、赤=負)と太さ(=重みの大きさ)にも注目してください。

🔗
ノードと重みの役割

x₁x₂w₁w₂Σ+b→ f()

ネットワークはノード(=1つの計算ユニット)と、それらをつなぐ重み(=つながりの強さを表す数値)でできています。各ノードがやることは単純で、次の3つだけです。

重み付き和:入ってくる値それぞれに重みを掛けて合計する(Σ(wᵢxᵢ))
バイアス b を足す:合計に下駄をはかせて、反応しやすさを調整する
活性化関数 f に通す:その結果を変換して次の層へ渡す

重みが学習の主役です。最初はでたらめな重みからスタートし、正解とのズレ(誤差)が小さくなるよう少しずつ重みを調整します。これが「学習」の正体です。重みが大きい入力ほど結論に強く影響し、重みが負だと「その入力が増えるほど結論を下げる」という逆向きの効果になります(上の図の赤い線)。

📌
機械学習の中での位置づけ

AI(人工知能)機械学習ニューラルネットワーク← このページ。脳の神経回路を模した機械学習の一手法

ニューラルネットワークは、機械学習の手法の一つです。位置づけを整理すると「AI(人工知能)の中に機械学習があり、そのさらに中にニューラルネットワークがある」という入れ子の関係になります。

なぜニューラルネットワークが注目されるかというと、層を深く重ねる(=ディープラーニング=深層学習)ことで、画像認識や音声認識など「他の手法では難しかった複雑な問題」を解けるようになったからです。

ディープラーニング(Deep Learning)とは、中間層(隠れ層)を何十層・何百層と深く重ねたニューラルネットワークのことを指します。「深い(deep)」ネットワークだからディープラーニングと呼ばれています。画像生成AI・ChatGPTなどの最新AIも、ディープラーニングを土台にしています。

📌
学習とは重みを調整すること

①予測今の重みで計算②誤差正解との差を計算③重みを少し修正誤差が小さくなる方向へ w を更新← 大量のデータで繰り返す

ニューラルネットワークの「学習」とは、ひと言で言えば「重みを少しずつ調整して誤差を小さくしていく繰り返し作業」です。

なぜ重みを調整するかというと、最初はすべての重みが適当(ランダム)な値なので、出力が正解と大きくズレているからです。正解と出力の差(誤差)を計算し、誤差が小さくなる方向に重みを少しだけ変えます。これを大量のデータで何度も繰り返すと、重みが最適な値に近づいていきます。

この「誤差を出力から入力の方向へさかのぼりながら、各重みにどれだけ責任があるかを計算して修正する」仕組みを誤差逆伝播(バックプロパゲーション)と呼びます。上のビジュアライザーで x₁・x₂ を変えると出力が変わるのが「前向きの計算」で、その逆方向に誤差を伝えて重みを更新するのが「学習」のステップです。

📈
活性化関数の役割

シグモイド入力 →

活性化関数とは、ノードの計算結果(重み付き和 + バイアス)を、次の層に渡す前に変換する関数のことです。これがあることで、ニューラルネットは「直線では表せない複雑な関係」を学べるようになります。

なぜ必要かというと、活性化関数がないと層をいくら重ねても結局「ただの足し算・掛け算(線形変換)」にしかならず、複雑な判断ができないからです。神経細胞が一定の刺激を超えたときだけ「発火」するように、非線形な変換を加えることで表現力が一気に高まります。代表的な関数は次の3つです。

シグモイド: f(x) = 1 / (1 + e^-x) → 0〜1
ReLU: f(x) = max(0, x) → 0以上
tanh: f(x) = tanh(x) → -1〜1

シグモイド:出力を確率のように 0〜1 に収める。古くから使われる
ReLU:負を 0、正はそのまま。計算が軽く、深いネットワークで主流
tanh:-1〜1 に収め、シグモイドより中心が 0 で扱いやすい

上のツールで活性化関数を切り替えると、同じ入力でも各ノードの出力と最終出力 y が変わります。「活性化関数=非線形性を与えるもの」「ReLU が深層学習でよく使われる」という点を押さえておくとよいでしょう。

関連コンテンツ