全結合層とは?仕組み・パラメータ数・活用方法を解説

全結合層(Fully Connected Layer、Dense Layer)は、入力のすべての要素を出力ユニットへ接続する層です。重み付き和とバイアスで、新しい表現を作ります。

画像・文章・表形式データの特徴を、分類や回帰の出力へ変換します。設計では、入力次元と出力次元、パラメータ数を先に確かめます。

全結合層の重み行列とバイアスによる変換

入力ベクトルxが重み行列Wとバイアスbを経て出力yへ変換される全結合層の図解
入力全体を参照して特徴を変換します。

入力ベクトルxに重み行列Wを掛け、バイアスbを加えると、出力yが得られます。各出力ユニットは、入力全体を参照します。PyTorchのLinearは、この変換を y=xW<sup>T</sup>+bというアフィン変換として実装しています。

全結合層だけを重ねると、全体が1つの線形変換にまとまってしまいます。そのため、出力の後へReLU、GELU、sigmoid、softmaxなどの活性化を置き、非線形な関数を表せるようにします。そのうえで、非線形層や正規化と組み合わせます。

入力・出力の次元と層の形状

入力特徴の数をD、出力ユニットの数をHとすると、重みは概ねH×D、バイアスはH個になります。入力次元を誤ると行列積が成り立たないため、画像の特徴マップをFlattenする場合や、系列の各時刻へ適用する場合は、前後の形状を明示しておきます。

ポイント

迷ったら、入力と出力の次元を先に書き出し、重みとバイアスの数を計算します。形状の食い違いは、この時点で見つけられます。

全結合層の分類・回帰・投影の出力

全結合層は、畳み込みやRNNの後段にも使われます。同じ層でも、出力をどう使うかによって役割が変わり、確認すべき事項も分類ヘッド、回帰ヘッド、特徴投影といった観点ごとに異なります。

  • 分類ヘッド:クラス数ぶんの出力を作り、softmaxなどで確率にする。
  • 回帰ヘッド:予測値の数だけ出力し、目的に合う損失を使う。
  • 特徴投影:高次元の特徴を低次元の埋め込みへ変換する。
  • 融合:画像・表・テキストなど複数の特徴を連結して処理する。
  • 出力制約:sigmoidやsoftplusで、値域や非負性を表す。

ポイント

用途を決めてから出力の形を決めると、設計で迷いにくくなります。たとえば分類ではクラス数、回帰では予測値の数を、出力ユニットの数に合わせます。

パラメータ数と正則化の管理

入力・出力次元から表現力とパラメータ数を考え、Dropout・重み減衰・早期終了で正則化する層構造の図解
表現力と過学習のバランスを管理します。

入力や出力の次元を大きくすると、表現力は上がりますが、パラメータ数も増えます。データが少ないと過学習しやすいため、隠れユニットや層数、Dropout、重み減衰、早期終了を比較します。

比較の結果を再現できるよう、バイアスの有無や初期化も保存し、再現性を確保します。

全結合層は入力全体を接続するため、高解像度の画像をFlattenして直接入れると、パラメータが急増します。そこで、畳み込みやプーリング、低次元の埋め込みで特徴を圧縮し、必要な部分だけを全結合層へ渡します。

ポイント

入力と出力の次元が大きいほど、パラメータ数と過学習の心配が増します。データ量に対して大きすぎないかを、正則化や層数の比較で確かめます。

設計で先に決める形状・出力・評価

全結合層の設計で特徴量・テンソル形状・出力と損失・推論負荷を確認するチェックリスト
形状と出力を先にそろえて評価します。

特徴量の定義から推論負荷の確認まで、設計の早い段階で一通り確かめておきます。

  • 特徴量を定義する:入力の意味とスケールを決め、欠損やカテゴリの表し方も定める。
  • テンソル形状を確認する:Flatten後の形、系列の長さ、バッチ次元をテストで確かめる。
  • 出力と損失を合わせる:分類・回帰の別と、確率や値域の範囲を明示する。
  • 容量を比較する:ユニット数、層数、正則化をベースラインと比べる。
  • 推論負荷を見る:パラメータ、メモリ、レイテンシを測る。

ポイント

特徴量からテンソル形状、出力と損失、容量、推論負荷まで、どこが未決かを一覧にして見える形にしておくと、設計の抜けを防ぎやすくなります。

精度と運用コストの両方の評価

適切な損失と精度指標に加えて、入力の分布が変わったときの性能、パラメータ数、推論時間、メモリも測ります。評価では訓練・検証・テストを分け、特徴量の前処理やカテゴリ辞書は学習データだけで作ります。

さらに、出力の確率校正や極端値も確認します。

全結合層で起きやすい失敗と対策

Flatten後の次元の誤り

Flatten後の次元がずれると、後続の層で行列積が成り立たなくなります。そこで、各層の形状を小さな入力で確認し、画像サイズや系列長の変化をテストします。

パラメータ過多による過学習

パラメータが多すぎると、過学習が起きやすくなります。そのため、層やユニットを減らし、正則化とデータ拡張を加えたうえで、ベースラインと比べます。

出力と活性化・損失の不一致

出力の値域とラベルの形式をそろえ、softmaxやsigmoidを二重に適用しないように確認します。

ポイント

失敗が起きたら、まず小さな入力で形状を確かめ、次に層やユニットを減らして過学習を見直し、最後に出力と活性化・損失の組み合わせを確認すると切り分けやすくなります。

入力全体を組み合わせる基本層としての全結合層

全結合層は、重み行列とバイアスで入力を変換し、分類・回帰・特徴投影のヘッドに使われます。非線形活性化や正規化、正則化と組み合わせ、前後の形状を管理しながら使います。

設計では、入力と出力の次元とパラメータ数を比べます。データ分割、出力と損失の整合、推論コストも確かめます。そのうえで、必要な表現力と運用性のバランスを見て決めます。

よくある質問(FAQ)

全結合層について、よく挙がる疑問とその答えです。

Q. 全結合層とは何ですか?

入力のすべての要素を出力ユニットへ接続する層で、重み付き和とバイアスで特徴を変換します。

Q. 線形層と同じですか?

一般には、アフィン変換を行うLinear層やDense層を指します。活性化関数は、多くの場合、別に置きます。

Q. パラメータ数はどう決まりますか?

目安は、入力次元と出力次元を掛けた数です。バイアスを使う場合は、そこに出力次元の数を加えます。

Q. 過学習を防ぐ方法はありますか?

ユニットを減らす、Dropoutや重み減衰を使う、早期終了やデータ拡張を行う、といった方法があります。ベースラインとの比較も行います。

Q. 画像にも使えますか?

使えます。ただし、高解像度の画像を直接Flattenすると大規模になるため、畳み込みなどで特徴を圧縮してから使います。

参考資料

本文の確認に使ったPyTorchの資料です。

会社紹介

株式会社riplaでは、お客様の事業・ユーザー・業務に最適化したオーダーメイド型システムを、構想策定・要件定義から開発・改善まで一気通貫で支援。事業会社でIT・DXを経験したプロフェッショナルによる高い要件定義力・システム設計力を活かし、事業成果の最大化に伴走します。

また、当社独自の開発テンプレート「Boxシリーズ」による標準機能の高速開発と、AI駆動開発の独自フレームワーク「GoDD」による独自機能のAI実装を組み合わせることで、低コスト・短期間で開発を実現いたします。

もし、システム開発やプロダクト開発に関するご要望がございましたら、お気軽にお問い合わせください。

・サービス概要資料のURLはこちら >>>
・お問合せページのURLはこちら >>>
・お役立ち資料のURLはこちら >>>

執筆者プロフィール
張田谷凌央
張田谷凌央

株式会社ripla 代表取締役CEOとして、システムパッケージ活用、システム開発、データ分析、生成AI活用、SaaS開発、アプリ開発、EC構築など、幅広い領域で企業のDX推進と事業成長を支援している。事業会社でIT・DXを経験したプロフェッショナルが集う株式会社riplaにおいて、お客様の事業・ユーザー・業務に最適化したオーダーメイド型システムを構想策定・要件定義から開発・改善まで一気通貫で支援し、単なるシステム納品にとどまらず、クライアントと同じ目線で事業成果の最大化に向けた伴走支援を行う。早稲田大学卒業後、ラクスル株式会社、LINEヤフー株式会社にて事業開発やDX推進などに従事した後、株式会社riplaを創業。