隠れ層とは
Hidden Layer
ニューラルネットワークの入力層と出力層の間に位置し、特徴表現を段階的に変換する層
ひとことで言うと
AIモデルの中で、入力と出力の間にあってデータの特徴を変換していく層。
概要
隠れ層とは、ニューラルネットワークにおいて入力層と出力層の間に位置する層の総称。 外部から直接観測される入出力とは異なり、内部の計算値が直接見えないことから「隠れ(hidden)」と呼ばれる。 各隠れ層は前の層の出力を重み付き和し活性化関数で非線形変換することで、入力データから段階的に抽象度の高い特徴表現を作り出す。 隠れ層を持たない(入力層と出力層のみの)モデルは線形モデルと等価な表現力しか持たないため、隠れ層の存在がニューラルネットワークの非線形な表現力の源泉になっている。 隠れ層を複数積み重ねたネットワークを用いる学習手法が深層学習と呼ばれる。
背景
単純な線形モデルでは、入力と出力の間に複雑な非線形関係がある問題を十分に表現できないという限界があった。 隠れ層は、入力層と出力層の間へ中間的な変換を挟み、こうした非線形な関係を段階的に学習させる仕組みとして導入された。
歴史
1986年: RumelhartらがBackpropagation(誤差逆伝播法)を発表し、隠れ層を持つ多層パーセプトロンの学習が実用化される。 以降、隠れ層の数(深さ)や各層のノード数(幅)を増やす方向でネットワークが発展し、深層学習の基盤となった。
アーキテクチャ
各隠れ層は、前層の出力に重み行列を掛けバイアスを加えた値(重み付き和)を計算し、活性化関数で非線形変換して次の層へ渡す。 理論上は1つの十分広い隠れ層でも任意の連続関数を近似できるとされる(万能近似定理)が、実際には層を浅く広くするより、適度な深さに分けたほうが少ないパラメータで複雑な関数を効率よく学習できることが多い。
コード例
隠れ層を2つ持つPyTorchのネットワーク
import torch.nn as nn
model = nn.Sequential(
nn.Linear(784, 256), # 入力層 → 隠れ層1
nn.ReLU(),
nn.Linear(256, 64), # 隠れ層1 → 隠れ層2
nn.ReLU(),
nn.Linear(64, 10), # 隠れ層2 → 出力層
)利点
- 層を深くする(隠れ層を増やす)ことで、より複雑な非線形関数を近似できる
- 浅い層ほど汎用的な特徴を、深い層ほどタスク固有の特徴を学習する傾向があり、転移学習にも応用しやすい
- 層の数・幅を調整することで、モデルの表現力と計算コストのバランスを柔軟に設計できる
欠点
- 隠れ層を増やすほどパラメータ数が増加し、学習に必要なデータ量・計算資源が増える
- 層を深くしすぎると勾配消失・勾配爆発等、学習が不安定になる問題が起きやすい
- 層数やノード数はタスクごとに異なり、検証データでの精度を確認しながら値を調整する必要がある
比較
- ニューラルネットワーク — 隠れ層は、ニューラルネットワークの入力層と出力層の間に位置する構成要素
- 深層学習 — 深層学習は、隠れ層を複数(多数)積み重ねたニューラルネットワークを用いる学習手法
関連用語
よくある質問
隠れ層の数はどうやって決める?
明確な公式はなく、タスクの複雑さやデータ量に応じて、検証データでの性能を見ながら経験的に調整することが一般的。