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.Inputtf.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)が入力層の出力に加算される。これにより、入力層で表現された各トークンに順序情報が付加される。