ニューラルネットワークの基礎

パーセプトロン・多層パーセプトロン・活性化関数・学習の仕組み
🔰 初心者

ニューラルネットワークって何ですか?

🎓 上級者

人間の脳の神経細胞(ニューロン)のしくみを模倣した機械学習モデルだよ。ディープラーニングの基盤となる技術なんだ。

🧱 構造(3つの層)
役割
入力層(Input Layer)データを受け取る層(特徴量の数=ノード数)
中間層(Hidden Layer)データを加工・変換する層。「隠れ層」とも呼ぶ
出力層(Output Layer)最終的な予測結果を出す層
ディープラーニングとの関係

中間層が2層以上あるものをディープニューラルネットワーク(DNN)と呼び、その学習をディープラーニング(深層学習)と言う。

🧠 形式ニューロン(McCulloch-Pittsモデル)
🔰 初心者

ニューラルネットワークの一番最初のモデルって何ですか?

🎓 上級者

1943年にマカロック(McCulloch)ピッツ(Pitts)が提案した形式ニューロンだよ。人間の脳の神経細胞の動きを数学的にモデル化した最初の試みなんだ。

形式ニューロン(1943年)

複数の入力(0か1)を受け取り、その合計が閾値(しきい値)を超えたら1を出力、超えなければ0を出力する
AND・OR・NOTなどの論理演算を表現できることを示した。ただし重みは人間が手動で設定する必要があり、学習機能はない。後のパーセプトロンに「学習(重みの自動調整)」が追加された。
形式ニューロン → パーセプトロンの流れ

形式ニューロン(1943年、マカロック&ピッツ):ニューロンの数学モデル。学習機能なし
パーセプトロン(1958年、ローゼンブラット):重みを自動で学習できるように進化

⚙️ 1つのニューロンのしくみ(パーセプトロン)
🔰 初心者

1つのニューロンはどういう仕組みなんですか?

🎓 上級者

パーセプトロンと呼ばれる最もシンプルなニューラルネットワークだよ。入力に重みをかけて合計し、活性化関数に通して出力する。学習=この重みを最適に調整することなんだ。

パーセプトロンの処理

1. 複数の入力(x₁, x₂, ...)を受け取る
2. 各入力に重み(w)をかけて合計する → w₁x₁ + w₂x₂ + ... + b(bはバイアス)
3. その合計を活性化関数に通して出力する
学習=この重みを最適に調整すること。
パーセプトロンの計算フロー x₁ x₂ x₃ 入力 w₁ w₂ w₃ b バイアス Σ 重み付き和 w₁x₁ + w₂x₂ + w₃x₃ + b f 活性化関数 y 出力 入力 重み 合計 活性化関数 出力
図1: パーセプトロンの計算フロー(入力 → 重み付き和 → 活性化関数 → 出力)
🚧 パーセプトロンの限界とMLP
🔰 初心者

パーセプトロンには限界があるんですか?

🎓 上級者

単純パーセプトロンは線形分離可能な問題のみしか解けないんだ。有名なXOR問題が解けなかったことが問題になったけど、多層パーセプトロン(MLP)で中間層を追加することで解決されたよ。

単純パーセプトロン

層:単層(入力→出力)
解ける問題:線形分離可能な問題のみ
XOR問題:解けない

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

層:多層(入力→中間層→出力)
解ける問題:非線形問題も解ける
XOR問題:解ける

📈 活性化関数
🔰 初心者

活性化関数って何のためにあるんですか?

🎓 上級者

合計値をそのまま出すと単純な線形変換にしかならないんだ。活性化関数で非線形に変換することで、複雑なパターンを学習可能になるんだよ。活性化関数がないと多層にしても線形のままなんだ。

活性化関数特徴主な用途
シグモイド0〜1に変換。勾配消失しやすい出力層(2クラス分類)
tanh-1〜+1に変換中間層(シグモイドより少し改善)
ReLU0以下→0、0以上→そのまま。シンプルで高速中間層で最もよく使われる
ソフトマックス全出力の合計が1(確率として解釈可能)出力層(多クラス分類)
主な活性化関数の比較 x -3 -2 -1 0 1 2 3 0 1 -1 0.5 ステップ関数 (歴史的) Sigmoid ReLU tanh
図2: 主な活性化関数の形状比較(ステップ関数・Sigmoid・ReLU・tanh)
🔄 学習のしくみ
🔰 初心者

ニューラルネットワークはどうやって学習するんですか?

🎓 上級者

大きく5つのステップを繰り返すんだ。まず順伝播で予測を出して、損失計算でズレを測って、逆伝播で各重みの修正量を計算して、勾配降下法で重みを更新する。これの繰り返しだよ。

学習の5ステップ

1. 順伝播(Forward Propagation): 入力→中間層→出力の順にデータを流して予測を出す
2. 損失計算: 予測と正解のズレを損失関数で計算
3. 逆伝播(Backpropagation): 出力→入力の方向に誤差を逆向きに伝えて、各重みの修正量を計算
4. 重み更新: 勾配降下法で重みを少しずつ調整
5. 1〜4を繰り返す

信用割当問題(Credit Assignment Problem)

多層ネットワークで最終的な誤差が出たとき、どの層のどの重みがどれだけ誤差に貢献したのかを特定する問題
出力層の直前の重みなら影響度は分かりやすいが、中間層が深くなるほど各重みの「責任の割合」が見えにくくなる。誤差逆伝播法(Backpropagation)は、この信用割当問題を連鎖律(チェインルール)を使って効率的に解く手法。
⬇️ 勾配降下法
種類説明
バッチ勾配降下法全データで勾配を計算→更新。安定だが遅い
SGD(確率的勾配降下法)全データを一気に使わず、ミニバッチに分けて少しずつ更新。現在の主流
学習率(Learning Rate)

1回の更新で重みをどれだけ動かすかの幅。大きすぎると発散、小さすぎると収束が遅い。

⚠️ ニューラルネットワークの課題
課題説明対策
勾配消失問題層が深いと逆伝播で勾配がどんどん小さくなり学習が進まないReLUの使用、残差接続など
過学習パラメータが多いため過学習しやすいドロップアウト、正則化、データ増強
計算コスト大量のパラメータと繰り返し計算が必要GPUの活用
解釈の難しさなぜその予測になったか説明しにくいブラックボックスモデル
ドロップアウト

学習時にランダムにノードを無効化(一時的に削除)して過学習を防ぐ手法。毎回異なるネットワーク構造で学習するため、アンサンブル学習に近い効果がある。

🎯 G検定ポイント