はじめに:Dense層とは?
ディープラーニングにおけるモデル構造には、さまざまな種類の「層(レイヤー)」があります。
その中でも特に基本的で重要なのがDense層(全結合層)です。
この記事では、Dense層の働きや仕組みを丁寧に解説するとともに、画像認識でよく使われる畳み込み層(Conv層)との違いについてもわかりやすく説明します。
Dense層の仕組み
Dense層とは、全ての入力ノードが全ての出力ノードに接続されている構造を持つ層のことです。そのため「全結合層」とも呼ばれます。
たとえば、入力が3個・出力が2個あれば、3×2=6個の重みが必要となり、それぞれが学習の対象になります。
Dense層の計算は、次の数式で表されます:
出力 = 活性化関数(入力ベクトル × 重み行列 + バイアス)
この計算では、入力の数値と重みを掛けた合計にバイアスを加え、最後に活性化関数(ReLUやSigmoidなど)を適用します。
この一連の処理により、ニューラルネットワークは複雑な関係性を学習することが可能になります。
以下の図は、Dense層を含むニューラルネットワークの全体構造を示したものです(出典:Wikipedia)。
図解:Dense(全結合)層とは?
上記の図には、入力層・中間層(隠れ層)・出力層という、ニューラルネットワークの基本構造が描かれています。 この中で、中央のカラフルなノード群がDense層に該当します。 以下では、それぞれの層がどんな役割を果たしているのか、順を追って見ていきましょう。
1. 入力層(Input Layer)
図の一番左にあるノード群が入力層です。画像認識の場合は、各ピクセルの値(0〜255)を1つずつこの層に入力します。 たとえば28×28ピクセルの画像なら、合計784個の入力ノードになります。
2. 中間層(隠れ層 / Hidden Layers)
図の中央にあるノードが「隠れ層(Dense層)」です。 Dense層の特徴は、前の層のすべてのノードとつながっている点です。
- 各ノードが前層すべての出力を受け取り、重みをかけて合計します。
- 合計値に活性化関数を適用して、非線形な変換を行います。
- この処理により、「特徴の組み合わせ」や「関係性」を学習できます。
3. 出力層(Output Layer)
右端のノード群が出力層です。例えば、手書き数字の分類であれば、0〜9までの10クラスを予測するため、出力ノードは10個になります。 それぞれのノードが「その数字である確率」を表します。
Dense層の役割とは?
Dense層は、最終的な判断を下す層として使われることが多いです。画像であれば、Conv層が抽出した特徴をもとに、 Dense層が「どのクラスか」を分類する役割を果たします。
- Conv層: 特徴を抽出する(目・口・線など)
- Dense層: その特徴をもとにクラスを分類する
つまり、Dense層はニューラルネットワークにおける「最終判断の頭脳」といえる重要な部分なのです。
図から読み取れるポイント
- すべてのノードが前の層と接続されている → 全結合
- シンプルな図だが、ニューラルネットワークの基本構造をよく表している
畳み込み層(Conv層)との違い
Dense層と並んでよく使われるのが「畳み込み層(Conv層)」です。特に画像処理ではConv層が重要な役割を担います。
ここでは、Dense層との違いを表にまとめて比較してみましょう。
項目 | Dense層 | 畳み込み層(Conv層) |
---|---|---|
接続方式 | すべての入力とすべての出力がつながる(全結合) | カーネル(小さなフィルタ)で画像の一部分ずつ見る |
主な用途 | 最終的な判断・分類(出力層) | 画像などから特徴を抽出(入力〜中間層) |
パラメータ数 | 多い(全てのノードが接続されるため) | 少なめ(カーネルを使い回すため) |
Conv層は計算量を抑えつつ効果的な特徴抽出が可能であり、Dense層は抽出された特徴をもとに最終的な意思決定を行うため、役割が大きく異なります。
Dense層はどこで使う?
画像分類では、Conv層で画像から特徴を抽出したあと、Flatten層でデータを1次元に変換し、Dense層で分類を行うのが一般的です。 以下はKerasでよく使われるDense層の実装例です。
# Kerasでの典型的なDense層の使い方
from tensorflow.keras import layers
x = layers.Flatten()(conv_output)
x = layers.Dense(64, activation='relu')(x)
outputs = layers.Dense(10, activation='softmax')(x)
このように、Dense層はモデルの最後に配置されることが多く、出力を決定する重要な役割を持っています。
まとめ
Dense層(全結合層)は、すべての入力を使って最終的な判断を下す層です。
一方、畳み込み層(Conv層)は画像などから局所的な特徴を抽出する層です。
ディープラーニングでは、これらの層を組み合わせることで、高度なパターン認識や分類が可能になります。
特にCNNでは、「Conv層 → Flatten → Dense層」の流れが基本構成となっており、それぞれの役割を理解することが重要です。
0 件のコメント:
コメントを投稿