【学习报告】10.10-10.17

机器学习 划分训练集和测试集的方法 在机器学习中,通常要对模型进行评估,以此来判断模型的可用性。一般数据集划分的方法有四种:留出法、交叉验证法、留一法、自助法。 阅读详情

训练集,验证集,测试集

训练集:训练模型

验证集:选择最好的模型

测试集:无偏评估算法的运行状况。

要确保验证集和测试集的数据来自同一分布

如果不需要无偏估计,也可以不设置测试集。

搭建训练验证集和测试集能够加速神经网络的集成,也可以更有效地衡量算法的偏差和方差,从而帮助我们更高效地选择合适方法来优化算法。

偏差与方差

image-20221010102455420

  • 假设这就是数据集,如果给这个数据集拟合一条直线,可能得到一个逻辑回归拟合,但它并不能很好地拟合该数据,这是高偏差(high bias)的情况,我们称为“欠拟合” (underfitting)。如上图

image-20221010102509901

  • 相反的如果我们拟合一个非常复杂的分类器,比如深度神经网络或含有隐藏单元的神经网络,可能就非常适用于这个数据集,但是这看起来也不是一种很好的拟合方式分类器方差较高(high variance),数据过度拟合(overfitting)。如上图

image-20221010102553992

  • 在两者之间,可能还有一些像图中这样的,复杂程度适中,数据拟合适度的分类器,这个数据拟合看起来更加合理,我们称之为“适度拟合”(just right)是介于过度拟合和欠拟合中间的一类。

在这样一个只有x1和x2两个特征的二维数据集中,我们可以绘制数据,将偏差和方差可视化。在多维空间数据中,绘制数据和可视化分割边界无法实现,但我们可以通过训练集误差和验证集误差来分析偏差和方差。

假定训练集误差是 1%,验证集误差是 11%,可以看出训练集设置得非常好,而验证集设置相对较差,我们可能过度拟合了训练集,在某种程度上,验证集并没有充分利用交叉验证集的作用,像这种情况,我们称之为“高方差”。

可以采取的方法:最好的解决办法就是采用更多数据;我们也可以尝试通过正则化来减少过拟合

假设训练集误差是 15%,验证集误差是 16%,假设该案例中人的错误率几乎为 0%,人们浏览这些图片,分辨出是不是猫。算法并没有在训练集中得到很好训练,如果训练数据的拟合度不高,就是数据欠拟合,就可以说这种算法偏差比较高。相反,它对于验证集产生的结果却是合理的,验证集中的错误率只比训练集的多了 1%,所以这种算法偏差高。

可以采取的方法:选择一个新的网络,比如含有更多隐藏层或者隐藏单元的网络,或者花费更多时间来训练网络,或者尝试更先进的优化算法。

训练集误差是 15%,偏差相当高,但是,验证集的评估结果更糟糕,错误率达到 30%。因此,这种算法偏差高,因为它在训练集上结果不理想,而且方差也很高,这是方差偏差都很糟糕的情况。

以上分析的前提是假设基本误差很小,训练集和验证集数据来自相同分布

正则化

正则化会导致模型在训练集上的表现变差,因为它削弱了网络拟合的能力,从而解决了过拟合,提供了测试集的正确率

L2正则化

逻辑回归实现正则化

求成本函数𝐾的最小值,它是我们定义的成本函数,参数包含一些训练数据和不同数据中个体预测的损失,w和b是逻辑回归的两个参数,w是一个多维度参数矢量,b是一个实数。在逻辑回归函数中加入正则化,只需添加参数 ,如下图。L2正则化。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-fVk1PUBC-1666101811888)(https://cdn.jsdelivr.net/gh/DaoChenLiu/images/learning_report3/202210101119630.png)]

为什么只正则化w?

因为w是一个多维参数,而b只是一个实数,如果加了b,并没有多大影响。

L1正则化,参数就是:

image-20221010112332936

在神经网络中实现正则化

image-20221010192611269

该矩阵范数被称作“弗罗贝尼乌斯范数”。

该如何使用该范数实现梯度下降呢?
image-20221010192840448

image-20221010193027931

L2正则化也被称为“权重衰减”。

为什么正则化可以消除过拟合

直观上理解就是如果正则化λ设置得足够大,权重矩阵W被设置为接近于 0 的值,直观理解就是把多隐藏单元的权重设为 0,于是基本上消除了这些隐藏单元的许多影响。如果是这种情况,这个被大大简化了的神经网络会变成一个很小的网络,小到如同一个逻辑回归单元,可是深度却很大,它会使这个网络从过度拟合的状态更接近左图的高偏差状态。

但是λ会存在一个中间值,于是会有一个接近“Just Right”的中间状态。

λ太大,会导致高偏差

dropout正则化

思想:随机让一部分神经元失效,生成一个简化的子神经网络。

通过dropout正则化,使得神经元之间的联系变弱,因为其他神经元可能会被删除。

image-20221012085539701

假设你在训练上图这样的神经网络,它存在过拟合,这就是 dropout 所要处理的,我们复制这个神经网络,dropout 会遍历网络的每一层,并设置消除神经网络中节点的概率。设置完节点概率,我们会消除一些节点,然后删除掉从该节点进出的连线,最后得到一个节点更少,规模更小的网络,然后用 backprop 方法进行训练。

image-20221012085711122

这是网络节点精简后的一个样本,对于其他样本,以同样的方式执行

步骤

假设有一个三层的神经网络

在正向传播上应用dropout

在第三层如何实施?

  • 首先定义三层的 dropout 向量d[3]
'''
a3的第三层的激活函数的输出,keep-prob是不大于1的正数
假设keep-prob=0.8,最终d3中的元素小于0.8的被置为1,大于等于0.8的被置为0
'''
d3=np.random.rand(a3.shape[0],a3.shape[1])<keep_prob

注意点

np.random.rand()
通过本函数可以返回一个或一组服从“0~1”均匀分布的随机样本值(正的浮点数)。随机样本取值范围是[0,1),不包括1。

np.random.randn()
1. 当函数括号内没有参数时,则返回一个浮点数;
2. 当函数括号内有一个参数时,则返回秩为1的数组,不能表示向量和矩阵;
3. 当函数括号内有两个及以上参数时,则返回对应维度的数组,能表示向量或矩阵;
4. np.random.standard_normal()函数与np.random.randn()类似,但是np.random.standard_normal()的输入参数为元组(tuple)。
5. np.random.randn()的输入通常为整数,但是如果为浮点数,则会自动直接截断转换为整数。
作用:通过本函数可以返回一个或一组服从标准正态分布的随机样本值。

d[3] 是一个矩阵,对应每个样本和每个隐藏单元,其中d[3] 中的对应值为 1 的概率都是 0.8,对应为 0 的概率是 0.2。

  • 然后就是从第三层中获取激活函数a[3]
a3=np.multiply(a3,d3)

该语句的作用就是将a3对应位置的元素置0

  • 最后a3/keep-prob
a3/=keep_prob

为什么要这么做?

假设第三隐藏层上有50 个神经元,在一维上a[3]是 50,我们通过因子分解将它拆分成50 × m维的,保留和删除它们的概率分别为 80%和 20%,这意味着最后被删除或归零的单元平均有 10(50×20%=10)个,现在我们看下𝑨[4] ,𝑨[4] = w[4] a[3] + b[4] ,现在a[3] 中有 20%的元素被归零,为了不影响𝑨[4] 的期望值,我们需要用 w[4] a[3] /0.8,它将会修正我们所需的那 20%.

在反向传播上应用dropout

  1. 关闭和正向传播相同的神经元
dA2=np.multiply(dA2,D2)
  1. 修正
dA2/=keep_prob

总结

如果要实施dropout,正向传播和反向传播都要改变

在不同层上实施dropout时,不同层的keep-prob可以不同,keep-prob越小,表示过拟合程度越大。

当keep-prob等于1时,相当于不实施dropout

数据扩增

通过对训练集数据做各种处理,从而增加数据集的规模。方法如下:

  1. 水平翻转图片
  2. 随意翻转加裁剪

early stopping

将J函数和dev error画在一个图上,然后在要发生过拟合的附近终止训练即可。

优点:简单快速。

缺点:无法发挥出其他工具的力量,试图使用一个方法同时降低bias和variance,难以取得极致的效果。

归一化

训练神经网络,其中一个加速训练的方法就是归一化输入。假设一个训练集有两个特征,输入特征为 2 维,归一化需要两个步骤:

假设训练集如下:

image-20221012102708698

  1. 零均值,作用就是移动训练集到原点位置,具体流程如下图

image-20221012102623229

执行后的训练集如下图:

image-20221012102836060

  1. 归一化方差,具体操作如下图

image-20221012103026925

执行后的训练集如下图:

image-20221012103111314

无论是训练集和测试集都是通过相同的u和𝜎2 定义的数据转换,这两个是由训练集得出来的。

为什么要归一化输入特征?

如果使用非归一化的输入特征,代价函数如下图:

image-20221012103341851

如果使用归一化的输入特征,代价函数如下图:

image-20221012103456314

使用归一化的好处在于,不论从哪个位置开始,梯度下降法都能够更直接地找到最小值,且可以在梯度下降法中使用较大
步长。

权重W的元素比1略大,激活函数将指数级增长;比1略小,激活函数将指数级递减

神经网络的权重初始化

如果本层的激活函数是tanh,W初始化:

W[l] =np.random.randn(n[l] ,n[l-1] ) * np.sqrt(1/n[l-1])

如果本层的激活函数是Relu,W初始化:

W[l] =np.random.randn(n[l] ,n[l-1] ) * np.sqrt(2/n[l-1])

梯度检验

检验梯度是否计算正确。

假设你的网络中含有下列参数,W[1]和b[1] ……W[L]和b[L] ,为了执行梯度检验,首先要做的就是,把所有W矩阵转换成向量之后,做连接运算,得到一个巨型向量θ,代价函数J是所有W和b的函数,现在你得到了一个θ的代价函数J(即J(θ))。接着,你得到与W和b顺序相同的数据,你同样可以把dW[1]和db[1] ……dW[L]和db[L] 转换成一个新的向量,用它们来初始化大向量dθ,它与θ具有相同维度。

image-20221012154406297

dθapprox [i]应该等于dθ[i],我们要做的就是验证这两个向量是否接近。可以通过计算两个向量间的距离(L2范数)来衡量

image-20221012154902441

代码笔记

norm()

np.linalg.norm()用于求范数,linalg本意为linear(线性) + algebra(代数),norm则表示范数。

np.linalg.norm(x, ord=None, axis=None, keepdims=False)

1.x: 表示矩阵(一维数据也是可以的)
2.ord: 表示范数类型

ordnorm for matricesnorm for vectors
NoneFrobenius norm(各个元素的平方和再开根)2-norm
np.infmax(sum(abs(x), axis=1)),计算每一行绝对值总和,然后返回最大的那个max(abs(x)),绝对值最大的
-np.infmin(sum(abs(x), axis=1))min(abs(x)
1max(sum(abs(x), axis=0)),计算每一列绝对值总和,然后返回最大的那个as below
-1min(sum(abs(x), axis=0))as below
22-norm (largest sing. value)as below
-2smallest singular valueas below
other–sum(abs(x) ** ord)**(1./ord)

3.axis

0:表示按列向量来进行处理,求多个列向量的范数

1:表示按行向量来进行处理,求多个行向量的范数

4.keepdims:表示是否保持矩阵的二维特性,True表示保持,False表示不保持,默认为False

copy()

np.copy()属于深拷贝,拷贝前的地址和拷贝后的地址不一样. 而 " = " 属于浅拷贝,拷贝后的地址和拷贝前的地址一样.

深度网络学习调研报告 深度网络学习调研报告   目  录 1.前言............................................... 3 1.1课题研究的背景及意义.......................... 3 1.2国内外研究的现状.............................. 3 1.3本报告的基本内容. 阅读详情

相关推荐

为什么有的人并不用验证集,只用训练集和测试集,他们不需要调超参数吗?

在这种情况下,他们可能会选择使用交叉验证(如k-折交叉验证)方法来调整超参数,而不是划分出一个单独的验证集。使用预设的超参数:有时候,他们可能会选择使用预设的超参数值(例如,根据经验或从其他研究中获得),而不是在当前数据集上进行调整。虽然在某些情况下可以省略验证集,但在大多数情况下,为了获得更可靠的性能评估和避免过拟合,建议使用训练集、验证集和测试集三者进行模型训练、调优和评估。使用默认的超参数:对于某些算法,库中的默认超参数值可能已经足够好,他们可能不需要进一步调整。

AlphaFinance 5628

改进深度学习网络

深度学习第二章,对机器学习项目内容进行说明

qq_42815552的博客 1399

从CD4051到现代模拟开关:40年芯片演进史与选型避坑指南

本文回顾了从CD4051到现代模拟开关的40年技术演进,详细对比了导通电阻、带宽等关键参数的显著提升。通过实际案例和选型矩阵,揭示现代模拟开关在精度、功耗和集成度方面的优势,并提供高精度测量、电池供电等场景的选型策略与避坑指南,帮助工程师优化设计。

weixin_42543046的博客 153

深度学习笔记一(实践相关)

目录训练、验证、测试集(Train/Dev/Test sets)验证集和测试集没有测试集偏差和方差(Bias/Variance) 高偏差——欠拟合高方差——过度拟合 适度拟合 ​编辑 训练集误差和验证集误差(Train set error and Dev set error)最优误差分析优化模型(机器学习基础)处理偏差处理方差需要注意正则化L1,L2正则化逻辑回归的损失函数增加L1正则化:L2正则化时最常见的正则

weixin_45847320的博客 2000

科研软件|Adobe Photoshop 2024 (PS 2024)

科研软件|Adobe Photoshop 2024 (PS 2024)

m0_55499682的博客 5510

从0到1搭建StarRocks3.4.1存算一体架构(VM 虚拟机版)

本文详细介绍了如何在VM虚拟机上从零搭建StarRocks 3.4.1存算一体架构。首先阐述了StarRocks作为高性能分布式SQL数据仓库的优势,重点讲解了其存算一体架构的设计原理。随后提供完整的安装指南,包括环境准备(3台CentOS 8虚拟机配置)、网络互通验证、Java环境配置、软件包解压安装等关键步骤。文章特别详细说明了FE和BE节点的配置文件修改(fe.conf和be.conf)以及必要的防火墙端口开放配置。通过图文并茂的方式,帮助开发者和运维人员快速掌握StarRocks集群部署方法,为后续

小 tom的博客 1329

数据集随机+比例分为训练集和测试集:并分别存为文件夹

需求:将数据集随机分为训练集和测试集,并将随机分类的图像保存至对应的文件夹。让train+test=原始数据,且带有随机比例。 原因:需要将初始化数据集随机分配之后,再将训练集做数据增光,所以不能直接采用txt随机生成路径的方式。 原始数据:0,1 train:0,1;把原始数据的内容复制到train里,再做分割。 test:0,1 # coding=utf-8 # 随机生成训练集和测试集 # 对一个文件夹下的图像生成txt,然后随机选取里面的内容,然后保存到不同的文件夹。 # codin.

hello world 1万+

避坑指南:Cursor AI生成Flutter代码时最容易翻车的5个配置细节

本文深入剖析了使用Cursor AI生成Flutter代码时,因.cursorrules配置文件不当而导致的五大常见问题。重点探讨了如何通过制定清晰、具体的规则,避免状态管理混乱、设计图输入低效、项目架构脱节、性能隐患及规则维护缺失等陷阱,从而将AI转化为高效、可靠的开发伙伴,提升代码质量和团队协作效率。

wdx0123456的博客 415

【学习报告】10.17-10.23

在Python中a[i:j]表示复制字符串或数字从a[i]到a[j-1](也称【切片】)。

computs的博客 739

莆田市C++专项选拔第一轮题4

现在小明同学想要从两堆硬币中各选择一枚硬币,使得两枚硬币的面值之和 不超过 k。不同的硬币组合,就算面值相同,也视为不同的方案。现在他把这些硬币分成了两堆,已知两堆硬币分别有 n 和 m 枚硬币。可选方案有: (1,2), (1,1), (1,1), (5,2), (5,1), (5,1),共 6 种。第一行三个整数 n, m, k,分别表示第一堆硬币的数量,第二堆硬币的数量,以及面值之和的上限。对于30%的数据,1 ≤ n , m ≤ 1000 , 1 ≤ b , c ≤ 1000。

lpstudio的博客 925

冒泡排序的并行计算

本人也是并行计算的小白,在这里记录下自己的学习笔记。 今天做了一下冒泡排序的并行计算比较: 串行冒泡排序如下: #include <stdio.h> #include <stdlib.h> #include <windows.h> void BubbleSort(int * pData, int nSize) { if (!pData) { ...

gaoyi的专栏 4490

外媒评出全球32家AI独角兽公司:中国占10家

2018年,估值10亿美元以上的人工智能创业公司几乎翻了一番。业务涉及金融反欺诈到招聘软件等领域,这是最新一批的人工智能“独角兽”名单。选自:CB Insight编译:...

网易智能 2116

openclaw通俗入门系列4——智能体工作区

工作区 = 智能体的家,存放它的性格、记忆、技能。默认不是牢笼(可以用沙箱隔离)。建议放到私有 Git 备份,但绝对不要提交密钥!

m0_60605453的博客 462

VibeSkills 实战案例深度解析:从 195 个技能中精选 7 个,17 项验收全部通过的机器学习实验全流程

VibeSkills 是面向 AI Agent 的**智能技能路由与工作流编排**引擎:它帮你从成百上千个已安装的 Skills 中自动发现、筛选并分配给任务的每个模块。本文通过项目内置的一个真实机器学习实验案例,完整还原"从 195 个候选技能中精选 7 个 → 拆成 5 个工作组、10 个工作单元执行 → 17 项验收检查全部通过"的全过程,帮你快速理解技能路由与编排到底怎么工作。 ## 一

gitblog_01149的博客 78

SAP S/4HANA 数据 API 化与 MCP 集成全流程实战指南

通过 RAP 发布 OData、利用 Communication Arrangement 打通外网、再在 MCP-server 里封装函数签名,你就能把 S/4HANA 的核心数据安全、标准化地暴露给任意支持 MCP 的大模型。这条链路的每一个环节都由 SAP 与 MCP 社区提供了现成框架,既兼顾了企业合规,也让 LLM 落地更为轻量。期待你在项目里把这些拼图真正串联起来,让业务数据与生成式 AI 碰撞出高价值的火花。

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 976

LinePhone3.2.7(android端最新版本) sip客户端

SIP客户端For android:LinePhone3.2.7(最新版本),官网地址:http://www.linphone.org/

全网最全的渗透测试学习路线,2026网络安全就业必备渗透测试技能全解析,渗透测试零基础入门到精通看这一篇就够了!

渗透测试_网络安全_零基础入门_Web渗透_漏洞扫描_渗透测试教程_实战教程_黑客技术_信息安全_漏洞利用_渗透工具_网络攻防_安全测试_渗透学习_Web安全_等保测评_代码审计_内网渗透_网络安全工程师_渗透入门

wholeliubei的博客 849

TMS_WebGMaps_1.9.8.0_Full_Source

TMS_WebGMaps_1.9.8.0_Full_Source 全源码 delphi cbuilder

5.13—5.17学习报告

1、搭建相关环境2、编译、烧录Android系统3、git的使用4、了解Android四大组件5、C++学习,了解面向对象语言,理解继承、多态。

weixin_71850179的博客 1296

ssm框架搭建

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

温度PID控制PLC程序

温度PID稳定控制程序,适用于欧姆龙PLC,对其他PLC也具有很大参考价值

代码审计工具Fortify 17.10及Mac平台license版本

介绍17.10版本安装指导工具使用云端试用价值介绍 Fortify SCA是一个静态源代码安全测试工具。它通过内置的五大主要分析引擎对源代码进行静态的分析和检测,分析的过程中与其特...

weixin_47208161的博客 1808

机器学习线性回归——实验报告

机器学习实验报告3:线性回归

weixin_51128278的博客 1万+

机器学习学习报告

机器学习是通过处理特定任务,以大量经验为基础,依据一定的评判标准,分析经验数据,从而使任务完成得更好的过程。

2402_89793413的博客 1054

Python Day 17 学习

混淆矩阵(Confusion Matrix)是用于评估分类模型性能的工具,它以矩阵形式展示了模型的预测结果与真实值之间的对比情况。混淆矩阵特别适用于二分类或多分类问题。今日学习到这里,这一部分内容较多,慢慢来学。明日接着剩余几种算法的理解与学习。继续加油!!!

Y317429的博客 538

一些线上学术报告网站与机器学习视频

哈工大数学 上交数学 上交自然 浙大数学 北京国际数学 中科院数学 吉大数学 东北师范数学 复旦大数据 广西数学 北京前沿计算 南京计算 西电人工智能 华东师范数学 山东数学

Hermite Lee的博客 3325

linux 7 gdm,终于下手,Ubuntu 17.10 用 GDM 取代 LightDM

原标题:终于下手,Ubuntu 17.10 用 GDM 取代 LightDM纯手工打造每一篇开源资讯与技术干货,数十万程序员和Linuxer已经关注。Linux技术交流QQ群:2650582(六月份最新!!)在最近的一份报告中,Canonical 的 Will Cooke 透露,Ubuntu Desktop 团队正在考虑在即将推出的 Ubuntu 17.10 版本中以 GDM(GNOME显示管理器...

weixin_35964164的博客 407

17关键点检测对比:OpenPose vs MediaPipe云端实测,1小时出报告

本文介绍了基于星图GPU平台,自动化部署AI人体骨骼关键点检测镜像的完整流程。该平台支持一键启动OpenPose与MediaPipe的预置环境,实现17关键点检测模型的快速对比与可视化分析,适用于动作识别、行为分析等AI应用开发场景,显著提升科研效率。

AzureMeadow65的博客 300

大语言模型赋能病理AI,自动从报告文本中分类TNM分期|顶刊精析·24-10-17

此外,M01模型的整体表现不如T14和N03模型。这可能是由于TCGA训练数据中固有的几个因素:(1)M01是一个特别不平衡的数据集,只有6.7%的报告具有M1注释(图1C),这是由于TCGA设计偏好非转移性病例(2)许多报告并未明确包含M0或M1,与其他目标相比(95.1%的报告未包含明确的M01,而N03为66.5%,T14为35.8%)(3)TCGA对M01的注释有时与报告文本不一致(见“方法”部分)。M01模型受限于其训练的输入数据质量。

罗小罗同学的博客 1675

JavaFX17 学习手册(二)

原文:Learn JavaFX 17 协议:CC BY-NC-SA 4.0 三、可观察的集合 在本章中,您将学习: JavaFX 中有哪些可观察的集合 如何观察可观察集合的失效和变化 如何使用可观察集合作为属性 本章的例子在com.jdojo.collections包中。为了让它们工作,您必须在module-info.java文件中添加相应的一行: ... opens com.jdojo.collections to javafx.graphics, javafx.base; ...

龙哥盟 1480
上一篇: 【学习报告】10.3-10.10
下一篇: 【学习报告】10.17-10.23
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值