神经网络可视化工具 返回
分析工具

神经网络可视化工具

实时可视化神经网络结构、前向传播和反向传播。通过XOR问题学习,直观理解神经网络工作原理。

网络结构
输入节点数
隐藏层数量
隐藏层节点数
输出节点数
激活函数

应用于隐藏层。输出层用于二分类(XOR),始终为 Sigmoid。

学习率 (η)
学习控制
计算结果
0
轮数
损失
准确率
0.10
学习率 η
神经网络
正权重
负权重
高激活
低激活

损失曲线

损失

决定边界 (XOR)

边界
理论与主要公式

在误差反向传播法中,损失 L 对权重 w 的梯度通过链式法则计算:

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

XOR是线性不可分的,只能通过具有隐藏层的多层网络来解决。

什么是神经网络

🙋
神经网络到底在计算什么?"学习"是什么意思,里面发生了什么我想象不出来…
🎓
简单说,就是把很多个"小计算机"叠成多层,从输入数据找到最优的"权重"来产生答案。在这个工具里,点击"前向传播"按钮,你就能看到动画显示输入值如何通过各层节点最后输出"0"或"1"。先试试把隐藏层节点数设为2,看看信号怎样流动吧。
🙋
我看到信号流动了!但怎么才能找到"正确的权重"呢?开始时权重是随机的吧?
🎓
没错。初始权重很乱,所以输出也很乱。这就是"反向传播"的作用。计算输出和正解的误差,然后从"输出层→隐藏层→输入层"这样反向追溯,把误差责任分配给每个权重(这叫链式法则)。试试调上面的"学习率η"滑块,这控制的是误差修正的"步幅"。设太大了的话,会跳过答案。
🙋
增加隐藏层数和节点数会怎样?多的话就是聪明的网络吗?
🎓
表示能力确实会上升,但不是越多越好。这个XOR问题,隐藏层1层、节点2个就能解决。试试把隐藏层改成3层,看看损失曲线会上下波动或决定边界变得超级复杂。这叫"过学习"——网络过度拟合了那4个数据点。实际工作中,得根据问题的复杂度来调整网络结构,这也是个技术活儿。

常见问题

只需点击屏幕上的"自动学习"按钮,学习就会自动开始。随着学习进行,神经网络的权重和偏置会更新,输出层的值会逐渐接近XOR的正确答案(0,0→0、0,1→1、1,0→1、1,1→0),你可以在实时显示中观察整个过程。
点击屏幕顶部的"前向传播"和"反向传播"标签页可以切换。前向传播标签页显示从输入到输出的信号流,反向传播标签页显示误差从输出向输入反向传播的过程,两者都用颜色区分。
没问题。公式只是参考信息,操作不需要理解。节点的颜色深度表示激活强度,连线的粗细表示权重大小,这样可以直观理解。详细的公式解释可以点击工具下方的"说明"按钮查看。
点击屏幕上的"重初始化权重"按钮重新初始化权重和偏置,再开始学习。或者调整学习率滑块(建议0.1到0.5之间)可能会改善收敛。还有办法是改变网络的层数或节点数。

实际应用

CAE中的代理模型:汽车碰撞仿真或机翼空气动力学分析,一次FEM/CFD计算要花好几小时。把各种设计参数和结果喂给神经网络学习,就能快速预测,做成"代理模型",设计搜索速度能大幅提升。

物理信息神经网络(PINN):不仅靠数据驱动,还在损失函数里加入物理规律(比如Navier-Stokes方程)。这样用少量实验数据也能给出物理上有意义的预测,在流体分析和材料开发中很有前景。

图像识别与异常检测:工厂里用神经网络从产品外观图像自动检测缺陷。只用正常品图像训练,偏离的就是"异常"——这个思路也能用在验证CAE仿真结果上。

强化学习与最优控制:机器人手臂运动或建筑节能空调控制,神经网络学习复杂系统的最优动作。这是把CAE模型融入实际控制系统的基础技术。

常见误解与注意事项

用这个工具玩着玩着,容易产生一些误会。首先,"学习率η越大学习越快"——这只说对了一半。确实改大η会加大权重更新幅度,但比如设成0.5或1.0,损失曲线就会上下剧烈振荡,根本收敛不了。这是因为,你一不小心跳过了谷底,掉到对面的山坡上,再跳回去,就这样反复。实际工作的经验法则是,先从0.01或0.001这样的小值开始,逐步调整。

其次,"隐藏层和节点越多性能越好"——这也不全对。这个XOR问题,隐藏层1层、2个节点就够了。要是你偏要在工具里设成5层、每层10个节点这样的巨无霸网络,损失表面上掉到接近零,但决定边界会超级复杂,简直是对那4个训练点的"过度拟合"。这就是过学习。真实工作中,目标是找简洁但鲁棒的模型,对未知数据要稳定,所以网络深度和宽度都要精心选择。

最后一个坑:很多人觉得"Sigmoid函数是万能激活函数"。历史上确实用了很久,但深层网络里有大弱点。Sigmoid把输出压成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,sigmoid激活函数的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]

实际工作的注意点