全結合層(シラバス 技術17)

1行の定義と◯×チェックは用語『全結合層』の解説にあります。

学習目標

前の層のすべてのユニットとつながる全結合層が、入力の重み付き和にバイアスを足すという線形関数を計算する仕組みを理解し、パラメータ数の数え方、活性化関数と組み合わせる理由、CNNなどのモデルの中で果たす役割を説明できるようにします。

要点

全結合層とは

全結合層は、前の層のすべてのユニットが、次の層のすべてのユニットとつながっている層です。多層パーセプトロンは、全結合層を重ねたネットワークです。ライブラリによってはDense層、Linear層とも呼ばれます。

次の層の各ユニットは、入力の1つ1つに重みを掛けて足し合わせ、最後にバイアスを足します。

出力 = 重み1 × 入力1 + 重み2 × 入力2 + … + バイアス

重みとバイアス

  • 重み:各入力が出力にどれだけ効くかを表す係数です。絶対値が大きいほど影響が強く、負なら逆向きに効きます。
  • バイアス:入力とは関係なく足される値で、出力を上下にずらします。入力がすべて0なら、出力はバイアスの値になります。

どちらも学習で調整されるパラメータです。たとえば住宅価格を予測するユニットなら、「広さ」には正の重みが、「駅からの距離」には負の重みが付くように学習が進みます。

線形関数であることの意味

全結合層の計算は、入力を何倍かして足し、定数を足すだけの線形関数です。定数を足す点を区別して、アフィン変換と呼ぶこともあります。

線形関数は、何回重ねても1つの線形関数で書けます。たとえばy = 2x + 1の出力をz = 3y + 4に入れると、z = 6x + 7という1つの式になります。そのため、全結合層の間には非線形の活性化関数を挟みます。これで初めて、層を重ねるほど複雑な関係を表せるようになります。

パラメータ数の数え方

入力がn個、出力がm個の全結合層では、重みがn × m個、バイアスがm個で、合計n × m + m個です。

  • 例1:28×28画素の白黒画像(784画素)を1列に並べ、100ユニットにつなぐと、784 × 100 + 100 = 78,500個です。
  • 例2:224×224画素のカラー画像(3チャンネルで150,528個の値)を1,000ユニットにつなぐと、約1.5億個になります。

重みの数は入力の画素数に比例します。画像の縦横をそれぞれ2倍にすると画素数は4倍になり、パラメータ数もほぼ4倍になります。

畳み込み層との違い

全結合層畳み込み層
つながり方前の層のすべてのユニット近くの小さな領域だけ
重みの共有しない同じフィルタを画像全体で使い回す
位置関係1列に並べるため縦横の配置を使わない縦横の配置を保ったまま処理する
パラメータ数入力の大きさに比例して増えるフィルタの大きさとチャンネル数で決まり、入力の縦横の大きさに左右されない

モデルの中での使われ方

CNNでは、畳み込み層とプーリング層で特徴を取り出したあと、出力側の全結合層でクラスごとの得点にまとめる構成が代表的です。パラメータの多さを避けるため、出力側の大きな全結合層をグローバルアベレージプーリングに置き換えるモデルもあります。Transformerの各層にも、系列の位置ごとに同じ全結合層を、活性化関数を挟んで2層重ねた部分があります。

G検定で問われる深さ

行列の掛け算の手順そのものは不要です。出力が重み付き和にバイアスを足した線形関数であること、パラメータ数を「入力数×出力数+出力数」で数えられること、活性化関数なしで重ねても線形のままであること、畳み込み層との違いを説明できれば十分です。

つまずきやすい点

  • 全結合層のパラメータ数は、重み(入力数×出力数)にバイアス(出力数)を足したもので、バイアスを数え忘れやすい点
  • 全結合層を活性化関数なしで何層重ねても、全体は1つの線形関数と同じになり、表現力は増えない点
  • 画像を1列に並べて全結合層に入れると縦横の位置関係が使われず、画素数に比例してパラメータ数が増える点
  • CNNの出力側の全結合層は、グローバルアベレージプーリングに置き換えてパラメータ数を減らす構成もある点

シラバスのキーワード

重み、線形関数

練習問題

  1. 全結合層のパラメータ数
  2. 全結合層の重みの初期化
  3. 全結合層と畳み込み層の共通点

この項目の関連用語

AIで作成 人による確認:未 誤りを報告

出典と作成について

作成:ウカトレ編集部(AIで作成し、別のAIが一次資料と照合。手順は編集方針)

最終更新日: 最終確認日:

対応シラバス:シラバス第1.4版 技術17

改訂履歴

ディープラーニングの要素技術の中項目
  1. 全結合層
  2. 畳み込み層
  3. 正規化層
  4. プーリング層
  5. スキップ結合
  6. 回帰結合層
  7. Attention
  8. オートエンコーダ
  9. データ拡張

表示設定

テーマ
文字の大きさ
問題演習