理論メモ
誤差逆伝播法では、損失 L の重み w に対する勾配を連鎖律で計算します:
∂L/∂w = ∂L/∂a · ∂a/∂z · ∂z/∂w
XORは線形分離不可能であり、隠れ層を持つ多層ネットワークでのみ解けます。
ニューラルネットワークの構造・順伝播・逆伝播をリアルタイムで可視化。XOR問題を学習しながらニューラルネットの仕組みを直感的に理解。
誤差逆伝播法では、損失 L の重み w に対する勾配を連鎖律で計算します:
∂L/∂w = ∂L/∂a · ∂a/∂z · ∂z/∂w
XORは線形分離不可能であり、隠れ層を持つ多層ネットワークでのみ解けます。
一つのニューロン(ノード)で行われる計算は、前の層からの入力の重み付き和にバイアスを加え、非線形関数(活性化関数)を通します。ここではシグモイド関数を使用しています。
$$a^{(l)}_j = \sigma(z^{(l)}_j), \quad z^{(l)}_j = \sum_{i}w^{(l)}_{ji}a^{(l-1)}_i + b^{(l)}_j$$ここで、$a^{(l)}_j$は第$l$層の$j$番目ノードの出力、$z^{(l)}_j$はその入力総和、$w^{(l)}_{ji}$は前層$i$ノードから今の層$j$ノードへの重み、$b^{(l)}_j$はバイアス、$\sigma$はシグモイド関数 $\sigma(x) = 1/(1+e^{-x})$ です。
誤差逆伝播法の核心は連鎖律による勾配計算です。出力層の誤差から、各重み$w$が誤差にどれだけ寄与したかを逆算します。
$$\frac{\partial L}{\partial w^{(l)}_{ji}}= \delta^{(l)}_j \cdot a^{(l-1)}_i, \quad \delta^{(l)}_j = \frac{\partial L}{\partial z^{(l)}_j}$$$L$は損失関数(例:二乗誤差)、$\delta^{(l)}_j$は第$l$層$j$ノードの「誤差」です。この$\delta$が層を遡って計算され($\delta^{(l)}= ( (w^{(l+1)})^T \delta^{(l+1)}) \odot \sigma'(z^{(l)})$)、それを使って各重みの勾配$\partial L / \partial w$が求まります。この勾配に学習率$\eta$を掛けて重みを更新します。
CAEにおけるサロゲートモデル:自動車の衝突シミュレーションや翼型の空力解析は、1回のFEM/CFD計算に何時間もかかります。ニューラルネットワークに様々な設計パラメータとその結果を学習させると、瞬時に近似結果を予測する「代理モデル」として活用でき、設計探索のスピードが劇的に向上します。
Physics-Informed Neural Networks (PINN):従来のデータ駆動型だけでなく、物理法則(ナビエ-ストークス方程式など)そのものを損失関数に組み込みます。これにより、少ない実験データでも物理的に整合性のある予測が可能になり、流体解析や材料開発での新しいシミュレーション手法として注目されています。
画像認識・異常検知:製造現場では、製品の外観画像から欠陥を自動検出するためにニューラルネットワークが使われます。正常品の画像のみで学習させ、それから外れるものを「異常」として検知する仕組みは、CAEのシミュレーション結果の異常検証にも応用可能です。
強化学習による最適制御:ロボットアームの動きや、建物のエネルギー消費を最小化する空調制御など、複雑なシステムの最適な動作パターンをニューラルネットワークが学習します。これは、CAEで得られたモデルを実際の制御系に組み込む際の基盤技術となります。
このツールで遊んでいると、いくつか勘違いしやすいポイントがあるよ。まず、「学習率ηは大きいほど早く学習する」と思いがちだけど、これは半分正解で半分間違い。確かに値を大きくすると重みの更新幅が大きくなるけど、例えばηを0.5とか1.0にすると、損失曲線が上下に激しく振動して、最適解に収束しなくなることがある。これは、谷底を飛び越えて反対側の斜面に着地し、また飛び越える…を繰り返している状態だ。実務では、最初は0.01や0.001といった小さな値から始めて、様子を見ながら調整するのが鉄則だね。
次に、「隠れ層とノードは多ければ多いほど性能が上がる」という誤解。このXOR問題では、隠れ層1層・ノード2つで十分解ける。でも、ツールでわざと層を5層、ノードを各層10個とかの巨大ネットワークにしてみて。すると、損失は一見ゼロに近づくけど、決定境界が複雑すぎて、訓練データの4点に「過剰適合」しただけの状態になる。これが過学習だ。実問題では、未知のデータに対してロバストなシンプルなモデルを目指すことが大事で、層の深さや幅はハイパーパラメータとして慎重に決める必要がある。
最後に、「シグモイド関数は何でも使える万能の活性化関数」という考え。確かに歴史的に使われてきたけど、深い層では大きな弱点がある。シグモイドの出力は0から1の間に押し込められるため、勾配が層を遡るにつれてどんどん小さくなってしまう勾配消失問題が起きやすいんだ。このツールで層を深くして学習が遅くなるのを感じたら、それが勾配消失の初歩的な体験だ。今の実務では、深層学習ではReLU($f(x)=max(0, x)$)のような関数が主流になっている理由の一つだよ。
このツールで学んだニューラルネットワークの「順伝播」と「誤差逆伝播」の考え方は、CAEを超えて様々な工学分野の根幹にある「モデル化」と「パラメータ同定」の問題と本質的に繋がっているんだ。
例えば、構造健康モニタリング(SHM)では、橋梁や建築物に設置したセンサーの振動データから、目に見えない損傷(ひび割れやボルトの緩み)を検出する。ここでは、正常時のデータを「入力」、損傷パターンを「出力」としてニューラルネットワークに学習させ、未知のデータから損傷の有無や位置を推定する「分類・回帰問題」として定式化される。まさに、XOR問題で0/1を分離した決定境界を、はるかに高次元のデータで描いているイメージだ。
また、材料インフォマティクスという分野では、合金の組成比率(例:鉄90%、クロム8%、炭素2%)や熱処理条件を「入力」、得られる強度や耐食性を「出力」としてモデル化する。実験やシミュレーションで得られた限られた高コストなデータから、最適な材料のレシピを逆探索するんだ。これは、重みとバイアスを調整して目標出力に近づける「逆伝播」のプロセスそのものと言える。さらに、画像に基づく自動検査や音響信号を用いた異常検知など、非構造化データを扱うあらゆる工学的課題が、このツールで触れた多層パーセプトロンの応用先になっている。
このツールでニューラルネットワークの動きが腹落ちしたら、次は理論と実装の両面から深堀りするのがおすすめだ。学習ステップとしては、まず線形代数と微分の基礎を固めよう。逆伝播の核心である連鎖律は、ベクトルや行列で一気に計算する($ \boldsymbol{\delta}^{(l)} = ( (\boldsymbol{W}^{(l+1)})^T \boldsymbol{\delta}^{(l+1)}) \odot \sigma'(\boldsymbol{z}^{(l)})$)とスッキリ理解できる。ベクトルの内積、行列の積と転置、要素ごとの積(アダマール積$\odot$)に慣れることが次の鍵だ。
その上で、このツールの「シグモイド」以外の活性化関数(ReLU, tanhなど)や「二乗誤差」以外の損失関数(交差エントロピーなど)を学ぶと、なぜそれらが使われるのかの理由がわかってくる。例えば、多クラス分類では出力層にソフトマックス関数を使うが、これはシグモイドの多次元版のようなものだ。
最終的には、畳み込みニューラルネットワーク(CNN)やリカレントニューラルネットワーク(RNN)といった発展アーキテクチャを目標にしよう。CNNは画像の局所的な特徴を抽出する「フィルタ(重みの一種)」を学習する仕組みで、まさにCAEのメッシュデータや場の可視化画像の解析に直結する。このツールで養った「層を重ねて特徴を変換する」という感覚が、より複雑で強力なモデルを理解するための確かな土台になるはずだ。