Chapter 08

隠れ層(見えない層)

入出力層の間にある層。

チャプター別 ディープラーニング図

チャプターを進めるたびに、下の図が少しずつ埋まります。ここまでの構造です。

見えるのは入力(X)出力(Y)だけ。その間の層はネットワーク内だけで使う表現なので隠れ層です。

見える: 入力見えない: 隠れ(H)見える: 出力

隠れ層(外からは見えない)W₁·X+b₁ → ReLUW₂·H+b₂ → ReLUX1X2X3H1H2H3Y1Y2Y3

値は入力→隠れ層→出力と流れます。隠れ層は見えない内部表現です。

ディープラーニングで見る隠れ層

隠れ層入力と出力の間にある中間ステージです。ユーザーには入力(例: 写真)と出力(例:「犬」)しか見えませんが、その間で隠れ層が「隠れた特徴」を作り出します。

流れは X → Linear(W₁·X+b₁) → ReLU → H(隠れ表現)→ Linear(W₂·H+b₂) → ReLU → Y(出力) です。Hが隠れ層の結果で、入力の「重要な特徴」が圧縮されています。

例え: 写真を見て「犬」と言うとき、脳の中では「色→輪郭→目・鼻・耳→犬!」という中間的な思考ステップを経ています。この中間ステップが隠れ層です。隠れ層のニューロン数(幅)が多いほど、より多くの異なる特徴を捉えられます。

隠れ層は入力データを段階的に要約・変換します。浅い層は明るさや輪郭など単純な特徴を、深い層は目・車輪・文字など複雑な特徴を捉えます。

隠れ層がなければ、入力から直接出力への非常に単純な(線形の)関係しか表現できません。隠れ層があるからこそ、曲線や複数条件の組み合わせなど複雑な関係を学習できます。

ニューロン数(幅)層数(深さ)がモデルの表現力を決めます。小さすぎると情報のボトルネックで性能が出ず、大きすぎると過学習(学習データの丸暗記)のリスクがあります。

画像認識: 「ピクセル→輪郭→テクスチャ→物体の部品(目・車輪)→物体全体(犬・車)」というステージがすべて隠れ層です。深い層ほど抽象的な特徴を抽出します。

チャットボット・翻訳: テキストを数値に変換した後、複数の隠れ層で「単語の意味→文脈→回答の方向」を段階的に精製します。ChatGPTは数十層の隠れ層(Transformerブロック)を通して回答を生成します。

音声認識: 「音波→周波数特徴→音素→単語→文」という変換の各ステージに隠れ層があります。

順番に計算: X → (W₁·X+b₁) → ReLU → H → (W₂·H+b₂) → ReLU → Y の各ステップを順番に計算します。空白がHにあれば1段目の線形+ReLUまで、空白がYにあればHを先に求めてから2段目を計算します。

ReLUに注意: 線形の結果(W·入力+b)が負ならReLUで0になります。次の層ではその値は0なのでまったく影響しません──計算で無視できます。隠れ層の問題で頻出のポイントです。

Wやbの空白: 隠れ層の問題は2段階(線形+活性化が2回)あります。まず空白がどの段階にあるか特定しましょう。その段階の入力と出力が分かっていれば、その段階の式だけで空白を求められます。

隠れ層は、入力を線形変換(WX+bW \cdot X + b)とReLUで中間表現Hにし、さらに線形とReLUで最終出力Yにします。

X
3
1
W₁
2
-1
-1
1
b₁
0
1
線形
5
-1
ReLU
H
5
0
W₂
1
1
0
1
b₂
1
-1
線形
6
-1
ReLU
Y
6
0

1層: H = ReLU(W₁·X + b₁)

線形₁ = (W₁ 1行·X)+b₁[0] = (2×3 + -1×1) + (0) = 5 → ReLU = 5
線形₂ = (W₁ 2行·X)+b₁[1] = (-1×3 + 1×1) + ((1)) = -1 → ReLU = 0

2層: Y = ReLU(W₂·H + b₂)

線形₁ = (W₂ 1行·H)+b₂[0] = (1×5 + 1×0) + (1) = 6 → ReLU = 6
線形₂ = (W₂ 2行·H)+b₂[1] = (0×5 + 1×0) + ((-1)) = -1 → ReLU = 0

問題

隠れ層付き順伝播 X → (W₁·X+b₁) → ReLU → H → (W₂·H+b₂) → ReLU → Y で空欄(?)を埋めなさい。

X
3
0
W₁
1
2
b₁
2
線形
5
ReLU
H
W₂
-2
b₂
0
線形
-10
ReLU
Y
0
1 / 20