| |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
-> 人工智能 -> 第一章 机器学习的实用层面 -> 正文阅读 |
|
[人工智能]第一章 机器学习的实用层面 |
目录 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在应用时并没有明显的优势,反而在微分求导时较为复杂,因此不常使用。 在正则化中的?参数就是超参数,我们通过试验确定最优的参数。 在深度学习中,L2正则化的表达式为: 公式里的?被称为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 标准化输入标准化输入就是对训练数据集进行归一化的操作,即将原始数据减去其均值后,再除以其方差 ? 之所以要对输入进行标准化操作,主要是为了让所有输入归一化同样的尺度上,方便进行梯度下降算法时能够更快更准确地找到全局最优解。如果特征之间差值极大,会造成梯度下降时代价函数发生振荡,造成J不再单调下降,所以要进行标准化操作。 7 梯度的相关问题1 梯度消失与梯度爆炸梯度消失和梯度爆炸。意思是当训练一个层数非常多的神经网络时,计算得到的梯度可能非常小或非常大,甚至是指数级别的减小或增大。这样会让训练过程变得非常困难。 举个例子来说明,假设一个每层只包含两个神经元的深度神经网络模型,如下图所示: 为了方便理解,令激活函数为?,如果各层权重大于一,比如1.5,则预测输出会正比于?,如果各层权重小于1,比如0.5,则预测输出会正比于?,这分别被称为梯度爆炸和梯度消失。 如果权重都大于1或都小于1,会造成训练过程出现很大问题。 2 改善梯度消失和梯度下降问题一般来说我们可以通过初始化处理权重的方式改善这个问题。当激活函数为tanh时,一般令其方差为?,当激活函数是ReLU,一般令其方差为?.选择哪种方法因人而异。 3 梯度检测梯度检查的目的是检查验证反向传播过程中梯度下降算法是否正确。 ?根据微分思想,我们可以将函数在某点的梯度表示为 首先将所有参数矩阵一起构成一个一维向量,然后将反向传播获得的微分按照相同顺序构成一个一维向量,然后利用代价函数对每个参数计算梯度,算完后,计算获得的值与微分向量的欧式距离,一般来说欧氏距离保持在?的数量级是比较好的,如果大了就需要检查是否有问题。 |
|
|
上一篇文章 下一篇文章 查看所有文章 |
|
开发:
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年12日历 | -2024/12/22 10:53:19- |
|
网站联系: qq:121756557 email:121756557@qq.com IT数码 |