深度学习——学习笔记之 《第一部分 神经网络基础知识》

深度学习——学习笔记

第一部分 神经网络 基础知识

学习网站一:大话卷积神经网络CNN(干货满满)

主要内容:

1.感知器
2.经典神经网络模型(MLP)
3.卷积神经网络(CNN)
4.卷积(Convolution)
5. 步长(stride)
6. 填充(padding)
7. 池化(Pooling)
8. **函数(Activation Function)

1.感知器:

每个神经网络单元抽象出来的数学模型深度学习——学习笔记之 《第一部分 神经网络基础知识》

2.经典神经网络模型(MLP):

多层感知机
多个感知器组成的多层网络,由 输入层、隐含层、输出层 构成。
深度学习——学习笔记之 《第一部分 神经网络基础知识》

3.卷积神经网络(CNN):

百度百科定义: 卷积神经网络(Convolutional Neural Networks, CNN)是一类包含卷积计算且具有深度结构的前馈神经网络(Feedforward Neural Networks),是深度学习(deep learning)的代表算法之一,擅长处理图像特别是图像识别等相关机器学习问题。

通俗: 通过一系列方法,成功 将数据量庞大的图像识别问题不断降维 ,最终使其能够被训练。

4. 卷积(Convolution):

卷积神经网络的核心,其相当于图像处理中的 滤波器运算
W:卷积核

下图是m*n大小的卷积核:
深度学习——学习笔记之 《第一部分 神经网络基础知识》
卷积运算过程:

其对某一原图像 X 进行卷积运算的过程为:卷积核 W 中的每一个权值 w 分别和覆盖的原图像 X 中所对应的像素 x 相乘,然后再求和。公式如下:

深度学习——学习笔记之 《第一部分 神经网络基础知识》
一幅图像完整的卷积过程: 卷积核以一定的间隔(就是下面要说的步长)滑动,并对所覆盖的区域进行卷积运算得到值 z,直至遍历完整幅图像。
深度学习——学习笔记之 《第一部分 神经网络基础知识》
深度学习——学习笔记之 《第一部分 神经网络基础知识》
上图卷积核大小是3x3的,所以卷积核每次覆盖原图像的9个像素。
深度学习——学习笔记之 《第一部分 神经网络基础知识》
所以上图,输出图像的尺寸:5-3+1=3

5. 步长(stride):

上一部分讲到:卷积核以一定的间隔滑动,并对所覆盖的区域进行卷积运算得到值 z,直至遍历完整幅图像。这里的间隔就是指步长。
上一部分默认步长为1 所以输出的图像尺寸为 n-f+1

然而,实际上的输出图像尺寸应为
深度学习——学习笔记之 《第一部分 神经网络基础知识》
n:原图像大小 , f:卷积核大小 , s:步长

6.填充(padding):

  • 对于图像边缘的像素,只被一个输出使用,但图像中间的像素,则被多个输出使用。这意味着卷积过程丢掉了图像边缘位置的许多信息

  • 每次卷积运算后,图像就会缩小尺寸。在经历多次运算后,图像最终会失去其本来的形状,变为 1×1 的 “柱状”。

对于这个问题,可以采用额外的 “假” 像素填充边缘(通常值为 0, 因此经常使用的术语 ”零填充“ )
——这样,在滑动时的卷积核可以允许原始边缘像素位于其中心。

7.池化(Pooling):

对不同位置区域 提取出有代表性的特征(进行聚合统计,例如最大值、平均值等),这种聚合的操作就叫做 池化,池化的过程通常也被称为 特征映射 的过程(特征降维)。

池化就是将输入图像进行缩小,减少像素信息,只保留重要信息
随着模型网络不断加深,卷积核越来越多,要训练的参数还是很多,而且直接拿卷积核提取的特征直接训练也容易出现过拟合的现象。

过拟合——模型在训练样本中表现得过于优越,导致在验证数据集以及测试数据集中表现不佳。

CNN使用的另一个有效的工具被称为“池化(Pooling)”出现并解决了上面这些问题,为了有效地 减少计算量
池化就是将输入图像进行缩小,减少像素信息,只保留重要信息;
为了有效地解决过拟合问题,池化可以减少数据,但特征的统计属性仍能够描述图像,而由于降低了数据维度,可以有效地避免过拟合。

三种池化方式
  • 最大值池化(Max Pooling)
  • 平均值池化(Average Pooling)
  • 随机池化(Random Pooling)
三种池化的意义:
  • 最大池化可以获取局部信息,可以更好保留纹理上的特征。如果不用观察物体在图片中的具体位置,只关心其是否出现,则使用最大池化效果比较好。
  • 平均池化往往能保留整体数据的特征,能凸出背景的信息。
    随机池化中元素值大的被选中的概率也大,但不是像最大池化总是取最大值。
  • 随机池化一方面最大化地保证了Max值的取值,一方面又确保了不会完全是max值起作用,造成过度失真。除此之外,其可以在一定程度上避免过拟合。

深度学习——学习笔记之 《第一部分 神经网络基础知识》

8.**函数(Activation Function):

感知机在接收到各个输入,然后进行求和,再经过**函数后输出。

——为什么神经网络需要非线性**函数?

为了使神经网络能够拟合出各种复杂的函数,必须使用 非线性**函数,用来加入非线性因素,把卷积层输出结果做非线性映射
深度学习——学习笔记之 《第一部分 神经网络基础知识》
——如果没有非线性的**函数,那么无论网络有多少层,整体完全可以仅使用一层表示。

常用的**函数有sigmoid、tanh、ReLU等等,前两者sigmoid / tanh比较常见于全连接层,后者ReLU常见于卷积层

ps:
参考****博主「我是管小亮」的原创文章
原文链接:https://blog.****.net/TeFuirnever/article/details/100057229