卷积神经网络笔记

卷积神经网络

分类 是神经网络一大应用

正在上传…重新上传取消

矩阵运算

正在上传…重新上传取消

正在上传…重新上传取消

正在上传…重新上传取消

神经网络的传播都是形如Y=WX+b的矩阵运算;为了给矩阵运算加入非线性,需要在隐藏层中加入激活层;输出层结果需要经过Softmax层处理为概率值,并通过交叉熵损失来量化当前网络的优劣。

算出交叉熵损失后,就要开始反向传播了。其实反向传播就是一个参数优化的过程,优化对象就是网络中的所有W和b(因为其他所有参数都是确定的)。b 偏差 bias

神经网络需要反复迭代

当计算机看到一张图片时(即输入一张图片),它所看到的是一系列的像素值。根据图片的分辨率与大小,计算机将看到的是一个32×32×3的数字阵列(3指代的是RGB—颜色值)。我们稍微将一下这个,假设我们有一张480 x 480的JPG格式图片,它的表达阵列即为480 x 480 x 3。这些数字中的每一个值都可以从0取到255,它描述了在这一点上的像素强度。这些数字虽然对于我们进行图像分类时没有任何意义,但其却是计算机在图像输入时唯一获取的数据。这个理念就是你给电脑指定相关数据排列,它将图像是一个特定的类别的可能性进行输出(如80—猫,15—狗,05—鸟等)。

垂直边缘检测器

过滤器

正在上传…重新上传取消

卷积运算在编程中

Python:conv_forward函数

为什么是垂直边缘检测?

正在上传…重新上传取消

输出图像中间有一道非常亮的区域,说明原图像中间出现的了明显的垂直边缘

正在上传…重新上传取消

Padding,边缘填充(例如3*3→5*5,p=1),防止边缘信息丢失。

很多种类的过滤器,但最好用奇数

卷积步长

正在上传…重新上传取消

正在上传…重新上传取消

正在上传…重新上传取消

向下取整,避免不是整数的情况

正在上传…重新上传取消

       

正在上传…重新上传取消

用了两个过滤器,所以是4*4*2,如果用了10个过滤器,最后得到4*4*10的输出图像。

不论多大的照片,过滤器决定的参数是固定的

比如有10个过滤器,3*3*3,加上偏差,最后参数为(27+1)*10=280

图片很大,参数却很少,这就是卷积神经网络的一个特征,叫做“避免过拟合”

这10个过滤器提取了10个特征,比如垂直边缘检测,水平边缘检测

池化层

正在上传…重新上传取消

最大化操作的功能就是只要在任何一个象限内提取到某个特征,它都会保留在最大池化的输出里。最大化的实际作用就是如果在过滤器中提取到某个特征 那么保留其最大值

卷积层-池化层-卷积层-池化层-全连接层-全连接层-全连接层-softmax

正在上传…重新上传取消

  • 池化层和最大池化层没有参数
  • 卷积层的参数相对较少

许多参数都存在于神经网络的全连接层

随着神经网络的加深 激活值会直接变小,如果激活值下降太快 也会影响网络性能

32*32*3→(f=5,6filters)→28*28*6     3072*4704

5*5的过滤器,加上偏差,一共26个参数,6个这样的过滤器,参数一共156个,参数数量很少,卷积网络映射这么少参数有两个原因,一是参数共享,如果你用3*3的过滤器检测垂直边缘,那么图片的左上角区域以及旁边的各个区域都可以使用这个3*3的过滤器,每个特征检测器以及输出都可以在输入图片的不同区域中使用同样的参数 以便提取垂直边缘或其他特征。

假如有这样一个数据集,其左下角和右下角可能有不同分布,也可能稍有不同 但是很相似,整张图片共享特征检测器 提取效果很好

二是稀疏连接

正在上传…重新上传取消

这个0只依赖于这个3*3的输入单元格,右边这个输出单元 仅于36个输入特征中的9个相连接,而且其他像素值都不会对输出有任何影响,这就是稀疏连接的概念。

神经网络可以通过这两种机制减少参数,以便于我们用更小的训练集来训练他

训练神经网络,要用梯度下降法

神经网络示例

经典网络:LeNet-5   针对灰度图像训练的,所以深度为1   例:32*32*1

正在上传…重新上传取消

AlexNet

正在上传…重新上传取消

卷积的三种模式

正在上传…重新上传取消

正在上传…重新上传取消

正在上传…重新上传取消

VGG

正在上传…重新上传取消

残差网络:(深达152层)

   非常非常深的网络是很难训练的 因为存在梯度消失和梯度爆炸的问题

正在上传…重新上传取消

普通网络变成残差网络的方法是加上所有的远跳连接

正在上传…重新上传取消

理论上,网络深度越深越好,但实际上 如果没有残差网络,对于一个普通网络来说 深度越深意味着 用优化算法越难训练 实际上 随着网络深度的加深 训练错误会越来越多。但是有了残差网络就不一样了 即使网络再深 训练的表现却不错 比如说错误会减少

正在上传…重新上传取消

残差网络起作用的主要原因就是 这些残差块学习恒等函数非常容易 你能确定网络性能不会受到影响 很多时候甚至可以提高效率 或者说至少不会降低网络效率 因此创建类似残差网络可以提升网络性能

正在上传…重新上传取消

1*1卷积

正在上传…重新上传取消

正在上传…重新上传取消

通过1*1卷积的简单操作来压缩或保持输入层中的信道数量 甚至是增加信道数量

Inception 网络或inception层的作用是 代替人工来确定卷积层中的过滤器类型 或者确定是否需要创建卷积层或池化层

正在上传…重新上传取消

减少计算成本

正在上传…重新上传取消

总结,如果在构建神经网络层的时候 不想决定池化层是使用1*1  3*3  还是5*5的过滤器 那inception模块就是最好的选择。我们可以使用各种类型的过滤器 只需把输出连接起来

通过使用1*1卷积来构建瓶颈层 从而大大降低计算成本

模块

正在上传…重新上传取消

正在上传…重新上传取消

所以inception网络只是很多这些你学过的模块 在不同位置重复组成的网络

在网络的最后几层通常称为全连接层 在它之后是一个softmax层来做出预测

正在上传…重新上传取消

这些分支所做的 就是通过隐藏层来做出预测 所以这个分支其实是一个softmax输出

另一个分支也包含了一个隐藏层 通过一些全连接层 然后有一个 softmax 来预测输出结果的标签

深度学习工作者对彼此的工作成果有一种强烈的敬意

迁移学习

从网上下载一些神经网络开源的实现 不仅把代码下载下来 也要把权重下载下来 有许多训练好的网络都可以下载 举个例子 imagenet数据集,它有1000个不同的类别 因此这个网络会有1个softmax单元 它可以输出1000个可能类别之一 你可以去掉这个softmax层 创建你自己的softmax单元 用来输出你要判断的类别

Again 如果这是一个1000个节点的softmax 而你只有三个输出 你需要你自己的softmax输出层来输出你要的标签 如果你有越多的标定的数据 你可以训练越多的层 极端情况下 你可以用下载的权重只作为初始化 用他们代替随机初始化 接着可以用梯度下降训练更新网络所有层的所有的权重

正在上传…重新上传取消

总之,迁移学习是非常值得你考虑的 除非你有一个极其大的数据集和非常大的计算量预算

数据增强   常用  垂直镜像对称、随机裁剪(并不完美,但实践中实用)

                 色彩转换  R G B三条通道加上不同的失真值  这么做的理由是 可能阳

光会有一点偏黄 或者是灯光照明有一点偏黄 这些可以轻易的改变图

像的颜色 但是对猫的识别或者是内容的识别 以及标签y 还是保持不

变的     这样学习算法对照片的颜色更改更具鲁棒性

正在上传…重新上传取消

正在上传…重新上传取消

李沐 深度学习

N维数组是机器学习和神经网络的主要数据结构

正在上传…重新上传取消

张量表示一个数值组成的数组,这个数组可能有多个维度

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值