umich cv-5-1 神经网络训练1

这篇具有很好参考价值的文章主要介绍了umich cv-5-1 神经网络训练1。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

这节课中介绍了训练神经网络的第一部分,包括激活函数的选择,权重初始化,数据预处理以及正则化方法

  • 训练神经网络1
    • 激活函数
    • 数据预处理
    • 权重初始化
    • 正则化方法

激活函数

这部分主要讨论我们之前提到的几种激活函数的利弊:
umich cv-5-1 神经网络训练1
首先我们看sigmoid函数,这种激活函数有着激活函数中常见的优点与缺点:
umich cv-5-1 神经网络训练1
优点方面,它可以使数据分布在0-1之间,可以很好地表示神经元的饱和放电现象
缺点方面
我们考虑使用这个激活函数进行梯度的反向传播:
umich cv-5-1 神经网络训练1
我们可以看到在x = 10或者x = -10时,传播的梯度都会接近于0,导致后面的所有梯度均变为0,这就会导致梯度消失,我们的神经网络无法学习
同时,sigmoid激活函数的输出并不是以0为中心:
umich cv-5-1 神经网络训练1
我们知道w梯度的反向传播的值于x相关,所以当x一直为正时,w梯度将取决于w的正负,所以梯度很可能会在正负之间横跳,这样也不利于神经网络的学习,但是在小数据集上还是可以使用,并且小哥指出这一点其实不是特别关键
最后,就是exp()这种非线性操作从底层来说很花费时间(相对于线性操作来说)
之后我们再来看看其它激活函数:
tanh它的优缺点与sigmoid函数大致相同:
umich cv-5-1 神经网络训练1
然后是最常用的relu激活函数:
umich cv-5-1 神经网络训练1
relu函数有很多优异的性质,比如不会导致饱和杀死梯度,计算开销低速度快,神经网络收敛的也快
但是还有一个人们一直担心的问题就是:
umich cv-5-1 神经网络训练1
小于0的数据永远不会被激活无法学习
因此人们又想出来了很多relu的变体:
leaky relu在小于0的区域加入一个线性函数,更进一步地,可以把小于0区域函数的系数作为一个可学习的参数加入神经网络,通过反向传播来更新优化
umich cv-5-1 神经网络训练1
elu 相对于leaky relu添加了鲁棒性,但是计算开销增大
umich cv-5-1 神经网络训练1
selu 对深度神经网络的效果很好 甚至可以不用batch normalization就可以训练深层神经网络 而其中的参数是固定的,是通过91页的数学推导得出的结果(震惊小哥一万年)
umich cv-5-1 神经网络训练1
最后再放上不同激活函数数据的统计以及小哥的建议:
umich cv-5-1 神经网络训练1
umich cv-5-1 神经网络训练1

数据预处理

数据的预处理最常见的就是从均值与标准差入手:
umich cv-5-1 神经网络训练1
当然也有少数使用PCA降维与数据白化:
umich cv-5-1 神经网络训练1
它们的基本思想都是减少模型的敏感性,使其更容易优化收敛:
umich cv-5-1 神经网络训练1
举个例子,Alexnet VGG ResNet都采用了不同的数据预处理方法,Alexnet减去整个图像的均值,VGG减去每个通道的均值,而Resnet减去每个通道的均值再除以每个通道的标准差
umich cv-5-1 神经网络训练1

权重初始化

在训练神经网络时,我们面临的问题就是如何进行权重矩阵的初始化
首先一个基础的想法就是都初始化为0矩阵,但是这样会导致所有的输出都是0,梯度都一样,无法学习
其次我们会想全0不行,那随机生成一些随机数应该可以了吧,我们可以使用python中randn函数,利用高斯分布生成随机数,但是这样的方法只使用于小的神经网络,不适用于更深的神经网络,为什么呢?
umich cv-5-1 神经网络训练1
我们把在不同层的数据分布图画出来,可以看到:
umich cv-5-1 神经网络训练1

umich cv-5-1 神经网络训练1
std系数小的时候,数据在深层会集中在0,std大的时候就会出现之前的过饱和现象,杀死梯度,这两种情况都会导致神经网络无法学习

针对上述问题,人们想出来了Xavier initialization,把之前的std改为除以输入维度开根号,这是针对全连接层,卷积层是卷积核的平方乘以输入维度再开根号,我们可以看到效果很好,基本维持住了数据的形状
umich cv-5-1 神经网络训练1
这里的原理主要就是我们想要使输入方差等于输出方差,这一点可以利用基本的概率论知识进行推导,建立在相互独立以及均值为0的假设上:
umich cv-5-1 神经网络训练1
但是上述神经网络中我们采用的是tanh激活函数,假如我们使用relu激活函数,那么均值为0的假设就不成立,这时候人们推导出针对relu的Kaiming initialization:
umich cv-5-1 神经网络训练1

上面提到了全连接层还有卷积层,还没有提到残差网络,针对残差网络比较特殊,如果我们使用上述初始化,使得输入与输出的方差相等的话,由于残差块还要加上一个x,所以方差是一定会增大的,这里我们可以把第一个卷积层采用kaiming initialization初始化,第二个卷积层直接初始化为0,这样我们残差块的输入与输出的方差就相等了:
umich cv-5-1 神经网络训练1

正则化

正则化方法最常用的就是我们直接衡量矩阵的L2distance等等:
umich cv-5-1 神经网络训练1

也有我们之前提到的dropout方法:
umich cv-5-1 神经网络训练1
这里的思想是神经网络中可能有冗余的特征,通过dropout我们可以放弃这些冗余的特征,降低特征与特征之间的关联,这样有利于我们提取到更重要更有效的特征:
umich cv-5-1 神经网络训练1

这里引入正则化的一般模式,思想是在训练的时候我们加入随机性,在测试的时候我们平均这种随机性防止混乱:
umich cv-5-1 神经网络训练1

dropout的实现也是如此:
umich cv-5-1 神经网络训练1
注意dropout只使用于全连接层,对于放弃了全连接层的网络一般使用batch normalization:
umich cv-5-1 神经网络训练1

既然提到了正则化的思想是增加随机性,我们可以在输入数据上做更多的处理,采用不同的数据增强方法:
我们可以旋转我们的图像:
umich cv-5-1 神经网络训练1
将图像划分为不同的区域:
umich cv-5-1 神经网络训练1
甚至改变颜色:
umich cv-5-1 神经网络训练1
总之我们可以做任何疯狂的事情来帮助我们的神经网络学习不同复杂的情况:
umich cv-5-1 神经网络训练1

除了数据增加,我们还有dropconnect,随机放弃神经元之间的连接:
umich cv-5-1 神经网络训练1
选择随机的池化区域:
umich cv-5-1 神经网络训练1
随机跳过一些残差块:
umich cv-5-1 神经网络训练1
随机将图像的一部分像素设为0(cutout):
umich cv-5-1 神经网络训练1
将不同的图像混合训练:
umich cv-5-1 神经网络训练1
最后是小哥的建议!
umich cv-5-1 神经网络训练1文章来源地址https://www.toymoban.com/news/detail-711380.html

到了这里,关于umich cv-5-1 神经网络训练1的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 利用GPU训练神经网络

    确实训练得要快多了 如果不确定是否有GPU,这种写法更好 判断一下,如果有再执行;这样才在CPU或者GPU上都能跑,优先GPU 修改部分代码 其实模型和损失函数不需另外赋值,但训练和测试部分需要

    2024年01月16日
    浏览(37)
  • umicv cv-summary1-全连接神经网络模块化实现

    全连接神经网络模块化实现 Linear与Relu单层实现 LossLayer实现 多层神经网络 不同梯度下降方法 Dropout层 今天这篇博文针对Assignment3的全连接网络作业,对前面学习的内容进行一些总结 在前面的作业中我们建立神经网络的操作比较简单,也不具有模块化的特征,在A3作业中,引导

    2024年02月08日
    浏览(42)
  • 神经网络变得轻松(第二部分):网络训练和测试

    概述 在上一篇名为神经网络变得轻松的文章中,我们曾研究过利用 赫兹量化交易软件配合完全连接的神经网络一起操作的 CNet 构造原理。 在本文中,我将演示一个示例,说明如何在 EA 中利用该类,并在实际条件下评估该类。 1. 定义问题 在开始创建智能交易系统之前,必须

    2024年02月16日
    浏览(42)
  • 神经网络小结:训练的全过程

    这一节我们主要是将之前的知识穿起来,形成一个整体。如果之前的没看过可以回翻一下专栏。但是在整体回归之前,我们还需要学习一个小知识点——随机初始化 在神经网络中,我们大致的训练流程就是:通过前向传播得出当前 θ theta θ 下的假设结果,使用代价函数对比

    2024年02月10日
    浏览(44)
  • 机器学习18:训练神经网络-最佳实践

    在【 机器学习17 】中, 笔者介绍了 反向传播算法。反向传播算法 是神经网络最常见的训练算法。它使得梯度下降对于多层神经网络来说是可行的。 TensorFlow 可以自动处理反向传播,因此我们不需要深入了解该算法。要了解其工作原理,请阅读 【 机器学习17

    2024年02月12日
    浏览(48)
  • 神经网络的训练过程、常见的训练算法、如何避免过拟合

    神经网络的训练是深度学习中的核心问题之一。神经网络的训练过程是指通过输入训练数据,不断调整神经网络的参数,使其输出结果更加接近于实际值的过程。本文将介绍神经网络的训练过程、常见的训练算法以及如何避免过拟合等问题。 神经网络的训练过程通常包括以下

    2024年02月05日
    浏览(45)
  • [pytorch]手动构建一个神经网络并且训练

    上一篇博客全都是说明类型的,实际代码能不能跑起来两说,谨慎观看.本文中直接使用fashions数据实现softmax的简单训练并且完成结果输出.实现一个预测并且观测到输出结果. 并且更重要的是,在这里对一些训练的过程,数据的形式,以及我们在softmax中主要做什么以及怎么做来进行说

    2024年02月05日
    浏览(34)
  • 机器学习17:训练神经网络-反向传播算法

    反向传播算法对于快速训练大型神经网络至关重要。本文将介绍算法的工作原理。 目录 1.简单的神经网络 2.激活函数 3.错误函数 4.正向传播 4.1 更新隐藏层 5.反向传播 5.1 求导数

    2024年02月12日
    浏览(54)
  • 如何看待第三代神经网络SNN?详解脉冲神经网络的架构原理、数据集和训练方法

    作者丨科技猛兽 编辑丨极市平台 本文首发于极市平台公众号,转载请获得授权并标明出处。 1 脉冲神经网络简介 2 脉冲神经网络原理 3 脉冲神经网络数据集 4 脉冲神经网络训练方法 5 脉冲神经网络评价指标 脉冲神经网络 (SNN) 属于 第三代神经网络模型 ,实现了更高级的生物

    2024年02月08日
    浏览(65)
  • 【机器学习】——续上:卷积神经网络(CNN)与参数训练

    目录 引入 一、CNN基本结构 1、卷积层 2、下采样层 3、全连接层 二、CNN参数训练 总结 卷积神经网络(CNN)是一种有 监督深度模型框架 ,尤其适合处理 二维数据 问题,如行人检测、人脸识别、信号处理等领域,是带有卷积结构的深度神经网络,也是首个真正意义上成功训练

    2024年02月10日
    浏览(52)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包