IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 人工智能 -> 第一章 机器学习的实用层面 -> 正文阅读

[人工智能]第一章 机器学习的实用层面

目录

1 训练集验证集和测试集

2 偏差和方差

1 概念

2 如何避免出现方差和偏差

3 正则化

1 正则化的概念

?2 正则化的工作原理

4?Dropout正则化

1 什么是Dropout

2 为什么Dropout可以防止过拟合

5 其它防止过拟合的方法

6 标准化输入

7 梯度的相关问题

1 梯度消失与梯度爆炸

2 改善梯度消失和梯度下降问题

3 梯度检测


1 训练集验证集和测试集

在构建神经网络时,我们需要设置很多参数,但我们无法在构建之始就获得最佳的参数,为了获得这些参数,我们需要不断进行迭代更新:首先利用初始参数构建一个神经网络模型,然后通过代码实现这个神经网络,最终通过实验验证这些参数构成的神经网络的性能,根据结果对参数进行优化更新,然后进行下次循环,最终得到最优解

?通常我们会把整个样本数据集分成三部分,训练集,用来训练模型;验证集,用来验证不同算法的表现情况;测试集,用来作为算法的无偏估计。在数据量较少,如100,1000,10000时,可以设计为3:1:1,在数据量较大时,应设为98:1:1,数据量越大,训练集比例应当越高,此外我们需要保证训练集和测试集样本分布相同,保持统一来源。

还有一点,测试集可以不进行设置,因为测试集是用来展现算法的结果,我们使用训练集训练好模型后分别放在验证集上验证,然后分别在验证集上验证根据结果选择模型也是可以的,并不一定要进行无偏估计。

2 偏差和方差

1 概念

偏差和方差是机器学习领域必须解决的两个问题,传统机器学习中,它们对应着欠拟合和过拟合两个对立概念,但是在深度学习中,它们是两个独立的概念,我们需要同时降低这两个值以获得最优模型,下图是二维平面上高偏差,最优解,高方差的例子:

对于如上的二维特征,从图中可以很明显的看出来,但是对于无法绘制图像的高维特征,我们只能通过划分的数据集来判断,如果训练集误差为1%,验证集误差为11%,这说明模型对训练集效果好,对验证集较差,这说明出现了过拟合,从而导致模型泛化能力差,这就是高方差的体现;而如果训练集误差为15%,验证集误差为16%,这说明,模型出现了欠拟合情况,这是高偏差的体现;如果训练集误差为15%,验证集为30%,这就是最坏的情况,高偏差高方差的表现。

一般而言,训练集误差体现是否出现了偏差,验证集合误差体现是否出现了方差,更准确的来说,是训练集和验证集的相对差值体现了方差。?

2 如何避免出现方差和偏差

避免出现高偏差的方法:增加隐藏层个数,神经元个数,增加训练次数,选择更优的模型

避免出现高方差的方法:增加训练集数据,进行正则化,选择更优的模型

3 正则化

1 正则化的概念

上面我们提到了可以通过正则化减少过拟合情况,下面我们具体介绍一下这种方法:

我们在学习逻辑回归的时候,采用了L2正则化,具体表述如下所示

要注意的是由于w的维度一般很大,所以整个神经网络很大程度上由w决定,为了简便,我们通常忽略了对b的正则化。

?上图中没有参数平方处理的正则化被称为L1正则化,与L2正则化相比,L1正则化得到的w较稀疏,有很多参数是0,但是实际上L1在应用时并没有明显的优势,反而在微分求导时较为复杂,因此不常使用。

在正则化中的\lambda?参数就是超参数,我们通过试验确定最优的参数。

在深度学习中,L2正则化的表达式为:

公式里的\left \| w^{[l]} \right \|^{2}?被称为Frobenius范数,一个矩阵的Frobenius范数就是所有元素平方和的平方根,由于加入了正则化,因此梯度下降算法中的w更新公式要修改为:

L2正则化再加入正则化之后会使梯度下降的更快,这是由于加入正则化后每次迭代会额外减去一个增量:

?2 正则化的工作原理

假定我们选择了一个非常复杂的神经网络模型,并且在没有使用正则化的情况下得到了一个过拟合的结果,但当我们加入正则化项后,当正则化参数很大时,参数w近似为零,这意味着有一部分神经元的作用会被忽略掉,从而可以将一个复杂模型简化为一个简单模型(甚至类似于逻辑回归模型),通过前面的学习我们可以了解到,简单模型不容易过拟合,从而问题就从降低方差变成降低偏差的问题了。

4?Dropout正则化

1 什么是Dropout

除了L2正则化以外,还有一种正则化方法:Dropout正则化,它指的是在深度学习网络的训练过程中,对于每层的神经元,按照一定的概率将其暂时从网络中丢弃。也就是说,每次训练时,每一层都有部分神经元不工作,起到简化复杂网络模型的效果,从而避免发生过拟合。

?Inverted dropout是一种常见的dropout方法,具体措施是对第l层神经元,设定保留神经元比例并随即删除一定数量的神经元,需要注意的是,最后该层的输出要除以保留比例,这是为了保证下一层的输入值不变,同时可以保证下层输入的样本数据尺寸不变,以防止需要进行尺寸伸缩操作。

对于m个样本,单次迭代训练时,随机删除掉隐藏层一定数量的神经元;然后,在删除后的剩下的神经元上正向和反向更新权重w和常数项b;接着,下一次迭代中,再恢复之前删除的神经元,重新随机删除一定数量的神经元,进行正向和反向更新w和b。不断重复上述过程,直至迭代训练完成。

2 为什么Dropout可以防止过拟合

dropout每次迭代的过程随机选择不同的神经元,就相当于在不同的神经网络上进行训练,同时在每次训练中输入都有可能被过滤,这也造成了输出受单个输入的影响较小,也就是说对应的权重w比较小,降低了过拟合的可能。

5 其它防止过拟合的方法

除了上述的两种方法之外还有其他减少过拟合的方法。

有一种通用的方法是增加样本数量,但通常成本很高,为了降低成本,我们可以对已有样本加以处理,比如对图片进行翻转,旋转,放缩等手段。

还有一种手段:early stopping,通常来说,一个神经网络随着训练次数增加,训练集误差会单调减小,而验证集误差先减小后增大,因此可以通过两者的变化趋势选择合适的迭代次数。

?这种方法由于通过减少训练次数达到防止过拟合的效果,因此会造成J值不足够小的缺点,通常情况下,我们更偏向使用L2正交化。

6 标准化输入

标准化输入就是对训练数据集进行归一化的操作,即将原始数据减去其均值\mu后,再除以其方差\sigma ^{2}

?

之所以要对输入进行标准化操作,主要是为了让所有输入归一化同样的尺度上,方便进行梯度下降算法时能够更快更准确地找到全局最优解。如果特征之间差值极大,会造成梯度下降时代价函数发生振荡,造成J不再单调下降,所以要进行标准化操作。

7 梯度的相关问题

1 梯度消失与梯度爆炸

梯度消失和梯度爆炸。意思是当训练一个层数非常多的神经网络时,计算得到的梯度可能非常小或非常大,甚至是指数级别的减小或增大。这样会让训练过程变得非常困难。

举个例子来说明,假设一个每层只包含两个神经元的深度神经网络模型,如下图所示:

为了方便理解,令激活函数为g(z)=z?,如果各层权重大于一,比如1.5,则预测输出会正比于?1.5^{l},如果各层权重小于1,比如0.5,则预测输出会正比于0.5^{l}?,这分别被称为梯度爆炸和梯度消失。

如果权重都大于1或都小于1,会造成训练过程出现很大问题。

2 改善梯度消失和梯度下降问题

一般来说我们可以通过初始化处理权重的方式改善这个问题。当激活函数为tanh时,一般令其方差为\frac{1}{n}?,当激活函数是ReLU,一般令其方差为\frac{2}{n}?.选择哪种方法因人而异。

3 梯度检测

梯度检查的目的是检查验证反向传播过程中梯度下降算法是否正确。

?根据微分思想,我们可以将函数在某点的梯度表示为

首先将所有参数矩阵一起构成一个一维向量,然后将反向传播获得的微分按照相同顺序构成一个一维向量,然后利用代价函数对每个参数计算梯度,算完后,计算获得的值与微分向量的欧式距离,一般来说欧氏距离保持在10^{-7}?的数量级是比较好的,如果大了就需要检查是否有问题。

  人工智能 最新文章
2022吴恩达机器学习课程——第二课(神经网
第十五章 规则学习
FixMatch: Simplifying Semi-Supervised Le
数据挖掘Java——Kmeans算法的实现
大脑皮层的分割方法
【翻译】GPT-3是如何工作的
论文笔记:TEACHTEXT: CrossModal Generaliz
python从零学(六)
详解Python 3.x 导入(import)
【答读者问27】backtrader不支持最新版本的
上一篇文章      下一篇文章      查看所有文章
加:2021-07-13 17:28:06  更:2021-07-13 17:29:11 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年4日历 -2024/4/25 6:23:54-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码