卷积神经网络进阶--基础知识

news2024/11/16 7:56:34

卷积神经网络进阶

b站课程链接碳基生物都能学会的神经网络(跳着看的)
因为我用的是pytorch,而该课程是用tenserflow的,所以主要记了一下理论

为什么要讲不同的网络结构

  • 不同的网络结构解决的问题不同
  • 不同的网络结构使用的技巧不同
    • 不同的神经网络有不同的子手段
    • 可以借鉴到其他的神经网络上
  • 不同的网络结构应用的场景不同
    • 比如在移动端上的要求运行快,服务器端就没有这么多要求

模型的进化

  • 更深更宽

    • ALexNet->VGGNet
  • 不同的模型结构

    • VGG->InceptionNet/ResNet
  • 优势组合

    • Inception+Res=InceptionResNet
  • 自我学习

    • 强化学习,不是人设计,是模型自学习出结构
    • NASNet
  • 实用

    • MobileNet

ALexNet

  • 5个卷积层 3个全链接层
  • 2个GPU使得神经网络更大,且训练的更快

  • padding自行选择添加

  • 参数数目就是卷积核的大小*输入通道数*输出通道数

  • 其网络结构可以借鉴的东西

    • 首次使用Relu:训练的速度非常快
    • 2—GPU的并行结构
    • 1,2,5卷积层后跟随max-pooling
    • 有全链接层的dropout
      • 全链接层参数占全部参数数目的大部分,容易过拟合
  • 并不一定所有的卷积后面都要加池化层

    • 使用了stride也可以做到输出size减小
  • dropout原理解释

    • 组合解释
      • 每次dropout都相当于训练了一个子网络
      • 最后的结果相当于很多子网络组合
    • 动机解释
      • 消除了神经单元之间的依赖,增强泛化能力
    • 数据解释
      • 对于dropout后的结果,总能找到一个结果与其对应
      • 数据增强
  • 网络结构其他细节

    • 数据增强,图片随机采样
      • [256,256] 采样 [224,224]
    • Dropout=0.5
    • Batch size=128
    • SGD momentum = 0.9
    • Learning rate=0.01 过一定次数降低为1/10
    • (训练多个模型做投票)7个CNN做ensemble:18.2%->15.4%

VGGNet

  • 网络结构
    • 更深
    • 多使用3*3的卷积核
      • 2个3*3的卷积层可以看作一层5*5的卷积层
      • 3个3*3的卷积层可以看作一层7*7的卷积层
    • 1*1的卷积层可以看作是非线性变换
    • 每经过一个pooling层,通道数目翻倍,因为会丢失特征,所以这样丢失的比较少
  • 网络结构——视野域

从下往上看,发现2个3*3的卷积核和1个5*5最后输出都是一样的size。但是多一层激活函数,参数少,效果更好

  • 网络结构——1*1

    • 多使用1*1的卷积核
    • 根据公式,使用1*1的卷积核输入输出size不变,但在通道数上实现了降维,在加多个卷积核的情况下也不损失信息
    • 1*1的卷积核相当于一次非线性变换
  • VGGNet

    • LRN:局部归一化,比如他和周围五层做归一化
    • 在后面神经图比较小的时候再加卷积层,不会增加太多消耗
    • 总体参数保持不变,是因为全链接层的参数是比较多的,跟前面的卷积池化不在一个量级上
  • 训练技巧

    • 先训练浅层网络如A,再去训练深层网络。例如:用VGGNet-A先训练,训练好的参数用到B中,新增的层参数随机,然后再训练
    • 多尺度输入
      • 不同尺度训练多个分类器,然后做ensemble
      • 随机使用不同的尺度缩放然后输入分类器进行训练

ResNet

VGGNet已经加深到一定层次,再加深就没有什么效果了

  • 加深层次的问题解决

    • 假设:深层网络更难优化,而非深层网络学不到东西

      • 深层网络至少可以和浅层网络持平
      • y=x,虽然增加了深度,但误差不会增加
    • F(x)是经过网络后学到的东西,即残差,输出是包括x的恒等变换的,说明及时F(x)为0,至少也跟浅层网络持平,F(x)不为0能学到的话就有效果,且更深

  • 括号里的是残差子结构[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-2I7FZQxn-1674398359690)(/Users/xuan/Library/Application Support/typora-user-images/image-20230118220913404.png)]

  • 参数数目一定程度上能反应模型的容量,太多的容量容易过拟合,所以这里强化了卷积层,就弱化了全链接层

  • 残差网络模型结构总结

    • 优点
      • 残差结构使得网络需要学习的知识更少,容易学习(主要的部分是通过一个恒等式保留下来)
      • 残差结构使得每一层的数据分布接近,容易学习(更接近输入的数据分布)

卷积神经网络调参

  • 包括:
    • 网络的结构、参数个数
    • 学习率、参数初始化
  • 调参手段
    • 更多的优化算法,比如随机梯度下降和动量梯度下降
    • 激活函数
    • 网络初始化:初始化能让模型在短时间达到好的效果
    • 批归一化:适用于更深层次的网络
    • 数据增强
    • 更多的调参方法

更多的优化算法

学习率很大容易梯度爆炸,导致不收敛

  • AdaGrad算法
  • - 调整学习率 - 学习率随着训练变得越来越小 - 优点: - 前期,regularizer较小,放大梯度 - 后期,regularizer较大,缩小梯度 - 梯度随训练次数降低 - 每个分量有不同的学习率 - 缺点 - 学习率设置太大,导致regularizer影响过于敏感 - 后期,regularizer积累值过大,提前结束
  • RMSProp

  • Adam
    • 集众家之长,常用

  • 学习率自适应
    • 让学习率按照某种规则去衰减
  • 分不同情况用不同算法
    • 稀疏数据,使用学习率自适应方法
    • SGD(随机梯度下降)通常训练时间更好,最终效果较好,但需要好的初始化和learning rate
    • 需要训练较深较复杂的网络且需要快速收敛时,推荐使用adam
    • Adagrad,RMSprop,Adam是比较相近的算法,在相似的情况下表现差不多

激活函数

激活函数的不同,会影响训练的速度,以及最后的结果

Sigmoid

  • 输入非常大或非常小时没有梯度

  • 输出均值非0

    • 对于神经网络的学习是不友好的
  • Exp计算复杂

    • 会导致训练比较慢
  • 梯度消失

    • d f ( x ) d x = f ( x ) ( 1 − f ( x ) ) \frac{df(x)}{dx}=f(x)(1-f(x)) dxdf(x)=f(x)(1f(x))

    • 每经过一层都要乘当前梯度,即两个小于1的数,那么对于层次比较深的网络来说,就会造成最后梯度消失

Tanh

  • 输入非常大或非常小时没有梯度
  • 输出均值为0
    • 优点
  • 计算复杂

ReLU

  • 不饱和(梯度不会过小)
    • 在>0的时候就是自己
  • 计算量小
  • 收敛速度快
  • 输出均值非0
    • 一定>0
  • Dead ReLU
    • 一个非常大的梯度流过神经元,就不会再对数据有激活现象了
    • 负数其梯度一直是0,不更新
  • 解决
  1. Leaky-ReLU
  1. ELU

  1. Maxout

使用技巧

  • ReLU
    • 小心设置learning rate
    • 一般从小的开始
  • 不要使用sigmoid
  • 使用Leaky Relu、maxout、ELU
  • 可以试试tanh,但不要抱太大期望

网络初始化

0初始化

  • 全部为0
    • 单层网络可以
    • 多层网络会使梯度消失
      • 链式法则
  • 如何查看初始化结果好不好
    • 查看初始化后各层的激活值分布
    • 是都在0-1之间(好),还是集中在0或者1(不好)

正态分布初始化

  • 均值为0,方差为0.02的正态分布初始化

    • tanh、ReLU激活函数
  • 均值为0,方差为1的正态分布初始化

    • tanh、ReLU激活函数
  • 所以以上两种对于高层网络都不是好的初始化

  • 好的方法

    • 输入通道数和输出通道数取平均值

  • 批归一化

    • 每个batch在每一层上都做归一化
    • 让每一层的分布都比较统一,控制在均值为0,方差为1
    • 但是会导致一个问题,每个batch的分布不能代表整体,导致已经提取出来的特征被改了
    • 所以为了确保归一化能够起到作用,另设两个参数来逆归一化,保证原来提取出来的特征是有效的。
      • 如果说归一化后结果是有效的,那么就有效
      • 如果说归一化后结果是无效的,那么就通过这两个参数,返回原来不归一化的样子

数据增强

  • 归一化
  • 图像变换
    • 翻转、拉伸、裁剪、变形
  • 色彩变换
    • 对比度、亮度
  • 多尺度裁剪

更多调参技巧

  • 做深度学习的话,一定要拿到更多的数据

  • 给神经网络添加层次

  • 紧跟最新进展,使用新方法

  • 增大训练的迭代次数

  • 尝试正则化

    • 损失函数上加一个正则化项
    • 减小过拟合的趋势
  • 使用更多的GPU来加速训练

  • 可视化工具来检查中间状态

    • 损失
      • 训练集
      • 测试集
    • 梯度
      • 梯度比较大,那么说明还需要训练
    • 准确率
      • 对于分类问题用分类正确率
      • 对于回归问题用MSE
    • 学习率
  • 不同的可视化结果告诉我们什么

  • 在标准数据集上训练,看网络表现怎样
  • 在小数据集上测试,过拟合的效果正好是预期所要的
  • 在数据集分布平衡,正类负类不平衡
  • 使用预调整好的稳定模型结构,使用论文里别人千锤百炼的
  • Fine-tuning
    • 预训练好的网络结构上进行微调
    • 包括训练好的参数等等
    • 是最好的方法,在各种比赛中使用的最多

循环神经网络

  • 为什么需要循环神经网络
  • 循环神经网络
  • 多层网络和双向网络
  • 循环神经网络相比卷积神经网络的类型少
  • 最常用的就是长短时记忆网络LSTM
  • 用于文本分类问题

为什么需要循环神经网络

  1. 1对1,普通神经网络、卷积神经网络可以处理
  2. 1对多,图片生成描述
  3. 多对1,文本分类(文本情感分析)
  4. 多对多:encoding-decoding,机器翻译
  5. 事实多对多:视频解说

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/176106.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【人工智能原理自学】卷积神经网络:打破图像识别的瓶颈

😊你好,我是小航,一个正在变秃、变强的文艺倾年。 🔔本文讲解卷积神经网络:打破图像识别的瓶颈,一起卷起来叭! 目录一、手写体识别二、“炼丹”一、手写体识别 在机器学习、神经网络领域&#…

【数据分析】(task4)数据可视化

note matplotlib的四个容器: Figure:顶层级,用来容纳子 Axes,一组具体绘图元素和画布(canvas)。 画板。Axes:matplotlib宇宙的核心,容纳了大量元素用来构造一幅幅子图,一…

【QT5.9】与MFC对比学习笔记-感悟篇【2023.01.22】

简介 在公司从事MFC的程序维护一年两个月,期间因为公司被QT告侵权对QT产生了抵触的心情。现在无奈要用到,需要抓紧学习了。 正文 1.数据模型 先说下刚用到的模型,模型也叫数据模型,也就是耳熟的MVC架构中的M(Model…

我用笨办法啃下了一个开源项目的源码!

目录 1、从最简单的源码开始:别幻想一步登天 2、循序渐进:先搞定底层依赖的技术 3、一定要以Hello World作为入口来阅读 4、抓大放小,边写注释边画图 5、反复三遍,真正理解源码 6、借力打力,参考源码分析书籍及博客 7…

研一寒假C++复习笔记--引用的使用

​​​​​​​ 目录 1--引用的基本语法 2--引用的注意事项 3--在函数参数中使用引用 4--引用作函数的返回值 5--引用的本质 6--常量引用 1--引用的基本语法 引用相当于给变量起别名&#xff0c;其基本语法如下&#xff1a; 数据类型 &别名 原名 # include <…

Linux操作系统之进程信号

代码存放在&#xff1a;https://github.com/sjmshsh/System-Call-Learn/tree/master/signal 我们先来看一张图&#xff0c;了解一下通过阅读本博客&#xff0c;你可以收获什么。 背景知识 首先我说明一点 信号 ! 信号量 我们这篇文章讲解的是信号&#xff0c;不是信号量 信…

POJ3263. Tallest Cow题解(c++ 前缀和)

POJ3263. Tallest Cow 传送门&#xff1a;Tallest Cow 题目&#xff1a; 有N头牛站成一行。两头作能够相支看见&#xff0c;当且仅当它们中间的牛身高都比它们矮。现在&#xff0c;我们只知道其中最高的牛是第P头&#xff0c;它的身高是H&#xff0c;不知道剩余N-1头牛的身高。…

大数据之Kafka高级知识点

文章目录前言一、分片和副本机制&#xff08;一&#xff09;分片机制&#xff08;二&#xff09;副本二、Kafka如何保证数据不丢失&#xff08;一&#xff09;Producer生产者&#xff08;二&#xff09;Broker&#xff08;三&#xff09;Consumer消费者三、消息存储和查询机制总…

重新设计 TCP 协议

看一段关于 TCP 协议的历史讨论&#xff0c;源自&#xff1a;The design philosophy of the DARPA internet protocols 读这段文字时&#xff0c;你可能觉得这不是在谈 TCP&#xff0c;而是在创造一个新协议&#xff0c;但事实上这就是 TCP 在被创造过程中真实的纠结。 现在来…

Java知识点细节简易汇总——(6)面向对象编程(中级部分)

一、IDE快捷键 删除当前行, 默认是 ctrl Y 自己配置 ctrl d复制当前行, 自己配置 ctrl alt 向下光标补全代码 alt /添加注释和取消注释 ctrl / 【第一次是添加注释&#xff0c;第二次是取消注释】导入该行需要的类 先配置 auto import , 然后使用 altenter 即可快速格式化…

Day867.事务隔离 -MySQL实战

事务隔离 Hi&#xff0c;我是阿昌&#xff0c;今天学习记录的是关于事务隔离的内容。 提到事务&#xff0c;肯定不陌生&#xff0c;和数据库打交道的时候&#xff0c;总是会用到事务。 最经典的例子就是转账&#xff0c;你要给朋友小王转 100 块钱&#xff0c;而此时你的银行…

[前端笔记——CSS] 10.层叠与继承、选择器

[前端笔记——CSS] 10.层叠与继承、选择器1.层叠与继承1.1 冲突规则1.2 继承1.3 层叠1.4 CSS位置的影响2.选择器2.1 选择器是什么&#xff1f;2.2 选择器列表2.3 选择器的种类类型、类和 ID 选择器标签属性选择器伪类与伪元素运算符选择器参考表1.层叠与继承 1.1 冲突规则 CS…

一起自学SLAM算法:8.1 Gmapping算法

连载文章&#xff0c;长期更新&#xff0c;欢迎关注&#xff1a; 下面将从原理分析、源码解读和安装与运行这3个方面展开讲解Gmapping 算法。 8.1.1 Gmapping原理分析 首先要知道&#xff0c;Gmapping是一种基于粒子滤波的算法。在7.7.2节中已经提到过用RBPF&#xff08;Rao-…

linux系统中使用QT实现APP开发的基本方法

大家好&#xff0c;今天主要和大家分享一下&#xff0c;如何使用QT进行APP的主界面开发的方法。 目录 第一&#xff1a;APP界面开发基本简介 第二&#xff1a;滑动界面实现 第三&#xff1a;APP界面开发实现 第四&#xff1a;APP主界面测试 第一&#xff1a;APP界面开发基本…

ARP渗透与攻防(一)之ARP原理

ARP原理 前言 ARP攻击就是通过伪造IP地址和MAC地址实现ARP欺骗&#xff0c;能够在网络中产生大量的ARP通信量使网络阻塞&#xff0c;攻击者只要持续不断的发出伪造的ARP响应包就能更改目标主机ARP缓存中的IP-MAC条目&#xff0c;造成网络中断或中间人攻击。ARP攻击主要是存在…

CSS3基础内容

目录 CSS基本样式 选择器分类 标签选择器 类选择器 利用类选择器画三个盒子 多类名 id选择器 id选择器和类选择器的区别 通配符选择器 CSS字体属性 字体粗细font-weight 字体样式 CSS文本属性 CSS的引入方式 行内样式表&#xff08;行内式&#xff09; 内部样式表…

2023年集卡活动简记

文章目录支付宝总评&#xff1a;【强烈推荐】年味浓&#xff0c;必中奖&#xff0c;单倍金额不算少。只关注开奖可以除夕当天玩儿。集卡分1.88元难度&#xff1a;【非常低】必中奖时间投入&#xff1a;【较少】无需打开其他App&#xff0c;比较轻松。操作体验&#xff1a;【好】…

深度理解卷积神经网络

神经网络包括卷积层&#xff0c;池化层&#xff0c;全连接层。一个最简单的神经元结构&#xff0c;假如有三个输入&#xff0c;都对应一个权重参数&#xff0c;然后通过权重加起来&#xff0c;经过一个激活函数&#xff0c;最后输出y。CNN中独特的结构就是卷积层&#xff0c;就…

拓展:阿里巴巴中文站架构演进分析【部分】

文章目录前言阿里巴巴中文站架构发展历程阿里巴巴第五代架构数据架构的复杂前言 由学习整理而来&#xff0c;并非有意抄袭。如果有冒犯行为&#xff0c;请及时联系作者进行处理&#xff01; 阿里巴巴中文站架构发展历程 时间关键技术1999第一代网站架构Perl&#xff0c;CGl&…

【实操案例八】元组、集合操作 实例代码及运行效果图!

任务一&#xff1a;我的咖啡馆你做主 方法一&#xff1a;使用列表 # 任务一&#xff1a;我的咖啡馆你做主 # 方法一&#xff1a;使用列表lst[蓝山,卡布奇诺,拿铁,皇家咖啡,女王咖啡,美丽与哀愁]for i in lst:print(lst.index(i)1,.,i,end\t) print()while True:chice int(in…