【理論基礎5】ニューラルネットワークの層構造とその役割

手書き数字認識におけるニューラルネットワークの構造を図示したもの。入力層には手書き数字画像のピクセル値(0~255)が入り、隠れ層を経由して、出力層で各数字(0~9)の確率として結果を出力。MNISTデータセットの使用例としてもよく知られる。 ディープラーニング
NNの構造(入力層、隠れ層、出力層)。入力は手書き文字のピクセルの値、出力は0~9の数字の確率。例えばy1は0の確率を表す。
前回は、多層構造(MLP)を導入することで、単層ネットワークに比べて遥かに高い表現力が得られることを学びました。これまで、「インプット」や「ニューロン」といった言葉を少し曖昧に使ってきましたが、今回は層構造をより詳細に分解し、それぞれの役割についてまとめます。

また、将来使うであろう様々なモデルの構造を正確に理解するためには、それぞれの役割や表記方法を整理しておく必要がありますが、今回の内容はそれらの大前提となります。さらに後の記事では、この構造を前提とした“学習と最適化”の仕組みへと進みます。

本記事をお読み頂く前に、前の記事「ニューラルネットワークの基本要素」、「ニューラルネットワークの多層化」からお読みいただくことで、ディープラーニングの基本的な概念と数式的な理解ができます。ページトップか下のリンクから御覧ください。
最新記事の更新情報等はXでお知らせしています。

ニューラルネットワークの基本構造

ニューラルネットワークの各レイヤーは、大きく3つのカテゴリーに分けられます(ページの真ん中、「全体の構造と表記」の図を参照):

  • 入力層(Input Layer)
  • 隠れ層(Hidden Layer)
  • 出力層(Output Layer)

入力層と出力層

入力層は、モデルがデータを受け取る部分です。このデータは数値化され、一般に入力層の値を \(x = (x_1, x_2, …, x_n)\) と書きます。この層の役割は、モデルに外部からの情報を入力することです。たとえば、画像認識モデルでは、画像の各ピクセル値が入力として使われます。

出力層は、モデルが計算の結果として予測を出す部分です。たとえば、手書きの数字の認識であれば、出力層が「0〜9の数字のいずれか」という答えを提供します。この層の出力は図の例であれば、手書き文字が各数字である確率で、\(y = (y_1, y_2, …, y_k)\) のように書かれます。ここで、k はクラスの数です。

高校数学で関数を \(y = f(x)\) と表したのと同様に、ニューラルネットワークも入力 \(x\) を受け取り、出力 \(y\) を返す高度な関数として捉えられます。

隠れ層

隠れ層は、入力層と出力層の間に位置し、複雑な計算を担う部分です。隠れ層の各ニューロンでは、入力値の重み付き総和とバイアスが計算され、その結果が活性化関数を通じて次のレイヤーに送られます。

各レイヤー \(l\) の隠れ層の出力をベクトルとして \({\boldsymbol z}^{(l)} = (z_1^{(l)}, z_2^{(l)}, …, z_m^{(l)})\) と表します。たとえば、1つ目の隠れ層の出力(ベクトル)は \({\boldsymbol z}^{(1)}\)、2つ目の隠れ層の出力は \({\boldsymbol z}^{(2)}\) です。

これまでの説明で、最初のレイヤーが \(x\)、次のレイヤーが \(z^{(1)}\) という表記になっていた理由は、入力層と中間層、レイヤーの概念を意識していたためです。

全体の構造と表記

ニューラルネットワーク全体の簡略化と応用例として、以下の図のように表現できます。図右下を見ると、入力層、隠れ層、出力層が連なり、各層の出力が次の層の入力として扱われます。

手書き数字認識におけるニューラルネットワークの構造を図示したもの。入力層には手書き数字画像のピクセル値(0~255)が入り、隠れ層を経由して、出力層で各数字(0~9)の確率として結果を出力。MNISTデータセットの使用例としてもよく知られる(出典:筆者作成)。

ネットワークの構造(入力層、隠れ層、出力層)。入力は手書き文字のピクセルの値、出力は0~9の数字の確率。例えばy1は0の確率を表す(出典:筆者作成)。

さらに、活性化関数や重み行列を用いると、層間の関係は以下のように数式で表されます:

$${\boldsymbol z}^{(l)} = \varphi \left({\boldsymbol W}^{(l-1)} \cdot {\boldsymbol z}^{(l-1)} + {\boldsymbol b^{(l-1)}}\right)$$

ここで、

  • \({\boldsymbol W^{(l-1)}}\): \(l-1\) 層と \(l\) 層を結ぶ重み行列
  • \({\boldsymbol b^{(l-1)}}\): \(l\) 層のバイアスベクトル
  • \(\varphi\): 活性化関数

です。

図の中では、入力は手書き数字の各ピクセルの値です。ピクセルは全部で \(11\times11=121\) 個なので、入力層は \((x_1, x_2, …, x_{121})\) となります。出力層は、入力された画像にかかれている数字が0~9のいずれかである確率になるので、\((y_1, y_2, …, y_{10})\) となります。

まとめ

ニューラルネットワークは、入力層隠れ層出力層という3つの基本的なレイヤーで構成されます。それぞれが異なる役割を持ち、特に隠れ層が複雑な計算を担う重要な部分です。各レイヤー間の関係を数式や図で整理することで、全体の構造を直感的に理解しやすくなります。

次の記事では、入力が画像の場合、この構造を基にディープラーニングがどのように学習を行うのか、その仕組みについて掘り下げていきます。

コメント

タイトルとURLをコピーしました