Dense(全結合)、Dropout、BatchNormalization

Kerasにおける主要なレイヤーである Dense(全結合層)Dropout、および BatchNormalization(バッチ正規化) について、それぞれの機能、使いどころ、パラメータを含めて詳しく説明します。


1. Dense(全結合)レイヤー

概要:

Dense レイヤーは、最も基本的なニューラルネットワークのレイヤーであり、各入力ニューロンがすべての出力ニューロンと接続されている「全結合層」を実現します。

主な用途:

  • 入力データの特徴を圧縮・変換し、次のレイヤーへ情報を伝える。

  • 多層パーセプトロン(MLP)などの基本構造に使用される。

構文例:

python
from keras.layers import Dense Dense(units=64, activation='relu')

主な引数:

  • units: 出力の次元数(ニューロンの数)。

  • activation: 活性化関数('relu', 'sigmoid', 'softmax' など)。

  • kernel_initializer: 重みの初期化方法(例:'glorot_uniform')。

  • use_bias: バイアス項の使用有無。


2. Dropoutレイヤー

概要:

Dropout レイヤーは、過学習(オーバーフィッティング)の防止のために使用される正則化技術です。訓練時に、ランダムに一定割合のニューロンの出力を0にします。

主な用途:

  • モデルの汎化性能を高める。

  • 大きなネットワークでの過学習を抑制。

構文例:

python
from keras.layers import Dropout Dropout(rate=0.5)

主な引数:

  • rate: ドロップアウト率(0〜1)。たとえば 0.5 は50%のニューロンを無効化。

  • seed: 乱数シード(再現性の確保に使用)。

注意点:

  • 訓練時のみ適用され、推論時にはすべてのユニットが使用される。


3. BatchNormalization(バッチ正規化)レイヤー

概要:

BatchNormalization は、**ネットワークの各層の出力を標準化(平均0、分散1)**し、学習の安定性と収束の高速化を図るレイヤーです。

主な用途:

  • 勾配消失問題の緩和。

  • 初期値や学習率への依存性を減らす。

  • 層ごとの出力のスケールのばらつきを整える。

構文例:

python
from keras.layers import BatchNormalization BatchNormalization()

主な引数:

  • axis: 正規化する軸(通常は特徴量の軸、-1が多い)。

  • momentum: 移動平均のモメンタム(例:0.99)。

  • epsilon: 数値安定性のための小さな値(例:1e-3)。

補足:

  • 正規化後に学習可能なスケール・バイアス項(gamma, beta)が自動的に導入される。


まとめ

レイヤー名 主な役割 主な用途
Dense 全結合計算と活性化 特徴の変換や分類・回帰タスク
Dropout ランダムに出力を無効化し過学習を防止 正則化、モデルの汎化性能向上
BatchNormalization ミニバッチごとに出力を正規化し学習を安定化 学習の高速化、初期化の影響を緩和

これらのレイヤーは、Kerasのモデル構築において非常に基本的かつ重要な構成要素です。組み合わせて使うことで、より高精度で安定したモデルを構築できます。

生成日:2025/05/22