48、机器学习复习与评估指标解析

机器学习复习与评估指标解析

1. Softmax函数的深入理解

Softmax函数在机器学习中有着广泛的应用。它既可以作为输出层分数的归一化方法,也能直接作为输出层的激活函数。在使用Softmax时,关于底数和温度的选择会以不同方式影响数据分布。很多人存在误解,认为以e为底数在生成置信度方面有特殊属性,或者认为底数的选择不会改变不确定性的排名顺序。实际上,真正理解Softmax的工作原理有助于我们选择合适的不确定性采样策略。

为避免指数运算时出现溢出问题,有两种处理方法:
- 从输入中减去一个常数,使输入中的最大值为0,这样能在不改变概率分布的情况下避免溢出。
- 使用Softmax的对数形式(如PyTorch的默认行为),可以控制数值范围。

2. 人机协作机器学习系统的评估指标

评估人机协作机器学习系统的成功与否有多种方法,具体使用的指标取决于任务本身。以下是一些重要的评估指标:

2.1 精确率、召回率和F值
  • 精确率(Precision) :衡量模型预测为正例的样本中,真正为正例的比例。计算公式为:
    [
    \text{Precision} = \frac{\text{True Positives}}{\text{True Positives} + \text{False Positives}}
    ]
  • 召回率(Recall) :衡量实际为正例的样本中,被模型正确预测为正例的比例。计算公式为:
    [
    \text{Recall} = \frac{\text{True Positives}}{\text{True Positives} + \text{False Negatives}}
    ]
  • F值(F - score) :是精确率和召回率的调和平均值,计算公式为:
    [
    \text{F - score} = \frac{2 \times \text{Precision} \times \text{Recall}}{\text{Precision} + \text{Recall}}
    ]

当使用简单准确率且标签稀有,大部分准确率会由大量的真负例决定。为调整这种不平衡,可以使用机会调整准确率,后续会详细介绍。

2.2 微观和宏观精确率、召回率和F值

精确率、召回率和F值的计算通常是针对数据中的某个标签。将每个标签的准确率合并为一个单一准确率得分有两种常见方法:
- 微观得分(Micro scores) :在每个样本层面聚合准确率,为每个样本进行计算。
- 宏观得分(Macro scores) :独立计算每个标签的准确率。

如果某个标签比其他标签更频繁,该标签的频率对微观精确率、微观召回率和微观F值的贡献最大。在某些情况下,这可能是我们想要的结果,因为它给出了一个由测试数据中标签加权的准确率数字。但如果测试数据在模型部署时遇到的标签上不平衡,或者希望模型在预测所有标签时都具有相同的准确性,无论标签频率如何,宏观准确率得分更合适。

2.3 机会调整准确率

考虑随机机会的影响,机会调整准确率将随机机会的准确率设为0,并相应地缩放得分。例如,有两个频率相等的标签,模型随机预测标签的准确率为50%。如果模型在该任务上的准确率为60%,则机会调整准确率为:
[
\text{Chance - adjusted accuracy} = \frac{60\% - 50\%}{1 - 50\%} = 20\%
]

机会调整准确率虽然不常用于评估模型预测的准确性,但广泛用于评估人工标注的准确性。当不同标签的频率差异较大时,机会调整准确率更有用。

2.4 考虑置信度的ROC曲线下面积(AUC)

除了模型预测标签的准确率,我们还关心置信度与准确率是否相关,因此可以计算ROC曲线下面积(AUC)。ROC曲线根据模型的置信度对数据集进行排序,并计算真阳性率与假阳性率。

AUC是ROC曲线下的面积占整个可能面积的百分比,也表示任意两个不同标签的随机选择项中,正确标签以更高置信度被预测的概率。计算AUC的公式为:
[
\text{AUC} = \frac{\sum_{i = 1}^{\text{size}(r)} \sum_{j = 1}^{\text{size}(r)} \begin{cases} 1, & \text{if } i > j \ 0, & \text{otherwise} \end{cases}}{\text{size}(r) \times \text{size}(u)}
]

该算法的复杂度为$O(N^2)$,如果需要加快计算速度,可以先对项进行排序,并递归找到排序位置,复杂度为$O(N \log(N))$。同时,还可以计算微观和宏观AUC:
- 微观AUC :计算所有标签下所有样本的AUC。
- 宏观AUC :分别计算每个标签的AUC,然后取平均值。

2.5 模型错误发现数量

在机器学习模型可能出现错误时将任务交给人类处理的系统中,可以统计发现的错误数量。例如,将置信度低于50%的预测视为可能的错误,并将这些预测交给人类审核。可以通过以下公式计算被标记为需要人类审核的项目中需要纠正的百分比:
[
\text{Percent errors} = \frac{\text{Number actual errors}}{\text{Number sampled}}
]

还可以计算所有错误的百分比,以得到人类和模型预测的总准确率;或者计算每小时或每分钟发现的错误数量,这在人类处理时间固定的情况下更有意义。

2.6 节省的人力成本

另一种计算人力成本的方法是衡量节省的时间和精力。无论是使用主动学习更明智地选择要标注的项目,还是改进标注的质量控制和界面,提高人机协作系统中人类部分的效率、准确性和用户体验可能比小幅提高模型的准确性更重要。

例如,主动学习可以将所需标签数量减少53%,而在该点的准确率差异约为20%。如果从算法背景的角度来看,通常更习惯看准确率(y轴);但如果比较同一算法在不同数据集上的表现,所需标签数量(x轴)的数字更重要。

3. 其他评估指标

除了上述标准的评估指标外,还有一些特定于机器学习的准确率指标未详细介绍,如用于语言生成的双语评估辅助指标(BLEU)、用于目标检测的交并比(IoU)、按人口统计的准确率以及用于人工标注的机会调整一致性等。

以下是一个简单的流程图,展示了评估人机协作机器学习系统的主要步骤:

graph LR
    A[选择评估指标] --> B[计算精确率、召回率和F值]
    A --> C[计算微观和宏观得分]
    A --> D[计算机会调整准确率]
    A --> E[计算AUC]
    A --> F[统计模型错误发现数量]
    A --> G[计算节省的人力成本]
    B --> H[分析结果]
    C --> H
    D --> H
    E --> H
    F --> H
    G --> H

通过这些评估指标,我们可以更全面地了解人机协作机器学习系统的性能,从而做出更合理的决策。

机器学习复习与评估指标解析

4. 主动学习相关内容

主动学习是一种重要的机器学习策略,具有广泛的应用场景和多样的实现方式。

4.1 主动学习的应用领域
  • 信息检索 :将主动学习应用于信息检索,能够提高检索的准确性和效率。通过选择更有代表性和不确定性的样本进行标注,使模型更好地适应不同的检索需求。
  • 语言生成 :在语言生成任务中,主动学习可以从多个方面提升性能。例如,通过不确定性采样选择模型不太确定的样本进行标注,提高生成文本的质量;利用多样性采样确保生成的文本具有更广泛的风格和内容;还可以运用主动转移学习,让模型更好地适应新的语言生成任务。
  • 目标检测 :主动学习在目标检测中的应用包括考虑更紧密的掩码(当使用多边形时)、创建与预测相似的训练数据样本、进行图像级别的多样性采样等。同时,通过设置较低的目标检测阈值可以避免偏见的延续。例如,在标注目标时,对于不确定的目标可以使用较低的阈值,然后交给人类进行审核。
  • 语义分割 :在语义分割任务中,主动学习有助于提高分割的准确性。通过主动转移学习,让模型更好地学习不同的语义信息;利用多样性采样确保训练数据涵盖各种不同的场景和物体。
  • 序列标注 :主动学习可以应用于序列标注任务,如通过不确定性采样选择模型不确定的序列进行标注,通过多样性采样确保标注的序列具有不同的特征。同时,还可以进行全序列标注和按置信度和标记进行分层采样。
4.2 主动学习的采样策略
  • 不确定性采样 :通过选择模型不确定的样本进行标注,提高模型的性能。例如,使用贝叶斯模型进行不确定性采样,或者使用基于熵的采样方法。
  • 多样性采样 :确保选择的样本具有多样性,避免模型只学习到局部的特征。多样性采样可以通过聚类算法实现,如基于聚类的采样方法,包括k - 均值聚类和余弦相似度计算。
  • 代表性采样 :选择具有代表性的样本进行标注,使模型能够更好地学习到数据的整体特征。代表性采样可以分为简单代表性采样和自适应代表性采样。
4.3 主动学习的组合策略

为了进一步提高主动学习的效果,可以将不同的采样策略进行组合:
- 结合不确定性采样和多样性采样 :例如,将最小置信度采样与基于聚类的采样相结合,或者将不确定性采样与基于模型的异常值采样相结合。
- 预期误差减少采样 :通过预测样本的误差,选择能够最大程度减少模型误差的样本进行标注。

4.4 主动学习的评估

评估主动学习的成功与否需要考虑新的测试数据和验证数据。同时,还需要对模型的预测和数据进行解释,如通过置信度排名、识别异常值等方式。

以下是一个表格,总结了主动学习在不同应用领域的主要策略:
| 应用领域 | 主要策略 |
| ---- | ---- |
| 信息检索 | 不确定性采样、多样性采样 |
| 语言生成 | 不确定性采样、多样性采样、主动转移学习 |
| 目标检测 | 紧密掩码、多样性采样、主动转移学习 |
| 语义分割 | 主动转移学习、多样性采样 |
| 序列标注 | 不确定性采样、多样性采样、全序列标注 |

5. 标注相关内容

标注是机器学习中不可或缺的环节,涉及到数据的创建、质量控制等多个方面。

5.1 标注人员类型
  • 众包工人 :通过众包平台招募的工人,具有数量多、成本相对较低的特点。但需要注意保障他们的工作安全、薪酬和职业发展。
  • 内部专家 :由公司内部员工组成的标注团队,对业务有更深入的了解,但成本相对较高。
  • 最终用户 :将最终用户作为标注人员,可以获得更贴近实际使用场景的标注数据,但需要考虑用户的参与度和标注质量。
5.2 标注数据的创建与管理
  • 数据创建 :包括数据收集、数据增强和合成数据等方法。数据增强可以通过对原始数据进行变换,如旋转、翻转等,增加数据的多样性;合成数据可以使用生成对抗网络(GANs)等方法生成。
  • 标注难度与质量 :高质量的人工标注具有一定的难度,需要考虑标注的准确性和一致性。可以通过设置质量控制机制,如专家审核、多标注员评价等方式来提高标注质量。
5.3 标注信息的融入

将标注信息融入机器学习模型可以提高模型的性能。例如,通过过滤或加权具有不同置信度的标签,将标注员的身份信息作为输入,或者将不确定性融入损失函数等方法。

以下是一个流程图,展示了标注的主要流程:

graph LR
    A[确定标注任务] --> B[选择标注人员]
    B --> C[数据收集与准备]
    C --> D[进行标注]
    D --> E[质量控制]
    E --> F[标注信息融入模型]
    F --> G[模型训练与评估]

通过对主动学习和标注相关内容的了解,我们可以更好地构建和优化机器学习系统,提高模型的性能和实用性。在实际应用中,需要根据具体的任务和数据特点选择合适的策略和方法。

相关推荐

AWS机器学习专家认证MLS-C01备考实战指南

AWS机器学习专家认证(MLS-C01)是面向云原生ML工程能力的高阶技术认证,核心考察机器学习全生命周期与AWS服务深度协同能力。其本质并非算法理论考试,而是对数据工程、模型训练、部署运维等环节中服务选型逻辑、权限设计原理及链路稳定性保障的技术判断力检验。例如SageMaker Training Job的VolumeSizeInGB影响容器运行时稳定性,Model Monitor依赖S3事件触发而非轮询,这些底层机制决定了方案的成本、延迟与可维护性。备考需聚焦真实场景响应能力——如Kinesis+Flin

diaogan4202的博客 519

工业级机器学习十大实战陷阱与破局方法

机器学习模型在真实业务场景中失效,往往不是算法本身的问题,而是数据预处理、特征工程、评估指标等环节脱离了算力约束、业务闭环与人机协作三大刚性边界。本文聚焦工业落地中的核心矛盾——如缺失值处理实为责任界定、异常值常是新业务信号、阈值设定本质是权力再分配——系统揭示从数据清洗到模型回滚的十层认知滤镜。结合IoT时序预测、医疗影像诊断、金融反欺诈等27个交付项目经验,强调‘领域知识即建模前提’‘业务语义重定义时间’等关键原则,为Kaggle选手、中级算法工程师及技术负责人提供可审计、可解释、可灰度上线的工程化路径

weixin_33749242的博客 456

行为分析实战:医疗、安全与教育中的可解释机器学习

行为分析是将人类操作、交互与响应转化为可计算时间序列信号的技术范式,其核心在于建模动态性、上下文依赖与跨模态对齐。不同于静态规则或黑箱预测,现代行为分析依托机器学习刻画‘正常基线’,通过特征漂移监控、角色感知建模和语义重建等手段,实现高可信度的异常识别与干预建议。该技术已在临床预警、内部威胁检测、个性化教育等强约束场景落地验证,兼具低延迟、可解释、易集成等工程优势。本文聚焦真实产线中从原始日志到可行动洞察的七步路径,覆盖数据清洗、行为指纹构建、轻量模型选型及人机协同部署,特别强调医疗行为建模与安全行为基线两

weixin_30919571的博客 374

机器学习中的范数:从数据预处理到正则化的工程实践指南

范数是机器学习中定义距离、度量大小和施加约束的基础数学工具,其本质是建模过程中的‘单位制’。理解l1范数(曼哈顿距离)的稀疏性与鲁棒性、l2范数(欧氏距离)的稳定性与平滑性,是解决特征缩放失当、正则化失效、梯度爆炸及模型泛化差等高频问题的关键。在工程实践中,范数贯穿数据标准化(如StandardScaler默认l2)、损失函数设计(L1Loss vs MSE)、权重衰减(weight_decay本质为‖w‖₂²)、对抗训练(l∞扰动约束)等核心环节。掌握不同范数的几何意义、代码映射与协同使用逻辑,能显著提升

wgyyh 400

数据泄露:机器学习中99%准确率背后的致命陷阱

在机器学习实践中,‘数据泄露’并非代码错误,而是特征与时间逻辑错位导致的系统性失效——当模型利用预测时刻尚不可知的信息(如未来标签、实时未生成指标)进行训练,其高准确率实为虚假幻觉。这类问题根植于特征工程、数据切分、预处理及交叉验证全链路,尤其在时序预测、风控建模、用户行为分析等强时间敏感场景中危害极大。它直接导致离线评估与线上效果严重脱节,是MLOps落地失败的首要原因。本文聚焦真实业务中高频出现的九类泄露模式,结合时间轴审查、自动化检测与特征治理,提供可落地的防御体系。

Liusuzhi19610221的博客 472

免费获取美国大学正式学分的数据科学课深度解析

数据科学学分课程正成为全球学习者突破学历认证瓶颈的关键路径。其本质是将传统高等教育中的能力评估、过程验证与成果存证,通过在线化、自动化与区块链技术重构为可规模化交付的学术服务。这类课程以Python、Pandas、Scikit-learn等开源技术栈为实践载体,强调‘能力锚点’而非知识灌输,依托Jupyter沙箱环境与自动评测系统保障工程真实性,同时通过学术诚信数字协议和链上成绩单哈希实现跨机构可信互认。它已实际应用于考研复试佐证、海外申硕先修补充及企业晋升能力背书等多元场景,标志着学分从‘校内凭证’向‘全

weixin_30699955的博客 387

提示工程评估中的反馈闭环设计:从评估结果到提示优化的自动化流程

你有没有过这样的经历?给ChatGPT写提示:“帮我写个Python排序算法”,结果它返回了100行复杂代码,却没加注释;改提示:“帮我写个带注释的Python冒泡排序”,结果它漏了“时间复杂度分析”;再改:“帮我写个带注释和时间复杂度分析的Python冒泡排序”,这次对了,但换个问题(比如“快速排序”)又出错了……问题的核心:我们不知道“当前提示的问题在哪里”,也不知道“怎么改才能解决问题”——靠“试错”优化提示,就像闭着眼摸黑走路,效率极低。

AI 原生应用开发的博客 812

AI训练师三级全真模拟试卷一|65题+答案解析2026版

本文为三级人工智能训练师模拟试卷(一),包含单选题、多选题、判断题和简答题四种题型,总分100分,覆盖人工智能基础、机器学习、深度学习、NLP、数据标注、模型训练评估、部署运维、伦理安全等八大知识领域。试卷结构合理,题型分布科学,提供自动评分工具用于分析薄弱环节,重点考查考生对核心概念的理解、实践操作能力和综合应用水平。建议在120分钟内独立完成,60分为及格线。

白话机器学习 325

天池糖尿病遗传风险预测实战:从特征工程到模型融合的完整方案

在生物特征与机器学习结合的竞赛场景中,糖尿病遗传风险预测是一道经典且充满挑战的题目。其核心并非单纯依赖血糖、BMI等强生理指标,而需从家族史、SNP位点等弱特征中挖掘组合模式。本文从技术原理出发,解析为何梯度提升树(如LightGBM)优于深度学习处理结构化表格数据,并系统阐述缺失值分档处理、家族史聚合、风险位点净得分等特征构造方法。同时,针对AUC评估指标下的类别不平衡与过拟合问题,给出基于GroupKFold的验证策略与参数调优路径。通过多模型融合与交叉验证预测,可显著提升排序能力。该方案适用于医疗健康

aoe41606的博客 470

别再为数据发愁了!盘点5个公开可用的医学图像数据集(含MRI/CT/PET合成任务)

本文详细介绍了5个高质量的公开医学图像数据集,涵盖MRI、CT和PET三大模态,适用于深度学习模型训练和医学图像合成任务。每个数据集均提供下载指南、预处理技巧和PyTorch加载示例,帮助研究人员快速获取和处理数据,解决医学AI开发中的数据瓶颈问题。

weixin_30689307的博客 525

生信小白必看:手把手教你用R语言实现counts/FPKM/TPM互转(附代码)

本文为生信初学者详细讲解如何使用R语言实现counts、FPKM和TPM三种转录组表达量单位的精准转换,包含完整代码示例和常见问题解决方案。重点解析了FPKM与TPM的数学原理及转换方法,帮助读者掌握RNA-seq数据分析中的关键预处理步骤,提升差异表达分析的准确性。

weixin_27442001的博客 500

DSP TMS320C6657中FFT函数的调用与具体使用方法

首先明确一点,C6678中FFT的函数形式为: N : length of FFT in complex samples ptr_x : pointer to complex data input ptr_w : pointer to complex twiddle factor ptr_y : pointer to complex output data brev : pointer to bit reverse table containing 64 entries n_min : should be

Kayboy的博客 3013

R语言绘图进阶:五大工具高效组合多图(cowplot、patchwork、layout、par、gridExtra)

本文详细介绍了R语言中五大高效组合多图的工具:cowplot、patchwork、layout、par和gridExtra。针对不同场景提供了实用指南,帮助数据分析师解决图表排版难题,提升报告专业度。特别推荐cowplot用于ggplot2图形组合,patchwork提供最简洁语法,layout则支持完全自定义布局。

weixin_42544663的博客 290

运营商拼命封杀的PCDN到底是个啥?

最近一段时间,很多宽带用户发现自家的网速莫名其妙变慢了,甚至收到了运营商发来的“违规使用宽带”警告短信,严重的甚至直接被断网。很多人一头雾水:我交了钱办的宽带,自己买的插件或者京东云、网心云这些硬件赚点“电费”,怎么就成了运营商眼中的“过街老鼠”?今天,我们就把这层窗户纸捅破,深度剖析这个让互联网大厂省下几十亿、让运营商恨得牙痒痒、让用户夹在中间进退两难的技术黑话——。

网络技术联盟站 924

【python爬虫--爬取电商商品及对其销量、好差评等数据进行分析】Python爬虫爬取电商商品及大数据分析-实战

选择目标电商网站:这里选择爬取两个不同电商网站(比如京东、淘宝)上的商品数据,包括商品名称、价格、销量和评价信息。编写爬虫:通过爬虫获取商品信息并保存数据。数据清洗与对齐:将两个电商网站抓取到的数据进行统一清洗和对齐。数据分析:进行销量分析、好评与差评分析等。

Dreams°的博客 4013

我的世界1.20.1forge模组开发(8)——自定义实体、AI

Overridethis,true,// 仅排除雪傀儡和同类e ->!这段代码是一个实体类的注册行为,通过重写方法来设定实体在游戏中的行为目标。在这段代码中,为一个名为SnowMonster的实体注册了多个行为目标。:设定SnowMonster实体在20 ticks内以5.0的力量进行远程攻击的行为目标。PanicGoal:设定SnowMonster实体在受到惊吓时会进行惊慌行为的目标。:设定SnowMonster实体会避开强大目标的行为目标。

qq_24992377的博客 2080

uniapp | vue2 | vue3 - 解决调用天地图功能服务时 http 网络请求报错 net::ERR ABORTED 503(Service Temporarily Unavailabl)

vue,uni-app,天地图,请求报错,503,请求失败,map.tianditu,天地图503,天地图请求503,接口503错误怎么办,vue天地图,uniAPP天地图,获取定位接口服务器报错503,获取当前定位,定位功能,IP属地定位,天地图服务器报错,如何解决报错,net::ERRABORTED503(ServiceTemporarilyUnavailabl),GET,POST,服务暂时不可用,react天地图,一直等待吗,报错怎么办,定位报错,轨迹,经纬度,天地图服务器503,在vue2

🏆 前端领域优质创作者 4439

计算机控制技术及应用

《计算机控制技术及应用》通过总结作者的科研成果和吸收国内外的先进理论、方法和技术,以计算机控制系统的网络化、开放化、智能化和集成化发展趋势为主线索,主要介绍计算机控制系统的基本概念和计算机控制系统的典型形式,计算机控制系统的数学描述与基本分析方法,以及数字PID控制器、最少拍控制系统、达林算法、状态变量设计法等设计方法及其各种改进算法。重点突出计算机控制系统输入输出通道接口的设计方法和典型控制系统的设计案例与实现方法等。

RU DOS版、EFI版32bit/64bit BIOS常用工具

DOS版、EFI版的RU工具,可用来查看IO、MEM、PCI、SMBIOS等资源。亲测在EFI SHELL下可用。

深度学习工具包 DeepLearningToolbox

深度学习工具包Deprecation notice.-----This toolbox is outdated and no longer maintained.There are much better tools available for deep learning than this toolbox, e.g. [Theano](http://deeplearning.net/software/theano/), [torch](http://torch.ch/) or [tensorflow](http://www.tensorflow.org/)I would suggest you use one of the tools mentioned above rather than use this toolbox.Best, Rasmus.DeepLearnToolbox================A Matlab toolbox for Deep Learning.Deep Learning is a new subfield of machine learning that focuses on learning deep hierarchical models of data.It is inspired by the human brain's apparent deep (layered, hierarchical) architecture.A good overview of the theory of Deep Learning theory is[Learning Deep Architectures for AI](http://www.iro.umontreal.ca/~bengioy/papers/ftml_book.pdf)For a more informal introduction, see the following videos by Geoffrey Hinton and Andrew Ng.* [The Next Generation of Neural Networks](http://www.youtube.com/watch?v=AyzOUbkUf3M) (Hinton, 2007)* [Recent Developments in Deep Learning](http://www.youtube.com/watch?v=VdIURAu1-aU) (Hinton, 2010)* [Unsupervised Feature Learning and Deep Learning](http://www.youtube.com/watch?v=ZmNOAtZIgIk) (Ng, 2011)If you use this toolbox in your research please cite [Prediction as a candidate for learning deep hierarchical models of data](http://www2.imm.dtu.dk/pubdb/views/publication_details.php?id=6284)```@MASTERSTHESIS\{IMM2012-06284, author = "R. B. Palm", title = "Prediction as a candidate for learning deep hierarchical models of data", year = "2012",}```Contact: rasmusbergpalm at gmail dot comDirectories included in the toolbox-----------------------------------`NN/` - A library for Feedforward Backpropagation Neural Networks`CNN/` - A library for Convolutional Neural Networks`DBN/` - A library for Deep Belief Networks`SAE/` - A library for Stacked Auto-Encoders`CAE/` - A library for Convolutional Auto-Encoders`util/` - Utility functions used by the libraries`data/` - Data used by the examples`tests/` - unit tests to verify toolbox is workingFor references on each library check REFS.mdSetup-----1. Download.2. addpath(genpath('DeepLearnToolbox'));Example: Deep Belief Network---------------------```matlabfunction test_example_DBNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit RBM and visualize its weightsrand('state',0)dbn.sizes = [100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);figure; visualize(dbn.rbm{1}.W'); % Visualize the RBM weights%% ex2 train a 100-100 hidden unit DBN and use its weights to initialize a NNrand('state',0)%train dbndbn.sizes = [100 100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);%unfold dbn to nnnn = dbnunfoldtonn(dbn, 10);nn.activation_function = 'sigm';%train nnopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.10, 'Too big error');```Example: Stacked Auto-Encoders---------------------```matlabfunction test_example_SAEload mnist_uint8;train_x = double(train_x)/255;test_x = double(test_x)/255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit SDAE and use it to initialize a FFNN% Setup and train a stacked denoising autoencoder (SDAE)rand('state',0)sae = saesetup([784 100]);sae.ae{1}.activation_function = 'sigm';sae.ae{1}.learningRate = 1;sae.ae{1}.inputZeroMaskedFraction = 0.5;opts.numepochs = 1;opts.batchsize = 100;sae = saetrain(sae, train_x, opts);visualize(sae.ae{1}.W{1}(:,2:end)')% Use the SDAE to initialize a FFNNnn = nnsetup([784 100 10]);nn.activation_function = 'sigm';nn.learningRate = 1;nn.W{1} = sae.ae{1}.W{1};% Train the FFNNopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.16, 'Too big error');```Example: Convolutional Neural Nets---------------------```matlabfunction test_example_CNNload mnist_uint8;train_x = double(reshape(train_x',28,28,60000))/255;test_x = double(reshape(test_x',28,28,10000))/255;train_y = double(train_y');test_y = double(test_y');%% ex1 Train a 6c-2s-12c-2s Convolutional neural network %will run 1 epoch in about 200 second and get around 11% error. %With 100 epochs you'll get around 1.2% errorrand('state',0)cnn.layers = { struct('type', 'i') %input layer struct('type', 'c', 'outputmaps', 6, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %sub sampling layer struct('type', 'c', 'outputmaps', 12, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %subsampling layer};cnn = cnnsetup(cnn, train_x, train_y);opts.alpha = 1;opts.batchsize = 50;opts.numepochs = 1;cnn = cnntrain(cnn, train_x, train_y, opts);[er, bad] = cnntest(cnn, test_x, test_y);%plot mean squared errorfigure; plot(cnn.rL);assert(er<0.12, 'Too big error');```Example: Neural Networks---------------------```matlabfunction test_example_NNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);% normalize[train_x, mu, sigma] = zscore(train_x);test_x = normalize(test_x, mu, sigma);%% ex1 vanilla neural netrand('state',0)nn = nnsetup([784 100 10]);opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samples[nn, L] = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.08, 'Too big error');%% ex2 neural net with L2 weight decayrand('state',0)nn = nnsetup([784 100 10]);nn.weightPenaltyL2 = 1e-4; % L2 weight decayopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex3 neural net with dropoutrand('state',0)nn = nnsetup([784 100 10]);nn.dropoutFraction = 0.5; % Dropout fraction opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex4 neural net with sigmoid activation functionrand('state',0)nn = nnsetup([784 100 10]);nn.activation_function = 'sigm'; % Sigmoid activation functionnn.learningRate = 1; % Sigm require a lower learning rateopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex5 plotting functionalityrand('state',0)nn = nnsetup([784 20 10]);opts.numepochs = 5; % Number of full sweeps through datann.output = 'softmax'; % use softmax outputopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex6 neural net with sigmoid activation and plotting of validation and training error% split training data into training and validation datavx = train_x(1:10000,:);tx = train_x(10001:end,:);vy = train_y(1:10000,:);ty = train_y(10001:end,:);rand('state',0)nn = nnsetup([784 20 10]); nn.output = 'softmax'; % use softmax outputopts.numepochs = 5; % Number of full sweeps through dataopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, tx, ty, opts, vx, vy); % nntrain takes validation set as last two arguments (optionally)[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');```[![Bitdeli Badge](https://d2weczhvl823v0.cloudfront.net/rasmusbergpalm/deeplearntoolbox/trend.png)](https://bitdeli.com/free "Bitdeli Badge")

visio安装包

Microsoft Office Visio 是一款专业的制图软件。利用经过更新的形状、协作工具和数据链接图表,创建专业级图表以简化复杂的信息。

上一篇: 71、双轮驱动机器人协同运输与生物支架打印技术研究
下一篇: 12、量子力学与相对论:原理、模拟与应用
code8
博客等级 码龄17年 65粉丝 1720原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符  | 博主筛选后可见
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值