1行定義
全結合層とは、前の層のすべてのユニットが次の層のすべてのユニットとつながり、入力の重み付き和にバイアスを足した値を出力するニューラルネットワークの層のことです。
試験範囲としての全体像はシラバス項目『全結合層』の要点まとめで整理しています。
くわしく
全結合層は、前の層のすべてのユニットが、次の層のすべてのユニットとつながっている層です。英語ではfully connected layerといいます。ライブラリでは呼び名が異なり、KerasではDense層、PyTorchではLinear層として用意されています。
何を計算するか
出力側の各ユニットは、すべての入力にそれぞれの重みを掛けて足し合わせ、バイアスを加えます。計算の形から、アフィン変換とも呼ばれます。重みとバイアスは、どちらも学習で決まるパラメータです。
活性化関数とセットで使う理由
全結合層の計算は線形関数です。線形関数は何回重ねても1つの線形関数にまとまるため、全結合層だけを重ねても表現力は増えません。そこで、全結合層の間に非線形の活性化関数を挟みます。
どこで使われるか
- 多層パーセプトロン:全結合層と活性化関数を交互に重ねたネットワークです。
- CNNの出力側:畳み込み層などで取り出した特徴を、全結合層でクラスごとの得点にまとめます。2013年のNetwork In Networkは、ここをグローバルアベレージプーリングに置き換えると過学習しにくくなると主張しました。
- Transformer:各層に、2つの全結合層の間にReLU関数を挟んだ部分があります。系列のどの位置にも、同じ重みを使います。
名前の似たFCNとの違い
FCN(Fully Convolutional Network)は、全結合層をもたない全層畳み込みネットワークです。分類用のCNNの全結合層を畳み込み層に置き換え、任意の大きさの画像から画素ごとの予測を出せるようにしました。
覚え方
「全員と握手する全結合層。重ねるなら間に活性化関数」と覚えます。
G検定での出題
出題のされ方
重み付き和にバイアスを足す線形関数であること、重みとバイアスの数の数え方、活性化関数と組み合わせる理由、畳み込み層との違いが問われます。
混同しやすい用語
| 用語 | 意味 |
|---|---|
| 全結合層このページの用語 | 前の層のすべてのユニットが次の層のすべてのユニットとつながり、入力の重み付き和にバイアスを足した値を出力するニューラルネットワークの層 |
| FCN(Fully Convolutional Network) | CNNの全結合層を畳み込み層に置き換え、画素ごとにクラスを出力するモデル |
◯×チェック
次の文が正しいか、誤りかを選んでください。
-
全結合層の出力ユニットの数は、入力の数と同じにしなければならない。
答えを見る
答え × 誤り
出力の数は設計者が自由に決めます。784個の入力を100個のユニットにまとめる、最後の全結合層の出力を分類したいクラスの数に合わせる、といった使い方をします。
-
原論文のTransformerでは、エンコーダとデコーダの各層に、2つの全結合層の間にReLU関数を挟んだ部分があり、系列のどの位置にも同じ重みで適用される。
答えを見る
答え ◯ 正しい
原論文では位置ごとのフィードフォワードネットワークと呼ばれ、FFN(x) = max(0, xW1 + b1)W2 + b2 と書かれます。Attentionで集めた情報を、位置ごとに非線形に変換する役割をもちます。
-
PyTorchのLinear層やKerasのDense層は、全結合層を実装したものである。
答えを見る
答え ◯ 正しい
どちらも入力と重み行列の積にバイアスを足す計算を行います。ライブラリによって呼び名が違っても、中身は同じ全結合層です。
この用語の練習問題
出典
- G検定 試験出題範囲(シラバス2024)第1.4版 (技術分野 項目17 全結合層)
- Ian Goodfellow, Yoshua Bengio, Aaron Courville, Deep Learning, MIT Press (2016) (6.1 Example: Learning XOR)
- PyTorch documentation, torch.nn.Linear
- Keras documentation, Dense layer
- Ashish Vaswani et al., Attention Is All You Need (2017) (3.3 Position-wise Feed-Forward Networks)
- Min Lin, Qiang Chen, Shuicheng Yan, Network In Network (2013)
- Jonathan Long, Evan Shelhamer, Trevor Darrell, Fully Convolutional Networks for Semantic Segmentation (2014)