019、神经网络基础:感知机、激活函数与多层网络
019 神经网络基础:感知机、激活函数与多层网络昨晚调试一块STM32F4上的TinyML推理代码,发现一个诡异现象:模型在PC端跑得好好的,部署到MCU上输出全是0.5。折腾到凌晨两点,最后发现是激活函数实现里用了tanh的近似计算,精度不够导致梯度消失——这让我想起当年手写感知机时踩过的坑。今天就从最基础的感知机开始,把神经网络这些“地基”彻底讲透。从逻辑门到感知机:一个让人抓狂的调试经历先看一个经典问题:用单个神经元实现异或(XOR)逻辑。当年我在Arduino上试过,死活调不出来,输出永远在0.5附近震荡。后来才明白,单层感知机本质上是个线性分类器,而XOR是线性不可分的——这就是为什么早期神经网络被质疑“连简单逻辑都搞不定”。感知机的数学形式其实很简单:y = sign(w·x + b)。但注意这里的sign是阶跃函数,输出只有0或1。我在实际项目中吃过亏:用阶跃函数做分类器,训练时梯度根本传不回去,因为阶跃函数导数处处为0。后来换用Sigmoid才解决。代码实现时的一个坑:别把偏置b单独处理。我见过有人把b写成bias = 0.1然后硬编码,这在小数据集上可能凑合,但一旦换数据就崩。正确做法是把b作为权重的一部分,输入固定为1,这样梯度更新时b也能自动调整。// 感知机前向传播 - 这里踩过坑

相关新闻

最新新闻

日新闻

周新闻

月新闻