全結合型ニューラルネットワーク (Fully Connected Neural Network: FCNN) は、最も基本的なニューラルネットワークの形式の一つです。「多層パーセプトロン (Multi-Layer Perceptron: MLP)」とも呼ばれます。
このネットワークは、ある層の全てのニューロン(ノード)が、次の層の全てのニューロンと接続しているのが特徴です。この接続にはそれぞれ重みとバイアスがあり、これらが学習によって調整されます。
💡 簡単に言うと、情報の伝達が「前の層の全員から、次の層の全員へ」と、文字通り全方位的に行われるネットワーク構造です!
全結合型ニューラルネットワークの構造 🧱
全結合型ニューラルネットワークは、通常、以下の3種類の層から構成されます。
-
入力層 (Input Layer) 📥
- ネットワークにデータが入力される最初の層です。
- 各ニューロンは、入力データの一つの特徴量に対応します。
- 実際には計算を行わず、単に入力値を次の層に渡す役割をします。
-
隠れ層 (Hidden Layers) 🕵️♀️
- 入力層と出力層の間にある層です。FCNNでは、通常1つ以上の隠れ層を持ちます。
- 各ニューロンは、入力された情報に対して重み付けされた合計を計算し、活性化関数(例: ReLU, Sigmoid)を通して非線形な変換を行います。
- この非線形変換が、複雑なパターンを学習するための鍵となります。
-
出力層 (Output Layer) 📤
- ネットワークの最終層で、学習された結果が出力されます。
- 出力層のニューロンの数は、解決したい問題の種類によって異なります。
- 分類問題: クラスの数(例: 猫か犬か→2個、手書き数字0~9→10個)。Softmax活性化関数がよく使われます。
- 回帰問題: 予測したい数値の数(例: 株価予測→1個)。線形活性化関数(活性化関数なし)が使われることが多いです。
全結合型ニューラルネットワークの仕組み ⚙️
全結合型ニューラルネットワークの基本的な計算は、以下のステップで行われます。
1. 重み付き和の計算 ➕✖️
各ニューロンは、前の層の全てのニューロンからの入力値に、それぞれの重み (Weight) を掛けたものを合計し、さらにバイアス (Bias) を加えます。
$$z_j = \sum_{i} (w_{ij} \cdot a_i) + b_j$$
ここで、
- $z_j$: 現在の層のj番目のニューロンの重み付き和
- $w_{ij}$: 前の層のi番目のニューロンから現在の層のj番目のニューロンへの結合の重み
- $a_i$: 前の層のi番目のニューロンの活性化出力
- $b_j$: 現在の層のj番目のニューロンのバイアス
2. 活性化関数の適用 🔀
計算された重み付き和 $z_j$ は、非線形な活性化関数 (Activation Function) に渡されます。これにより、ニューラルネットワークは複雑な非線形関係を学習する能力を得ます。
$$a_j = f(z_j)$$
ここで、
- $a_j$: 現在の層のj番目のニューロンの活性化出力
- $f$: 活性化関数(例: シグモイド関数、ReLU関数など)
これらの計算が層ごとに繰り返され、入力層から出力層へと情報が順方向に伝播します。これをフォワードプロパゲーション (順伝播) と呼びます。
3. 学習(誤差逆伝播法) 🔄
ネットワークの予測結果と実際の正解との間にどれくらいの「誤差」があるかを計算し、その誤差を減らすように、ネットワーク内の全ての重みとバイアスを少しずつ調整していきます。この調整には誤差逆伝播法 (Backpropagation) と呼ばれるアルゴリズムが使われます。
全結合型ニューラルネットワークは、そのシンプルさからニューラルネットワークの基本を学ぶのに最適です。しかし、画像や時系列データのような構造を持つデータに対しては、畳み込みニューラルネットワーク(CNN)やリカレントニューラルネットワーク(RNN)、あるいはTransformerなどのより特化したアーキテクチャの方が高い性能を発揮することが多いです。
全結合型ニューラルネットワークのメリット・デメリット ⚖️
メリット 👍
- シンプルで理解しやすい: ニューラルネットワークの基本的な仕組みを学ぶのに適しています。
- 汎用性: 理論的には、任意の連続関数を近似できる(万能近似定理)。
- 実装が比較的容易: 基本的な線形代数と活性化関数で構成されるため、プログラミングしやすいです。
デメリット 👎
- 計算コストが高い: 大規模な入力データ(例: 高解像度画像)の場合、層間の結合数が爆発的に増え、計算量が非常に大きくなります。
- 空間的・時間的特徴の欠如: 画像の画素間の位置関係や、時系列データの順序性といった局所的な特徴や構造を直接学習することが苦手です。
- パラメーターが多い: 結合数が多いため、学習すべき重みとバイアスの数が非常に多くなり、過学習しやすくなります。
全結合型ニューラルネットワークの応用例 🚀
FCNNは、シンプルな問題や、入力データに明確な空間的・時間的構造がない問題に対して有効です。
- 表形式データの分類・回帰: 顧客データ、医療データなど、個々の特徴量が独立して意味を持つようなデータ。
- 特徴量抽出後のデータ処理: CNNやRNNなどで抽出された特徴量ベクトルを、最終的な分類や回帰のために処理する出力層として利用されることがあります。
- シンプルなパターン認識: 手書き数字認識(MNISTなど、比較的低解像度な画像)の初期段階など。
最近の深層学習では、全結合層がネットワーク全体で使われることは少なくなりましたが、依然として他の特定の層(例: 畳み込み層、リカレント層、Transformerのエンコーダ/デコーダなど)の後に、最終的な分類や回帰を行うための「ヘッド」として、あるいは特徴量変換のための「フィードフォワードネットワーク」として重要な役割を担っています。
全結合型ニューラルネットワークは、ディープラーニングの基礎であり、他の高度なアーキテクチャの理解にも繋がる非常に重要な概念です!