ニューラルネットワーク可視化ツール 戻る
解析ツール

ニューラルネットワーク可視化ツール

ニューラルネットワークの構造・順伝播・逆伝播をリアルタイムで可視化。XOR問題を学習しながらニューラルネットの仕組みを直感的に理解。

ネットワーク構造
入力ノード数
隠れ層の数
隠れ層ノード数
出力ノード数
活性化関数

隠れ層に適用されます。出力層は2値分類(XOR)のため常にSigmoidです。

学習率 (η)
学習コントロール
計算結果
0
エポック
損失
正解率
0.10
学習率 η
Nn
正の重み
負の重み
高活性化
低活性化

損失曲線

損失

決定境界 (XOR)

境界
理論・主要公式

誤差逆伝播法では、損失 L の重み w に対する勾配を連鎖律で計算します:

∂L/∂w = ∂L/∂a · ∂a/∂z · ∂z/∂w

XORは線形分離不可能であり、隠れ層を持つ多層ネットワークでのみ解けます。

ニューラルネットワークとは

🙋
ニューラルネットワークって、結局何を計算してるんですか?「学習」って言うけど、中で何が起きてるのかイメージが湧かなくて…。
🎓
大まかに言うと、大量の「小さな計算機」を何層もつなげて、入力データから答えを出すための最適な「重み」を見つける仕組みだよ。このツールで「順伝播」ボタンを押すと、入力値が各層のノードを伝わって、最終的に「0」か「1」を出力する様子がアニメーションで見える。まずは隠れ層のノード数を2にして、信号がどう流れるか確かめてみよう。
🙋
なるほど、信号の流れは見えました!でも、どうやって「正しい重み」を見つけるんですか?最初はランダムなんでしょう?
🎓
その通り。最初はデタラメな重みだから、出力もデタラメ。そこで「逆伝播」の出番だ。出力と正解の誤差を計算し、その責任を「出力層→隠れ層→入力層」の順に遡って各重みに割り振る(連鎖律)。上の「学習率η」のスライダーを動かして、この誤差修正の「歩幅」を変えてみて。大きくしすぎると答えを飛び越えてしまうよ。
🙋
隠れ層の数を増やしたりノード数を増やすと、何が変わるんですか?多ければ多いほど賢いということ?
🎓
確かに表現力は上がるけど、やりすぎは禁物。このXOR問題なら、隠れ層1層でノード数2あれば解ける。でも、ツールで隠れ層を3層に増やしてみて。損失曲線がガタガタになったり、決定境界が複雑になりすぎて過学習気味になることがある。実務では、問題の複雑さに合わせてこの構造を決めるのが腕の見せ所だね。

よくある質問

画面上の「学習開始」ボタンをクリックするだけで自動的に学習が始まります。学習が進むと、ニューラルネットワークの重みやバイアスが更新され、出力層の値がXORの正解(0,0→0、0,1→1、1,0→1、1,1→0)に近づく様子をリアルタイムで観察できます。
画面上部の「順伝播」と「逆伝播」のタブをクリックすることで切り替えられます。順伝播タブでは入力から出力への信号の流れが、逆伝播タブでは誤差が出力から入力へ伝わる様子が色分けされて表示されます。
はい。数式は参考情報であり、操作に必須ではありません。各ニューロンの色の濃さが活性化の強さ、線の太さが重みの大きさを表すため、視覚的に直感的に理解できます。数式の詳細はツール下部の「解説」ボタンから確認できます。
画面上の「リセット」ボタンで重みとバイアスを初期化し、再度学習を開始してください。また、学習率スライダーを調整(通常0.1〜0.5推奨)することで収束が改善することがあります。それでも収束しない場合は、ネットワークの層数やノード数を変更してみてください。

実世界での応用

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)$)のような関数が主流になっている理由の一つだよ。

使い方ガイド

  1. 入力層ノード数(デフォルト2)、隠れ層ノード数(デフォルト4)、出力層ノード数(デフォルト1)を設定してネットワーク構造を決定する
  2. XOR学習データセット(入力:[0,0]→出力0、[0,1]→出力1、[1,0]→出力1、[1,1]→出力0)を自動読み込みし、学習開始ボタンをクリック
  3. リアルタイムで損失関数の収束過程、重み更新の方向、隠れ層の活性化パターン変化を可視化画面で追跡し、エポック数と正解率の推移を監視

具体的な計算例

隠れ層4ノード、学習率η=0.5、シグモイド活性化関数でXOR問題を学習した場合:初期エポック1では損失0.693、正解率50%だが、エポック100時点で損失0.012、正解率100%に到達。決定境界の可視化では、非線形な曲線が段階的に入力空間を正確に分割する様子が確認でき、隠れ層が学習を進むにつれてニューロン間の接続重みが[-2.5, 3.1, -1.8, 2.9]から[-4.2, 5.7, -4.1, 5.6]へ大幅に更新される

実務での注意点