卷积神经网络(CNN)的讲解(李宏毅老师视频课总结,小白快速理解)


0 前言

卷积神经网络(Convolutional Neural Network, CNN)的人工神经元可以响应一部分覆盖范围内的周围单元,对于图像处理有出色表现,而且对比全连接神经网络,CNN的结构更简单参数更少。卷积神经网络主要由这几类层构成:输入层、卷积层、池化(Pooling)层和全连接层(全连接层和常规神经网络中的一样)。本文就按CNN的结构顺序为大家介绍。
在这里插入图片描述

1 卷积层

1.1 基本原理

在图像处理中常有一个问题,比如下图的一只鸟,如果要使得模型识别出鸟的信息,实际上我们并不需要学习整张图片,而是只需要关注特定部位,比如鸟嘴,羽毛等等。此时仅需要获得特定部位“窗口”的信息,就能有好的效果了。基于这种窗口思想,CNN在图像处理上有显著的效果。
在这里插入图片描述
因为“窗口”的存在,无论鸟嘴在哪个位置,都能探测到,这里的“窗口”就是CNN中的filter(滤波器):
在这里插入图片描述
假设输入是一个6*6的黑白图片,用0和1表示黑白像素点,将一个filter(滤波器)放在右上角覆盖一块跟filter一样大的区域之后,对应元素相乘,然后求和,然后向右或者向下移动filter,然后再重复计算,这就是“卷积”(这里的“卷积”和数学上的卷积并不是完全一样的,只是借用了移动和相乘相加的概念)。

第一次计算得到了结果为3:
在这里插入图片描述
如果向右移动一格,计算得到-1:
在这里插入图片描述
这里可以设置不同的移动间隔,就会得到不同的结果,最终遍历整个图像后可以得到一个矩阵。这里我们设置步长为1,移动顺序为从左到右,从上到下,输出结果为一个4*4的矩阵:
在这里插入图片描述
这里观察输出矩阵中含有两个3的值,对应到图片和filter则是主对角线上均为3个“1”。简单理解就是,当图片中出现和filter中一样的结构时,得到的输出就会很大。

除了filter1,也会有其他的filter,得到其他的输出结果,设置有多少个滤波器,最后就会输出多少组特征映射:
在这里插入图片描述
如果图片是彩色的,也就是需要RGB三组值来描述,那么图片就是三通道的,一个(filter)滤波器就需要是333的规模。这里可以理解为滤波器的“长度”和“宽度”都可以根据情况设置,而“深度”必须和输入一致:
在这里插入图片描述

1.2 类比全连接神经网络

这些操作似乎和常见的神经网络模型相去甚远,讲到这里可能会有人问,这和全连接的神经网络有什么关系?
在这里插入图片描述
对于全连接神经网络,需要把6*6的图像Reshape成36*1的输入,那么filter可等价于权值w的向量,最后的3就是一个结点的输出,本质上一样是相乘后相加。这里注意“卷积”操作等效于激励函数前的相乘后相加,一般卷积之后还需要经过激励函数层,这里就假设激励函数就是线性的。

下面是按照全连接神经网络的方式来看CNN:
在这里插入图片描述
将输入展开之后,可见filter实际仅是对其中九个值进行运算,filter的值就是权值。已经只用了比较少的参数,因为一次只对9个计算。

而且一次是共用同一组的权重,分享权值:
在这里插入图片描述
这样做也可以回答为什么说CNN是一种参数更少的网络结构。

2 池化层

对于图片来说,降采样不会改变物体的形态:
在这里插入图片描述
所以一般在通过卷积层获得特征(feature map) 之后 ,下一步要做的就是利用这些特征进行整合、分类。理论上来讲,所有经过卷积提取得到的特征都可以作为分类器的输入(比如 softmax 分类器) ,但这样做会面临着巨大的计算量,此时我们就会采用 池化层将得到的特征(feature map) 进行降维。池化一般有两种:

  1. 最大池化:max-pooling——选取指定区域内最大的一个数来代表整片区域
  2. 均值池化:mean-pooling——选取指定区域内数值的平均值来代表整片区域

这里用Max-pooling为例,介绍池化。首先根据池化的规模设置,将卷积层的输出进行分组:
在这里插入图片描述
每个分组选出一个最大值:
在这里插入图片描述
那么原数据的规模将原来6*6,变成4*4,再变为2*2:
在这里插入图片描述
卷积+池化的过程可以重复多次。

3 全连接层

我们最终的目的是对这张照片进行识别。那现在得到的是一堆22的矩阵,全连接层将根据这堆22的矩阵进行来得到每个分类类别对应的概率值。全连接层是最基础的神经网络模型,不熟悉的童鞋可以移步我另一篇博客:全连接神经网络。前面的卷积层采用的是“局部连接”的思想。

最后将卷积+池化后feature map拉直,丢入全连接神经网络:
在这里插入图片描述
最终这个网络结构训练的除了全连接层的参数,还有就是那些滤波器或者称为卷积核(filter)。

用所有元素求和来表征滤波器被激发的程度,到找对于样本,可以让这个filter的激发的程度最大。可以用梯度下降法:
在这里插入图片描述

4 CNN的应用和启示

4.1 围棋

想必大家都听说过大名鼎鼎的围棋AI“阿尔法狗”吧,就是基于CNN的模型,那么为什么可以用CNN来训练围棋呢?
在这里插入图片描述
首先是因为围棋本身也是近似于图像的样式,有整体的图案,也有局部的图案,能够跟图片一样使用filter。其次是这些局部图案也是可以出现在不同区域的。

但是实际应用中“阿尔法狗”没有用pooling层,从原文就可以读出:
在这里插入图片描述
因为对于围棋来说,降采样不能保持棋局的信息,要求每个点的信息都不能舍弃。

4.2 文本识别

之前有提到filter进行扫描的时候可以从左到右,从上到下。但是在文本数据中,例如下图中的文本是横向排列,那么只能是从左到右扫描,从上到下效果就会很差。
在这里插入图片描述

  • 3
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 李宏毅是一位著名的机器学习专家,他在GAN(生成对抗网络)方面做出了重要贡献。GAN是一种包含两个神经网络的模型,一个称为生成器(Generator),另一个称为判别器(Discriminator)。GAN的目标是让生成器尽可能地生成与真实样本相似的数据。 在李宏毅的作业代码讲解中,他会介绍GAN的基本原理、算法和代码实现。首先,他会讲解生成器和判别器的结构和原理,包括生成器如何生成样本,以及判别器如何对生成的样本进行评价。 然后,李宏毅会详细解释GAN的损失函数和优化方法。他会讲解如何使用反向传播算法更新生成器和判别器的参数,以使它们在训练中达到更好的表现。此外,他还会解释GAN的训练过程中可能遇到的一些问题,并提供解决方法。 在代码方面,李宏毅会给出一个简单的实例,展示如何使用Python和深度学习框架(如TensorFlow或PyTorch)来实现一个基本的GAN模型。他会详细解释每个代码部分的功能和作用,并给出相应的代码注释,方便学习者理解。 总的来说,李宏毅的GAN网络作业代码讲解涵盖了GAN的基本原理、算法和实现细节。通过他的讲解,学习者可以更好地理解并应用GAN,从而在生成对抗网络领域取得更好的成果。 ### 回答2: 李宏毅是一位著名的机器学习和深度学习专家,他的GAN(生成对抗网络)网络作业代码讲解十分受欢迎。 GAN是一种由生成器和判别器组成的对抗性网络模型。生成器尝试生成与真实数据相似的新样本,而判别器则负责判断这些样本是真实的还是伪造的。GAN网络的训练过程是通过生成器和判别器之间的对抗来进行的。 在李宏毅的GAN网络作业代码讲解中,他通常会从基本概念开始讲解,介绍GAN网络的工作原理和训练过程。他会解释生成器和判别器的结构以及它们的作用,包括如何设计合适的神经网络模型来实现生成器和判别器。 接着,他会具体解释代码中各部分的功能和实现细节。他会展示如何使用Python和深度学习框架(如Tensorflow)来编写GAN网络的代码,并演示如何处理数据、构建网络结构、定义损失函数和优化器等。 此外,李宏毅还会给出一些GAN网络的应用案例,例如生成图像、语音合成等。他会详细说明如何调整和优化代码,以实现更好的生成效果。 总之,李宏毅的GAN网络作业代码讲解是非常有帮助和详细的,对于想要深入了解和学习GAN网络的人来说,这是一份宝贵的学习资料。通过他的讲解,我们可以更好地理解和应用GAN网络,为自己的深度学习项目增添新的工具和技术。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值