吴恩达深度学习笔记(3)--深度学习的实际应用

训练、开发、测试集

目前超参数的确定依赖于实验迭代调整,将数据集划分为:训练、开发(验证)、测试集会使迭代效率更高。

如果数据少的时候用传统的分割方法:60/20/20,数据量大的时候则都可以。

确保开发和测试集的数据分布相同。

偏差-方差

目前关于偏差-方差的权衡讨论很少。

高偏差--欠拟合

高方差--过拟合

机器学习的基本原则

当模型训练好的时候:

  • 检查模型是否高偏差,即模型在训练集数据上的表现,如果存在高偏差的情情况,可以尝试选择其他更合适的网络,如有更多隐藏层和隐藏单元的,或延长训练时间,选用其他优化方法
  • 当偏差降低到可接受范围内后,判断方差,需要在开发集上判断,看模型是否具有一般化的能力,如果方差高,解决方法最好时取得更多的数据,有时候无法获取更多的数据,可以尝试正则化,或者更适合的网络

正则化:

如果出现方差过高,即过拟合情况,可以考虑使用正则化方法

在逻辑回归代价函数中加入正则化项:

在神经网络中:

矩阵的范数:

权重衰减:

加入正则化项之后,梯度变为:

梯度更新公式变为:

其中,<1,会给之前的权重矩阵一个衰减参数。

为什么正则化可以缓解过拟合

加入正则化项,正则化因子λ设置的足够大的情况下,为了使代价函数最小化,权重矩阵W就会被设置为接近于0的值。则相当于消除了很多神经元的影响,大的神经网络就会变成一个较小的网络.

对于激活函数而言,加入正则化项之后,z的值变小,近似于线性变换,整个网络就成为一个简单的近似线性的网络,从而不会发生过拟合。

dropout正则化(随机失活)

假如上述神经网络过拟合,随机失活技术遍历网络每一层,为dropout网络中的某个结点,设置一个概率值,50%概率被丢弃,消除那些结点的运算,得到一个相对小的神经网络。小的网络可以达到正则化的效果。

随机失活的方法:反向随机失活

理解dropout:

单个神经元的工作就是接收输入,并产生一些有意义的输出,加入了Dropout后,输入的特征都是有可能会被随机清除的,所以神经元不会再特别依赖于任何一个输入特征,因此给每一个输入较小的权重,可以达到收缩权重防止过度拟合的目的。如果某一层的参数过多,更容易发生过拟合,给这一层设置更低的留存率。

缺点是,这样做使得在交叉验证搜索时会有更多的超参数,因此可以对一些层使用dropout,其他不用,且dropout相同,这样就只产生了一个超参数。另一个缺点是,让代价函数不明确,去验证梯度下降算法时,不能依据随着迭代,代价函数值变小,不能用绘图方式判断迭代结果

PS:在测试阶段不要用dropout,因为那样会使得预测结果变得随机。

其他正则化方法:

扩增训练集:将图片数据水平翻转、随机裁剪图片(旋转放大)

早终止法 :在运行梯度下降时,画一个训练误差的图,同时画出开发集误差

缺点:机器学习有很多步骤,其中获取代价函数最小有很多方式实现,即便优化了成本函数,我们希望不会过拟合,可以通过正则化等步骤实现,现在机器学习中增加了很多超参数。早终止的话,即增加超参数,又想避免过拟合,用一个工具解决两个问题,考虑的更复杂。

输入归一化:加速训练过程

以两个特征的训练集为例,需要两步实现

训练集和测试集应该以同样的方式实现归一化

1、中心化:计算每一个特征样本的数据均值,样本减去均值

2、方差归一化

归一化之前,需要较小的学习率多次迭代次数找到全局最优解

归一化之后,可以设置更大的学习效率,较少的迭代次数就能找到全局最优解

梯度的消失和爆炸

在训练深度神经网络时,损失函数的导数或者斜率很大,或者很小,导致训练变得很困难

出现的原因:在一个很深的网络,权参数系数矩阵只比单位阵大一点点,激活函数的值将以指数级递增,激活函数就会爆炸,只比单位阵小一点点就会消失,导致梯度下降超级缓慢

神经网络权重初始化

输入的数量n较大时,我们希望每个w i的值都小一些,这样它们的和得到的z也较小。

设置

梯度的数值近似:

双侧差值:

梯度验证:可以找出反向传播中的错误

将网络中的参数全部连接起来,转换成一个向量

  • 梯度验证不能在训练中使用,只能调试的时候用
  • 如果梯度检验出问题,逐个检查看看哪个差距最大
  • 不要忘记加入正则化项
  • 梯度检验不能与随机失活一起使用,因为每一次迭代中随机失活随机消除,这时是难以计算dropout在梯度下降上的代价函数J;
  • 最后虽然很少发生,但也是有可能的,当参数w和b接近0时,梯度下降是正确的,但是随着梯度下降的进行,w和b会增大,算法的精度有所下降,可以尝试在随机初始化的时候,运行梯度检验,之后训练网络一段时间,w和b将会在0附近摇摆一段时间,即很小的随机初始值,在进行几次训练的迭代后,再与运行梯度检验。吴恩达Coursera深度学习课程 DeepLearning.ai 提炼笔记(2-1)-- 深度学习的实践方面_cousera deeplearing笔记-CSDN博客
相关推荐
我爱一条柴ya3 分钟前
【AI大模型】线性回归:经典算法的深度解析与实战指南
人工智能·python·算法·ai·ai编程
Qiuner9 分钟前
【源力觉醒 创作者计划】开源、易用、强中文:文心一言4.5或是 普通人/非AI程序员 的第一款中文AI?
人工智能·百度·开源·文心一言·gitcode
未来之窗软件服务20 分钟前
chrome webdrive异常处理-session not created falled opening key——仙盟创梦IDE
前端·人工智能·chrome·仙盟创梦ide·东方仙盟·数据调式
AI街潜水的八角37 分钟前
深度学习图像分类数据集—蘑菇识别分类
人工智能·深度学习·分类
麟城Lincoln40 分钟前
【RHCSA-Linux考试题目笔记(自用)】servera的题目
linux·笔记·考试·rhcsa
飞睿科技1 小时前
乐鑫代理商飞睿科技,2025年AI智能语音助手市场发展趋势与乐鑫芯片解决方案分析
人工智能
许泽宇的技术分享1 小时前
从新闻到知识图谱:用大模型和知识工程“八步成诗”打造科技并购大脑
人工智能·科技·知识图谱
丰锋ff1 小时前
计网学习笔记第2章 物理层(灰灰题库)
笔记·学习
坤坤爱学习2.01 小时前
求医十年,病因不明,ChatGPT:你看起来有基因突变
人工智能·ai·chatgpt·程序员·大模型·ai编程·大模型学
蹦蹦跳跳真可爱5892 小时前
Python----循环神经网络(Transformer ----注意力机制)
人工智能·深度学习·nlp·transformer·循环神经网络