Dense層って何?畳み込みとの違いを解説

2025年6月26日木曜日

Dense Google Colab Keras

X f B! P L
アイキャッチ画像 Dense層って何?畳み込みとの違いを解説

はじめに:Dense層とは?

ディープラーニングにおけるモデル構造には、さまざまな種類の「層(レイヤー)」があります。 その中でも特に基本的で重要なのがDense層(全結合層)です。
この記事では、Dense層の働きや仕組みを丁寧に解説するとともに、画像認識でよく使われる畳み込み層(Conv層)との違いについてもわかりやすく説明します。

Dense層の仕組み

Dense層とは、全ての入力ノードが全ての出力ノードに接続されている構造を持つ層のことです。そのため「全結合層」とも呼ばれます。
たとえば、入力が3個・出力が2個あれば、3×2=6個の重みが必要となり、それぞれが学習の対象になります。
Dense層の計算は、次の数式で表されます:

出力 = 活性化関数(入力ベクトル × 重み行列 + バイアス)

この計算では、入力の数値と重みを掛けた合計にバイアスを加え、最後に活性化関数(ReLUやSigmoidなど)を適用します。
この一連の処理により、ニューラルネットワークは複雑な関係性を学習することが可能になります。

以下の図は、Dense層を含むニューラルネットワークの全体構造を示したものです(出典:Wikipedia)。

Dense層の図

図解: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層」の流れが基本構成となっており、それぞれの役割を理解することが重要です。

参考リンク

このブログを検索

自己紹介

はじめまして、機械学習を独学中のSHOU TAKEと申します。本ブログでは、Python・Keras・Google Colabを活用した画像分類やニューラルネットワークの実験記事を中心に発信しています。初学者の方にも分かりやすく、学んだことをそのまま実験形式でまとめるスタイルです。これまで取り組んだテーマには、学習率やOptimizerの比較、Batch Sizeの検証、事前学習の活用などがあります。ご質問やご感想は、お問い合わせフォームからお気軽にどうぞ。

お問い合わせフォーム

名前

メール *

メッセージ *

プライバシーポリシー

QooQ