手書き数字認識デモ 技術資料

手書き数字認識デモ 技術資料

1. 全体構造

隠れ層は 1 層のみで,784 → H → 10 の 3 層構造である.畳み込み層やプーリング層は使用しせず,すべて全結合である.

入力層
784
28×28 画素
W1, b1
→
隠れ層
H 個
シグモイド
W2, b2
→
出力層
10
数字 0〜9
H は 4〜128 で変更可能(初期値 16)
項目内容
層数隠れ層 1 層(入力層・出力層を含めて 3 層)
ユニット数 H既定 16.画面上で 4〜128 の範囲で変更可能
結合全結合.各ユニットが 784 画素すべてを参照する
活性化関数シグモイド関数.ReLU ではない
入力値画素の濃度を 0〜1 に正規化(インク = 1,余白 = 0 の白黒反転)

2. 順伝播(前向き計算)

隠れ層のユニット j は,784 個の入力すべてに重みを掛けて合計し,バイアスを足したうえでシグモイド関数を通す.

a(1)j = σ ( Σi=0783 W1ji · xi + b1j ) σ(z) = 1 / (1 + e−z) (シグモイド関数)

出力層も同じ形で,隠れ層の出力 a(1) を入力として計算する.

a(2)k = σ ( Σj=0H−1 W2kj · a(1)j + b2k )
出力は softmax でない 出力層もシグモイドのため,10 個の出力の合計は 1 にならない.各ユニットが独立に 0〜1 の値を出す. 判定は「最も大きい値を持つユニットの番号」を答えとするだけで,確率分布としての正規化は行っていない.

3. パラメータの構成と初期化

変数形状初期値
W1H × 784正規乱数 × √(1/784)
b1Hすべて 0
W210 × H正規乱数 × √(1/H)
b210すべて 0

重みの初期化は分散を 1/(入力数) にする方式(LeCun 初期化)である.入力数が多い層ほど初期値を小さくすることで,層を通るたびに信号が大きくなりすぎることを防ぐ.

正規乱数は Box–Muller 法で一様乱数から生成している.

パラメータ総数

H = 16 のとき 16×784 + 16 + 10×16 + 10 = 12,730 個

4. 学習アルゴリズム(誤差逆伝播法)

損失関数

二乗誤差を使用する.交差エントロピーではない.

C = Σk ½ ( tk − a(2)k )2  (t は正解なら 1,それ以外 0)

誤差の逆伝播

出力層の誤差 δ(2) を求め,それを重み W2 を通じて隠れ層へ伝える.いずれもシグモイドの微分 σ′ = a(1−a) が掛かる点が特徴である.

δ(2)k = ( a(2)k − tk ) · a(2)k ( 1 − a(2)k ) δ(1)j = ( Σk δ(2)k W2kj ) · a(1)j ( 1 − a(1)j )

重みの更新

W ← W − η · ∇W  (学習率 η の既定値は 0.3)
1 ステップ = 全データを使った 1 回の更新 この教材の「1ステップ実行」は,訓練データ全件で勾配を計算し,1 回だけ重みを更新するバッチ勾配降下法である.ミニバッチや確率的勾配降下法ではない.

なお勾配は全データの合計で,平均を取っていない.そのためデータ件数が増えるほど 1 回の更新量が大きくなる.データを増やしたときに学習が不安定になる場合は,学習率 η を下げる.

正則化・ドロップアウト・モメンタム・学習率減衰などは実装されていない.素の勾配降下法である.

5. 設計上の選択と,現代的な標準との違い

この教材は「教科書どおりの誤差逆伝播法を追えること」を優先した構成になっている.実用的な実装との違いを整理する.

項目この教材現代的な標準
隠れ層の活性化シグモイドReLU 系
出力層シグモイド(独立)softmax(確率分布)
損失関数二乗誤差交差エントロピー
勾配の計算単位全データのバッチミニバッチ
最適化素の勾配降下法Adam など
正則化なしDropout・重み減衰など
シグモイド + 二乗誤差の組み合わせについて この組み合わせでは,出力が 0 や 1 に近づくと σ′ = a(1−a) がほぼ 0 になり,誤差が大きくても勾配がほとんど流れなくなる(勾配消失).学習が途中で停滞して見えるのはこのためである.

現代的な softmax + 交差エントロピーでは,この σ′ の項が数式上きれいに打ち消され,勾配は単純に (予測 − 正解) になります.一方でこの教材の形は,誤差逆伝播の導出を一つずつ追える利点があります.

6. 過学習が起きる理由

H = 16 のときパラメータは 12,730 個ある.一方,授業で手書きして作る訓練データは十数件程度である.データ数に対してパラメータが桁違いに多いため,ネットワークは訓練データを丸暗記することができる.これが「訓練データの正答率が簡単に 100% になる」理由である.

この 100% は「よく学習できた」ことを意味しない.新しく書いた数字で試すと大きく外すことがあり,この落差こそが過学習と汎化性能を学ぶ教材になる.

7. 授業運用上の注意

ユニット数を変更すると学習がリセットされる

「隠れ層ユニット数」を変更すると,その時点で重みが初期化され,繰り返し回数も 0 に戻る.重みの形状が変わるため学習の継続は原理的に不可能で,これは正しい動作である.

学習の途中で生徒が誤って数値を触ると成果が消えるため,ユニット数は学習を始める前に決めるよう案内する.

ユニット数を変えて比較する場合

  • 小さくする(例:8) … 表現力が下がり,学習に時間がかかる,正答率が上がりきらない
  • 大きくする(例:128) … 1 ステップの計算量が増え,丸暗記がさらに起きやすくなる

※ 初期値は 16 である.上の例と比べる際の基準とする.

 

ホーム>>カテゴリー別分類>>データ分析>>手書き数字認識デモ 技術資料

最終更新日:2026年9月29日