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

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

时间:2023-10-28 19:34:03浏览次数:28  
标签:训练 迭代 下降 我们 学习 神经网络 umich cv

这节课中介绍了训练神经网络的第二部分,包括学习率曲线,超参数优化,模型集成,迁移学习

学习率曲线

在训练神经网络时,一个常见的思路就是刚开始迭代的时候学习率较大,然后随着迭代次数的增加,学习率逐渐下降,下面我们就来介绍几种学习率下降的方法:
img
第一种方法是我们在某些特定的迭代节点,将学习率乘以某个值比如0.1,这种方法显然又引入了更多的超参数,我们不想这样做,所以又设计了其它的下降曲线
img
比如上图的cos linear 等等 我们有时会发现保持学习率不变也是个不错的选择
实际上不同下降方法之间没有明显的对比统计,大多是根据不同领域习惯选择不同方法,比如计算机视觉用cos,大规模自然语言处理用linear等

在训练的时候,我们应该在发现验证集上准确率下降的时候就停止训练:
img

超参数优化

在训练神经网络的时候,在不同的超参数之间选择,我们常常会采用网格搜索,将不同的值排列组合,然后去训练
img
有时我们也会选择随机搜索,在设置的范围内随机选取相应的超参数的值:
img
在实际应用中往往随机搜索更好,从下图可以看出,最上面的绿色曲线表示准确率,网格搜索只能表示曲线上固定的几个值,而随机搜索引入了更多的随机性,从而可能得到更好的结果:
img

在选择超参数的过程中,我们一般有具体的流程:
img
第一步我们在什么都没有设置的情况下,可以先运行一下模型,看看损失是否正常,比如我们采用softmax函数输出c个类的得分,它的初始损失应该是log(c)
第二步我们先在几个比较小的样本集数据中训练我们的神经网络,调整网络架构,调整学习率与权重,注意不使用正则化方法,让我们的模型在小数据集上能达到100%的准确度,通过画迭代次数与loss的曲线观察,如果损失一直不下降,说明我们采用的学习率太小,如果损失突然下降到0或者损失爆炸,说明我们采用的学习率太大,并且上述两种情况都说明我们的初始化很糟糕
第三步我们根据前几步确定的结构,在此基础上使用权重衰减,采用不同的学习率,找到一个学习率,能在固定的迭代步骤内,使得损失下降幅度最大:
img
第四步我们选择第三步中的一些学习率与权重衰减,迭代几次,找出比较好的模型用于第五步,迭代更长时间,然后我们画出相关的学习曲线(损失与迭代次数的统计图,训练集与验证集在不同迭代次数上的统计图)作进一步的观察:
img

对于损失与迭代次数的统计图
img
这种在一段迭代次数内损失不下降说明我们初始化较为糟糕
img
这种出现损失平原的情况说明我们可以尝试学习率下降的方法
img
当学习率下降损失依然下降,说明我们采用的下降方法下降的太早了

对于训练集与验证集在不同迭代次数上的统计图
img
一直上升说明我们还可以训练更长时间
img
这种差异过大的曲线说明我们过拟合了,需要提升正则化强度或者引入更多数据
img
这种差异过小的曲线说明我们under fitting,需要训练更长时间,选择更复杂的模型

模型集成

模型集成常见的思路就是训练不同的模型,然后取它们结果的平均值:
img
我们也可以采用一个模型,在不同的训练时间输出不同的结果,再取平均值,采用循环学习率很有利于这种snapshot集成的方法:
img
同时我们也可以将这种思想应用于参数向量:
img

迁移学习

迁移学习是为了解决数据量不足的问题
img
先在给定的数据集上使用某种卷积网络训练图像数据,然后去除最后一层不获取预测得分,使用这个卷积网络作为特征向量提取器,冻结之前训练的层,然后再使用其它方法输出结果
比如右图2009年专门为数据集设计的神经网络
其余两个是在VGG上预训练 然后使用svm或者逻辑回归输出结果 得到的效果就比专门设计的要好

如果我们有更大的数据集,我们可以对cnn网络架构进行进一步的训练,使其能完成更多类型的工作
img
事实证明cnn网络结构的优化可以为许多下游的工作带来提升
img
上图说明了我们尝试在不同的数据集上应用cnn进行迁移学习需要进行的操作,假如数据集与imagenet相似,并且数据量较小,我们可以使用线性分类器输出结果,假如数据量较大,我们可以利用这些数据微调一些层,假如数据量较大并且与imagenet数据集不想死,我们需要在更多层上进行微调,如果数据量较小,我们就需要更多的尝试

下面两张图展现了这种迁移学习方法的广泛应用:
img
img
可以在物体检测 语言建模等方面应用

img
但是对于迁移学习也存在一些疑问,有人指出这种方法并没有比从头开始设计网络的方法好很多,小哥的建议是如果有充足的数据和算力,我们可以从头开始设计并且调整网络,大多数情况下使用预训练的网络加上微调步骤十分高效

标签:训练,迭代,下降,我们,学习,神经网络,umich,cv
From: https://www.cnblogs.com/dyccyber/p/17794500.html

相关文章

  • OpenCV介绍与GUI特征(一)
    @TOC编辑者:廿瓶鲸(和鲸社区Siby团队成员)IT科程FREE0.1OpenCV-Python教程简介OpenCVOpenCV于1999年由GaryBradsky在英特尔创建,第一个版本于2000年问世。VadimPisarevsky加入GaryBradsky,管理英特尔的俄罗斯软件OpenCV团队。2005年,OpenCV被用在Stanley上,该车赢得了2005年的DARPA大......
  • umich cv-5-1 神经网络训练1
    这节课中介绍了训练神经网络的第一部分,包括激活函数的选择,权重初始化,数据预处理以及正则化方法训练神经网络1激活函数数据预处理权重初始化正则化方法激活函数这部分主要讨论我们之前提到的几种激活函数的利弊:首先我们看sigmoid函数,这种激活函数有着激活函数中常见......
  • 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版本之前,普通用户只能查看分配给......