はじめに:Dense層とは?
ニューラルネットワークにはさまざまな「層(レイヤー)」がありますが、中でも頻繁に登場するのが「Dense層(全結合層)」です。 本記事では、Dense層の基本から、畳み込み層(Conv層)との違いを解説します。
Dense層の仕組み
Dense層とは、すべての入力ノードがすべての出力ノードとつながっている層のことです。
たとえば、入力が3つ、出力が2つある場合、3×2=6個の重みが学習されます。
数学的には以下のように計算されます:
出力 = 活性化関数(入力ベクトル × 重み行列 + バイアス)
図で表すと以下のようなイメージになります:
※Wikipediaより
図解:Dense(全結合)層とは?
上の図は、ニューラルネットワークの構造を示したものです。カラフルなノード(丸)と、それらをつなぐ線が特徴的です。この構造の中でも、Dense層(全結合層)がどのような働きをしているかを詳しく見てみましょう。
1. 入力層(Input Layer)
一番左にあるノード群は、ネットワークに入力されるデータです。MNISTのような画像の場合は、画像のピクセル値が1つずつ入ります。
2. 中間層(隠れ層 / Hidden Layers)
中央の1〜2列にあるノードが「隠れ層」です。この部分がDense層にあたります。
- 各ノードは、前の層のすべてのノードから重み付きの信号を受け取っています。
- 受け取った信号の合計に、活性化関数(ReLUやSigmoidなど)を通して「特徴」を抽出します。
- すべてのノードが全ての前のノードとつながっている(全結合)のがポイントです。
3. 出力層(Output Layer)
一番右のノードが出力層です。例えばMNISTなら10個のノード(数字0〜9)があり、どの数字に分類されるかを確率で示します。
Dense層の役割とは?
Dense層は、「画像」や「テキスト」などの複雑なデータから学習した特徴をもとに、最終的な判断(分類や予測)を下す層です。
- 畳み込み層(Conv層)が画像から特徴を抽出
- Dense層がその特徴を使って分類
つまり、Dense層は「判断を下す頭脳」のような役割を果たしています。
図から読み取れるポイント
- 各ノードが前の層すべてと接続されている → 全結合の意味
- 色で層ごとのノードが区別されている
- シンプルな構造ながら、深層学習の基本的な動きを表現
畳み込み層(Conv層)との違い
では、画像認識によく使われる畳み込み層(Conv層)とDense層は何が違うのでしょうか?
項目 | Dense層 | 畳み込み層(Conv層) |
---|---|---|
接続方式 | 全ての入力と全ての出力が接続 | 一部の領域(カーネル)に限定された接続 |
主な用途 | 分類や出力層など | 画像から特徴を抽出するため |
パラメータ数 | 多い(全結合のため) | 少なめ(同じフィルターを使い回す) |
Dense層はどこで使う?
画像分類タスクにおいては、Conv層で特徴を抽出したあと、Flatten層で一次元化し、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層は、「入力すべてを見て判断する」層で、最終的な分類処理に使われることが多いです。一方で、Conv層は「画像の局所的な特徴を抽出する」ために使われます。役割が異なるため、CNNでは両方を組み合わせて使うのが一般的です。
0 件のコメント:
コメントを投稿