ディープニューラルネットワークのパラメータ数計算の仕組みと計算方法

こんにちは。ゆうせいです。

画像認識や自然言語処理などの分野で用いられるディープニューラルネットワーク(DNN)において、モデルが保持するパラメータ数を把握することは、計算機のメモリ消費量や動作速度を見積もる上で基本となる作業です。

人工知能のモデルが学習を行う際、内部の数値を調整しながら正解率を高めていきます。この調整される数値の総数をパラメータ数と呼びます。

ニューラルネットワークの主要な部品である全結合層と畳み込み層を対象に、パラメータ数がどのような構造で決定されるのかを解説します。

ディープニューラルネットワークの基本構造とパラメータの役割

ディープニューラルネットワークは、人間の神経回路を模した多数の計算単位(ノードやニューロン)が層状に連結された構造を持っています。

入力されたデータは、手前の層から奥の層へと計算結果を受け渡しながら処理されます。このデータの受け渡しを行う際に、次の層へ送る影響力の大きさを決める数値がパラメータです。

パラメータは主に2種類の要素で構成されています。

  • 重み(ウェイト):入力信号の重要度を調整する係数です。ラジオの音量調節つまみのように、どの配線から届いた信号を大きく拾い、どの信号を弱めるかを指定します。
  • バイアス:重み付けされた信号の合計値に対して底上げや引き下げを行う調整用の定数です。温度計のゼロ点調整のように、全体の基準値を設定する役割を果たします。

学習とは、問題と答えのデータを何度も見比べながら、この重みとバイアスの数値を適切な値へと自動的に書き換えていく工程を指します。

全結合層におけるパラメータ数の計算方法

全結合層は、手前の層にあるすべてのノードと、後ろの層にあるすべてのノードが1対1の配線ですべて結ばれている層です。

教室にいる生徒全員が、隣の教室にいる生徒全員とそれぞれ糸電話を引いて1本ずつ会話の経路を作る状態に相当します。

パラメータ数の内訳は以下の通りです。

  • 重みの数:手前の層のノード数と後ろの層のノード数を掛け合わせた値になります。配線の総数と一致します。
  • バイアスの数:後ろの層のノード1個につき、それぞれ基準値が1個割り当てられるため、後ろの層のノード数と同数になります。

計算の手順を式に整理すると、次のようになります。

パラメータ数 = (入力ノード数 × 出力ノード数) + 出力ノード数

整理した計算式は以下の通りです。

Parameters = (N_{in} \times N_{out}) + N_{out}

入力ノード数を Nin、出力ノード数を Nout と定義しています。

具体例として、入力が100個、出力が50個の全結合層を計算してみます。

重みの計算:

100 × 50 = 5000

バイアスの計算:

50

総パラメータ数:

5000 + 50 = 5050

この層だけで5050個の数値を保持し、学習時に更新することになります。

畳み込み層におけるパラメータ数の計算方法

畳み込みニューラルネットワーク(CNN)で用いられる畳み込み層では、全結合層とは異なり、局所的な範囲に限定して計算を行うフィルタを用います。

画像全体に方眼の枠(フィルタ)を当てはめ、少しずつずらしながら共通の採点基準を適用していく仕組みです。同じフィルタを画像全体で使い回すため、入力画像の縦横のサイズそのものはパラメータ数に影響を与えません。

パラメータ数を決定する要素は以下の通りです。

  • フィルタの高さと幅:正方形または長方形の枠の面積です。
  • 入力チャンネル数:入力データの厚みです。RGBのカラー画像であれば3、前層の特徴マップ数に応じた値になります。
  • 出力チャンネル数(フィルタの枚数):特徴を検出するために用意するフィルタの種類の総数です。
  • バイアス:出力チャンネル1つ(フィルタ1枚)につき1個割り当てられます。

畳み込み層のパラメータ数を求める計算式は以下の通りです。

Parameters = (F_{h} \times F_{w} \times C_{in} \times C_{out}) + C_{out}

フィルタの高さを Fh、フィルタの幅を Fw、入力チャンネル数を Cin、出力チャンネル数を Cout と定義しています。

具体例として、入力がカラー画像(Cin = 3)で、フィルタサイズが 3×3、出力チャンネル数が 16 の畳み込み層を想定します。

フィルタ1枚あたりの重み:

3 × 3 × 3 = 27

16枚のフィルタ全体の重み:

27 × 16 = 432

バイアスの総数:

16

総パラメータ数:

432 + 16 = 448

画像自体の縦横サイズが 1000×1000 ピクセルであっても 32×32 ピクセルであっても、フィルタの仕様が変わらなければ、更新すべきパラメータ数は 448 個のまま変化しません。

簡単な計算例:単一の全結合層

まずは、ノード数が少なく層が1つだけの基礎的な全結合層のパラメータ数を算出します。

設定

  • 入力ノード数:4
  • 出力ノード数:3

計算手順

重みの数: 4 × 3 = 12

バイアスの数: 3

総パラメータ数: 12 + 3 = 15

この層全体では、15個の数値を学習によって決定します。

中級の計算例:カラー画像を扱う畳み込み層

次に、カラー画像を入力とし、複数の特徴を抽出する畳み込み層のパラメータ数を算出します。

設定

  • 入力画像:縦28ピクセル、横28ピクセル、3チャンネル(赤・緑・青)
  • フィルタサイズ:縦5ピクセル、横5ピクセル
  • 出力チャンネル数:16

計算手順

畳み込み処理では、入力画像の縦横の大きさ(28×28)はパラメータ数に影響を与えません。フィルタの寸法とチャンネル数のみを用いて計算を行います。

フィルタ1枚あたりの重みの数: 5 × 5 × 3 = 75

16枚のフィルタ全体の重みの数: 75 × 16 = 1200

バイアスの数: 出力チャンネル数が16であるため、16個割り当てられます。

総パラメータ数: 1200 + 16 = 1216

この畳み込み層におけるパラメータ数は1216個となります。

応用的な計算例:畳み込み層から全結合層への接続

多層ネットワークの実務に近い構成として、畳み込み処理を行った特徴マップを1次元に並べ直し、全結合層へと接続する複合的な構造を扱います。

設定

  • 前層の畳み込み処理後の出力:縦7ピクセル、横7ピクセル、出力チャンネル数32
  • 次の全結合層のノード数:128

計算手順

畳み込み層から全結合層へデータを渡す際は、縦×横×チャンネル数のデータを平坦に引き伸ばして並べます。

全結合層への入力ノード数の算出: 7 × 7 × 32 = 1568

この1568個の入力を、128個のノードを持つ全結合層へ接続します。

全結合層の重みの数: 1568 × 128 = 200704

全結合層のバイアスの数: 128

総パラメータ数: 200704 + 128 = 200832

手前の層で特徴マップのサイズやチャンネル数がわずかに増加するだけでも、直後の全結合層が保持する結合経路が急増し、パラメータ数が数十万規模へ膨らむ構造が確認できます。

パラメータ数の多寡におけるメリット・デメリット

モデル全体のパラメータ数を増やす場合と減らす場合について、確認できる利点と欠点が存在します。

パラメータ数が多い場合のメリット

  • 表現力の向上:複雑な形状や微細なニュアンスなど、高度なパターンを学習・記憶する性能が上がります。
  • 複雑なタスクへの適応:高度な物体検出や文脈理解など、多様な条件が絡み合う処理への対応範囲が広がります。

パラメータ数が多い場合のデメリット

  • メモリ消費の増大:パラメータ自体を保存する容量に加え、学習途中の勾配データを保持するためのGPUメモリ消費量が跳ね上がります。
  • 過学習の発生:学習用のデータに過剰に適応してしまい、一度も見ていない未知のデータに対する判定精度が低下する現象(過学習)が起きやすくなります。
  • 計算時間の長期化:更新すべき数値が増加するため、1回の学習にかかる時間と推論時の処理時間が増加します。

学習のまとめ

ディープニューラルネットワークのパラメータ数を正確に計算できるようになるための手順は以下の通りです。

  1. 全結合層の計算規則である「入力ノード数と出力ノード数の積に、バイアス(出力ノード数)を足す」構造を身につけます。
  2. 畳み込み層において「フィルタの面積×入力チャンネル数×出力チャンネル数」で重みを算出し、出力チャンネル数をバイアスとして足す手順を確認します。
  3. 実際のモデル設計図(VGGやResNetなどの標準的な構成)を参照しながら、各層を通過するごとにパラメータが何個ずつ増えているのかを順番に集計し、どの層が最も計算資源を消費しているのかを分析する練習へと段階を進めてみてください。

セイ・コンサルティング・グループでは新人エンジニア研修のアシスタント講師を募集しています。

投稿者プロフィール

山崎講師
山崎講師代表取締役
セイ・コンサルティング・グループ株式会社代表取締役。
岐阜県出身。
海外放浪の末、2000年創業、2004年会社設立。
IT企業向け人材育成研修歴業界歴20年以上。
すべての無駄を省いた費用対効果の高い「筋肉質」な研修を提供します!
この記事に間違い等ありましたらぜひお知らせください。

学生時代は趣味と実益を兼ねてリゾートバイトにいそしむ。長野県白馬村に始まり、志賀高原でのスキーインストラクター、沖縄石垣島、北海道トマム。高じてオーストラリアのゴールドコーストでツアーガイドなど。現在は野菜作りにはまっている。