过拟合

【DL&ML】深度学习调参有哪些技巧?

人走茶凉 提交于 2020-11-17 22:41:11
深度学习调参有哪些技巧? 编辑:Amusi | 来源:知乎 https://www.zhihu.com/question/25097993 目录 一、为什么要学习调参? 二、调参技巧 1. 评价指标: 2. 损失函数: 3. 激活函数选择: 4. 学习率设定: 5. 优化器选择: 6. batch_size 7. 防止过拟合: 8. 残差块与BN层: 9. 数据预处理【对输入】 10.参数随机初始化【对参数】 11.自动调参方法: 12. 过程、结果可视化 13. 关于卷积神经网络的技巧 三、心态类: 深度学习的效果很大程度上取决于参数调节的好坏,那么怎么才能最快最好的调到合适的参数呢?求解 一、为什么要学习调参? 相信很多刚开始接触深度学习朋友,会感觉深度学习调参就像玄学一般,有时候参数调的好,模型会快速收敛,参数没调好,可能迭代几次loss值就直接变成Nan了。 记得刚开始研究深度学习时,做过两个小例子。 一个是用tensorflow构建了一个十分简单的只有一个输入层和一个softmax输出层的Mnist手写识别网络,第一次我对权重矩阵W和偏置b采用的是正态分布初始化,一共迭代了20个epoch,当迭代完第一个epoch时,预测的准确度只有10%左右(和随机猜一样,Mnist是一个十分类问题),当迭代完二十个epoch,精度也仅仅达到了60%的样子

模型评估与选择

人盡茶涼 提交于 2020-11-16 14:04:02
2.1 经验误差与过拟合 错误率:分类错误的样本数占样本总数的比例。 精度:1-错误率=精度 误差:学习器的实际预测输出与样本的真实输出之间的差异。 训练误差/经验误差:学习器在训练集上的误差。 泛化误差:在新样本上的误差。 过拟合:学习器学习能力太好导致把训练本身的特点当作所有样本都具有的特点,导致泛化能力下降。 2.2评估方法 通常,我们通过实验测试学习器的泛化误差来进行评估进而做出选择,以测试集的测试误差作为泛化误差的近似,测试集与训练集应该尽可能互斥。 训练集与测试集处理方法: 1、留出法 直接将数据集D划分成两个互斥的集合,其中一个作为训练集S,一个作为测试集T,即D=S∪T,S∩T=∅. 注意:训练/测试集的划分要尽可能保持数据分布的一致性,避免因数据划分过程引入额外的偏差从而对最终结果产生影响,例如在分类任务中至少要保证样本的类别比例相似。 分层采样:保留类别比例的采样方式。 2、交叉验证法 先将数据集D划分为k个大小相似的互斥子集,即D=D1∪D2∪D3…∪Dk,Di∩Dj=∅(i≠j). 每个子集尽可能保持数据分布的一致性,即从D中通过分层采样得到,之后用K-1个子集作为训练集,剩下的那一个作为测试集,这样可以获得K组训练/测试集,可以进行K次训练和测试。 显然,交叉验证法评估结果的稳定性和保真性很大程度取决于K,因此,又叫K折交叉验证。 与留出法相似

L1 与 L2 正则化

六眼飞鱼酱① 提交于 2020-11-16 00:27:44
参考这篇文章: https://baijiahao.baidu.com/s?id=1621054167310242353&wfr=spider&for=pc https://blog.csdn.net/jinping_shi/article/details/52433975 参考这篇文章: https://baijiahao.baidu.com/s?id=1621054167310242353&wfr=spider&for=pc https://blog.csdn.net/jinping_shi/article/details/52433975 参考这篇文章: https://baijiahao.baidu.com/s?id=1621054167310242353&wfr=spider&for=pc https://blog.csdn.net/jinping_shi/article/details/52433975 参考这篇文章: https://baijiahao.baidu.com/s?id=1621054167310242353&wfr=spider&for=pc https://blog.csdn.net/jinping_shi/article/details/52433975 参考这篇文章: https://baijiahao.baidu.com/s?id

机器学习中的七宗罪

你。 提交于 2020-11-15 07:12:24
点击上方“AI公园”,关注公众号,选择加“星标“或“置顶” 作者:Andreas Maier 编译:ronghuaiyang 正文共:4184 字 11 图 预计阅读时间:12 分钟 导读 会导致机器学习的实验失败的7个常见问题。 机器学习是一个伟大的工具,它正在改变我们的世界。在许多伟大的应用中,机器学习,尤其是深度学习,已经证明比传统方法优越得多。从Alex-Net图像分类到U-Net图像分割,我们看到了在计算机视觉和医学图像处理上的巨大的成功。不过,我经常都会看到机器学习方法的失败。在出现这样的情况时,人们往往会犯下机器学习的七宗罪之一。 虽然所有这些问题都很严重,并会导致错误的结论,但有些问题比其他问题更严重,甚至机器学习专家在对自己的工作感到兴奋的时候,也会犯这样的错误。即使是其他专家,也很难发现其中的许多错误,因为你需要详细查看代码和实验设置,以便能够找出这些错误。特别是,如果你的结果好得让人难以置信的时候,错误往往会发生,你可能会想把这篇博文作为一个清单,以避免对你的工作得出错误的结论。只有当你完全确定自己没有落入这些错误中的任何一个的时候,你才应该继续前进,并向同事或公众报告你的结果。 Sin #1: 数据和模型的偏见 过拟合产生的模型能够完美地解释训练数据,但通常不能泛化到新的观察数据上 初学者在深度学习中经常犯这种错误。在最常见的情况下,实验设计是有缺陷的

Python快速实战机器学习(7) 决策树

蓝咒 提交于 2020-11-15 04:44:35
点击上方“蓝字”带你去看小星星 引言 近日,南大周志华等人首次提出使用 深度森林 方法解决多标签学习任务。该方法在 9 个基准数据集、6 个多标签度量指标上实现了最优性能。 而深度森林是基于 决策树 构建的深度集成模型,因此对于想了解深度森林以及对这个方法本身感兴趣的同学需要对决策树有一个了解。 在这一讲中,你将会: 1、认识决策树; 2、大体了解决策树是如何训练的; 3、学会sklearn中决策树使用方法。 什么是决策树 如果我们在意模型的 可解释性 ,那么决策树(decision tree)分类器绝对是上佳的选择。如同名字的字面意思,我们可以把决策树理解为基于一系列问题对数据做出的分割选择。 举一个简单的例子,我们使用决策树决定去不去见相亲对象 这就是决策树,每一层我们都提出一个问题,根据问题的回答来走向不同的子树,最终到达叶子节点时,做出决策(去还是不去)。 再比如我们可以用一个决策树来判断一个西瓜好瓜还是坏瓜: 在上面的两个例子中,方框子树为 特征 ,比如是“美不美”或者“触感”; 而分支的条件为特征下的 数据 ,比如西瓜例子中触感:硬滑或者软粘。 虽然上图中做出的每个决策都是根据离散变量,但也可以用于连续型变量,比如,对于Iris中sepal width这一取值为实数的特征,我们可以问“sepal width是否大于2.8cm 当一颗决策树的节点以及判断条件都被确定的时候

机器学习笔记(1)决策树

僤鯓⒐⒋嵵緔 提交于 2020-11-10 03:09:03
系统不确定性的度量 先来看2个概念. 信息熵 $$h(\theta)=\sum_{j=0}^n \theta_jx_j$$ 基尼系数 $$G=1-\sum_{i=0}^n p_i^2$$ 二者都反映了信息的不确定性,是信息不确定性的不同评价标准. 关于信息熵,在数学之美中,有一段通俗易懂的例子. sklearn中使用决策树 在sklearn中使用decisiontree时,采用信息熵或者基尼系数,预测准确率并不会有很大差异. from sklearn.tree import DecisionTreeClassifier tree_clf = DecisionTreeClassifier(max_depth=2, criterion="entropy") tree_clf.fit(X, y) tree_clf = DecisionTreeClassifier(max_depth=2, criterion="gini") tree_clf.fit(X, y)    决策树原理 比如我们有一组数据,m个样本,n个特征.我们希望经过x次决策(实际上也就是类似与x次if-else判断,每一次if-else判断以后,我们的样本都可以被分成2部分,我们就可以计算这2部分的信息含量(也就是信息熵)),使得所有样本的不确定性最低.不确定性最低的含义也就是:模型最大可能地拟合了我们的数据. 决策树

机器学习-线性回归和局部加权线性回归

限于喜欢 提交于 2020-11-10 02:29:24
机器学习-线性回归 本文代码均来自于《机器学习实战》 分类算法先说到这里,接下来说一个回归算法 线性回归 线性回归比较简单,就不怎么说了,要是模型记不得了就百度一下吧,这里列一下公式就直接上代码了 ''' Created on Jan 8, 2011 @author: Peter ''' from numpy import * #加载数据 def loadDataSet(fileName): #general function to parse tab -delimited floats #attribute的个数 numFeat = len(open(fileName).readline().split('\t')) - 1 #get number of fields dataMat = []; labelMat = [] fr = open(fileName) for line in fr.readlines(): lineArr =[] curLine = line.strip().split('\t') for i in range(numFeat): lineArr.append(float(curLine[i])) #dataMat是一个二维矩阵,labelMat是一维的 dataMat.append(lineArr) labelMat.append(float

[Deep-Learning-with-Python]机器学习基础

大城市里の小女人 提交于 2020-11-09 05:17:19
机器学习类型 机器学习模型评估步骤 深度学习数据准备 特征工程 过拟合 解决机器学习问题的一般性流程 机器学习四分支 二分类、多分类以及回归问题都属于监督学习--目标是学习训练输入和对应标签之间的关系。 监督学习只是机器学习的冰山一角。机器学习主要分为4类:监督学习、非监督学习、半监督学习和强化学习。 监督学习 最常见的机器学习类型---学习输入数据和对应标签之间的映射关系。当下几乎所有的深度学习应用都属于监督学习类型,比如ocr识别,语音识别,图像分类和机器翻译等。 尽管监督学习主要由分类和回归组成,也包括一些其他变种: 生成序列---给定图片,生成一个概括性的标题。序列生成可以看做一系列分类问题; 语法树预测---将句子生成对应的句法树; 物体检测---给定图片,在图片中圈出物体所在的矩形框; 等等。 非监督学习 在没有对应标签的情况下,为了进行数据可视化、数据压缩、数据降噪或数据相关性分析对输入数据进行有趣的数据转换。数据降维和聚类是典型的非监督学习。 半监督学习 一种特殊的监督学习。半监督学习是没有手工标签的监督学习。但是学习过程中仍然有标签(还是监督学习),但是标签是由启发性算法从输入数据中生成而来。 比如,自编码器就是常见的半监督学习。 强化学习 强化学习中,agent(代理)接收关于环境的信息,然后选择可以最大化reward的动作。比如:神经网络查看网络游戏的屏幕

关于SSD和YOLO对小目标的思考

穿精又带淫゛_ 提交于 2020-11-08 08:30:35
所谓的小目标,要看是绝对小目标(像素),和相对小目标(相对原图的长宽来看的)。大目标小目标只跟receptive field(感受野)有关,cnn本身可以检测任何尺度的物体。ssd对小目标检测不太适用,但R-FCN速度和鲁棒存在问题。 小目标分为很多种,背景单一还是比较好做的。有一篇小人脸检测用的是 fullyconvolutionalnetwork(FCN) + ResNet ,此篇论文检测小目标用了其周边的信息,如头发,肩膀。 小目标像素特征少,不明显,因此和大目标相比,小目标的检测率低,这个用任何算法上都是无法避免的。SSD,YOLO等单阶段多尺度算法,小目标检测需要高分辨率,但是SSD对小目标的检测是在浅层特征上进行,而深层的特征用来检测大目标,但是!深层的特征语义信息非常丰富,这是一个矛盾。例如底层conv4_3anchor设置的是0.1~0.2:30x60,对于720p的图像检测尺寸就有72个像素,还是太大了。事实上SSD的源码允许一个特征层做多个尺度的滑窗,将参数min_sizes里的每个元素初始化为一个列表,就可以在相应特征层中生成不同尺度的anchor,如果你设计的足够仔细,基本就可以覆盖足够小的目标了,不过此时anchor的数量估计会涨不少,速度也会降下来。 faster rcnn,yolo,ssd对小目标检测结果都不好

七种回归分析方法 个个经典

北城以北 提交于 2020-11-06 05:14:34
点击上方蓝字 记得关注我们哦! ▼ 往期精彩回顾 ▼ 简单线性回归(一) 简单线性回归(二) 非线性回归 多重线性回归分析 二元logistic回归分析 Cox回归分析 有序多分类logistic回归分析 何为回归分析 回归分析是一种预测性的建模技术,它研究的是因变量(目标)和自变量(预测器)之间的关系。这种技术通常用于预测分析,时间序列模型以及发现变量之间的因果关系。例如,司机的鲁莽驾驶与道路交通事故数量之间的关系,最好的研究方法就是回归。 回归分析是建模和分析数据的重要工具。在这里,我们使用曲线/线来拟合这些数据点,在这种方式下,从曲线或线到数据点的距离差异最小。我会在接下来的部分详细解释这一点。 为什么用回归分析 如上所述,回归分析估计了两个或多个变量之间的关系。下面,让我们举一个简单的例子来理解它: 比如说,在当前的经济条件下,你要估计一家公司的销售额增长情况。现在,你有公司最新的数据,这些数据显示出销售额增长大约是经济增长的2.5倍。那么使用回归分析,我们就可以根据当前和过去的信息来预测未来公司的销售情况。 使用回归分析的好处良多。具体如下: 它表明自变量和因变量之间的显著关系; 它表明多个自变量对一个因变量的影响强度。 回归分析也允许我们去比较那些衡量不同尺度的变量之间的相互影响,如价格变动与促销活动数量之间联系。这些有利于帮助市场研究人员