全結合層(全結合ネットワーク)とは
Fully Connected Layer / Dense Layer / 全結合ネットワーク
前の層の全ユニットと後の層の全ユニットを結合するニューラルネットワークの層
ひとことで言うと
前の層の全部の出力を、次の層の全部のユニットにつなげる基本的な層。
概要
全結合層は、ある層の各ユニットが次の層の全ユニットと結合するニューラルネットワークの基本構成要素。各出力は入力ベクトル全体の重み付き和にバイアスを加え、活性化関数を適用して計算される。畳み込み層やプーリング層が局所的な特徴抽出を担う一方、全結合層は抽出された特徴を統合し、分類や回帰といった最終的な出力に変換する役割を担う。CNNや多くのニューラルネットワークでは、出力側の層に配置されることが多い。入力と出力のユニット数の積に比例してパラメータ数が増えるため、高次元の入力を直接扱うと計算コストとメモリ使用量が大きくなる。
アーキテクチャ
全結合層は重み行列とバイアスベクトルを持ち、入力ベクトルとの行列積にバイアスを加えた後、ReLUやシグモイドなどの活性化関数を適用して出力を得る。入力ユニット数と出力ユニット数の積が、重み行列のパラメータ数になる。
利点
- 任意の入力と出力の対応関係を表現でき、汎用的な変換層として利用できる
- 実装がシンプルで、多くのフレームワークで標準的にサポートされている
欠点
- 入力・出力のユニット数が増えるとパラメータ数が急激に増加し、計算コストとメモリ使用量が大きくなる
- 画像のような高次元データでは空間的な位置関係を考慮できず、CNNの畳み込み層に比べて非効率になりやすい
比較
関連用語
よくある質問
全結合層とDense層は同じ意味か?
同じ概念を指します。TensorFlow/KerasではDense層、PyTorchではLinear層と呼ばれますが、いずれも前の層の全ユニットと次の層の全ユニットを結合する層です。