全結合層 (G検定)

全結合層

1. 定義と概要

全結合層(Fully Connected Layer、FC層とも呼ばれます)とは、層内のすべてのユニットが前の層のすべてのユニットと結合する層です。各ユニットは、入力に重み(入力の重要度を表す数値)を掛けた総和に、バイアス(重み付きの合計に加える調整用の数値)を加えます。

重みやバイアスはいずれも、学習によって調整されるパラメータ(モデルが学習によって最適化していく数値の総称)の一種です。その値を活性化関数(入力の合計を次の層に渡す値に変換する数式で、例としてReLU関数などがあります)に通して出力する仕組みです。

CNNでは、畳み込み層(画像の一部分ずつフィルタを当てて特徴を抜き出す層)とプーリング層(特徴マップを縮小して要点だけを残す層)が特徴を抽出します。抽出された特徴マップ(画像の特徴を数値化した多次元データ)は、全結合層に入力する前に平坦化(Flatten、多次元に並んだデータを1列の数値の並びに変換する処理)されます。この処理を経て、クラスごとのスコアなど出力層につながる値へと変換されます。

CNNは畳み込み層とプーリング層を繰り返し、画像の局所的な特徴を段階的に抽出する構造です。その出力である特徴マップは空間的な構造を保った多次元データなので、そのままでは「この画像はどのクラスに属するか」という最終的な判断には使えません。

そこでネットワークの終盤に全結合層を配置し、特徴マップを平坦化して結合し、クラスごとのスコアに変換する役割を持たせる流れになっています。

2. 試験対策ポイント

まず押さえておきたいのは、全結合層の構造そのものです。前層のすべてのユニットと次層のすべてのユニットが結合し、各ユニットがy=wx+bという線形変換を行ってから活性化関数に通す仕組みが、全結合層の基本になります。CNNでは畳み込み層・プーリング層の後段、出力層の手前に全結合層が配置され、特徴マップを平坦化してから入力するという順序になります。

全結合層は、ユニット間の結合数がそのままパラメータ数になる構造です。そのため、層の規模が大きいネットワークほどパラメータ数が膨大になりやすいという性質があります。

たとえば特徴マップ側が25,088要素、次層が4,096ユニットの全結合であれば、結合数はおよそ1億にのぼる例が知られています。パラメータ数の多さは、過学習(訓練データに適合しすぎて、未知のデータへの精度が落ちる現象)のリスクと関係する点として整理しておきたい論点です。

パラメータ数を削減する対策として、出力側の全結合層をGlobal Average Pooling(GAP、特徴マップの各チャンネルを1つの平均値にまとめる処理)に置き換える手法があります。GAPはパラメータをほとんど持たないため、全結合層と比べて過学習の抑制とモデルの軽量化につながります。

また、全結合層にDropout(学習時に一部のユニットをランダムに無効化する手法)を組み合わせて過学習を防ぐ構成も、あわせて確認しておきたい知識の一つです。

3. 関連概念との比較・相違点

全結合層は、CNNを構成する畳み込み層・プーリング層と並べると位置づけがはっきりします。三者の結合や処理の範囲と、担う役割を整理すると次のとおりです。

層 結合・処理の範囲 担う役割
畳み込み層 フィルタで画像の一部分だけを見る局所的な結合(重み共有あり) 局所的な特徴を抽出する
プーリング層 特徴マップを縮小して情報を要約する処理 位置のずれに対する頑健性を高める
全結合層 前層のすべてのユニットと結合(重みはユニットごとに個別) 特徴を統合して分類などの出力に変換する

全結合層と畳み込み層との最大の違いは、結合の範囲にあります。畳み込み層はフィルタを使って画像の一部分だけを見る局所的な結合を行い、同じフィルタの重みを画像全体で使い回す重み共有という性質を持つ構造です。

一方、全結合層は前層のすべてのユニットと結合し、ユニットごとに個別の重みを持つ点が異なります。この違いにより、畳み込み層は重み共有のおかげでパラメータ数を抑えられるのに対し、全結合層は結合数の分だけパラメータが増えやすいという結果につながります。

プーリング層との違いは、役割そのものです。プーリング層は特徴マップを縮小し、対象の位置が多少ずれても同じ特徴として扱えるように頑健性を高める処理を担います。これに対して全結合層は、抽出された特徴を統合してクラス分類などの最終的な出力に変換する処理を担うという関係にあります。

畳み込み層とプーリング層が特徴の抽出を担当し、全結合層がその特徴を使って判断を下すという役割分担は、CNN全体の構造を理解するうえでの重要なテーマです。

4. ビジネス・実務での活用シナリオ

スマートフォン向けの画像分類モデル(画像がどのクラスに属するかを判定するモデル)では、全結合層が持つ大量のパラメータが端末の記憶容量と推論(学習済みモデルを使って答えを出す処理)の速度を圧迫する要因です。そのため、全結合層をGAPに置き換えてモデルを軽量化する事例が見られ、アプリの起動と推論の速さにつながっています。

学習データが限られる医療画像診断の分野は、全結合層に伴う過学習が起きやすいという課題を抱える領域です。Dropout処理や正則化(パラメータに制約を加えて過学習を抑える手法)、データ拡張(画像に回転・反転などの加工を加えて訓練データを疑似的に増やす手法)を組み合わせる取り組みが行われています。こうした対策により、未知の画像への汎化性能(学習に使っていないデータにも対応できる性能)を確保します。

製造業の外観検査では、現場のカメラ内蔵デバイス上でモデルを動かすため、全結合層を圧縮した軽量なCNNが採用されます。通信を介さずリアルタイムに欠陥を判定できる仕組みが、生産ラインの停止判断などに直結する実務上の利点です。

5. 要点まとめ

  • 全結合層は、前層の全ユニットと次層の全ユニットを結合し、CNNでは畳み込み層・プーリング層が抽出した特徴マップを平坦化して受け取る層です。
  • 結合数がそのままパラメータ数になるため、大規模なネットワークほどパラメータが膨大になりやすく、過学習のリスクと関係します。
  • パラメータの削減策として、GAPへの置き換えやDropout手法との併用が、実務でも押さえておきたいポイントです。

6. 確認問題

問1全結合層は、層内のすべてのユニットが前層のすべてのユニットと結合し、入力に重みを掛けた総和にバイアスを加えた値を出力する。

解答・解説をみる

○ 正しい

全結合層の基本構造そのものの説明です。各ユニットがy=wx+bの線形変換を行い、活性化関数に通して出力する処理を行います。

問2CNNでは、畳み込み層が出力した特徴マップを平坦化せず、多次元のまま全結合層に入力するのが標準的な処理として扱われる。

解答・解説をみる

× 誤り

特徴マップは空間的な構造を保った多次元データのため、全結合層に入力する前に1次元のベクトルへ変換する平坦化(Flatten)の処理が必要です。多次元のまま入力するという記述は誤りで、正しくは平坦化してから入力する順序になります。

問3全結合層はパラメータ数が多くなりやすく過学習のリスクと関係するため、Global Average Pooling(GAP)に置き換えてパラメータを削減する手法がある。

解答・解説をみる

○ 正しい

GAPは抽出された特徴の各チャンネルを平均値に集約する処理で、全結合層と比べてパラメータをほとんど持たず、過学習の抑制とモデルの軽量化に寄与します。