首页 > 其他分享 >umich cv-5-1 神经网络训练1

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

时间:2023-10-28 11:45:00浏览次数:33  
标签:函数 梯度 relu cv 神经网络 umich 激活 我们

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

激活函数

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

数据预处理

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

权重初始化

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

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

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

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

正则化

正则化方法最常用的就是我们直接衡量矩阵的L2distance等等:
img

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

这里引入正则化的一般模式,思想是在训练的时候我们加入随机性,在测试的时候我们平均这种随机性防止混乱:
img

dropout的实现也是如此:
img
注意dropout只使用于全连接层,对于放弃了全连接层的网络一般使用batch normalization:
img

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

除了数据增加,我们还有dropconnect,随机放弃神经元之间的连接:
img
选择随机的池化区域:
img
随机跳过一些残差块:
img
随机将图像的一部分像素设为0(cutout):
img
将不同的图像混合训练:
img
最后是小哥的建议!
img

标签:函数,梯度,relu,cv,神经网络,umich,激活,我们
From: https://www.cnblogs.com/dyccyber/p/17793896.html

相关文章

  • Log4J2漏洞(CVE-2021-44228)原理
    Log4J2漏洞(CVE-2021-44228)原理一、漏洞简介ApacheLog4j2是一个基于Java的日志记录工具,当前被广泛应用于业务系统开发,开发者可以利用该工具将程序的输入输出信息进行日志记录。2021年11月24日,阿里云安全团队向Apache官方报告了ApacheLog4j2远程代码执行漏洞。该漏洞是由于A......
  • OpenCV4.1.0中的GPU版本的SURF特征点提取类的命名空间、所在头文件和类名
    OpenCV4.1.0中的GPU版本的SURF特征点提取类的命名空间、所在头文件和类名情况如下:类名:cv::cuda::SURF_CUDA所在的命名空间:cv::cuda所在头文件:$\build\install\include\opencv2\xfeatures2d。其中,$是编译OpenCV4.1.0的基础模块和扩展模块时,OpenCV4.1.0源代码所在的位置。 翻......
  • 介绍LiteCVR平安校园安防视频监控系统方案设计
    随着校园信息化建设的不断发展,信息服务在校园管理中的作用也越来越强。在保障学生安全与校园高效管理上,人工智能做出了极大贡献,安防监控系统LiteCVR基于互联网、大数据、云计算的智慧管理,为提高校园监管标准,推进学校信息化建设,打造数字化校园、智慧校园。1、视频监控系统高清视......
  • 【CNN-GRU预测】基于卷积神经网络-门控循环单元的单维时间序列预测研究(Matlab代码实现
    ✅作者简介:热爱科研的Matlab仿真开发者,修心和技术同步精进,matlab项目合作可私信。......
  • OpenCV4 :基础图像处理与操作(一)
    OpenCV4:基础图像处理与操作(一)目录图像的基本概念与术语图像表示基础术语图像读取与显示方法C++示例色彩空间的理解与转换色彩空间RGB(红绿蓝)CMYK(青色、黄色、品红、黑色)HSV(色相、饱和度、明度)色彩转换图像对象的创建与赋值C++示例基础图像操作:像素读写与算术运算像素读写算术运......
  • OpenCV4 :并行计算cv::parallel_for_
    OpenCV4:并行计算cv::parallel_for_在计算机视觉和图像处理领域,OpenCV(开源计算机视觉库)是一个非常强大和广泛使用的库。随着图像分辨率的提高和计算任务的复杂度增加,实时处理变得越来越困难。为了解决这个问题,OpenCV提供了并行处理能力,可以显著提高代码的性能。本文将介绍如何利用O......
  • RTSP视频流媒体服务器LiteCVR v3.1更新:通道收藏优化
    在安防视频监控行业,监控摄像头也正从"看得见"到"看得清"开始转变,现在的网络智能摄像头,不仅可以拥有高清超高清的监控画质,还能对记录的视频中的人或物体进行识别。近期我们对LiteCVR增加了普通用户的收藏功能,今天来简单介绍一下。在LiteCVRv3.1版本之前,普通用户只能查看分配给自己......
  • RTSP视频监控平台LiteCVR v3.1更新:通道收藏优化
    在安防视频监控行业,监控摄像头也正从"看得见"到"看得清"开始转变,现在的网络智能摄像头,不仅可以拥有高清超高清的监控画质,还能对记录的视频中的人或物体进行识别。近期我们对LiteCVR增加了普通用户的收藏功能,今天来简单介绍一下。在LiteCVRv3.1版本之前,普通用户只能查看分配给......
  • RTMP流媒体服务器LiteCVR支持在iOS播放WebRTC低延时视频流
    视频监控设备是安防行业的细分专业领域,近年来,视频监控业务正在向其他领域加速渗透。众所周知,iOS系统支持HLS流,但是HLS流延时高,无法满足实时流的要求;而WebRTC播放延时低,因此,很多用户希望能在iOS系统上播放Webrtc视频流。针对用户的这一需求,LiteCVR平台灵活的视频能力,可以完全满足。......
  • pip安装opencv-contrib-python库报错
    背景介绍:opencv-python是opencv的python代码库,包含一些基本的主要的函数,而opencv-contrib-python可以理解为是opencv-python库的高配版本,它还额外包含一些扩展函数与新研发的正在使用阶段的函数等等。笔者在Windows中使用pycharm建立一个新的虚拟环境,想要安装opencv-contrib-p......