离散 Hopfield 神经网络的数字识别功能还挺有意思的,尤其是它那套“记忆-还原”机制,挺像人脑的。你给它一个模糊或不完整的输入,它能慢慢收敛回你训练过的图像,像是“联想”出原图。这个 MATLAB 项目里,整体结构清晰,训练和测试的流程也挺完整的,适合做入门练习或者教学 demo。

图像向量化是第一步,像 28x28 的手写数字图直接拉平成 784 长度的一维向量,方便神经网络。你也可以换自己的图,关键是统一格式。

权重矩阵的构建用的是经典的 Hebb 学习规则,逻辑简单但效果不错。不同数字的特征在这里形成了“记忆痕迹”,你可以试试添加一些噪声看它恢复得怎么样。

更新规则比较直接,每轮更新都按当前状态算激活值再判断翻转与否。更新过程是离散的,像模拟一步一步“想起来”的过程,挺适合教学演示。

能量函数也加进来了,能直观看到网络稳定性的变化。每更新一步都能看到能量在下降,这种“可视化收敛”体验还挺难得的。

整体在 MATLAB 里跑得顺,Neural Network Toolbox可以用但不是必须,自己写逻辑更灵活。界面可以简单做点交互,比如加入滑块调整噪声程度,效果更直观。

如果你对联想记忆这块感兴趣,或者正好在做神经网络入门项目,这份代码算是蛮不错的参考。想深入了解,还可以看看下面这些相关文章:

如果你是做图像识别教学或者要 Hopfield 原理,这个例子就挺合适的,结构清晰,改起来也方便。