正则化

转载:正则化

南楼画角 提交于 2020-03-04 00:14:08
原文链接:https://blog.csdn.net/qq_20412595/article/details/81636105 一、Why & What 正则化 我们总会在各种地方遇到正则化这个看起来很难理解的名词,其实它并没有那么高冷,是很好理解的 首先,从使用正则化解决了一个什么问题的角度来看:正则化是为了防止过拟合, 进而增强泛化能力。用白话文转义,泛化误差(generalization error)= 测试误差(test error),其实就是使用训练数据训练的模型在测试集上的表现(或说性能 performance)好不好 如上图,红色这条“想象力”过于丰富上下横跳的曲线就是过拟合情形。结合上图和正则化的英文 Regularizaiton-Regular-Regularize,直译应该是:规则化(加个“化”字变动词,自豪一下中文还是强)。什么是规则?你妈喊你6点前回家吃饭,这就是规则,一个限制。同理,在这里,规则化就是说给需要训练的目标函数加上一些规则(限制),让他们不要自我膨胀。正则化,看起来,挺不好理解的,追其根源,还是“正则”这两字在中文中实在没有一个直观的对应,如果能翻译成规则化,更好理解。但我们一定要明白,搞学术,概念名词的准确是十分重要,对于一个重要唯一确定的概念,为它安上一个不会产生歧义的名词是必须的,正则化的名称没毛病,只是从如何理解的角度,要灵活和类比。

机器学习之模型的选择

狂风中的少年 提交于 2020-03-02 10:52:32
模型的选择 机器学习中,如果参数过多,模型过于复杂,容易造成过拟合(overfit)。即模型在训练样本数据上表现的很好,但在实际测试样本上表现的较差,不具备良好的泛化能力。 L2 正则化公式非常简单,直接在原来的损失函数基础上加上权重参数的平方和 我们知道,正则化的目的是限制参数过多或者过大,避免模型更加复杂。例如,使用多项式模型,如果使用 10 阶多项式,模型可能过于复杂,容易发生过拟合。所以,为了防止过拟合,我们可以将其高阶部分的权重 w 限制为 0,这样,就相当于从高阶的形式转换为低阶。 为了达到这一目的,最直观的方法就是限制 w 的个数,但是这类条件属于 NP-hard 问题,求解非常困难。所以,一般的做法是寻找更宽松的限定条件: 上式是对 w 的平方和做数值上界限定,即所有w 的平方和不超过参数 C。这时候,我们的目标就转换为:最小化训练样本误差,但是要遵循 w 平方和小于 C 的条件。 正则化的作用 正则化:防止数据过拟合。 对损失函数加上一个正则项。 正则化的主要作用是防止过拟合,对模型添加正则化项可以限制模型的复杂度,使得模型在复杂度和性能达到平衡。 常用的正则化方法有L1正则化和L2正则化。L1正则化和L2正则化可以看做是损失函数的惩罚项。所谓『惩罚』是指对损失函数中的某些参数做一些限制。 L1正则化的模型建叫做Lasso回归

正则化可以防止过拟合的原因

北城以北 提交于 2020-02-29 22:33:18
一、 过拟合 首先我们需要明白什么是过拟合,由下图可知,对于(2)图则是出现了非常明显的过拟合。 从图中我们可以发现过拟合的特征,具有非常强的 非线性 特征,几乎让训练误差接近于0。 二、 正则化的思路 对于正则化,我们则是想要降低这种非线性的特征。这是我们的目的,我们来观察一下我们的非线性特征产生的原因——激活函数。 我们选取tanh的函数进行分析,从图中可以看出,非线性特征需要在于当x远大于0的时候,y的结果趋向于正负一而与x的产生非线性关系。 而从图中可以看出,当z(横轴)接近0时,非线性特征并没有特别明显,换句话说,函数更具有线性特征。 因此我们这里采取的方案就是想要z更加接近0,以此削弱非线性特征。 而以上讨论的z则是神经网络中每一层网络通过Z [l] =W [l] A [l] +b [l] 计算得来的。 若是想要Z更加接近于0,由于A是通过计算出来的,我们只可以通过优化W和b让Z更加接近于0。 至此,我们已经发现了我们的目的,即让 W和b更加接近于0。 三、 正则化的实施 我们来看正则化的究竟做了什么? $J=\frac{1}{\mathrm{m}} \sum_{\mathrm{i}}^{m} L\left(\widehat{y}^{(i)}, y^{(i)}\right)+\frac{\lambda}{2 m}\|w\|^{2}$ 从这个式子里,我们看到,为了让J

正则化方法:L1和L2 regularization、数据集扩增、dropout

情到浓时终转凉″ 提交于 2020-02-29 06:22:44
正则化方法:L1和L2 regularization 本文是 《Neural networks and deep learning》概览 中第三章的一部分,讲机器学习/深度学习算法中常用的正则化方法。(本文会不断补充) 正则化方法:防止过拟合,提高泛化能力 在训练数据不够多时,或者overtraining时,常常会导致overfitting(过拟合)。其直观的表现如下图所示,随着训练过程的进行,模型复杂度增加,在training data上的error渐渐减小,但是在验证集上的error却反而渐渐增大——因为训练出来的网络过拟合了训练集,对训练集外的数据却不work。 为了防止overfitting,可以用的方法有很多,下文就将以此展开。有一个概念需要先说明,在机器学习算法中,我们常常将原始数据集分为三部分:training data、validation data,testing data。这个validation data是什么?它其实就是用来避免过拟合的,在训练过程中,我们通常用它来确定一些超参数(比如根据validation data上的accuracy来确定early stopping的epoch大小、根据validation data确定learning rate等等)。那为啥不直接在testing data上做这些呢?因为如果在testing data做这些

过拟合及解决方法

耗尽温柔 提交于 2020-02-28 03:13:24
转载来源:https://blog.csdn.net/u010899985/article/details/79471909 一.过拟合 在训练数据不够多时,或者over-training时,经常会导致over-fitting(过拟合)。其直观的表现如下图所所示。 在这里插入图片描述 随着训练过程的进行,模型复杂度,在training data上的error渐渐减小。可是在验证集上的error却反而渐渐增大——由于训练出来的网络过拟合了训练集,对训练集以外的数据却不work。 在机器学习算法中,我们经常将原始数据集分为三部分:训练集(training data)、验证集(validation data)、测试集(testing data)。 1.validation data是什么? 它事实上就是用来避免过拟合的。在训练过程中,我们通经常使用它来确定一些超參数(比方,依据validation data上的accuracy来确定early stopping的epoch大小、依据validation data确定learning rate等等)。那为啥不直接在testing data上做这些呢?由于假设在testing data做这些,那么随着训练的进行,我们的网络实际上就是在一点一点地overfitting我们的testing data,导致最后得到的testing

深度学习超参数总结

孤者浪人 提交于 2020-02-27 21:56:03
1.epochs 迭代次数epoch=1 这意味着1个周期是整个输入数据的单次向前和向后传递。简单说,epochs指的就是训练过程中数据将被“轮”多少次,就这样。 2.batch-size 批次大小是每一次训练神经网络送入模型的样本数,在卷积神经网络中,大批次通常可使网络更快收敛,但由于内存资源的限制,批次过大可能会导致内存不够用或程序内核崩溃。bath_size通常取值为[16,32,64,128] 3学习率 学习率(learning rate或作lr)是指在优化算法中更新网络权重的幅度大小。学习率可以是恒定的、逐渐降低的,基于动量的或者是自适应的。不同的优化算法决定不同的学习率。当学习率过大则可能导致模型不收敛,损失loss不断上下震荡;学习率过小则导致模型收敛速度偏慢,需要更长的时间训练。通常lr取值为[0.01,0.001,0.0001] 4.激活函数 在神经网络中,激活函数不是真的去激活什么,而是用激活函数给神经网络加入一些非线性因素,使得网络可以更好地解决较为复杂的问题。比如有些问题是线性可分的,而现实场景中更多问题不是线性可分的,若不使用激活函数则难以拟合非线性问题,测试时会有低准确率。所以激活函数主要是非线性的,如sigmoid、tanh、relu。sigmoid函数通常用于二分类,但要防止梯度消失,故适合浅层神经网络且需要配备较小的初始化权重

正则化如何防止过拟合

≯℡__Kan透↙ 提交于 2020-02-27 04:53:17
在训练数据不够多时,或者overtraining时,常常会导致overfitting(过拟合)。其直观的表现如下图所示,随着训练过程的进行,模型复杂度增加,在training data上的error渐渐减小,但是在验证集上的error却反而渐渐增大——因为训练出来的网络过拟合了训练集,对训练集外的数据却不work。    为了防止overfitting,可以用的方法有很多,下文就将以此展开。有一个概念需要先说明,在机器学习算法中,我们常常将原始数据集分为三部分:training data、validation data,testing data。这个validation data是什么?它其实就是用来避免过拟合的,在训练过程中,我们通常用它来确定一些超参数(比如根据validation data上的accuracy来确定early stopping的epoch大小、根据validation data确定learning rate等等)。那为啥不直接在testing data上做这些呢?因为如果在testing data做这些,那么随着训练的进行,我们的网络实际上就是在一点一点地overfitting我们的testing data,导致最后得到的testing accuracy没有任何参考意义。因此,training data的作用是计算梯度更新权重,validation

正则化方法

匆匆过客 提交于 2020-02-27 04:34:26
原文地址:http://www.mamicode.com/info-detail-517504.html 正则化方法:L1和L2 regularization、数据集扩增、dropout 时间: 2015-03-14 18:32:59 阅读: 27838 评论: 0 收藏: 0 [点我收藏+] 标签: 机器学习 正则化 过拟合 本文是 《Neural networks and deep learning》概览 中第三章的一部分,讲机器学习/深度学习算法中常用的正则化方法。(本文会不断补充) 正则化方法:防止过拟合,提高泛化能力 在训练数据不够多时,或者overtraining时,常常会导致overfitting(过拟合)。其直观的表现如下图所示,随着训练过程,网络在training data上的error渐渐减小,但是在验证集上的error却反而渐渐增大——因为训练出来的网络过拟合了训练集,对训练集外的数据却不work。 为了防止overfitting,可以用的方法有很多,下文就将以此展开。有一个概念需要先说明,在机器学习算法中,我们常常将原始数据集分为三部分:training data、validation data,testing data。这个validation data是什么?它其实就是用来避免过拟合的,在训练过程中,我们通常用它来确定一些超参数

02-12 Logistic(逻辑)回归

*爱你&永不变心* 提交于 2020-02-26 23:29:50
文章目录 逻辑回归 逻辑回归学习目标 逻辑回归引入 逻辑回归详解 线性回归与逻辑回归 二元逻辑回归的假设函数 让步比 Sigmoid函数图像 二元逻辑回归的目标函数 不同样本分类的代价 二元逻辑回归目标函数最大化 梯度上升法 线性回归和逻辑回归的参数更新 拟牛顿法 二元逻辑回归模型 二元逻辑回归的正则化 L1正则化 L2正则化 多元逻辑回归 OvR MvM 逻辑回归流程 输入 输出 流程 逻辑回归优缺点 优点 缺点 小结 逻辑回归   虽然逻辑回归的名字里有“回归”两个字,但是它并不是一个回归算法,事实上它是一个分类算法。 逻辑回归学习目标 二元逻辑回归的目标函数 最小化二元逻辑回归目标函数 二元逻辑回归的正则化 多元逻辑回归 逻辑回归的流程 逻辑回归的优缺点 逻辑回归引入 [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-1O9UxwXA-1582719512430)(…/新配图/恶搞图/06-09-操场2.jpg)]   曾经在感知机引入时我们讲过,操场上男生和女生由于受传统思想的影响,男生和女生分开站着,并且因为男生和女生散乱在操场上呈线性可分的状态,因此我们总可以通过感知机算法找到一条直线把男生和女生分开,并且最终可以得到感知机模型为 f ( x ) = s i g n ( ( w ∗ ) T x ) f(x)=sign((w^*)^Tx) f