25、手写数字识别:模型优化与实验探索

手写数字识别:模型优化与实验探索

1. 验证样本数量的选择

在模型训练中,验证样本数量的选择至关重要。使用 1000 个验证样本效果尚可,与测试数据仍有较好的相关性。这也是选择在第 1000 行进行分割的原因,而非选取 9000 个有趣的样本用于训练,仅保留 1000 个简单样本用于验证。

然而,1000 个样本数量略显不足。目标是达到 0.5% 的错误率,即仅允许 5 个错误。在 1000 个样本中,很难判断 6 个错误的模型是否比 7 个或 8 个错误的模型泛化能力更强,因为可能只是某个样本的运气因素。但在 10000 个样本中,60 个错误与 70 个或 80 个错误相比,受运气影响的可能性就会降低。

2. 筛选难样本

在实际训练数据中,模型对不同样本的学习难度不同。以 MNIST 数据集为例,简单样本就像标准的手写数字,而难样本则如同用右手画画的 Bart Simpson(这里是一种形象的比喻)。

要从 50000 个 MNIST 训练样本中获取最难的 1000 个样本,可按以下步骤操作:
1. 在所有 50000 个训练样本上构建一个相对简单的模型,例如:

m <- h2o.deeplearning(x, y, train, valid)
  1. 运行预测:
p <- h2o.predict(m, train)
  1. 获取预测概率和最大概率。
  2. 对概率进行排序,选择最低的 1000 个。

步骤 3 是关键。如果模型对某个答案有 99.9% 的置信度,说明该样本对模型来说更容易学习;而置信度仅为 80% 的样本则相对较难。为确保错误样本也能被包含,当模型预测错误时,将实际预测概率替换为 0.1。

通过筛选难样本,可以加快后续模型的学习速度,对这些样本进行加权处理,让模型更专注于学习它们;或者在生成数据时,以这些难样本为起点。

3. 自编码器的应用

自编码器可用于将数据集降维至二维以便可视化,还能解决多层神经网络训练的难题。可以逐层或两层地以无监督自编码器的方式学习,最后添加一两个监督层。

为获取多种输入数据,构建了三个自编码器:
| 自编码器 | 描述 |
| ---- | ---- |
| AE200 | 大型,有 200 个隐藏单元,单层,高丢弃率/L2 |
| AE32 | 小型,32 个隐藏单元,低丢弃率/L2 |
| AE128 | 两层,第一层与输入大小相近(768 个隐藏节点),有较高的丢弃率和 L2,第二层 128 个节点,无丢弃率,分两个阶段构建 |

使用这三个自编码器得到了 360 个特征,取代了原来的 784 个原始像素,同时保留了 113 个增强特征。这一方法效果显著,将单个模型的结果从 120 - 140 范围降至 80 - 110 范围,在集成模型中可达到 70 多(0.7% 错误率)。不过,由于同时开始使用生成数据,难以确定各因素的具体贡献。

4. 卷积与收缩操作

MNIST 数据集上表现最佳的模型基于卷积神经网络(CNNs),但 H2O 不提供此类模型,且计算量较大。其原理是在图像上匹配如 5x5 的模式,然后通过收缩层选择每个 2x2 块中的最大像素值,得到如 12x12 的输出。

尝试了一种介于真正的 CNN 和扩展字段之间的“穷人的卷积”方法:
1. 生成十二个 5x5 模式。
2. 进行 2x2 最大收缩操作,得到十二个 12x12 输出。

为训练 5x5 模式,使用了一个具有 6 个隐藏节点的单层自编码器生成 6 个模式,以及通过 h2o.prcomp() 返回的前 6 个主成分生成另外 6 个模式。训练数据选取 1000 个最难的训练样本,并提取所有 5x5 重叠窗口,得到 576000 个训练样本。

构建了四个深度学习模型,其性能如下:
| 模型 ID | 验证错误 | 隐藏节点 | 丢弃率 | L1,L2 | 测试分数 |
| ---- | ---- | ---- | ---- | ---- | ---- |
| DLt2 | 4 | 400,500,600,700 | 0.1 | 1e - 5,0 | 73 |
| DLt1 | 6 | 300,400,500,600 | 0.1 | 1e - 5,0 | 57 |
| DLx1 | 8 | 800,800,800 | 0.3 | 1e - 4,1e - 4 | 58 |
| DLb1 | 12 | 1024,2048 | 0.1 | 1e - 5,0 | 93 |

这种方法训练速度比普通 CNN 快,但效果不如最佳的卷积网络。

5. 集成模型

集成模型通过平均多个模型的预测概率来提高性能。在使用集成模型时,希望模型之间尽可能不同。但在模型调优后,深度学习模型明显优于其他算法。不过,深度学习有很多可调整的参数,通过改变隐藏层的数量和大小、丢弃率等,可以增加模型的多样性。

实验发现,相对较弱的模型组成的集成模型提升效果更明显。例如,早期的一个实验使用了八个模型(两种不同的深度学习配置和最佳的随机森林模型),单个模型的分数范围从 120(1.2%)到 302(3.02%),但集成后的分数为 105,比八个模型的平均错误率低近 70,比最佳模型低 15。而由最佳的三个深度学习模型组成的集成模型,分数仅比最佳模型高 1,这可能是因为为追求每个模型的最佳性能,导致模型之间的多样性减少。

graph LR
    A[数据处理] --> B[筛选难样本]
    B --> C[自编码器应用]
    C --> D[卷积与收缩操作]
    D --> E[构建深度学习模型]
    E --> F[集成模型]

综上所述,在模型训练中,数据工程和收集更多数据通常比微调参数更有价值。不同算法在不同数据集上的表现各有优劣,需要根据具体情况选择合适的算法和方法。

6. 实验总结与算法性能分析

6.1 不同数据集上的算法表现

在不同的数据集上,各种算法展现出了不同的性能。在第一个数据集(小数据集的回归问题)和第二个数据集(大数据集的 10 分类问题)中,深度学习表现出色;而在第三个数据集(具有较大随机元素的二项分类问题)中,简单的广义线性模型(GLM)和随机森林表现更佳。

6.2 参数调整的效果

参数调整很快就会达到收益递减的点。模型在默认设置下通常表现良好,尤其是结合增加树的数量/迭代次数并使用早停策略时。因此,花费大量精力进行参数微调可能并非最佳选择。

6.3 数据工程的重要性

从实验结果来看,数据工程和收集更多数据通常比微调参数更能提升模型性能。以下是不同方法的实际效果排序推测:
1. 增加更多训练数据
2. 使用自编码器替代原始像素
3. 采用“穷人的卷积”方法
4. 集成模型(弱模型组成的集成效果更好)
5. 构建更大的模型

7. 模型训练与评估的关键要点总结

7.1 数据处理

  • 数据平衡 :确保训练数据的平衡,避免数据偏差对模型性能的影响。
  • 数据筛选 :筛选出难样本,可加快后续模型学习速度或进行加权处理。
  • 数据增强 :使用自编码器生成特征,替代原始像素,提升模型性能。

7.2 模型构建

  • 深度学习 :具有多个可调整参数,可通过改变隐藏层数量、大小和丢弃率等增加模型多样性。
  • 卷积神经网络 :在 MNIST 数据集上表现最佳,但 H2O 不提供,可尝试“穷人的卷积”方法。
  • 集成模型 :通过平均多个模型的预测概率提高性能,注意模型之间的多样性。

7.3 训练与评估

  • 早停策略 :结合增加树的数量/迭代次数和早停策略,避免过拟合。
  • 交叉验证 :使用交叉验证评估模型性能,确定最佳参数。

7.4 操作步骤总结

操作类别 操作步骤
筛选难样本 1. 构建简单模型: m <- h2o.deeplearning(x, y, train, valid) ;2. 运行预测: p <- h2o.predict(m, train) ;3. 获取预测概率和最大概率;4. 排序选择最低的 1000 个
自编码器应用 构建 AE200、AE32、AE128 三个自编码器,得到 360 个特征替代原始像素
“穷人的卷积” 1. 生成十二个 5x5 模式;2. 进行 2x2 最大收缩操作,得到十二个 12x12 输出
集成模型 选择不同的模型,平均预测概率,注意模型多样性
graph LR
    A[数据处理] --> B[模型构建]
    B --> C[训练与评估]
    C --> D[优化调整]
    D --> B

在实际应用中,需要根据具体的数据集和问题,综合运用上述方法和策略,不断尝试和优化,以找到最适合的模型和参数配置,从而提高模型的性能和泛化能力。总之,通过对各种算法和方法的实验和分析,我们可以更好地理解它们的优缺点,为实际问题的解决提供更有效的方案。

相关推荐

25、使用OpenCV实现手写数字识别的神经网络

本文介绍了如何使用OpenCV和MNIST数据集实现手写数字识别的神经网络系统。内容涵盖训练参数选择、ANN模型构建与训练、图像预处理、数字检测与分类,并提供了完整的代码模块。同时探讨了通过调整网络结构、激活函数、训练方法等手段优化模型性能的方法,强调了地区性手写风格差异对识别效果的影响,并给出了数据收集、模型保存与加载的实用建议,帮助读者构建高效准确的手写数字识别应用。

wind6的博客 78

中华白海豚个体识别:深度学习ReID全流程落地指南

目标检测与特征提取是计算机视觉的基础任务,当识别对象从通用物体转向野生动物个体时,算法需要面对开放集分类与跨时空匹配的挑战。基于深度学习的个体识别(ReID)通过检测模型框出目标局部特征,再利用三元组损失训练特征向量,使同一只个体的不同照片在特征空间中彼此靠近,不同个体相互远离。该技术已从行人重识别延伸到中华白海豚等海洋生物保护领域,解决了背鳍轮廓、疤痕色斑等细微差异带来的长期监测难题。在实际工程中,需依次完成数据标注、骨干网络选型、PK采样、数据增强与置信度分桶,并配合人工复核形成闭环,才能将秒级匹配结果

weixin_33754065的博客 466

ODS 与模态分析

模态分析不是通过现有的 FRF 来“推测”或“估计”其他模态参数,而是通过测量和分析 FRF 来。

轩辕霸天L 1259

避开SM30维护视图的坑:自动更新字段+日志记录的5个关键配置步骤

本文深入解析了SAP ABAP开发中SM30维护视图的深度定制,聚焦于实现自动更新字段与日志记录功能。文章详细阐述了从SE54配置起点到核心编码的5个关键步骤,重点讲解了如何利用事件驱动模型(如05创建事件和01保存前事件)安全操作动态数据结构,并提供了避免常见陷阱的实用技巧,帮助开发者构建稳定可靠的自动化维护机制。

plant的博客 622

Android开发者必看:5分钟搞定MQTT客户端连接EMQX服务器(附完整代码)

本文为Android开发者提供了一份快速实现MQTT客户端连接EMQX服务器的实战指南。通过引入Eclipse Paho SDK,详细讲解了从项目配置、权限申请到核心连接、主题订阅与消息发布的完整流程,并附有即拿即用的Kotlin代码,帮助开发者在物联网应用中高效集成轻量级实时通信功能。

weixin_29228781的博客 271

基于树莓派5的AR头显开发:从硬件选型到Unity整合全解析

增强现实(AR)技术通过将虚拟信息叠加到真实世界,为用户提供沉浸式交互体验。其核心原理依赖于计算机视觉进行环境感知与空间定位,并结合实时3D渲染实现虚实融合。在工程实践中,嵌入式平台因其低成本、低功耗特性,成为探索AR应用边界的重要载体。本项目以树莓派5为核心,通过集成OpenCV进行ArUco标记识别实现精准空间定位,并利用MediaPipe完成手势交互,最终在Unity引擎中完成虚实场景的实时渲染与融合,为开发者提供了一个完整的、可亲手实践的AR系统开发方案。

weixin_32430941的博客 254

PFC中pb模型实战:从胶结参数设置到破坏模拟全流程解析

本文详细解析了PFC软件中平行胶结模型(PB模型)的实战应用全流程。从胶结参数(pb_kn, pb_ks, pb_ten等)的物理意义与精准赋值入手,深入探讨了模型构建、胶结施加以避免初始损伤的技巧,并系统介绍了破坏过程的监测、阈值判定方法以及高级可视化与常见问题诊断。旨在帮助岩土工程与颗粒材料研究者掌握从参数调试到破坏模拟的核心操作,提升数值模拟的准确性与效率。

php55的博客 1074

超频玩家必看:TestMem5配置文件详解与内存稳定性测试实战(含黄金参数包)

本文详细解析了TestMem5(TM5)在内存超频稳定性测试中的核心价值与实战应用,特别针对DRAM颗粒特性提供黄金参数配置。通过anta777等专业配置的深度剖析,指导超频玩家精准定位内存故障,优化时序参数,实现性能与稳定性的完美平衡。涵盖从初级验证到极限压测的全流程方案,是硬件发烧友提升系统稳定性的必备指南。

weixin_29198045的博客 1801

MFC停靠窗口实战:CDockablePane从创建到控件布局的完整指南(附残影问题排查)

本文提供了MFC中CDockablePane停靠窗口的完整实战指南,涵盖从自定义窗格类创建、主框架集成、内部控件布局到高级功能定制的全过程。针对开发中常见的“残影”视觉问题,文章深入剖析了其根源,并给出了系统性的排查步骤与解决方案,帮助开发者构建稳定、专业的可停靠用户界面。

sun99的博客 613

基于STM32、HAL库的IP5356M快充协议芯片简介及驱动程序设计

@param hip: IP5356M句柄指针。* @param hip: IP5356M句柄指针。* @param hip: IP5356M句柄指针。* @param hip: IP5356M句柄指针。* @param hip: IP5356M句柄指针。* @param hip: IP5356M句柄指针。* @param hip: IP5356M句柄指针。* @param hip: IP5356M句柄指针。* @param hip: IP5356M句柄指针。

corlin6688的博客 1219

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

ssm框架搭建

这个是一个在idea上成功跑起来的ssm框架项目,保存在这里方便以后使用直接下载

假人有限元模型

假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用

复分析 阿尔福斯(Ahlfors) 第三版答案 英文

答案分为十章,有部分习题没有答案,全英文复分析阿尔福斯(Ahlfors) 第三版答案

上一篇: 49、三维单粒子定态及相关物理现象解析
下一篇: 24、386和486机器的32位编程技术解析
lambda
博客等级 码龄23年 49粉丝 1303原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符  | 博主筛选后可见
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值