基于bp神经网络的手写体数字识别
1989年,基于Yann LeCun在贝尔实验室把一张32×32的神经数字识别灰度图塞进一个叫LeNet的网络里,机器认出了邮局手写的网络邮政编码。那套东西的写体骨架,就是基于今天要聊的BP神经网络。它不新鲜,神经数字识别但管用。网络
手写体数字识别这件事,写体说白了就是基于让机器看图猜数。人看一眼就懂,神经数字识别机器不行。网络它看到的写体是一堆像素点,每个点取值0到255。基于28×28的神经数字识别MNIST图片,展开就是网络784个数字。BP神经网络干的事,是找一组权重和偏置,把这784个输入映射到10个输出上,哪个输出最大,就认成哪个数字。
网络长什么样
拿一个最朴素的版本说。输入层784个节点,对应每个像素。中间藏一层,比如128个神经元。输出层10个节点,对应0到9。层与层之间全连接,每个连接上有个权重。前向传播时,每个隐藏神经元收到784个输入加权求和,加偏置,过激活函数——常见的是ReLU或者Sigmoid。输出层再用Softmax把10个实数压成概率分布。
这中间有个细节容易被跳过。权重初始化不能全设成一样的值,否则所有神经元学到的特征完全相同,网络退化成一条直线。通常用高斯分布随机初始化,标准差控制在0.01到0.1之间。LeCun早期论文里提过,初始化方差要跟输入节点数挂钩,不然信号传几层就衰减没了。
反向传播在调什么
前向跑完,网络给出一个预测,比如它觉得图里是“3”的概率是0.7。真实标签是“3”,one-hot编码后对应[0,0,0,1,0,0,0,0,0,0]。损失函数用交叉熵,算出来一个标量。这个标量对每个权重的偏导数,就是反向传播要算的东西。链式法则一层层往回推,算出梯度,然后用梯度下降更新权重:w = w - lr * grad。
学习率这个参数很敏感。设0.1可能震荡不收敛,设0.0001又慢得让人想砸键盘。实践中常用Adam或者RMSProp这类自适应方法,它们对学习率没那么挑剔。MNIST上,一个784-128-10的网络,用Adam,学习率0.001,批量大小64,跑五六个epoch,测试集准确率能到97%以上。再往上提,就得靠卷积网络了。
几个实际会踩的坑
过拟合是第一个。训练集准确率99%,测试集只有92%,网络把训练样本背下来了。Dropout是常用手段,训练时随机让一部分神经元失活,逼网络学更鲁棒的特征。另一个是梯度消失,Sigmoid激活函数在饱和区导数接近零,反向传播时梯度越传越小,浅层几乎学不动。换ReLU能缓解,但ReLU也有自己的问题——神经元可能“死掉”,输出恒为零,梯度永远为零。
数据预处理别忽略。把像素值从0-255缩放到0-1,收敛快很多。不缩放也能跑,但训练时间可能翻倍。还有个经验:打乱训练数据顺序。MNIST原始数据按标签排过序,不shuffle的话,每个batch里全是同一个数字,梯度方向偏得离谱,网络根本学不好。
它为什么还值得讲
现在随便一个卷积网络在MNIST上都能刷到99.5%以上,BP神经网络看起来像古董。但它是理解深度学习的地基。卷积、池化、注意力机制,反向传播的数学框架没变。把784-128-10这个网络手写一遍,不用框架,只用numpy,梯度推导自己算,比调包跑一百个模型收获都大。我见过不少人能背出反向传播公式,但问他“偏置的梯度为什么是误差项直接求和”,答不上来。动手写一遍,这个问题就消失了。
MNIST本身也值得说一句。这个数据集从1998年发布到现在,被用烂了,但它干净、小、加载快,适合验证想法。不过别拿它当benchmark吹牛,97%和98%的差距,可能只是随机种子不同。真要评估模型,换Fashion-MNIST或者EMNIST,难度上来了,方法的好坏才看得出来。
(责任编辑:娱乐)
-
上周我把家里那台吃灰的旧笔记本翻出来,装了个开源的Linux发行版,打算让它重新上岗当下载机。装完系统,想装个远程控制软件,结果发现TeamViewer对老旧硬件越来越不友好,官方安装包还带了一堆用不
...[详细]
-
去年冬天,我在一个基层法院的信访窗口待了整整三天。每天早上八点半,窗口前就排起长队。有人拎着塑料袋,里面装着皱巴巴的判决书;有人蹲在墙角,反复翻看手机里拍下的证据照片。他们中的大多数,并不知道"最高法
...[详细]
-
去年某招聘平台被曝出漏洞,攻击者上传了一个伪装成简历的WebShell,直接拿到了服务器权限。事后查日志,发现文件上传接口只检查了Content-Type,而攻击者把PHP文件改成image/jpeg
...[详细]
-
```html 未成年人网络犯罪案例 body { font-family: system-ui, -apple-system, 'Segoe UI', Roboto, 'Helvetica
...[详细]
-
谷歌扩展程序这东西,说白了就是给Chrome浏览器装外挂。但别小看这些外挂,它们能把一个普通的浏览器变成你工作流里的瑞士军刀。 我每天打开浏览器的第一件事,不是去点书签,而是等那个叫“OneTab”的
...[详细]
-
上周三凌晨两点,我还在跟“最佳11人”里的传奇难度较劲。手机屏幕亮得刺眼,对面那个叫“传奇巴萨”的AI控球率刷到了68%,我这边全队跑动距离加起来还没梅西一个人多。气得我把手机摔沙发上,结果弹出来一道
...[详细]
-
去年有个读者给我发私信,说他跟着一个"老师"做股票,三个月亏了47万。我问他怎么亏的,他发来一张截图——某"私募内部群"里,一个头像西装革履的人正在喊单:"全仓买入XX股份,目标价翻倍,今晚机构拉板。
...[详细]
-
```html 奇葩网站可进入 body { font-family: 'Georgia', '宋体', serif; line-height: 1.8; max-width: 720px
...[详细]
-
网展企业网站系统,说白了,就是给企业做线上展厅的那套工具。但你别被“系统”俩字唬住,它不是什么高深莫测的代码怪兽。我见过太多企业,花大价钱搞了个官网,结果像个无人问津的仓库,产品图片压箱底,联系方式藏
...[详细]
-
```html ubuntu系统能干什么 body { font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto,
...[详细]

安卓系统修改器
网站数据分析工具
防火墙开放80端口
存在违法信息的网站
附子吧
