1 基本的な概念と役割
1.1 定義と位置づけ
入力層(Input Layer)は、ニューラルネットワークの最前部に位置する層であり、ネットワークが外部からデータを受け取る最初の接点である。人工ニューラルネットワーク(ANN)や深層学習モデルにおいて、入力層は生データや特徴ベクトルをそのまま受け取り、後続の層が処理可能な形式で情報を伝達する役割を果たす。生物の神経系に例えると、感覚器官が外界の刺激を受容する部分に相当し、ネットワーク全体の情報処理の基点となる。
1.2 入力層の機能
1.2.1 データ受信
入力層の主要な機能は、外部から供給されるデータを受け取ることである。このデータは、数値ベクトル、行列、テンソルなどの形式で与えられ、ネットワークの学習や推論に直接使用される。入力層はデータのフォーマットを変換することなく、受信した値をそのまま次の層へ渡す。
1.2.2 特徴量の表現
入力層の各ノード(ニューロン)は、入力データの個々の特徴量に対応する。例えば、住宅価格予測モデルにおいて、部屋数、面積、築年数などの特徴がそれぞれ独立したノードとして表現される。これにより、データの各属性がネットワーク内で明示的に扱われる。
1.3 ニューラルネットワークにおける重要性
入力層はネットワークの性能に直接的な影響を与える。適切に設計された入力層は、データの特性を正確に反映し、学習の効率性とモデルの精度を向上させる。逆に、不適切な入力設計は、収束の遅れや過学習などの問題を引き起こす可能性がある。
2 構造と特性
2.1 ノード数と次元
入力層のノード数は、入力データの次元数(特徴量の数)と一致する。例えば、28×28ピクセルのグレースケール画像を扱う場合、入力層は784個のノードを持つ。
2.1.1 ベクトルとしての入力
最も基本的な形式では、入力層は一次元ベクトルとしてデータを受け取る。各ノードはベクトルの一要素に対応し、順序情報は保持されない。タブ形式の表データや数値特徴の集合は、この形式で表現される。
2.1.2 画像やテキストなどの特殊な入力形式
画像データは通常、高さ×幅×チャネルの三次元テンソルとして入力される。テキストデータは単語埋め込みベクトルの系列として表現され、各タイムステップで単語に対応するベクトルが入力される。これらの特殊な形式では、入力層の構造がデータの性質を反映するように設計される。
2.2 活性化関数の不在
入力層は活性化関数を持たない。これは、入力層がデータを変換せずにそのまま次の層へ伝達するためである。活性化関数の適用は、隠れ層から開始される。
2.3 エッジと重みの初期設定
入力層と最初の隠れ層の間の結合は、エッジと呼ばれ、それぞれに重みが割り当てられる。
2.3.1 重みの初期化方法
重みの初期化は学習の成否に影響を与える。一般的な方法には、一様分布や正規分布を用いたランダム初期化、Xavier初期化、He初期化などがある。適切な初期化は勾配の消失や爆発を防ぐ。
2.3.2 バイアスの扱い
バイアス項は通常、隠れ層のニューロンに付加され、入力層には設定されない。バイアスは各隠れ層ニューロンの出力に定数項を加える役割を果たす。
3 入力層の設計と実装
3.1 データの前処理との関係
入力層の設計は、データ前処理の結果と密接に関連する。適切な前処理により、ネットワークの学習が安定し、性能が向上する。
3.1.1 正規化と標準化
数値特徴は、スケールの違いによる学習の不安定さを防ぐため、正規化(最小値-最大値スケーリング)や標準化(平均0、分散1への変換)が行われる。これにより、入力層で受け取る値の範囲が統一される。
3.1.2 欠損値の処理
データに欠損値が含まれる場合、平均値補完、中央値補完、削除などの方法で処理される。欠損値をそのまま入力層に渡すと、学習に悪影響を及ぼす可能性がある。
3.1.3 カテゴリ変数のエンコーディング
カテゴリデータは、One-HotエンコーディングやEmbedding層を用いて数値ベクトルに変換される。One-Hotエンコーディングでは、各カテゴリが独立した次元を持ち、入力層のノード数が増加する。
3.2 特徴エンジニアリングの考慮
3.2.1 次元削減
高次元の入力データは、主成分分析(PCA)やオートエンコーダなどを用いて次元削減される。これにより、計算コストの低減と過学習の抑制が図られる。
3.2.2 特徴選択
重要度の低い特徴を除去する特徴選択が行われる。相関分析、情報利得、再帰的特徴除去などの手法が用いられ、モデルの解釈性と効率性が向上する。
3.3 フレームワークにおける実装例
3.3.1 TensorFlow / Keras
TensorFlow/Kerasでは、tf.keras.layers.Inputやtf.keras.layers.InputLayerを用いて入力層を定義する。例えば、Input(shape=(784,))のように形状を指定する。
3.3.2 PyTorch
PyTorchでは、torch.nn.Linearの第一引数で入力次元を指定する。入力層自体は明示的なクラスとして定義されず、モデルのforwardメソッドで直接データを受け取る。
4 関連する技術と応用
4.1 畳み込みニューラルネットワークにおける入力層
4.1.1 画像データのチャネル構造
CNNでは、入力層が画像のチャネル構造(RGBの3チャネルやグレースケールの1チャネル)を扱う。チャネル数は入力テンソルの一軸として表現され、畳み込みフィルタが各チャネルに適用される。
4.1.2 パディングとストライドの影響
パディングとストライドは、畳み込み演算の出力サイズを調整する。入力層の後続で適用されるこれらのパラメータは、ネットワーク全体の空間的階層構造に影響する。
4.2 リカレントニューラルネットワークにおける入力層
4.2.1 時系列データのシーケンス構造
RNNでは、入力層が時系列データの各タイムステップにおけるベクトルを受け取る。系列全体は (タイムステップ数 × 特徴量数) の二次元テンソルとして表現される。
4.2.2 可変長入力への対応
可変長の系列データには、パディング(短い系列にダミー値を追加)やマスキング(パディング部分を無視)が用いられる。RNNの入力層では、これらの処理結果をそのまま受け取る。
4.3 トランスフォーマーモデルにおける入力層
4.3.1 埋め込み層との連携
トランスフォーマーモデルでは、入力層の直後に埋め込み層(Embedding Layer)が配置される。埋め込み層は、離散的なトークンIDを連続的なベクトルに変換し、入力層で受け取ったデータを意味空間へ写像する。
4.3.2 位置エンコーディング
トランスフォーマーは系列内の位置情報を明示的に付与するため、位置エンコーディング(Positional Encoding)が入力層の出力に加算される。これにより、入力層で表現された各トークンに順序情報が付加される。