数据拟合

过拟合、欠拟合、梯度消失及梯度爆炸的理解

夙愿已清 提交于 2020-02-18 17:27:15
目录: 1,过拟合和欠拟合的定义 2, 过拟合和欠拟合的解决方法 3, 梯度消失和爆炸的定义 4,梯度消失和爆炸的解决方法 1,过拟合和欠拟合的定义 无论在机器学习还是深度学习建模当中都可能会遇到两种最常见结果,一种叫 过拟合 (over-fitting )另外一种叫 欠拟合 (under-fitting)。 所谓过拟合(over-fitting)其实就是所建的机器学习模型或者是深度学习模型在训练样本中表现得过于优越,导致在验证数据集以及测试数据集中表现不佳。如上图所示,即在训练过程中,在训练数据集上,训练误差较低,但是在验证集上,误差损失较大。也可以观察到,随着模型复杂度升高,过拟合情况越来越严重。 所谓欠拟合呢(under-fitting)?相对过拟合欠拟合还是比较容易理解。还是拿上图来说,可能模型复杂度不够,无法很好地拟合训练数据,导致训练和验证误差损失都比较大。 2,过拟合和欠拟合的解决方法 过拟合:根据上图可以得到,随着模型复杂度--模型参数--增高,过拟合的情况越来越严重,因此减少参数可以有效缓解过拟合。首先可以在损失函数里添加限制权重参数过大的正则项,在损失函数下降的过程中,使得权重参数逐渐趋向0(L2)甚至等于0(L1)。landa控制限制过拟合的程度。 其次,可以在训练过程中随机失活部分神经元(参数)--某些参数不参与训练--减少训练参数,如下图所示。 再者

DL notes 02: ML/DL模型训练的Tips

ε祈祈猫儿з 提交于 2020-02-16 21:55:11
文章目录 一、基本概念 二、应对欠拟合和过拟合的解决方法 2.1 欠拟合的解决办法 2.2 过拟合的解决办法 2.2.1 权重衰减 / L 2 L_{2} L 2 ​ 范数正则化 2.2.2 dropout 三、梯度消失和梯度爆炸 四、随机初始化模型参数 PyTorch的默认随机初始化 Xavier随机初始化(这里需要检查) 五、考虑环境因素 协变量偏移 标签偏移 概念偏移 Q&A 一、基本概念 训练误差(training error) :指模型在训练数据集(train dataset)上表现出的误差。 泛化误差(generalization error) :指模型在任意一个测试数据样本上表现出的误差的期望,并常常通过测试数据集(test dataset)上的误差来近似。 损失函数(loss function) :计算训练误差和泛化误差可以使用之前介绍过的损失函数,例如线性回归(linear regression)用到的平方损失(squared loss)函数和softmax回归用到的交叉熵(cross entropy)损失函数。 训练数据集(train dataset) :【模型】(Model)训练的过程其实就是在求【参数】的过程,我们先假定某类【模型】(比如决策树模型),然后用【训练集】来训练,学习到对应的最优的【参数】。但是问题在于,我们没有办法保证我们假设的那个【模型

欠拟合、过拟合

拈花ヽ惹草 提交于 2020-02-15 23:52:33
过拟合、欠拟合以及解决方法 训练误差和泛化误差 在机器学习中,我们将数据分为训练数据、测试数据(或者训练数据、验证数据、测试数据,验证数据也是训练数据的一部分。)训练误差是模型在训练数据集上表现出来的误差,泛化误差(也可称为测试误差)是在测试数据集上表现出来的误差的期望。,例如线性回归用到的平方损失函数和softmax回归的交叉熵损失函数。 测试数据集只能在所有超参数和模型参数选定之后使用一次,不可以用来选择模型,如调参。 验证数据集是预留一部分在训练集和测试集以外的数据以外的数据进行模型的选择。但是由于数据集有限,一般采用K折交叉验证的方法。 训练集:用于模型的构建 验证数据集:可选,用于辅助模型构建,可以重复使用。 测试数据集:用于检测模型,评估模型的准确率。 模型训练过程中会出现两种问题:欠拟合和过拟合 欠拟合:模型无法得到较低的训练误差。 过拟合:模型的训练误差远小于它在测试数据集熵的误差。 导致这两种拟合问题的因素有很多,模型复杂度和训练数据集的大小是主要因素。 给定数据集,模型复杂度和误差之间的关系: 训练数据集过少时,比模型参数数量更少时会,更容易出现过拟合。 解决方法 欠拟合常见的解决方法: 1、增加新特征,可以加入特征组合、高次特征,来增大假设空间。 2、添加多项式特征。例如线性模型通过添加二次项或者三次项使模型泛化能力更强。 3、减少正则化参数

椭球拟合,最小二乘(加速度)

心不动则不痛 提交于 2020-02-15 19:40:19
最近在学习椭球拟合,最小二乘(加速度)的相关内容,把不错的几个学习参考链接放到下面: 三维空间中的椭球拟合与磁力计、加速度计校正 最小二乘估计及证明 平面二维任意椭圆数据拟合算法推导及程序实现详解 空间二次曲面数据拟合算法推导及仿真分析 IMU加速度、磁力计校正--椭球拟合 附上通过学习以上文章写出的测试代码; %最小二乘的方法进行拟合 clear all; close all clc; R = 2; %球面半径 RX = 2; RY = 10; RZ = 20; x0 = 100; %球心x坐标 y0 = 1; %球心y坐标 z0 = 76; %球心z坐标 alfa = 0:pi/50:pi; sita = 0:pi/50:2*pi; num_alfa = length(alfa); num_sita = length(sita); x = zeros(num_alfa,num_sita); y = zeros(num_alfa,num_sita); z = zeros(num_alfa,num_sita); for i = 1:num_alfa for j = 1:num_sita x(i,j) = x0+RX*sin(alfa(i))*cos(sita(j)); y(i,j) = y0+RY*sin(alfa(i))*sin(sita(j)); z(i,j) = z0+RZ

matlab拟合函数的三种方法

别来无恙 提交于 2020-02-15 07:06:21
文章目录 方法一:多项式拟合polyfit 方法二:工具箱拟合cftool 方法三:指定函数拟合 方法一:多项式拟合polyfit x = [ 1 2 3 4 5 6 7 8 9 ] ; y = [ 9 7 6 3 - 1 2 5 7 20 ] ; P = polyfit ( x , y , 3 ) % 三阶多项式拟合 xi = 0 : .2 : 10 ; yi = polyval ( P , xi ) ; % 求对应y值 plot ( xi , yi , x , y , 'r*' ) ; 运行结果: 多项式系数:P =0.1481 -1.4030 1.8537 8.2698 即 P=0.1481 * x^3 + -1.4030 * x^2 +1.8537 * x + 8.2698 方法二:工具箱拟合cftool x = [ 1 2 3 4 5 6 7 8 9 ] ; y = [ 9 7 6 3 - 1 2 5 7 20 ] ; cftool ( x , y ) 运行结果: 拟合类型中我们选择polynominal(多项式),拟合阶数选择3,运行结果中可见R平方值高达0.94,属于比较准确的. 方法三:指定函数拟合 1、已知数据 2、作出散点图,观察 3、拟合 运行结果: 参考文献: matlab在数学建模中的应用 (卓金武) 指定函数拟合运用可参考: 人口增长模型,附代码 来源:

TASK02-深度学习

扶醉桌前 提交于 2020-02-15 00:51:44
过拟合和欠拟合及其解决方案 模型选择,过拟合和欠拟合 训练误差和泛化误差 模型选择 概念 验证数据集 K折交叉验证 过拟合和欠拟合 模型复杂度 训练数据集大小 梯度消失和梯度爆炸 随机初始化模型参数 Pytorch的默认随机初始化 Xavier随机初始化 模型选择,过拟合和欠拟合 训练误差和泛化误差 在解释上述现象之前,我们需要区分训练误差(training error)和泛化误差(generalization error)。通俗来讲,前者指模型在训练数据集上表现出的误差,后者指模型在任意一个测试数据样本上表现出的误差的期望,并常常通过测试数据集上的误差来近似。计算训练误差和泛化误差可以使用之前介绍过的损失函数,例如线性回归用到的平方损失函数和softmax回归用到的交叉熵损失函数。 模型选择 概念 验证数据集 从严格意义上讲,测试集只能在所有超参数和模型参数选定后使用一次。不可以使用测试数据选择模型,如调参。由于无法从训练误差估计泛化误差,因此也不应只依赖训练数据选择模型。鉴于此,我们可以预留一部分在训练数据集和测试数据集以外的数据来进行模型选择。这部分数据被称为验证数据集,简称验证集(validation set)。例如,我们可以从给定的训练集中随机选取一小部分作为验证集,而将剩余部分作为真正的训练集。 K折交叉验证 由于验证数据集不参与模型训练,当训练数据不够用时

正则化

不羁岁月 提交于 2020-02-14 21:04:34
通过第一幅图我们可以获得拟合数据的这样一条直线,但是,实际上这并不是一个很好的模型。 此类情况称为欠拟合(underfitting),或者叫作叫做高偏差(bias)。 通过第二幅图,我们在中间加入一个二次项,也就是说对于这幅数据我们用二次函数去拟合。自然,可以拟合出一条曲线,事实也证明这个拟合效果很好。 通过第三幅图我们似乎对训练数据做了一个很好的拟合,因为这条曲线通过了所有的训练实例。但是,这实际上是一条很扭曲的曲线,它不停上下波动。因此,事实上我们并不认为它是一个好模型。 这类情况叫做过拟合(overfitting),也叫高方差(variance)。 过度拟合的问题通常发生在变量(特征)过多的时候。这种情况下训练出的方程总是能很好的拟合训练数据,也就是说,我们的代价函数可能非常接近于 0 或者就为 0。过多的变量(特征),同时只有非常少的训练数据,会导致出现过度拟合的问题。因此为了解决过度拟合,有以下两个办法。 方法一:尽量减少选取变量的数量; 方法二:正则化 。 如果我们的参数值对应一个较小值的话(参数值比较小),那么往往我们会得到一个形式更简单的假设。 实际上,这些参数的值越小,通常对应于越光滑的函数,也就是更加简单的函数。因此 就不易发生过拟合的问题。 这项为正则化项。 并且 λ 在这里我们称做正则化参数。 λ 要做的就是控制在两个不同的目标中的平衡关系。

【Machine Learning in Action --5】逻辑回归(LogisticRegression)

邮差的信 提交于 2020-02-13 20:49:53
1、概述   Logistic regression(逻辑回归)是当前业界比较常用的机器学习方法,用于估计某种事物的可能性。   在经典之作《数学之美》中也看到了它用于广告预测,也就是根据某广告被用 户点击的可能性,把最可能被用户点击的广告摆在用户能看到的地方,然后叫他“你点我啊!”用户点了,你就有钱收了。这就是为什么我们的电脑现在广告泛滥的 原因。还有类似的某用户购买某商品的可能性,某病人患有某种疾病的可能性啊等等。这个世界是随机的(当然了,人为的确定性系统除外,但也有可能有噪声或产生错误的结果,只是这个错误发生的可能性太小了,小到千万年不遇,小到忽略不计而已),所以万物的发生都可以用可能性或者几率(Odds)来表达。“几率”指的是某事物发生的可能性与不发生的可能性的比值。 Logistic regression可以用来回归,也可以用来分类,主要是二分类。 2、基本理论 2.1Logistic regression和Sigmoid函数   回归:假设现在有一些数据点,我们用一条直线对这些点进行拟合(该条称为最佳拟合直线),这个拟合过程就称作回归。利用Logistic回归进行分类的思想是:根据现有数据对分类边界线建立回归公式,以此进行分类。这里的“回归”一词源于最佳拟合,表示找到最佳拟合参数,使用的是最优化算法。   Sigmoid函数具体的计算公式如下:         z=w

【cs229-Lecture11】贝叶斯统计正则化

这一生的挚爱 提交于 2020-02-10 07:53:58
本节知识点: 贝叶斯统计及规范化 在线学习 如何使用机器学习算法解决具体问题:设定诊断方法,迅速发现问题 贝叶斯统计及规范化(防止过拟合的方法) 就是要找更好的估计方法来减少过度拟合情况的发生。 回顾一下,线性回归中使用的估计方法是最小二乘法,logistic 回归是条件概率的最大 似然估计,朴素贝叶斯是联合概率的最大似然估计,SVM 是二次规划。 一下转自: http://52opencourse.com/133/coursera 斯坦福大学机器学习第七课"正则化“学习笔记,本次课程主要包括4部分: 1) The Problem of Overfitting(过拟合问题) 2) Cost Function(成本函数) 3) Regularized Linear Regression(线性回归的正则化) 4) Regularized Logistic Regression(逻辑回归的正则化) 以下是每一部分的详细解读。 1) The Problem of Overfitting(过拟合问题) 拟合问题举例-线性回归之房价问题: a) 欠拟合(underfit, 也称High-bias) b) 合适的拟合: c) 过拟合(overfit,也称High variance) 什么是过拟合(Overfitting): 如果我们有非常多的特征

机器学习基石14-Regularization

自作多情 提交于 2020-02-09 06:25:42
注: 文章中所有的图片均来自台湾大学林轩田《机器学习基石》课程。 笔记原作者:红色石头 微信公众号:AI有道 上节课介绍了过拟合发生的原因:excessive power, stochastic/deterministic noise 和limited data。并介绍了解决overfitting的简单方法。本节课,我们将介绍解决overfitting的另一种非常重要的方法:Regularization规则化。 一、Regularized Hypothesis Set 先来看一个典型的overfitting的例子: 如图所示,在数据量不够大的情况下,如果我们使用一个高阶多项式(图中红色曲线所示),例如10阶,对目标函数(蓝色曲线)进行拟合。拟合曲线波动很大,虽然 \(E_{in}\) 很小,但是 \(E_{out}\) 很大,也就造成了过拟合现象。 那么如何对过拟合现象进行修正,使hypothesis更接近于target function呢?一种方法就是regularized fit。 这种方法得到的红色fit曲线,要比overfit的红色曲线平滑很多,更接近与目标函数,它的阶数要更低一些。那么问题就变成了我们要把高阶(10阶)的hypothesis sets转换为低阶(2阶)的hypothesis sets。通过下图我们发现,不同阶数的hypothesis存在如下包含关系: