正则化

过拟合及欠拟合的产生及解决方案

匿名 (未验证) 提交于 2019-12-02 23:35:02
版权声明:努力成为大腿 https://blog.csdn.net/Xin_101/article/details/90512441 1 简介 拟合:依据自变量,优化自变量观测参数,使因变量无限接近有效的真实数据的过程. 过拟合:观测参数"学习"到了自变量数据集的所有特征,包括有效数据和噪声(异常)数据,该模型在训练数据集的成绩斐然,但是,泛化能力较弱,在测试数据集上表现一般,因为该模型将无效数据的特征也提取出来了; 欠拟合:观测参数不能充分学习自变量数据集的特征,属于"差生",一般很少提到欠拟合,因为只要模型不能很好地预测训练集和测试集,就是欠拟合,训练过程中的每一步都是欠拟合的过程,所以,一般不提欠拟合. 2 产生的原因 2.1 过拟合产生的原因 训练集数据量较少,抽样方法错误,样本标签标注错误,导致训练集数不足以表示分类或识别任务; 训练集数据噪声(无效数据,异常数据)过多,使训练过程中将噪声识别为有效特征,破坏了分类或识别; 假设的模型无法合理存在,或假设成立的条件实际不成立,如逻辑回归需要自变量独立,但是图像分割任务中,有数据交叉,不能实现独立; 自变量观测参数太多,模型过于复杂; 决策树模型如果对叶节点没有合理剪枝,使分类阈值无法满足测试数据,泛化能力变弱; 神经网络,训练集数据可能存在分类决策面(分类标准)不唯一,随优化迭代,神经网络权重可能收敛于过于复杂的决策面

Ranking-Preserving Low-Rank Factorization for Image Annotation With Missing Labels

匿名 (未验证) 提交于 2019-12-02 23:34:01
论文相关内容 本文是解决自动图像注释问题(Automatic image annotation AIA)的,可以看做是多标签图像分类任务 近几十年来,图像自动标注技术得到了广泛的研究。然而,现有的方法通常假设一个正确标记的训练集,这极大地限制了它们对具有不完整标记的实际数据集的应用。由于缺乏对噪声数据的特殊处理,现有的方法大多将缺失的标签视为严格意义上的负标签,导致标记精度下降。针对这些挑战,本文提出了一种新的保留秩低秩因子分解模型。具体来说,我们为每个测试图像构造一个局部训练集,对模型系数矩阵进行低秩矩阵分解,同时捕获标签相关性,降低模型复杂度。此外,为了减少缺失标签带来的模糊性,我们通过样本相似性和标签相关性对标签排序进行正则化,学习预测模型,并将这两个正则化项纳入我们的因子分解方案中。通过将上述所有组件组装在一起,我们的方法避免了基于不可靠数据进行二类决策的需要,因此对于缺少标签更健壮。 本文主要思想和模型 Z为原始特征空间的模型系数矩阵,Z’x表示为预测标签 把Z分解为转换矩阵H和转换特征空间HX的模型系数矩阵来捕捉标签相关性并减少复杂度 总优化目标,第一项表示预测标签和真实标签的成对排序损失具体如下 第二项为关于H的学习具体如下 基于LLE假设用局部样本重构特征,再去学习H 第三项为关于W的学习与第二项类似 基于LLE假设用局部样本重构标签,再去学习W 最后两项为正则化项

logistic回归 python代码实现

筅森魡賤 提交于 2019-12-02 23:19:57
本代码参考自: https://github.com/lawlite19/MachineLearning_Python/blob/master/LogisticRegression/LogisticRegression.py 1. 读取数据集 def load_data(filename,dataType): return np.loadtxt(filename,delimiter=",",dtype = dataType) def read_data(): data = load_data("data2.txt",np.float64) X = data[:,0:-1] y = data[:,-1] return X,y 2. 查看原始数据的分布 def plot_data(x,y): pos = np.where(y==1) # 找到标签为1的位置 neg = np.where(y==0) #找到标签为0的位置 plt.figure(figsize=(8,6)) plt.plot(x[pos,0],x[pos,1],'ro') plt.plot(x[neg,0],x[neg,1],'bo') plt.title("raw data") plt.show() X,y = read_data() plot_data(X,y) 结果: 3. 将数据映射为多项式 由原图数据分布可知

深度学习(三):DNN的正则化策略综述

匿名 (未验证) 提交于 2019-12-02 23:00:14
和普通的机器学习算法一样,DNN也会遇到过拟合的问题,需要考虑泛化,这里我们就对DNN的正则化方法做一个总结。 一、L1&L2正则化 想到正则化,我们首先想到的就是L1正则化和L2正则化。L1正则化和L2正则化原理类似,这里重点讲述DNN的L2正则化。 而DNN的L2正则化通常的做法是 只针对与线性系数矩阵 W W W ,而不针对偏倚系数 b b b 。利用我们之前的机器学习的知识,我们很容易可以写出DNN的L2正则化的损失函数。 假如我们的每个样本的损失函数是均方差损失函数,则所有的 m m m 个样本的损失函数为: J ( W , b ) = 1 2 m ∑ i = 1 m a L y 2 2 (1) J(W,b) = \frac{1}{2m}\sum\limits_{i=1}^{m}||a^L-y||_2^2\qquad \text{(1)} J ( W , b ) = 2 m 1 i = 1 ∑ m a L y 2 2 (1) 则加上了L2正则化后的损失函数是: J ( W , b ) = 1 2 m ∑ i = 1 m a L y 2 2 + λ 2 m ∑ l = 2 L w 2 2 (2) J(W,b) = \frac{1}{2m}\sum\limits_{i=1}^{m}||a^L-y||_2^2 + \frac{\lambda}{2m}\sum\limits_{l

资深程序员带你玩转深度学习中的正则化技术(附Python代码)!

匿名 (未验证) 提交于 2019-12-02 22:51:30
Ŀ¼ 1. 什么是正则化? 2. 正则化如何减少过拟合? 3. 深度学习中的各种正则化技术: L2和L1正则化 Dropout 数据增强(Data augmentation) 提前停止(Early stopping) 4. 案例:在MNIST数据集上使用Keras的案例研究 1. 什么是正则化? 在深入该主题之前,先来看看这几幅图: 之前见过这幅图吗?从左到右看,我们的模型从训练集的噪音数据中学习了过多的细节,最终导致模型在未知数据上的性能不好。 换句话说,从左向右,模型的复杂度在增加以至于训练误差减少,然而测试误差未必减少。如下图所示: 2. 正则化如何减少过拟合? 我们来看一个在训练数据上过拟合的神经网络,如下图所示: 如果你曾经学习过机器学习中的正则化,你会有一个概念,即正则化惩罚了系数。在深度学习中,它实际上惩罚了节点的权重矩阵。 假设我们的正则化系数很高,以至于某些权重矩阵近乎于0: 这会得到一个简单的线性网络,而且在训练数据集上轻微的欠拟合。 如此大的正则化系数并不是那么有用。我们需要对其进行优化从而得到一个拟合良好的模型,正如下图所示: 这里,lambda是正则参数。它是一个超参数用来优化得到更好的结果。L2正则化也叫权重衰减(weight decay ) ,因 为 它 强 制 权 重朝着 0 衰减(但不会 为 0) 在L1中,我 们 有: dropout做什么呢

在深度学习中不得不掌握的数学知识

本秂侑毒 提交于 2019-12-02 14:57:14
1.标量,向量,矩阵和张量   标量其实就是一个独立存在的数。比如一个实数7就可以被看作是一个标量   向量指一列按顺序排列的元素,我们通常习惯用括号将这一列元素括起来,其中的每个元素都由一个索引值来唯一地确定其在向量中的位置,假设这个向量中的第1个元素是x1,它的索引值就是1,第2个元素是x2,它的索引值就是2,以此类推。向量还有一个特性就是向量中的不同数字还可以用于表示不同坐标轴上的坐标值。比如,我们可以把下面这个向量看作三个不同的坐标轴上的坐标值。   矩阵是一个二维数组结构,我们会用括号将其中的全部元素括起来。向量的索引值是一维的,而矩阵的索引值是二维的,所以在确定矩阵中的每个元素的位置时需要两个数字。比如,假设在一个矩阵的左上角存在一个元素x11,这个二维索引值代表矩阵中第一行和第一列交汇处的数字,所以前面一个数字1可以被定义为当前矩阵的行号,后面的一个数字1可以被定义为当前矩阵的列号。   张量:若数组的维度超过了二维,我们就可以用张量来表示,所以我们可以将张量理解为高维数组。同理,张量的索引值用两个维度的数字来表示已经不够了,其中的张量的索引值会随着张量维度的改变而改变。 2.解决欠拟合的三种方法   (1)增加特征项:在大多数情况下出现欠拟合是因为我们没有准确地把我数据的主要特征,所以我们可以尝试在模型中加入更多的和原始数据有重要相关性的特征来训练搭建的模型

Weighted ChannelDropoutfor Regularization of Deep Convolutional Neural Network论文记录

会有一股神秘感。 提交于 2019-12-02 11:49:00
简介 近年来,卷积神经网络实现了很大的发展,这已经显著提升了很多不同应用的性能表现,深度卷积神经网络可以成功的原因很大程度是因为其多个非线性隐藏层的结构,其中包含了数以百万计的参数,因此可以学习输入和输出之间的关系。 作者观察提出了一种新的方法,称为加权信道丢失率(WCD)的正则化深卷积神经网络(CNN)。在一个卷积神经网络的卷积堆栈内,所有的通道都是由之前的层生成的,并会在下一层得到平等的对待,这样就产生了一个想法,这样的分布可能不是最优的,因为事实可能证明某些特征比其他特征更加的有用。 与全连接层中随机选择神经元设置为0的Dropout不同, WCD对卷积层堆栈中的通道进行操作 。具体来说, WCD包括两个步骤,即评级渠道和选择渠道,和三个模块,即全局平均池,加权随机选择和随机数生成器 。它根据激活的相对幅度对通道进行过滤选择,可以插入任意两个连续的层中,并可以进一步作为一种建模通道之间的依赖关系的特殊方法。 WCD是完全无参数的,仅在训练阶段部署,计算成本非常低。测试阶段的网络保持不变,因此根本不增加推理成本 。此外,当与现有的网络相结合时,它不需要在ImageNet上进行再训练,因此非常适合在小型数据集上应用。最后,使用VGGNet- 16、ResNet-101、incepee - v3的WCD在多个数据集上进行了实验评估。广泛的结果表明,WCD可以在基线上带来一致的改进。

SVM算法(六)SVM算法的正则化损失函数视角

帅比萌擦擦* 提交于 2019-12-02 10:39:57
一、用“损失函数+正则项”理解SVM最优化目标 如 近似线性可分问题 所述,SVM算法的目标是求得如下目标函数的最小值: min ⁡ 1 2 w 2 + C ∑ i = 1 n ξ i s . t . y i ( w x i + b ) ≥ 1 − ξ i ξ i ≥ 0 \begin{aligned}&\min\frac{1}{2}w^2+C\sum\limits_{i=1}^n \xi_i \\&s.t.\space \space y_i(wx_i+b)\ge1-\xi_i\\ &\qquad \xi_i \ge0\end{aligned} ​ min 2 1 ​ w 2 + C i = 1 ∑ n ​ ξ i ​ s . t . y i ​ ( w x i ​ + b ) ≥ 1 − ξ i ​ ξ i ​ ≥ 0 ​ 根据拉格朗日广义函数对偶问题的分析, α i \alpha_i α i ​ 共有如下三种取值情况: 1) α i = C \alpha_i=C α i ​ = C ,由对偶互补条件有 ξ i = 1 − y i ( w x i + b ) \xi_i=1-y_i(wx_i+b) ξ i ​ = 1 − y i ​ ( w x i ​ + b ) 2) α i = 0 \alpha_i=0 α i ​ = 0 ,由对偶互补条件有 ξ i = 0 \xi_i=0

L1与L2正则化

爱⌒轻易说出口 提交于 2019-12-02 04:03:25
目录 过拟合 结构风险最小化原理 正则化 L2正则化 L1正则化 L1与L2正则化 参考链接 过拟合 机器学习中,如果参数过多、模型过于复杂,容易造成过拟合。 结构风险最小化原理 在经验风险最小化(训练误差最小化)的基础上,尽可能采用简单的模型,以提高模型泛化预测精度。 正则化 为了避免过拟合,最常用的一种方法是使用正则化,例如L1和L2正则化。 所谓的正则化,就是在原来损失函数的基础上,加了一些正则化项,或者叫做模型复杂度惩罚项。 L2正则化 L2正则化即: \(L=E_{in}+\lambda\sum_j\omega^2_j\) ,其中, \(E_{in}\) 是原来的损失函数; \(\lambda\) 是正则化参数,可调整; \(\omega_j\) 是参数。 由上可知,正则化是为了限制参数过多,避免模型过于复杂。因此,我们可以令高阶部分的权重 \(\omega\) 为0,这样就相当于从高阶转换为低阶。然而,这是个NP难问题,将其适度简化为: \(\sum_j\omega_j^2≤C\) ,令 \(\omega_j\) 的平方和小于 \(C\) 。这时,我们的目标就转换为:令 \(E_{in}\) 最小,但是要遵循 \(w\) 平方和小于 \(C\) 的条件,如下图所示: L1正则化 L1正则化和L2正则化相似: \(L=E_{in}+\lambda\sum_j|\omega

神经网络学习笔记(2)

我们两清 提交于 2019-12-01 22:47:09
神经网络学习笔记(2)   本文是神经网络学习笔记的第二部分,紧接着笔者的 神经网络学习笔记(1) ,主要内容为对总结神经网络的常用配置方式,包括如下几点:(1)数据预处理;(2)权重初始化;(3)正则化与Dropout;(4)损失函数。    1、数据预处理   对于神经网络而言,数据的预处理常见的方法主要包括0-1归一化,主成分分析(PCA)及one-hot编码标签。   (1)0-1归一化:将样本所有维度的数据转变为以0为均值,1为标准差的新数据。处理方式为,对训练数据的每一个维度,分别计算其均值和标准差,然后将这一维度的数据分别减去均值然后除以标准差。至于为什么需要对数据进行这一处理,笔者也没有找到很好的解答,欢迎各位大牛在本文下面留言探讨;    注意: 当我们在进行归一化处理的时候,我们处理所用的数值(例如:均值和方差)只能够从训练集上面获得,然后将从训练集上计算得到的值直接应用到验证集/测试集上,而不是在验证集/测试集上面重新计算新值,或者直接从整体的数据集上面计算均值和方差然后再划分数据集。我想这还是为了保证模型泛化能力检测的公正性,避免验证集/测试集中的任何数据泄露到训练过程中。   (2)主成分分析(PCA):对于神经网络而言,该方法主要用于对数据进行降维(也可用于数据的压缩)。网络上面已经有很多文章对PCA的基本过程进行解读