脳の神経回路を模した、ノードと重みで入力から出力を計算するモデル
ニューラルネットワークとは、人間の脳の神経細胞(ニューロン)のつながりをまねた、データから自動でパターンを学ぶ計算モデルのことです。たくさんの小さな計算ユニット(=ノード)を層状に並べ、それらを「重み」でつないで情報を伝えていきます。
身近な例で考えると、会社の決裁の流れに似ています。担当者(入力層)が集めた情報を、課長たち(中間層)がそれぞれの判断基準で重み付けして整理し、最後に部長(出力層)が一つの結論を出す、というイメージです。重要視する情報ほど大きな「重み」がかかります。
上のツールで入力 x₁・x₂ のスライダーを動かすと、中間層の各ノードの値と最終出力 y が 連動して変化します。ノードをつなぐ線の色(緑=正、赤=負)と太さ(=重みの大きさ)にも注目してください。
ネットワークはノード(=1つの計算ユニット)と、それらをつなぐ重み(=つながりの強さを表す数値)でできています。各ノードがやることは単純で、次の3つだけです。
・重み付き和:入ってくる値それぞれに重みを掛けて合計する(Σ(wᵢxᵢ))
・バイアス b を足す:合計に下駄をはかせて、反応しやすさを調整する
・活性化関数 f に通す:その結果を変換して次の層へ渡す
重みが学習の主役です。最初はでたらめな重みからスタートし、正解とのズレ(誤差)が小さくなるよう少しずつ重みを調整します。これが「学習」の正体です。重みが大きい入力ほど結論に強く影響し、重みが負だと「その入力が増えるほど結論を下げる」という逆向きの効果になります(上の図の赤い線)。
ニューラルネットワークは、機械学習の手法の一つです。位置づけを整理すると「AI(人工知能)の中に機械学習があり、そのさらに中にニューラルネットワークがある」という入れ子の関係になります。
なぜニューラルネットワークが注目されるかというと、層を深く重ねる(=ディープラーニング=深層学習)ことで、画像認識や音声認識など「他の手法では難しかった複雑な問題」を解けるようになったからです。
ディープラーニング(Deep Learning)とは、中間層(隠れ層)を何十層・何百層と深く重ねたニューラルネットワークのことを指します。「深い(deep)」ネットワークだからディープラーニングと呼ばれています。画像生成AI・ChatGPTなどの最新AIも、ディープラーニングを土台にしています。
ニューラルネットワークの「学習」とは、ひと言で言えば「重みを少しずつ調整して誤差を小さくしていく繰り返し作業」です。
なぜ重みを調整するかというと、最初はすべての重みが適当(ランダム)な値なので、出力が正解と大きくズレているからです。正解と出力の差(誤差)を計算し、誤差が小さくなる方向に重みを少しだけ変えます。これを大量のデータで何度も繰り返すと、重みが最適な値に近づいていきます。
この「誤差を出力から入力の方向へさかのぼりながら、各重みにどれだけ責任があるかを計算して修正する」仕組みを誤差逆伝播(バックプロパゲーション)と呼びます。上のビジュアライザーで 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 が深層学習でよく使われる」という点を押さえておくとよいでしょう。